보안 구성 (OAuth2 + JWT)
OAuth2
토큰 기반의 인증 및 권한 부여 프로토콜
- 역할
- 리소스 소유자
- 클라이언트
- 리소스 서버
- 인증 서버
JWT
JSON Web Token

- [의존성]
Eureka Discovery Client
Spring Boot Actuator
Spring Security
implementation 'io.jsonwebtoken:jjwt:0.12.6'
Config 서버 (Spring Cloud Config)
분산 시스템 환경에서 중앙 집중식 구성 관리를 제공하는 프레임워크
- 애플리케이션의 설정을 중앙에서 관리
- 변경 사항을 실시간으로 반영
- Git, 파일시스템, JDBC등 다양한 저장소 지원
- 모든 마이크로서비스 설정 중앙에서 관리
- 개발/테스트/운영 등 환경별로 구성을 분리하여 관리 가능
- 설정 변경 시 재시작하지 않고도 실시간으로 반영
실시간 구성 변경
- Spring Cloud Bus
- 메세징 시스템(RabbitMQ 또는 Kafka 등)을 사용하여 변경 사항 전파
- 수동 구성 갱신
- Spring Boot DevTool
- Git 저장소 사용
- Spring Cloud Config 서버가 Git 저장소에서 설정 파일을 읽어오도록 설정

- [의존성]
Config Server
Spring Boot Actuator
Eureka Discovery Client
EnableConfigServer
분산 추적 (Micrometer, Zipkin(Docker))
분산 시스템에서 서비스 간 요청 흐름을 추적하고 모니터링 하는 방법
docker run -d -p 9411:9411 openzipkin/zipkin
http://localhost:9411/zipkin/

이벤트 드리븐 아키텍처 (Spring Cloud System)
시스템에서 발생하는 이벤트(상태 변화나 행동)를 기반으로 동작하는 소프트웨어 설계 스타일
- 이벤트는 비동기적 처리, 서비스 간의 느슨한 결합을 통해 독립적으로 동작할 수 있게 함
장점
- 느슨한 결합 - 서비스 간 종속성 제거, 독립적인 개발/배포
- 확장성 - 수평 확장 용이, 대규모 시스템 용이, 이벤트 프로듀서와 컨슈머를 독립적으로 확장 가능
- 비동기 처리 - 이벤트를 비동기적으로 처리하여 시스템의 응답성 향상, 요청과 응답을 비동기적으로 처리하여 성능 최적화
단점
- 복잡성 증가 - 이벤트 흐름과 상태 관리를 체계적으로 설계
- 장애 전파 - 이벤트 실패 시 다른 서비스로 장애 전파될 수 있음
Spring Cloud System
이벤트 드리븐 마이크로서비스를 구축하기 위한 프레임워크
- Kafka, RabbitMQ 등의 메세지 브로커와 통합하여 이벤트 스트리밍을 처리
- 프로듀서와 컨슈머 간의 통신 추상화 - 이벤트 기반 애플리케이션 간편 개발