Spring Boot 멀티모듈 아키텍처 전환기
📉 빌드 34 → 6 초, 테스트 33 → 1.4 초. 7단계 분리를 거쳐서 모노리스를 “모듈화된 모노리스”로 탈바꿈했다. 이 글은 MSA를 향한 징검다리로서의 멀티모듈 전환기를 기록한 회고록이다.
📉 빌드 34 → 6 초, 테스트 33 → 1.4 초. 7단계 분리를 거쳐서 모노리스를 “모듈화된 모노리스”로 탈바꿈했다. 이 글은 MSA를 향한 징검다리로서의 멀티모듈 전환기를 기록한 회고록이다.
스프링 부트를 멀티모듈로 개발하다보면 settings.gradle
과 build.gradle
의 책임이 헷갈릴 때가 있다. 필자는 이 글에서 둘의 역할과 차이점을 명확히 정리해보고자 한다.
필자는 모듈화된 Java / Kotlin 프로젝트에서 가장 자주 헷갈리는 api와 implementation 스코프의 차이와 선택 기준을 명확히 정리해보고자 한다.
필자는 실시간 알림 시스템을 구현하면서 Server-Sent Events(SSE)를 도입하게 되었다. 기존의 폴링 방식에서 벗어나 서버에서 클라이언트로 실시간 데이터를 푸시하는 방식을 구현하고자 했으며, 특히 Spring Boot 환경에서 SSE를 활용한 실시간 알림 기능을 개발하였다. 구현 과정에서 연결 관리, 재연결 처리, 브라우저 호환성 등 다양한 문제들을 마주할 수 있었고, 이를 해결하는 과정에서 SSE의 동작 원리와 실무 적용 시 고려사항들을 깊이 있게 학습할 수 있었다. 본 글에서는 SSE의 기본 개념부터 실제 구현 과정, 그리고 마주할 수 있는 문제들과 해결 방법을 함께 정리하고자 한다.
필자는 Java 및 웹 개발 학습의 일환으로 간단한 HTTP 서버를 직접 구현해보며 웹 서버의 기본 구조와 요청 처리 방식을 익히고자 했다. 특히 가상 호스트(Virtual Host) 기능을 통해 하나의 서버에서 여러 도메인 요청을 분기하는 로직을 직접 구현하면서, 실무에서 자주 접하게 될 네트워크 및 서블릿 처리 흐름을 체득하고자 하였다. 해당 기능을 구현하던 중 Java의 HttpURLConnection
이 Host
헤더를 덮어써서 발생한 테스트 이슈를 경험하였다. 이를 해결하는 과정에서 교훈을 얻어 Virtual Host 개념 및 구현 내용을 정리하고, 그 과정에서 마주한 문제와 해결 방법을 함께 공유하고자 작성하였다.
필자의 로컬 개발 환경인 Mac에서 ElasticSearch를 설치하고, 실행하는 과정을 기록하려 한다.
ElasticSearch에 대해 알아보고자 한다.
확장성이라는 키워드에 대해 RDB와 NoSQL이 각각 어떠한 접근법으로 해당 이슈를 해결하였는지 알아보고자 한다.
C10K 문제에 대해 이야기해보고자 한다.
대용량 데이터 처리 시 Spring Batch의 성능을 획기적으로 개선하는 멀티스레드 적용 방법을 필자의 이전 프로젝트 사례를 통해 살펴보고자 한다.