얼마 전에 자격증 취득 관련 글을 올렸는데 이어지는 글입니다. 이전 글은 AWS 자격증 취득 후기 (SAA, SAP) 에서 확인해 주세요. # intro. 이렇게 된 거 한 개 더 취득해 보자 10월 20일(금) 저녁에 SAP 합격 메일을 받고 기분 좋게 한 잔 했습니다. 주말 동안은 개인적인 일로 좀 바빴습니다. 월요일이 되고 곰곰이 생각해 보니까 뭔가 보유한 자격증에 균형이 맞지 않는 것 같은 생각이 맴돌았습니다. AWS 전체 자격증 중에 아래 두 개를 취득한 상태였는데요. 그래도 위쪽에 있는 다른 초록색도 갖고 있는 게 좋지 않을까? 하는 생각이 들었습니다.. 하.. 이래서 자격증은 차라리 한 개도 없을 때가 속이 편합니다. 어쨌든 머릿속에 맴도는 욕심을 채우고자 DevOps Engineer - P..
이미 인터넷에 많고 많은 후기가 있지만 저만의 의식흐름으로 자격증 취득 후기를 정리합니다. 누군가에게는 도움이 되겠죠? :) 자격증 시험을 준비하는 모든 분들, 좋은 결과 있으시길 바랍니다! # 시험 종류 생전 자격증에 관심이 없었는데 어떤 이유로 자격증이 필요했습니다. 일단 하나만 있으면 될 것 같아서 AWS Certified Solutions Architect - Associate 시험(SAA-C03)을 봤네요. 참고로 AWS 자격증은 Foundational, Associate, Professional, Specialty로 구분됩니다. 보기 좋게 아래 이미지로 정리했습니다. 참고해주세요. # 시험 장소 시험은 온라인, 오프라인을 선택할 수 있는데 저는 오프라인은 가본 적이 없습니다. 시간대가 마땅한 ..
이전 글을 작성한 이후로 소스코드가 많이 변경 됐습니다. 특히 아래 구문(이전 글에서 작성했던 내용)에 대해 수정이 있었는데요. 그리고 number_of_messages_to_keep는 꼭 0으로 넣어주세요. 이 환경변수는 대화내역을 N개 저장하고 있겠다는 설정인데요. 대화내역을 저장하는 경우 ChatGPT와 대화할 때 상호작용이 되는 것처럼 보일 겁니다. 이전 대화내용을 기억하고 있으니까요. 아주 훌륭한 옵션이죠. 다만, 이 설정을 위해서는 Redis가 필요합니다. Google Cloud에서 Memorystore(Redis)를 올려서 사용하는 것도 좋지만 비용 문제로 다루지 않겠습니다. 만약 이미 Redis가 있다면 앞에 Hello-ChatGPT에 환경변수로 REDIS_HOST를 넣어서 사용해 주시면 ..
쿠버네티스는 컨테이너 오케스트레이션 도구입니다. 컨테이너는 쿠버네티스에서 파드(pod)라는 개념으로 감싸집니다. 하나의 파드는 한 개 이상의 컨테이너를 가질 수 있습니다. 즉, 애플리케이션 컨테이너 한 개와 그 옆에 사이드카 패턴으로 다른 컨테이너를 붙여서 하나의 파드로 운영하는 것이 가능합니다. 각설하고, 이번 글에서는 파드를 수평 확장(Scale-out)하는 방법인 HPA(Horizontal Pod Autoscaling)와 노드를 수평 확장하는 카펜터(Karpenter)를 엮어서 개념을 이야기해 보도록 하겠습니다. 언제나와 마찬가지로 글에 잘못된 부분이 있거나 토론이 필요한 부분이 있다면 댓글로 의견 부탁드립니다 :-) # HPA(Horizontal Pod Autoscaling) Deployment로..
Google I/O 는 구글의 연례행사 중에 가장 큰 행사로 꼽힙니다. 올해 I/O 는 아주 소수 인원(소문으로는 디렉터급 이상)만 오프라인으로 참석할 수 있었다고 합니다. 일반 대중들에게는 사실상 온라인 콘퍼런스였던 거죠. 오프라인 행사가 아닌 걸 아쉬워하던 찰나에 I/O Connect 행사에 초대됐습니다. I/O Connect 는 올해 처음 생긴 행사인데요. Google I/O 와 I/O Extended 사이에 존재하게 됩니다. Connect 는 올해 Miami, Amsterdam, Bengaluru, Shanghai 네 개 지역에서 진행됐습니다. 그중에 제가 참석한 곳은 마이애미였네요! 행사는 오전부터 시작됐습니다. 마이애미의 후끈한 날씨에 리프트(Lyft)를 타고 행사장으로 빠르게 이동했습니다. ..
helm upgrade --install 명령어가 실패하는 경우가 있습니다. $ helm upgrade --install airflow apache-airflow/airflow --namespace airflow --create-namespace Release "airflow" does not exist. Installing it now. Error: failed to download "apache-airflow/airflow" 공식문서에 있는 명령어를 그대로 사용했음에도 오류가 나는 경우는, 일반적으로 이미 오래전에 helm repo를 추가해두고 방치한 경우일겁니다. 아래와 같이 repo를 업데이트 해주세요. $ helm repo update Hang tight while we grab the late..
AWS에 대표적인 Data Warehouse 제품인 Redshift에 Serverless 버전의 비용 관련된 내용이 잘 정리된 글이 없어서 이번 기회에 정리해 봅니다. 글을 정리하는데 백서도 도움이 됐지만 메가존 포럼과 AWS Global Center의 도움을 많이 받았습니다. 우선 Redshift Serverless 비용을 이해하려면 Redshift Processing Units(RPUs) 개념을 알아야 합니다. Redshift Serverless는 워크로드에 따라 자동으로 컴퓨팅 파워를 확장하는데 그게 RPUs 단위입니다. 가벼운 쿼리는 32 RPUs(최소 설정 값)로 처리되고 좀 더 복잡한 쿼리는 최대 512 RPUs까지 늘어납니다. 기본 값을 Base capacity라고 하는데 이 값을 32부터 ..
첫 번째 글을 통해 슬랙 앱을 설치했고 두 번째 글에서 로컬 PC에서 ChatGPT를 서비스하는 방법을 살펴봤습니다. 이번 글에서는 앞서 소개한 소스코드를 클라우드에 올려두고 슬랙에 연동해서 사용해 볼 겁니다. 슬랙 앱이 없다면 첫 번째 글을 참고하시고, 두 번째 글은 슬랙 앱에 권한 설정 부분과 토큰을 얻는 설명이 있기 때문에 부분적으로 참고하셔야 할 겁니다. 만약 권한 같은 문제를 이미 통달하셨다면 이번 글만 보셔도 상관은 없습니다. 자, 그럼 클라우드로 출발합니다. 우리는 Google Cloud 를 통해 서버리스 환경에서 ChatGPT와 슬랙앱을 운영해 볼 겁니다. 대략적인 아키텍처는 아래와 같습니다. 보이는 것처럼 아주 심플합니다. Cloud Run은 fully-managed serverless ..
이번 글에서는 ChatGPT를 로컬 PC 서비스하기 위한 과정을 살펴볼 겁니다. 이 과정을 준비하기 위해서는 첫 번째로 Slack App이 필요합니다. 혹시 아직 앱이 없으시다면 이전 글을 참고해서 앱을 먼저 생성해 주세요. 두 번째는 ngrok이라는 애플리케이션이 필요합니다. 그리고 끝으로는 제가 만든 애플리케이션을 동작시키기 위해 Git과 Python이 필요합니다. 먼저 ngrok 은 Slack에서 발생하는 메시지를 내 PC에서 받아서 처리하기 위해 필요한데요. 설치를 포함한 자세한 내용은 여기 글을 통해 확인하시기 바랍니다. # OpenAI 회원 가입 및 토큰 획득 우리 프로그램을 돌리기 위해서는 OpenAI API를 호출할 수 있는 토큰 정보가 필요합니다. https://platform.opena..
이번 글에서는 연일 화제를 이어가고 있는 ChatGPT를 슬랙에 연동하는 과정을 살펴보겠습니다. 소스코드는 제가 모두 준비해 놨으니 천천히 따라오시면 누구나 슬랙에 ChatGPT를 사용하실 수 있을 겁니다. 글은 총 세 편으로 이어질 겁니다. 첫 번째 글에서는 슬랙 앱을 생성하고 두 번째 글에서는 로컬에서 서비스를 실행시켜 ChatGPT를 슬랙에 연동할 겁니다. 세 번째 글에서는 클라우드에 서비스를 배포하고 운영하는 내용을 다룰 겁니다. 자, 그럼 첫 번째 글을 시작합니다. 첫 번째 글에서는 슬랙 앱을 생성합니다. 아주 간단한 과정으로 이어지니 편하게 따라와 주시면 됩니다. 먼저 https://api.slack.com/apps로 접속해서 앱을 생성하도록 하겠습니다. 사이트에 접속했으면 Create New..
Google Analytics 4(GA4)는 구글에서 제공하는 웹 분석 도구 중 하나로, 기존의 Universal Analytics (UA)와는 다른 구조와 기능을 가지고 있습니다. GA4는 향상된 사용자 경험과 효율성, 광고 및 마케팅 분석 등을 위해 개발되었습니다. 기존의 UA와는 달리, GA4는 이벤트 중심의 데이터 수집 방식을 채택하고 있습니다. 이벤트 중심의 데이터 수집은 화면 뷰나 페이지 뷰 등에 대한 추적이 아닌, 사용자가 웹 사이트에서 수행하는 작업에 초점을 둡니다. 예를 들어, 사용자가 제품을 구매하거나 동영상을 시청하는 등의 작업은 이벤트로 수집되며, 이를 기반으로 사용자의 행동 패턴 등을 분석할 수 있습니다. 또한, GA4는 머신 러닝을 활용한 분석 기능을 제공합니다. 예를 들어, 사..
Google Cloud Platform(GCP)하면 역시 빅쿼리(BigQuery)를 빼놓을 수 없습니다. 타사 어떤 DW(Data Warehouse)와 비교해도 더 우수한 성능을 자랑하며 사용성도 뛰어나니까요. 실례로 Redshift는 파티셔닝을 지원하지 않아서 데이터 관리에 불편함이 있는데 빅쿼리는 이를 지원합니다. 혹자는 Redshift는 데이터/비즈니스에 맞게 튜닝을 해야 성능이 나오지만 빅쿼리는 그냥 그 상태로 성능을 낸다고도 합니다. 각설하고, DW 때문에 혹은 빅쿼리의 강력함 때문에 AWS에 쌓아둔 데이터를 Google Cloud에 Cloud Storage로 옮기려고 하시는 분들도 계신데요. 이런 상황을 타개하기 위해 빅쿼리 옴니(BigQuery Omni)를 사용할 수 있습니다. 빅쿼리 옴니는..
Google Cloud Run online hackathon 에 참여했습니다. APAC을 순회하며 이벤트를 하고 있는 것 같은데 한국은 9월 27일이었네요. 해커톤의 기본 룰은 간단했습니다. 퀵랩을 통해 모든 환경은 제공받고 GitHub에서 기본 코드까지 내려받을 수 있었습니다. 그야말로 클릭 대여섯 번이면 게임에 참여가 가능했죠. 다만, 점수를 올리려면 소스코드에 본인만의 로직을 개발해야 했습니다. # 해커톤 방식 해커톤은 게임 형식으로 진행됐습니다. 마치 크레이지 아케이드처럼 바둑판 모양의 경기장에 사용자가 로그인합니다. 여기서 "사용자"는 해커톤 참가자가 배포한 cloud run 애플리케이션입니다. 경기장은 1초에 한 번씩 입장한(등록된) cloud run 서비스 전체를 호출합니다. 이때 경기장의 ..
코로나 때문에 개발자 오프라인 콘퍼런스는 멸종했었는데 정말 오랜만에 코엑스 그랜드볼룸에서 콘퍼런스가 열렸습니다. 인프콘 2022. 약 만 명 정도가 신청을 했다는 후문인데요, 그중에 (짐작건대) 1~2천 명 정도 추첨하지 않았을까 싶습니다. 그럼 현장의 내용과 함께 세션에 대한 간략한 요약을 해보겠습니다. 우선 아래는 이번 행사의 전체 타임라인입니다 코엑스 그랜드볼룸은 갈 때마다 길이 헷갈리는데요. 이번에는 대-충 개발자처럼 복장하신 분들이 지하철을 내려서 우르르 가시는 걸 따라가 보니 쉽게 도착할 수 있었습니다(웃음). 자, 코엑스에 들어서자마자 어마어마한 인파에 놀라게 됩니다. 우리 회사도 열심히 채용하고 있는데 개발자들 어디 있나 했더니 여기 다 계셨네요!! :) 위에 사진으로는 "사람이 많은 건가..
2019년 11월 GA 된 Cloud Run은 퍼블릭 클라우드에서 서버리스 애플리케이션 분야의 게임 체인저로 단숨에 자리 잡았습니다. Cloud Functions의 경우 multiple language runtime 개수도 부족해서 타사의 FaaS(Functions-as-a-Service)를 쫓아가기 바쁜 상황처럼 느껴졌는데요. 그러던 와중에 Cloud Run이 등장하게 됩니다. Cloud Run은 Cloud Functions 대비해서 인스턴스 크기가 커졌습니다. 즉, CPU, Memory를 더 풍성하게 사용할 수 있게 된 거죠. 그뿐만이 아니라 Cloud Run은 클릭 몇 번으로 트래픽을 버전별로 분할해서 처리할 수 있고 function instance에서 처리 가능한 요청 개수(maximum requ..
클라우드 인프라를 구축하는 방법은 0) 프로바이더가 제공하는 웹 대시보드에서 생성 1) 애드 훅 스크립트(bash, shell script) 사용 2) 구성 관리 도구(Chef, Puppet, Ansible, Saltstack) 3) 서버 템플릿 도구(Docker, Packer, Vagrant) 4) 서버 프로비전 도구(Terraform, CloudFormation, Openstack Heat) 이렇게나 다양합니다. 오늘은 테라폼을 통해 GCP 인프라를 구축하기 위해 그 뼈대가 되는 모듈 구조에 관해 이야기해봅니다. 본문에서 사용하는 코드는 GitHub으로 제공되니 전체 코드가 궁금하신 분은 링크를 참고하시면 되겠습니다. 이 글은 GCP 기준으로 작성했지만, AWS, Azure 등 어떤 provider를..
MacOS에서 5000번 포트를 사용하려는데 이미 포트가 사용 중이라는 오류를 본 적이 있나요? OSError: [Errno 48] Address already in use netstat 을 통해 살펴보면 실제로 5000번 포트가 열려있습니다. 그런데 내가 실행한 프로그램은 아닌 거죠. jybaek:~$ netstat -nat | grep 5000 tcp6 0 0 *.5000 *.* LISTEN tcp4 0 0 *.5000 *.* LISTEN 어떤 애플리케이션에서 열고 있는 건지 lsof 로 살펴봐도 잘 모르겠습니다. jybaek:~$ sudo lsof -i :"5000" COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ControlCe 460 jybaek 22..
KubernetesExecutor 적용에서 이어지는 내용입니다. 환경 구성이 끝났다는 가정하에 진행합니다. 앞에서 만든 values.yaml 파일을 수정하고 적용해야 합니다. 이 파일은 계속 사용되므로 VCS(Version Control System)에서 관리하면 좋습니다. 자, 파일을 열어보면 gitSync라는 설정 부분이 있습니다. 이 부분을 수정해서 Kubernetes에서 Sidecar Pattern으로 gitSync를 사용할 수 있습니다. 이름부터 직관적이라 어떤 기능인지 이해하는데 어려움은 없습니다. 일단 values.yaml 파일에서 관련된 부분을 살펴보시죠. # Git sync dags: persistence: # Enable persistent volume for storing dags e..
EKS 위에 Airflow 구성에서 이어지는 글에서 이어지는 내용입니다. 환경 구성이 끝났다는 가정하에 진행합니다. 헬름 차트를 통해 EKS 위에 Airflow 배포가 끝났다면 이제 Executor를 변경해보도록 합시다. 단계는 아주 간단합니다. 1) 설정 파일을 다운로드하고 2) 파일 내용을 원하는 방향으로 수정합니다 3) 끝으로 수정된 파일을 배포하는 순서입니다. 먼저 설정 파일을 아래처럼 다운로드하도록 합니다. $ helm show values apache-airflow/airflow > values.yaml artifacthub에 접속해서 다운로드하여도 상관없습니다. 혹은 GitHub을 방문해도 됩니다. 이제 파일을 열고 수정해 줍니다. 아래 내용 기준으로 executor에 있는 CeleryExe..
EKS 생성은 모두 끝났다고 가정하고 진행합니다. 이 글은 Kubernetes를 설명하는 글이 아니므로 namespace, pod, kubectl, helm 등 K8S와 함께 등장하는 용어에 대한 깊이 있는 설명은 하지 않습니다. 로컬 PC에서 aws 명령어를 통해 EKS 컨텍스트를 추가합니다. 무슨 의미인지 해석하실 필요 없습니다. 쉽게 생각해서 로컬에서 kubectl 명령을 사용할 때 바라보게 되는 곳이 AWS EKS라고 생각하시면 됩니다[1]. --name 뒤에 transformer-dev는 각자의 설정에 맞게 변경해주시기 바랍니다. transformer-dev는 이 글이 작성될 때 기준으로 테스트한 EKS 클러스터 이름입니다. $ aws eks --region ap-northeast-2 updat..
- Total
- Today
- Yesterday