독립적인 배포 가능성: 각 서비스는 독립적으로 배포할 수 있으며, 다른 서비스에 영향을 주지 않고 업데이트할 수 있다.
작은 팀 구성: 각 서비스는 작은 팀이 독립적으로 개발하고 관리할 수 있음
기술 스택의 다양성: 각 서비스는 적절한 기술 스택을 자유롭게 선택할 수 있음
장점: 확장성, 독립적 배포, 유연성
단점: 복잡성 증가(서비스 간 통신, 데이터 일관성 유지), 운영 비용 증가(모니터링, 로깅)
서비스 등록 및 디스커버리(Eureka)
마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리
로드 밸런싱(Ribbon)
서비스 인스턴스 간의 부하를 분산
서킷 브레이커(Hystrix, Resilience4j)
서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지
Resilience4j 특징
API 게이트웨이(Zuul, Cloud gateway)
Spring Cloud Config
중앙 집중식 설정 관리를 제공