IT 363

ALB 뒤에서 502가 뚝뚝 떨어지던 날의 회고

지난주에 롤링 업데이트 도중 5분 동안 502가 쭉쭉 떨어졌다. 트래픽 피크 시간대였고, 알림 채널이 몇 초 간격으로 울렸다. 새벽도 아닌 오후 3시였는데, 오히려 그게 더 뼈아팠다. 다들 사무실에 있었으니까.우리 팀은 EKS 위에 AWS Load Balancer Controller로 ALB를 붙여서 쓴다. 노드 24대, 파드 수는 서비스마다 다르지만 문제가 된 서비스는 파드 12개짜리였다. 배포 스크립트도 평범한 Deployment 롤링 업데이트, maxSurge: 25%, maxUnavailable: 0. 이론적으로는 무중단이어야 하는데, 현실은 그렇지 않았다.처음 의심한 건 헬스체크였다로그를 열어보니 502가 뜬 요청들은 전부 upstream connect error 계열이었다. ALB는 살아있다고..

IT/AWS 2026.08.10

Helm --set-json, 이거 모르는 분 꽤 많더라

오늘 팀원한테 Helm values override 얘기를 하다가 알게 됐다. --set-json 플래그 쓰는 사람이 생각보다 적더라. 대부분 --set으로 어떻게든 우겨넣거나 임시 values 파일 만들어서 -f로 넘긴다.근데 CI 파이프라인에서 잠깐 하나만 override할 때는 이게 좀 애매하다. values 파일 만들자니 번거롭고, --set으로 배열/객체 넣자니 콤마 이스케이프 지옥이 시작된다. 이럴 때 --set-json이 답이다.--set의 콤마 지옥sidecar 하나 붙이려고 --set으로 배열 넣어본 적 있으면 안다. 이런 걸 만나게 된다.# 실패 확률 높은 코드helm install redis ./chart \ --set master.sidecars[0].name=logger \ -..

IT/Kubernets 2026.08.09

Terraform vs OpenTofu vs Pulumi, 2026년에 우리는 뭘 골랐나

작년 이맘때만 해도 이 얘기를 꺼내면 팀 슬랙 채널이 뜨거워졌다. HashiCorp가 BSL로 라이선스를 바꾼 뒤 OpenTofu 포크가 나왔고, 마침 우리 팀은 Pulumi로 옮겨야 하나 하는 논의도 있었다. 1년 반 정도가 흘렀고, 세 도구 모두 조금씩 다른 방향으로 자라났다. OpenTofu는 최근 1.9까지 오면서 state 암호화 같은 걸 Terraform보다 먼저 넣었고, Terraform은 HCP 통합을 계속 강화하고 있고, Pulumi는 여전히 "진짜 프로그래밍 언어로 IaC"라는 자리를 지키고 있다.우리 팀은 6개월 동안 세 개를 실제 프로젝트에 나눠 쓰면서 비교해봤다. 결론부터 말하면 하나로 통일하지 못했다. 상황마다 다르더라. 이 글은 그 과정에서 느낀 것들이다.라이선스와 거버넌스, ..

IT/IaC 2026.08.09

PostgreSQL 논리 복제 슬롯, failover에서 살리는 법 (17 이후 실전 가이드)

논리 복제(logical replication)를 실제 운영에서 굴려본 사람이라면 한 번쯤 겪는다. HA 구성 잘 짜놨고, 프라이머리가 죽어도 스탠바이로 넘어가는 건 문제 없다. 근데 넘어가고 나서 CDC 파이프라인이 조용히 멈춰있다. Debezium 로그를 보면 "replication slot does not exist". 이유는 단순하다 — 복제 슬롯은 프라이머리에만 있었고, 스탠바이가 승격되는 순간 그 슬롯의 커밋 위치 정보가 통째로 증발한 거다.PostgreSQL 17에서 failover slots가 정식으로 들어왔고, 18에서 1년치 버그 패치가 얹혀서 이제 프로덕션에서 쓸만해졌다. 이번 글은 그 세팅을 처음부터 끝까지 밟아보는 실무 가이드다. RDS를 쓰는 팀에게도 해당되는 이야기가 있어서 뒤..

IT/DB 운영 2026.08.09

Vault vs AWS Secrets Manager, 우리 팀은 왜 하이브리드로 갔나

시크릿 관리 도구 얘기가 나오면 늘 "그거 Vault로 하면 되잖아요" 아니면 "AWS 쓰면 Secrets Manager가 편하지" 두 진영으로 갈린다. 우리 팀도 작년까지는 그랬다. 지금은? 둘 다 쓴다. 하이브리드로 굴러가는 지 반 년쯤 됐고, 나름 안정화됐다. 그 과정에서 알게 된 것들을 정리한다.작년 초 IBM이 HashiCorp을 인수하면서 Vault Enterprise 라이선스 정책이 조금씩 바뀌기 시작했다. 우리는 커뮤니티 에디션을 쓰고 있었지만, 로드맵이 IBM 포트폴리오와 얽히기 시작한 게 살짝 불안하긴 했다. 그렇다고 AWS Secrets Manager로 다 옮기자니 우리 워크로드가 AWS 온리도 아니었다. 온프렘 DB가 아직 남아있고, GCP에도 워크로드가 조금 있다.각각의 강점, 실..

IT/DevSecOps 2026.08.08

eBPF 관측성 도구는 사실 이렇게 동작한다 — Hubble, Pixie, Beyla 내부 흐름

요즘 새 클러스터 세팅할 때마다 CNI를 Cilium으로 깔고, 그 다음날부터 "Hubble UI 켜주세요" 요청이 들어온다. Pixie도 붙여봤고, 최근에는 Grafana Beyla까지 검토 목록에 올렸다. 세 도구 다 "사이드카 없이 관측성 확보"라는 같은 문구를 쓰는데, 사실 내부적으로는 노드에서 하는 일이 꽤 다르다. 이번 주에 팀 세미나 준비하면서 각 도구가 어디에 eBPF 프로그램을 붙이는지, 데이터는 어떻게 흘러 나가는지 다시 정리했다.이 글은 그 정리 노트다. 사용법 튜토리얼은 아니고, "왜 이 도구는 HTTP 헤더까지 보이는데 저 도구는 IP:포트만 보이지?" 같은 궁금증에 답이 되도록 쓴다.eBPF 훅 포인트가 결정하는 관측 범위관측성 도구가 뭘 볼 수 있는지는 결국 커널의 어느 지점에..

IT/모니터링 2026.08.08

topologySpreadConstraints, ScheduleAnyway를 너무 믿지 말자

오늘 알게 된 건데, 이거 모르는 분 꽤 많더라. topologySpreadConstraints에서 whenUnsatisfiable: ScheduleAnyway로 설정해두고 "AZ 골고루 퍼지겠지" 안심하다가 뒤통수 맞기 딱 좋다.우리 팀에서도 이번 주에 비슷한 일이 있었다. 3-AZ EKS에 6개 replica를 배포하는데 특정 AZ에 4개가 몰려서 나머지 두 AZ는 각각 1개씩. 스펙에 maxSkew: 1, whenUnsatisfiable: ScheduleAnyway가 분명히 박혀 있는데도 그랬다.왜 이런 일이 생기나ScheduleAnyway는 이름 그대로 소프트 제약이다. 스케줄러가 최선을 다해서 스프레드를 지키려 하지만, 다른 스코어링(리소스 여유, 이미지 로컬리티, 노드 셀렉터 우선순위 등)이 ..

IT/Kubernets 2026.08.08

ArgoCD sync-wave 잘못 걸었다가 배포가 멈춘 이야기

지난주 화요일 밤, 스테이징에서 새 서비스를 릴리즈하는 중이었다. ArgoCD 앱 하나 만들고, sync 눌렀고, 커피 한 잔 뜨러 갔다 왔다. 돌아왔더니 sync 상태가 Progressing에서 멈춰 있었다. 40분째. 그때부터 새벽 두 시까지 이걸 풀었다.뭐가 문제였나우리 팀은 요즘 ArgoCD 앱에 argocd.argoproj.io/sync-wave annotation을 적극적으로 쓴다. 이유는 단순하다. Helm chart 하나에 CRD, Namespace, ConfigMap, Deployment, Service, Ingress가 다 들어 있으면 순서가 꼬인다. CRD가 만들어지기 전에 Custom Resource가 apply되면 sync가 실패한다. 그래서 CRD는 wave 0, Namespac..

IT/CI CD 2026.08.08

Ingress NGINX 이후, 뭘로 갈아탈까

3월 24일에 ingress-nginx가 공식적으로 EOL 됐다. 이제는 CVE 패치도 안 나온다. 우리 팀도 절반이 아직 ingress-nginx를 쓰고 있어서 지난 두 달 동안 대체제 검토를 이어왔다. Envoy Gateway, Cilium Gateway, Traefik, kgateway. 이 네 개를 실제로 클러스터에 붙여봤고, 그 중 하나로 결정을 내렸다. 결정 자체보다는 각각 뭐가 다른지, 어디서 삽질했는지를 정리해보려 한다.전제 조건부터 짚자. 우리는 EKS 위에서 돌아가고, 노드는 대략 90대. 트래픽은 RPS 8k 정도이고 대부분 gRPC와 HTTP/2. 사내 서비스 60여개가 하나의 Ingress 컨트롤러 뒤에 붙어있는 형태다. 만약 여러분 환경이 GKE 매니지드 게이트웨이를 그냥 켜면 ..

IT/기타 2026.08.07