본문 바로가기

Spring/MSA5

펀딩 API 성능 개선기: TPS 61에서 100으로 들어가며음악 크라우드펀딩 플랫폼을 개발하면서 가장 중요한 기능은 단연 '후원하기'였습니다. 사용자가 프로젝트에 후원하는 이 핵심 기능의 성능 테스트를 진행했을 때, 결과는 예상보다 좋지 않았습니다. TPS 61.6, 평균 응답 시간 3850ms. 이 글에서는 이를 TPS 100, 평균 응답 46ms까지 개선한 과정을 공유하려 합니다. 초기 성능, 그리고 문제의 시작처음 부하 테스트를 돌렸을 때의 결과입니다.요청 수: 1000건TPS: 61.6/sec평균 응답 시간: 3850ms최소: 167ms최대: 9462ms표준편차: 1705ms평균 응답 시간이 거의 4초에 가깝습니다. 더 심각한 것은 최대 응답 시간이 9초를 넘어간다는 점이었습니다. 저희는 AWS ECS에 배포할 계획이었고, 제한된 예산 내에서 인프.. 2025. 12. 10.
Spring Boot에서 Redisson을 활용한 분산 락 구현하기 들어가며MSA(Microservices Architecture) 환경에서 개발을 하다 보면 한 가지 자주 마주하게 되는 문제가 있습니다.바로 여러 서버 인스턴스가 동시에 동일한 스케줄러를 실행하는 상황입니다.제가 개발 중인 음악 크라우드펀딩 플랫폼에서도 같은 문제가 발생했습니다.“프로젝트 시작 스케줄러”, “프로젝트 종료 스케줄러”, “Outbox 이벤트 재시도 스케줄러”가 서버 2대 이상에서 동시에 실행되면서, 동일한 프로젝트가 중복 처리되는 상황이 생긴 것입니다. 이런 경우 데이터 정합성이 깨지고, 불필요한 중복 작업으로 인해 시스템 부하가 증가할 수 있습니다.이 문제를 해결하기 위해 다양한 방식을 검토한 끝에, Redis 기반의 Redisson 분산 락을 도입하게 되었습니다. 아래에서는 이를 AOP.. 2025. 12. 3.
AWS ECS 기반 MSA 구축 시 서비스 디스커버리 방식 비교 안녕하세요. 이번 포스팅에서는 AWS ECS Fargate 환경에서 마이크로서비스 아키텍처(MSA)를 구축할 때 고민했던 서비스 디스커버리 방식에 대해 공유하고자 합니다.프로젝트 배경저희 팀은 음악 크라우드펀딩 플랫폼을 MSA로 구축하고 있으며, 다음과 같은 환경에서 개발하고 있습니다.기술 스택: Spring Boot (Java 21), AWS ECS Fargate서비스 구성: 5개의 마이크로서비스 (Funding, Payment, Reward 등)예상 트래픽: DAU 50,000 ~ 100,000명, 피크 타임 TPS 5,000 ~ 10,000프로젝트 기간: 1개월팀 구성: 4명이러한 환경에서 서비스 간 통신을 어떻게 구성할지 고민하게 되었고, 3가지 방식을 비교 분석했습니다.제가 생각한 우리 서비스가.. 2025. 11. 26.
Java 21 Virtual Thread가 만드는 새로운 조합: MSA 서비스 간 통신의 4가지 선택지 들어가며Java 21의 Virtual Thread 등장으로 마이크로서비스 아키텍처에서 서비스 간 통신에 대한 선택지가 크게 확장되었습니다. 기존에는 HTTP 클라이언트 선택과 스레드 모델이 거의 고정적으로 결합되어 있었지만, 이제는 더 다양한 조합이 가능해졌습니다.- HTTP 클라이언트: OpenFeign vs WebClient- 스레드 모델: Platform Thread vs Virtual Thread이 두 축의 조합으로 총 4가지 접근 방식이 가능해진 것입니다. 각각의 조합이 어떤 특성을 가지며, 언제 어떤 선택을 해야 하는지 분석해보겠습니다.4가지 조합의 전체 그림1. OpenFeign + Platform Thread (전통적 방식)특징: 간단한 API, 제한된 동시성적합한 상황: 단순한 서비스, .. 2025. 9. 18.
MSA에서 WebClient와 Reactive Resilience4j 선택의 기술적 이점 들어가며마이크로서비스 아키텍처(MSA)에서 가장 흥미로운 점 중 하나는 각 서비스가 독립적으로 기술 스택을 선택할 수 있다는 것입니다. 서비스 간 통신에서도 마찬가지로, 어떤 팀은 OpenFeign의 선언적 접근 방식을 선호할 수 있고, 다른 팀은 WebClient의 리액티브 스트림을 활용할 수 있습니다.이번 글에서는 WebClient와 Reactive Resilience4j를 선택했을 때의 기술적 이점과 OpenFeign 대비 어떤 차별화된 가치를 제공하는지 살펴보겠습니다.MSA에서 기술 선택의 자유로움MSA의 핵심 철학 중 하나는 "적합한 도구를 적합한 상황에 사용하는 것"입니다. 같은 조직 내에서도 서비스별로 다음과 같은 다양한 선택이 가능합니다:팀별 다른 접근법팀 A: OpenFeign + 동기식.. 2025. 9. 18.