Knative func을 배포하려고 할 때 아래와 같은 오류가 발생했습니다(build를 해도 마찬가지 입니다). 갑작스러운 건 아니고, 테스트를 진행한 MacOS(M3)에서 처음 발생한 상황이네요.$ func deploy -b=s2i -vA registry for function images is required. For example, 'docker.io/tigerteam'.? Registry for function images: docker.io/jybaekNote: building a function the first time will take longer than subsequent buildsBuilding function imageError: cannot create docker client:..
B2C를 한다면 필수로 읽어야 하는 책이 아닐까 싶습니다. 문장 하나 뺄 것 없이 인사이트가 가득합니다. 제품의 초기부터 성장에 이르러 번창의 시기까지, 시간 흐름에 따라 무엇을 신경 써야 하는지 잘 정리되어 있습니다.책의 내용에서 흥미로운 몇 가지를 가져와 봤어요.열세 살이 스티브 잡스는 전화번호부에서 번호를 찾아 세계적 대기업 HP의 CEO 빌 휴렛에게 전화를 걸었습니다. ”빌 휴렛이 전화를 받았고, 저는 그에게 지금 만들고 있는 주파수카운터라 불리는 것에 필요한 부품을 좀 구해줄 수 있느냐고 물었습니다. 빌 휴렛은 그 부품을 구해다 주었습니다. 뿐만 아니라 저에게 더 중요한 선물도 주었습니다. 그해 여름 HP에서 일할 기회를 만들어주었습니다. 그 말을 들은 순간 저는 천국에 온 기분이었죠.“그리고 ..
HashiCorp Vault는 비밀 관리 도구로, 민감한 데이터를 안전하게 저장하고 관리할 수 있게 해 줍니다. 이번 글에서는 EKS에 HashiCorp Vault를 테라폼으로 생성하고 설치하고 접속해 보도록 하겠습니다. 정말 간단하니까 눈으로만 따라오셔도 충분합니다.EKS에 HashiCorp Vault를 테라폼으로 아래와 같이 코드를 작성해서 설치할 수 있습니다. resource "helm_release" "vault" { name = "vault" repository = "https://helm.releases.hashicorp.com" chart = "vault" namespace = "vault" create_nam..
테라폼으로 배포하는 도중에 아래와 같은 오류가 발생하는 경우가 있습니다. 일반적으로 발생하는 상황은 아니고, Cached 파일이 없을 때 오류가 발생하는 건데요. 보통 개발 환경을 마이그레이션 하는 도중에 발생됩니다. 예를 들어, 맥북을 새로 구매해서 데이터를 옮기는 것처럼 말이죠. │ Error: could not download chart: no cached repo found. \(try 'helm repo update'): open /Users/jybaek/Library/Caches/helm/repository/datadog-index.yaml: \no such file or directory 이 오류를 해결하기 위해서는 간단히 helm repo update 명령어를 실행하면 됩니다. 이 명령어는..
HashiCorp Ambassador가 되고 처음으로 HashiConf에 다녀왔습니다. 이번 hashiConf는 보스턴에서 열렸습니다. 오전 9시 비행기라 서둘러서 공항에 갔었네요. 인천공항에서 보스턴까지 갈 때는 13시간 정도, 돌아올 때는 15시간 정도 걸렸습니다. 그나마 직항이라 편히(?) 다녀왔습니다. ( 시차는 13시간으로 한국 시간과 비교하면 AM, PM을 바꿔주고 한국 시간에서 1시간을 빼주면 보스턴 시간이 됩니다. 즉, 한국아침 08시가 보스턴은 저녁 07시인 거죠 ) 보스턴에 도착하니 오전 10시쯤 됐습니다. 공항은 한산했고 순조롭게 입국 심사를 받을 수 있었습니다. 호텔 체크인이 원래 16시부터인데 다른 엠버서더들의 대화를 보니 일찍 도착해서 체크인 한 사람도 있더라고요? 그래서 저도..
AWS Secrets engine을 통해 AWS의 credentials을 관리하는 방법을 소개합니다. 이번 글에서는 터미널 명령어와 GUI를 함께 보도록 하겠습니다. 여기서 다루는 모든 GUI는 오픈소스 버전입니다. HashiCorp Cloud Platform(HCP) 버전과 상이할 수 있는 점을 참고해 주세요. 그럼 시작합니다.먼저 AWS secrets engine을 활성화합니다.vault secrets enable aws 혹은 GUI에서 아래와 같이 Secrets Engines 메뉴에서 Cloud > AWS를 선택해 주면 됩니다. Secrets Engine이 연결 됐으니 root 계정을 등록해 줘야 하는데요. 여기서 표현하는 root는 AWS의 루트 계정이 아닙니다. Vault를 통해 IAM을 생성하..
HashiCorp Vault는 2014년 4월에 발표됐습니다. Vault는 토큰, 비밀번호, 인증서, 암호화 키에 대한 액세스를 보호하고 저장하며 엄격하게 제어하여 비밀 및 기타 민감한 데이터를 보호하기 위해 사용하는 솔루션입니다. 컨셉을 이해하려면 HashiCorp 블로그 글을 읽어보세요.이번 글에서는 Vault를 설치하고 기본 컨셉에 대해 살펴보도록 하겠습니다. Vault를 쓰면 좋겠다고 생각한 첫 번째 이유가 데이터베이스 접속 정보 관리인데요. 아래와 같은 흐름으로 사용이 가능합니다. Vault의 가장 기본적인 사용 예시입니다. CSP에 있는 Secrets Manager와 비슷합니다. 하지만 Vault의 경우 필요한 순간에 데이터베이스 계정을 "생성"해서 줄 수 있습니다. 그것이 가장 큰 차이점입니..
지인의 선물로 데이터 거버넌스 : 사람, 기술, 도구, 프로세스를 읽었습니다. 요즘 거버넌스는 너무 폭넓은 뜻으로 해석되고 있는데 이 책에서는 데이터를 다루는 데 있어서 필요한 전부를 칭합니다. 책의 저자가 이야기하는 데이터 거버넌스는 아래와 같이 정의됩니다.데이터 거버넌스(data governance)는 무엇보다도 조직이 수집한 데이터의 품질, 무결성, 보안, 사용성을 보장하는 하나의 데이터 관리 기능(data management funcion)이다. 데이터 거버넌스는 데이터를 수집, 생성한 시점부터 데이터를 폐기, 보관하는 시점까지 내내 작동해야 한다. 데이터의 그러한 수명 주기 전체에서 데이터 거버넌스는 데이터를 모든 이해관계자가 각자 손쉽게 접근할 수 있는 형태로 만드는 데 주력한다. 또한 이해관..
약 2년 전쯤에 개발자가 되려면 뭘 준비하면 되냐는 질문을 받은 적이 있습니다. 그 질문의 답으로 약 2페이지 분량의 글을 썼었는데요. 만약 다시 질문을 받는다면 이 책을 추천하겠습니다. 한빛미디어에서 “연봉 앞자리를 바꾸는 개발자 기술 면접 노트”가 발간 됐습니다. 저자는 여러 기업을 경험하고 면접관으로 활동하며 얻은 인사이트를 인터뷰 전반에 걸친 프로세스로 설명합니다. 그리고 자주 출제되는 유형에 대해 코딩테스트와 기술 인터뷰 문제를 다뤘습니다. “연봉 앞자리를 바꾸는”이라는 다소 도전적인 제목이지만 면접으로 인생이 바뀔 수 있으니 틀린 말은 아닙니다. 개발을 하다 보면 필연적으로 예기치 못한 곳에서 장애가 발생한다. 장애가 발생하지 않는 곳은 없다. 만약 경영진이 장애 발생을 문제 삼는다면 그건 서..
Kubernetes를 사용할 때 아주 중요한 설정이 있습니다. Karpenter와 같은 오토스케일러와 맞물리면 더욱 빛을 보게 되는 설정인데 바로 PodDisruptionBudget(PDB) 입니다. 오토스케일러를 Karpenter로 예를 들어 설명해 보겠습니다. consolidation으로 노드가 제거될 수도 있고 spot을 이용 중이라면 spot 종료 이벤트를 받을 수도 있습니다. 이때 해당 노드에 서비스되는 모든 pod가 한순간에 모두 종료 돼버린다면 자칫 서비스에 다운타임이 발생할 수도 있습니다. 이때 필요한 게 PDB입니다.PDB를 쉽게 설명하자면 무슨 일이 있어도 지정된 개수의 pods는 유지를 해달라는 설정입니다(이외에 다른 조건도 설정할 수 있습니다). 배포를 위해 Deployments를 ..
한빛미디어에서 개발 생태계에 모든 사람을 위한 기술 문서 작성 방법을 설명하는 Docs for Developers가 발간 됐습니다. 무릇 개발자라면 코드만 작성하는 것이 아니라 문서 작성도 해야 합니다. 본인이 개발한 코드를 설명하는 문서 혹은 릴리스 문서 등을 포함해서 말이죠. 그리고 글이 더 잘 소비되도록 문단 하나까지도 신경을 쓸 겁니다. 이미지를 하나씩 제공하면 인지 처리가 덜 필요하고, 두뇌가 연결 관계를 도출하는 데 도움이 되며, 텍스트보다 훨씬 빨리 이해를 이끌어 냅니다. 또한 우리는 정보가 이미지와 함께 제공되면 정보를 더 잘 기억합니다. 정보를 귀로 듣는 경우에는 약 10%만 기억합니다. 그러나 정보를 들을 때 이미지가 함께 나온다면 65%를 기억할 수 있습니다. 그동안 나름 양질의 문서..
AWS에서 spot을 사용해서 컴퓨팅 비용을 절감하는 방식은 너무 유명합니다. 하지만 spot은 언제든 빼앗길 여지가 있는데요. EKS에서 AutoScaler로 카펜터(karpenter)를 사용 중이고 인스턴스 타입으로 spot을 사용 중이라면 NTH(Node Termination Handler) 사용을 고려하셔야 합니다. 마치 애플리케이션이 종료되기 전에 시그널을 받아서 처리(signal handler)하는 것처럼 NTH는 노드가 종료되기 전에 "어떤" 이벤트를 받고 종료 전에 필요한 것들을 처리할 수 있도록 돕습니다.spot 인스턴스는 종료되기 2분 전에 EC2 Spot Instance interruption notice를 수신하는데요. 관련된 내용은 아래와 같이 cloudtrail에서 이벤트 이름을..
우리가 구축한 서비스가 견고한지, 가용성을 보장하는지, 확장성은 어떤지 등 시스템 탄력성을 테스트하기 위한 기법으로 카오스 엔지니어링이 있습니다. AWS Resilience Hub - Fault Injection Service(FIS)는 카오스 엔지니어링을 AWS에서 손쉽게 할 수 있도록 돕습니다. 이 기능을 이해하기 위해서는 aws cli로 접근하는 것보다 콘솔을 이용하시는 게 좋습니다. 어느 정도 기능을 익힌 후에는 터미널에서 마음껏 실행할 수 있을 겁니다.FIS의 기본 콘셉트는 Experiment templates 메뉴에서 실험 템플릿을 만들고, 템플릿을 실행하는 것에서 출발합니다. 템플릿에는 특정 리소스(e.g., EC2)의 ID로 지정해서 이벤트(종료 등)를 보낼 수도 있고, tags 기반으로 ..
Redshift는 Workload management(WLM) 설정을 통해 큐(queue)와 슬롯(slot)이라는 개념을 제공합니다. 넓은 범주에서 이야기하면 한 개에 큐 안에는 여러 개의 슬롯이 존재할 수 있습니다. 그리고 슬롯은 쿼리 실행의 동시성을 나타낸다고 보시면 됩니다. 즉, 슬롯 개수만큼 쿼리가 동시에 실행될 수 있는 거죠. 그렇다고 쿼리 속도가 슬롯에 독립적으로 보장된다는 말은 아닙니다. 클러스터 전체에서 사용하는 메모리를 나눠서 사용하는 구조라서요. 큐는 실행을 기다리는 쿼리 그룹을 나타내는 논리적 구성입니다. 큐 종류는 다음과 같습니다.- 삭제할 수 없는 default queue 1개- 사용자가 추가로 정의할 수 있는 큐 7개- AWS 콘솔 상에 나타나지 않는 superuser를 위한 큐..
이 프로젝트를 시작한 게 1년이 넘었는데 이제 블로그 글로는 마무리를 지으려고 합니다. 최종 결과물 사용 방법을 공유하려고요. 앞선 글을 읽으셨던 분들이 주신 문의도 많았고 한 번 정리할 필요가 있다고 느꼈습니다. 처음 이 프로젝트의 시작은 ChatGPT를 슬랙에 연동하기 위해 2개의 Repository를 사용했는데요. 현재는 1개로 통합했습니다. 아래 링크만 사용하시면 됩니다.https://github.com/jybaek/llm-with-slack GitHub - jybaek/llm-with-slack: Connect LLM to Slackbot. Works via FastAPIConnect LLM to Slackbot. Works via FastAPI. Contribute to jybaek/llm-w..
기대 이상입니다. 술술 읽히게 깔끔한 문장으로 작성된 것도 좋고, 내용도 너무 재밌습니다. 공감도 많이 되네요. 저는 중학교 때부터 이런저런 일을 많이 해보고 개발자가 된 케이스인데 저자는 저랑은 반대라서 더 재밌습니다. 여느 직장인처럼 커리어 개발과 성장에 늘 관심이 있었고, 내가 하는 일을 잘하고 싶었다. 무엇보다 내가 최고가 되지 않으면 동료들의 성공을 순도 100%의 마음으로 축하해주지 못하고 혹시나 샘내게 될까 봐 순간순간 최선을 다해 열심히 공부하고 배웠다. 구글 레이오프 당시의 감정이 생생하게 전달됐습니다. 갭이어란 무엇인지 화끈하게 보여주셨네요! 트레이더 조가 궁금해지기까지 했으며 리프트 기사가 왜 제게 더 말을 더 안 걸었는지도(?) 얼핏 알게 됐습니다. 하하. 스타벅스는 제가 미국에서 ..
코드 구조를 대대적으로 바꾸려고 코드 정리를 시작하는 경우가 많습니다. 너무 많이, 너무 빠르게 변경하지 않도록 주의하세요. 대개 작은 정리를 순차적으로 성공하는 것이 무리한 정리로 실패하는 것보다 시간을 아껴줍니다. 악보의 음표를 다루듯 코드를 정리하는 연습을 하세요. 음표가 깨끗하고 편안할 때 이를 이용해서 더 좋은 멜로디를 만들 수 있습니다. 오랜만에 완독했습니다. 얇아서 금방 읽었네요. 서문에도 쓰여있지만 경험 많은 개발자는 이미 다 알고 있는 내용일지도 모릅니다. 흩어져 있는 내용을 한 권으로 잘 정리 해둔 느낌이네요. 시리즈를 예고하고 있는데 다음 편도 기대됩니다. 부록이 본편이랑 두께가 비슷해서 뭐지 싶었는데요. 부록에서 역자와 저자의 대화들이 주는 재미가 있습니다. 본편이 어떻게 번역되었는..
작년 행사에서 순다의 AI 언급 횟수가 유튜브에 올라가서 화제가 된걸 순다도 알고 있었습니다. 그래서 이번에는 발표 스크립트를 Gemini에 넣고 확인하니 AI 키워드 언급을 120번 했다고. 이 말을 하는 순간 121 번으로 추가 카운팅 됐네요 ㅎㅎ 여러 가지 내용이 나왔지만 역시 가장 큰 임팩트는 Gemini 1.5 Pro의 토큰 증가였습니다. 이미 세계에서 가장 큰 컨텍스트 윈도우(1M)를 갖고 있다고(Longest context window in the world) 자신 있게 말하고 이걸 두 배로(2M) 키워버렸다고. 키노트 대부분의 세션에서 다시 언급될 정도로 중요한 내용이었습니다. 어쩌면 이 뒤로 있었던 모든 기술이 토큰 크기 증가로 인해 가능해진 걸 테니까요. 기술력만 놓고 보자면 오픈 AI..
테라폼으로 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..
- Total
- Today
- Yesterday