FastAPI 공식 문에서는 FastAPI를 다음과 같이 정의하고 있습니다. FastAPI is a modern, fast (high-performance), web framework for building APIs with Python based on standard Python type hints. 즉, FastAPI는 표준 Python...
Dispatcher Servlet 톺아보기
Dispatcher Servlet은 Spring MVC의 핵심 컴포넌트로, Front Controller 이라고도 불립니다. 위 글에서는 Dispatcher Servlet의 역할과 동작방식 구현이유 등을 톺아보겠습니다. 🍳 분석 환경 Java 21 Spring Boot 3.2.5 Spring Boot Starter Web ✅ ...
개인 프로젝트 MSA 전환 - (6) Circuit Breaker와 Fallback을 활용한 장애 복구
MSA 환경에서 하나의 서비스 장애가 전체 시스템에 영향을 미치는 상황을 방지하기 위해 Circuit Breaker 패턴이 자주 사용됩니다. 이번 포스팅에서는 Spring Cloud + Resilience4j를 사용하여 장애 발생 시 자동으로 우회하거나, 예외를 처리하는 구조를 어떻게 구성했는지 정리해보겠습니다. ✅ Circuit Breaker란...
개인 프로젝트 MSA 전환 - (5) Config Server를 활용한 설정 관리
MSA 구조에서 각 서비스는 독립적으로 배포되고 실행되기 때문에, 서비스마다 설정 파일(application.yml)을 따로 관리해야 합니다. 하지만 서비스가 많아질수록 설정 파일의 중복, 불일치, 보안 이슈 등 다양한 문제가 생깁니다. 이번 포스팅에서는 Spring Cloud Config Server를 도입해 설정 파일을 중앙에서 일괄 관리...
개인 프로젝트 MSA 전환 - (4) OpenFeign을 활용한 서비스 간 통신 구현
MSA 구조에서는 서비스들이 독립적으로 운영되기 때문에, 서로 간에 데이터를 주고받을 일이 굉장히 많습니다. 이번 글에서는 서비스 간 통신을 훨씬 더 쉽게 만들어주는 OpenFeign을 활용해서, 실제로 어떻게 구현했는지 정리해보려 합니다. ✅ MSA 환경에서의 서비스 간 통신 MSA에서는 다음과 같은 다양한 방식으로 다른 서비스에 요청...
개인 프로젝트 MSA 전환 - (3) Service Discovery + Api Gateway 적용
MSA 구조에서는 각 서비스들이 독립적으로 존재하기 때문에,이들 간의 원활한 통신을 위해 Service Discovery와 API Gateway가 필요합니다. 서비스 디스커버리는 각 서비스의 위치를 찾는 방법을 제공하고, API 게이트웨이는 클라이언트와 서비스 간의 통신을 관리합니다. 이 두 가지를 요소를 MSA에 적용해보겠습니다. ✅ Serv...
개인 프로젝트 MSA 전환 - (2) 멀티 모듈 구성
기존 제 프로젝트는 단일모듈로 구성되어 있었고 이를 멀티모듈로 구성하여 MSA로 전환해보겠습니다. ✅ 멀티 모듈 이란? 멀티 모듈은 여러 개의 모듈을 하나의 프로젝트로 관리하는 방법입니다. 여러 개의 모듈을 하나의 프로젝트로 관리하면, 각 모듈을 독립적으로 관리할 수 있습니다. 즉, MSA 구조에서는 각 마이크로서비스를 하나의 모듈로...
개인 프로젝트 MSA 전환 - (1) MSA에 대해 알아보자
MSA를 개인적으로 공부하며, 제 개인 프로젝트인 가계부 웹을 MSA로 전환해보기로 했습니다. 현재 가계부 웹은 모놀리식으로 구성되어 있습니다. 아래는 제 가계부 웹의 ERD 입니다. ✅ Monolithic Architecture 모놀리식 아키텍처는 모든 기능과 서비스를 하나의 단일 애플리케이션으로 통합하여 개발하는 아키텍처 패턴입니다...
Redis Lettuce SETNX 정리
분산락을 구현하기 위해 Redis의 SETNX는 자주 사용된다. 어떤 상황에서 적용하면 좋은지, 어떤식으로 사용하는지 정리해보겠다. ✅ SETNX란? SETNX는 Redis의 명령어 중 하나로, SET Not Exists의 약자이며, 키가 존재하지 않을 때만 값을 설정하는 명령어이다. 즉, 키가 존재하지 않을 때만 값을 설정하고, 키가 존재...
HikariCP + Tibero Network Timeout 해결하기
이 글은 간혈적으로 발생하던, Tibero Connection의 Network Timeout 이슈로 문제 정의부터 해결한 과정을 담았습니다. ✅ 개발 환경 SpringBoot 2.6.2 Tibero 6.0 HikariCP 4.0.3 Java 8 ✅ 문제 상황 📌 증상 서비스에서 간헐적으로 DB 연결 대기가 15분 이...