반응형

전체 글 417

[EKS] Blue-Green 배포 시 발생하는 ALB 503 에러 해결기 (with Argo Rollouts Canary)

OverviewEKS 환경에서 무중단 배포를 구축하는 과정에서 겪은 트러블슈팅 경험을 공유하고자 한다.이전 포스팅에서 일반 Deployment 배포를 안전하게 유지하는 4가지 설정(preStop, Pod Readiness Gate, RollingUpdate, PDB)을 다루었다. 이번에는 그 바로 윗단계 레이어인 Argo Rollouts 배포 전략에 대한 이야기다. 운영 중인 Fastify 기반의 Stateless HTTP API 서비스가 배포될 때마다, 원인 모를 ALB 503 에러가 순간적으로 발생했다. 재미있는 점은 컨테이너 애플리케이션 자체는 아주 건강했고 에러 로그가 전혀 없었다는 것이다. 범인은 애플리케이션이 아닌 로드 밸런서(ALB)에 있었다. 왜 이런 일이 발생했는지, 그리고 이를 해결하기..

AWS 00:00:54

EKS 컴퓨팅 모드 비교: Fargate, 관리형 노드 그룹, Karpenter, 그리고 Auto Mode

OverviewEKS에서 Fargate와 EC2 노드 그룹을 비교하던 초기에는 클러스터에 컴퓨팅 자원을 추가하는 경로가 사실상 두 가지뿐이었다. 이후 Karpenter가 등장하며 노드 프로비저닝 패러다임이 바뀌었지만, 이를 운영하려면 Terraform(인프라)과 Helm(인클러스터 리소스)이라는 두 개의 레이어를 지속적으로 관리해야 했다. 그리고 네 번째 선택지로 EKS Auto Mode가 추가되었다. 흔히 Auto Mode를 두고 "AWS가 컴퓨팅을 알아서 관리해 주는 기능" 이라고 소개하지만, 이는 기술적인 실체를 설명하기에는 다소 추상적인 표현이다. Auto Mode의 구조를 기술적으로 정의하면 다음과 같다.EKS Auto Mode는 AWS가 운영 책임을 위임받은 Karpenter다. 완전히 ..

AWS 2026.09.14

[macOS] Bash 5.3.9 setlocale 에러 해결 — LC_CTYPE Bad file descriptor

OverviewHomebrew를 통해 bash를 사용하는 macOS 환경에서, bash 버전이 5.2에서 5.3.9로 업데이트된 후 터미널을 열 때마다 `setlocale: LC_CTYPE: cannot change locale (): Bad file descriptor` 경고가 반복 출력되는 문제가 발생할 수 있다. 이 글에서는 해당 에러의 원인을 분석하고, `~/.bash_profile` 설정만으로는 왜 해결되지 않는지 설명한다. 그리고 macOS의 `launchctl` 과 `LaunchAgent` 를 활용하여 bash 프로세스가 시작되기 전에 로케일 환경변수를 주입하는 방법으로 문제를 해결한다. 환경ItemValueOSmacOS 14.6.1 (Sonoma)ArchApple Silicon (a..

Trouble Shooting 2026.09.10

SNS + SQS + EventBridge: AWS 이벤트 기반 아키텍처 설계 가이드

OverviewAWS에서 이벤트 기반 아키텍처를 설계할 때 가장 자주 등장하는 서비스가 SNS, SQS, EventBridge다. 세 서비스 모두 "메시지를 전달한다"는 공통점이 있지만, 설계 목적과 사용 방식이 다르다.이 글에서는 각 서비스의 개념과 특징을 정리하고, 어떤 상황에서 어떤 조합을 선택해야 하는지 실전 기준으로 비교한다. SNS (Simple Notification Service)SNS는 Pub/Sub 메시징 서비스다. 하나의 메시지를 여러 구독자에게 동시에 전달하는 것이 핵심이다. 동작 방식Publisher → SNS Topic → Subscriber 1 (SQS) → Subscriber 2 (Lambda) ..

AWS 2026.09.03

Git-Bridge: Go로 만든 멀티 플랫폼 Git 미러링 시스템

Overview멀티 Git 플랫폼 환경에서 리포지토리 동기화는 흔한 과제다. 특히 CodeCommit을 소스로 사용하면서 사내 GitLab이나 GitHub으로 미러링해야 하는 경우, 각 플랫폼마다 이벤트 수신 방식이 달라 통합된 솔루션이 필요하다. 이 글에서는 Go로 작성한 Git 리포지토리 미러링 도구 git-bridge를 소개한다. AWS EventBridge + SQS를 활용한 CodeCommit 이벤트 수신, GitLab/GitHub 웹훅 수신, 그리고 Terraform으로 인프라를 프로비저닝하는 전체 구축 과정을 다룬다.주요 특징: 멀티 프로바이더(CodeCommit, GitLab, GitHub), 양방향 미러링, DLQ 기반 재시도, Slack 알림, Kubernetes 네이티브 배포 http..

IaC/CI CD Tool 2026.08.27

OTel Operator를 활용한 코드 수정 없는 자동 계측 (Auto-Instrumentation)

Overview본 글은 분산 추적(Distributed Tracing) 시리즈의 마지막 제3편이다. 이론과 개념을 다루었던 제1편과 AWS EKS 환경에서 실제 인프라(S3 기반 Tempo, OTel Collector 게이트웨이, GitOps 자동 계측)를 구축했던 제2편에 이어, 이번 편에서는 시스템이 본격적으로 가동된 이후의 운영 및 튜닝(Day-2) 단계를 집중적으로 다룬다. 인프라 셋업이 완료되었으므로 이제 아키텍처를 다시 구축하는 이야기는 하지 않는다. 대신, 수집된 데이터를 바탕으로 실전 APM 대시보드를 입체적으로 읽는 방법, 메트릭의 이상 지표(Spike)에서실제 결함 트레이스로 단 한 번의 클릭만으로 점프하는 이그젬플러(Exemplars) 활용법, 그리고 서비스 오픈 및 트래픽 유입 시점..

Observability 2026.08.23

Docker Desktop에서 OrbStack으로 마이그레이션하기

OverviewmacOS에서 Docker Desktop을 사용하다 보면 CPU가 치솟고 팬이 돌아가는 경험을 한 번쯤 해봤을 것이다. 특히 Docker 빌드 중에는 시스템 전체가 느려지는 경우도 흔하다. OrbStack은 macOS 전용 Docker Desktop 대안으로, 네이티브 Swift 앱 기반으로 동작하여 CPU와 메모리 사용량이 훨씬 적다. 기존 Docker CLI와 100% 호환되므로 `docker`, `docker compose`, `docker buildx` 등 기존 명령어를 그대로 사용할 수 있다. 이 글에서는 Docker Desktop에서 OrbStack으로 마이그레이션하는 전체 과정을 단계별로 정리하고, 실제 성능 비교 결과도 함께 공유한다. OrbStack이란?OrbStac..

IaC/Container 2026.08.20

AWS EKS에 분산 추적 시스템 구축하기: Grafana Tempo 및 OpenTelemetry (Part 2)

Overview본 글은 분산 추적(Distributed Tracing) 시리즈의 제2편이다. 이론과 개념만을 다루었던 제1편에 이어, 이번 편에서는 실제 운영 환경에 적용 가능한 인프라를 직접 구축해 본다. 오브젝트 스토리지(S3)를 백엔드로 사용하는 템포(Tempo), 스팬 메트릭과 테일 기반 샘플링(Tail-based Sampling)을 처리하는 오픈텔레메트리 컬렉터(OpenTelemetry Collector) 게이트웨이, 그리고 어노테이션(Annotation) 한 줄로 동작하는 자동 계측(Auto-instrumentation)까지, 1편에서 추상적으로 다루었던 모든 개념들을 프로덕션 AWS EKS 클러스터 위에 GitOps 파이프라인을 통해 생생하게 구현해 낸다. 본문에 사용된 값과 식별자들은 보안..

Observability 2026.08.17

Git Stash로 Pull 충돌 해결하기

Overview로컬에서 작업 중인 파일이 리모트에서도 변경되었을 때, `git pull` 이 실패하는 상황은 개발자라면 누구나 한 번쯤 겪는 문제이다.error: Your local changes to the following files would be overwritten by merge: .github/workflows/ci.ymlPlease commit your changes or stash them before you can merge. 이 글에서는 `git stash` 를 활용하여 커밋되지 않은 로컬 변경사항을 안전하게 보관하고, 리모트 변경사항을 충돌 없이 가져온 뒤, 다시 로컬 변경사항을 복원하는 과정을 정리한다. git stash란? git stash는 현재 작업 디..

반응형