헬스케어 플랫폼 인프라 구축
에이블테라퓨틱스 | 2025.07 ~ 재직중
MSA 기반 헬스케어 플랫폼 인프라 신규 설계 및 구축
시스템 아키텍처
Client
Web/App
ALB
Load Balancer
Edge API
Gateway (Daou)
Coupon DB
쿠폰 전용
Core API
Platform
Admin API
Platform
Partner API
Platform
Platform DB
회원/사업체/진단 등
Redis
* 모든 API 서버는 Spring Cloud Config Server에서 설정을 가져옴
상세 내용
- Client → ALB → Edge API(게이트웨이) → Core/Admin/Partner API 아키텍처 설계
- Edge API: 다우전용 API (쿠폰, 상품, 1:1문의 등) + Coupon DB 별도 연결
- Platform 서버: core-api, admin-api, partner-api (Platform DB - 회원/사업체/진단 등)
- Redis 멀티 인스턴스: redis-core, redis-coupon, redis-diagnosis (별도 서버)
- Spring Cloud Config Server를 통한 중앙 설정 관리
- Admin App / Front App 프론트엔드 개발 지원
- Redis + Lua 스크립트 기반 분산 태스크 큐 설계 및 구현 (Kafka 대체)
- 티켓 번호 기반 순서 보장 큐 (INCR 카운터 + List + Hash)
- Lua 스크립트 6개로 원자적 큐 연산 (enqueue, dequeue, complete, handle_failure, recover, retry_dlq)
- DLQ + 서버 재시작 시 자동 복구, O(1) 대기 순서 조회
하이라이트
Redis Lua 기반 분산 태스크 큐 자체 설계
Problem
MSA 환경에서 서비스 간 비동기 작업의 순서 보장과 실패 처리가 필요했으나, Kafka 별도 클러스터 도입은 소규모 팀에 운영 부담이 과중한 상황
Solution
별도 EC2에 Redis 전용 서버를 구축하고, Lua 스크립트 기반 분산 태스크 큐를 자체 설계. INCR 카운터 + List + Hash 조합으로 티켓 번호 기반 순서 보장, DLQ로 실패 격리, 서버 재시작 시 자동 복구 구현
Result
Kafka 클러스터 대비 최소한의 EC2 비용으로 메시지 큐 확보, Lua 스크립트의 원자적 실행으로 Race Condition 원천 차단, O(1) 대기 순서 조회 성능 확보
Spring Cloud Config 중앙 설정 관리 도입
Problem
MSA 환경에서 서비스별 설정 파일이 분산되어 환경 변경 시 각 서버마다 수동 반영 필요
Solution
Spring Cloud Config Server로 설정 중앙화, 환경별(dev/prod) 프로파일 분리
Result
설정 변경 시 단일 지점에서 관리, 배포 없이 설정 반영 가능. 환경별 설정 반영 시간 서버당 약 10분 → 전체 1분 이내로 단축
CI/CD 파이프라인 구축 및 배포 보안 강화
Problem
수동 배포 시 약 20분 소요, 휴먼 에러 발생 위험 및 배포 아티팩트 무결성 검증 부재
Solution
Jenkins CI/CD 파이프라인 구축. 매 빌드마다 GPG 서명 검증 수행, S3에 배포 압축 파일·GPG 서명 파일·체크섬을 업로드하여 무결성 보장
Result
배포 시간 20분 → 평균 3분으로 약 85% 단축, GPG 서명 + 체크섬으로 배포 아티팩트 위변조 방지
DB 분리를 통한 서비스 독립성 확보
Problem
단일 DB에 모든 서비스 데이터가 혼재되어 서비스 간 의존성이 높고 장애 전파 위험 존재
Solution
Coupon DB / Platform DB로 분리하고, 서비스별 독립 접근 경로 설계. 크로스 DB 트랜잭션은 Saga 패턴 기반으로 최종 일관성 보장
Result
DB 장애 시 영향 범위 격리로 장애 전파 차단, 서비스별 독립 배포 및 스케일링 가능. 단일 DB 병목 해소