← 포트폴리오로 돌아가기
2026.01 — 2026.02

MSA 플랫폼 구축 프로젝트

Spring Boot 기반의 계좌·거래 마이크로서비스 아키텍처 및 GKE/Istio/NATS 기반의 이벤트 주도(Event-Driven) 운영 환경 구축

Role • Auth 서비스 구현
• GitHub Actions CI/CD 파이프라인 구축
• Terraform 기반 GKE 인프라 프로비저닝
• Istio, Kiali, Prometheus, Zipkin 관측성 환경 설정
Tech Stack
JavaSpring BootKubernetes (GKE) IstioTerraformPostgreSQLNATS JetStream

주요 기능

Event-Driven Microservices (NATS JetStream)

NATS JetStream을 메시지 브로커로 활용하여 서비스 간 느슨한 결합도를 해소했습니다. 메시지 보존 기능을 통해 비동기 통신의 신뢰성을 확보하고 장애 전이를 차단했습니다.

Istio Service Mesh & Observability

Istio를 도입하여 서비스 간 트래픽 제어 및 보안을 강화했습니다. Kiali로 실시간 트래픽 가시성을 확보하고, Zipkin을 통해 분산 마이크로서비스 환경에서의 E2E 추적을 구현했습니다.

Distributed Transactions (SAGA Pattern)

데이터 정합성 유지를 위해 SAGA 패턴을 구현했습니다. 주문-계좌 서비스 간 보상 트랜잭션 로직을 설계하여 비동기 환경에서도 최종 정합성을 보장합니다.

Terraform Cloud Infrastructure (GKE)

Terraform을 사용하여 VPC, Subnet, GKE 클러스터 등 클라우드 인프라를 코드로 관리(IaC)합니다. 재사용 가능한 모듈 구조로 인프라 프로비저닝 시간을 단축했습니다.

시스템 아키텍처

GCP GKE 기반 위에 Istio와 NATS가 통합된 이벤트 주도 마이크로서비스 아키텍처

MSA Platform Architecture (Event-Driven)

본 아키텍처는 Database-per-service 원칙을 준수하며, 각 서비스는 독립적인 논리 DB를 가집니다. Istio Ingress Gateway를 통해 외부 트래픽을 제어하고, 내부 서비스 간 통신은 mTLS와 Sidecar Proxy를 통해 보안 및 관측성을 확보합니다.

트러블슈팅 (Lessons Learned)

Istio Protocol Detection Error (NATS 메시지 유실)

Istio가 NATS 프로토콜을 잘못 인식하여 연결이 끊기던 문제를 해결하기 위해, Kubernetes Service의 포트 이름에 'tcp-' 접두사(예: tcp-nats)를 명시하여 프로토콜 감지를 수동으로 설정했습니다.

SAGA Pattern 데이터 정합성 지연 이슈

트랜잭션 완료 후 잔액 반영 로직의 타이밍 문제로 정합성이 깨지던 현상을 분석하여, TransactionResultSubscriber의 상태 업데이트 로직을 보강하고 재시도 메커니즘을 추가하여 해결했습니다.

GCP Artifact Registry 권한 부족 (403 Forbidden)

CI 파이프라인에서 이미지 푸시 중 발생한 권한 문제를 해결하기 위해, 서비스 계정에 'Artifact Registry Administrator' 역할을 부여하고 gcloud 인증 방식을 최적화했습니다.

대용량 바이너리 파일 Git 커밋 오류

.terraform 폴더 내 바이너리 파일이 포함되어 푸시가 거부되던 문제를 .gitignore 최적화git filter-repo를 통한 커밋 히스토리 정리를 통해 해결했습니다.