테라폼으로 AWS CloudFront 를 생성할 때 ACM(AWS Certificate Manager) 인증서를 쓰려면 아래와 같이 코드가 개발됩니다. resource "aws_cloudfront_distribution" "s3_distribution" { ... viewer_certificate { cloudfront_default_certificate = false acm_certificate_arn = "..." minimum_protocol_version = "..." ssl_support_method = "..." } } cloudfront_default_certificate를 false로 설정하고 ACM 인증서의 ARN을 넣어주면 됩니다. 그런데 이 상태로 코드를 배포하면 아래와 같은 오류가 ..
CloudFront에서 Distribution을 생성할 때 Origin domain으로 S3 버킷을 지정하는 경우 아래와 같은 화면이 나옵니다. bucket endpoint를 쓰지 말고 website endpoint를 사용하라는 건데요. Origin domain 목록에 website endpoint는 노출되지 않기 때문에 "Use website endpoint" 버튼을 클릭해 줘야 s3 가 s3-website로 변경됩니다. 버튼을 클릭하는 경우 상세 설정의 종류가 변경되기 때문에 무시할 수 없습니다. 더욱이 S3 website endpoint를 추천한다는데 써야겠죠 (...) 테라폼으로 배포할 때 위에 버튼을 클릭하지 못하니 어떻게 처리해야 하나 한참을 끙끙댔습니다. 일단 S3 website endpoi..
PyCharm(IntelliJ라도 상관없음)에서 YAML(yet another markup language or YAML ain't markup language) 파일을 열어보면 다음과 같이 syntax highlighting이 잘 적용되어 있습니다. 아마도 대부분의 사람들은 "IDE에서 syntax highlighting은 당연한 기능 아냐?"라고 하실 수도 있는데요. 맞습니다. 확장자에 따라서 기본 설정이 적용되어 있기 때문입니다. 최근에 테라폼(Terraform)으로 코드를 개발하면서 YAML 파일을 템플릿 형식으로 작성할 일이 꽤 많았는데요. 확장자는 tftpl 였습니다. 테라폼에서 templatefile 함수를 통해 읽는 파일의 확장자는 tftpl로 권장됩니다. *.tftpl is the rec..
안녕하세요. AdTech(Advertising technology) 스타트업 매드업에서 데이터 엔지니어 겸 사이트 신뢰성 엔지니어(SRE, Site Reliability Engineer)로 근무하고 있는 백재연입니다. 이번 글에서는 올해 라스베가스에서 열린 AWS re:Invent를 다녀온 후기를 다루려고 합니다. 키노트나 세션 등 기술과 관련된 콘텐츠는 유튜브와 AWS 공식 블로그에 잘 정리가 되어 있으니 생략하고, 처음 이 행사에 참석했던 입장에서 전반적인 행사 흐름과 체험을 위주로 정리해 봤습니다. 스크롤 압박은 있겠지만 대부분 사진이니 부담 없이 봐주세요! 자, 그럼 시작합니다. # Las Vegas! 현재 매드업과 계약된 MSP를 통해 아시아나항공 전세기로 라스베가스 공항까지 직항으로 갈 수 있..
에.. 이 자격증은 정말 생각이 없었는데 갑자기 필요해서 응시하게 됐습니다. 좀 얼토당토 한 이유기는 하지만 다음 주에 라스베가스에서 열리는 AWS Re:Invent 행사에 참가하게 됐는데요, 어렴풋한 기억에 작년에는 HashiCorp 부스에서 자격증이 있는 사람들한테 스페셜한 굿즈를 나눠줬다는 게 생각이 나서요. 잘못된 기억일 수도 있습니다. 리인벤트 행사가 아니라 다른 행사였을 수도 있고요. 아무튼, 회사 업무 때문에 Terraform을 한참 사용하고 있고 제가 클라우드 발표를 할 때도 여러 차례 테라폼 코드를 언급해주고 있는데 자격증 하나 있으면 나쁘지 않겠다는 생각이 들었습니다. 참고로 저는 하시코드 엠베서더이기도 합니다. 이 글조차 엠베서더 활동일지도(...) 🙃 # 시험 준비 각설하고 이번에 ..
테라폼 코드를 로컬에서 개발&운영하다가 테라폼 클라우드(Terraform Cloud)를 처음 이용하려고 할 때 발생하는 문제입니다. 이건... 블로그에 기록하기도 민망할 정도로 짧은 해답을 내릴 수 있는데요. 테라폼 클라우드와 연결된 GitHub이나 Bitbucket과 같은 VCS(Version Control System)에 tfstate 파일이 존재하는 경우입니다. 이때는 VCS에서 state 파일을 삭제해 주고 다시 plan을 실행해 보세요. 오류가 해결되는 걸 확인하실 수 있을 겁니다. 소소하지만 테라폼 클라우드를 처음 이용하려는 누군가에게는 도움이 되셨기를 바랍니다. :) 인터넷에 많은 트러블슈팅 글이 그러하듯이 이 에러의 원인이 하나만은 아닐 수도 있습니다. 만약 state 파일이 존재하지 않는..
Lambda(람다) 배포 방식에는 네 가지가 존재합니다. (1) 소스코드를 에디터에서 직접 개발 (2) ZIP 압축 파일을 업로드해서 배포 (3) S3 경로에 압축파일을 두고 배포 (4) 컨테이너 이미지를 통해 배포가 있습니다. 이번 글에서는 컨테이너 이미지를 통해 배포하는 방법을 알아볼 텐데요. 특이한 조건이 하나 붙일 겁니다. 테라폼 코드를 통해 Lambda와 ECR을 최초 배포할 때 컨테이너 이미지를 어떻게 처리해야 하는가입니다. 정확하게는 AWS 인프라를 테라폼으로 초기 구축하는 상황인 겁니다. 이런 상황에서 무엇이 문제가 되는지 살펴보려면 생성해야 하는 리소스를 알아야 합니다. 먼저 ECR(Elastic Container Registry)를 생성해줘야 합니다. 소스코드는 대충 아래와 같은 모양입..
테라폼으로 EKS를 생성할 때 만나는 에러입니다. 문제 상황은 aws_eks_cluster 를 통해 클러스터를 생성하고 나서 kubernetes_config_map 으로 aws-auth를 ConfigMap에 등록하려고 할 때 발생합니다. terraform apply 를 통해 두 개의 리소스가 함께 배포되는 상황입니다. 대략 아래와 같은 코드를 실행하는 상황이라고 볼 수 있습니다. 불필요한 부분은 말줄임표로 생략했습니다. resource "aws_eks_cluster" "this" { name = var.cluster_name ... } resource "kubernetes_config_map" "this" { metadata { name = "aws-auth" namespace = "kube-syste..
얼마 전에 자격증 취득 관련 글을 올렸는데 이어지는 글입니다. 이전 글은 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)를 사용할 수 있습니다. 빅쿼리 옴니는..
- Total
- Today
- Yesterday