세션 0 MSA와 Spring Cloud 소개

MSA와 Spring Cloud 소개
안전한 아키텍처
- 오토스케일링
- 카오스 엔지니어링
- 마이크로 서비스
- CD
클라우드 네이티브 아키텍쳐
- 특징
- 시스템의 수평적 확정에 유연
- 확장된 서버로 시스템의 부하, 분산 가용성 보장
- 시스템 또는 서비스 애플리케이션 단위의 패키지
- 모니터링
클라우드 네이티브 어플리케이션
특징
12 Factor
- 코드베이스(Codebase): 하나의 애플리케이션은 하나의 코드베이스를 가져야 합니다.
- 종속성 관리(Dependencies): 종속성은 명시적으로 선언되어야 하며, 외부 의존성을 포함하지 않아야 합니다.
- 설정(Config): 설정 정보는 환경 변수와 같은 외부에서 관리되어야 하며, 코드에 직접 포함되어서는 안 됩니다.
- 백엔드 서비스(Backing Services): 데이터베이스, 메시지 큐 등과 같은 백엔드 서비스는 외부 리소스로 취급되어야 합니다.
- 빌드/릴리즈/실행(Build, Release, Run): 빌드와 배포 과정은 분리되어야 하며, 실행 환경에 따라 구분되어야 합니다.
- 프로세스(Processes): 애플리케이션은 상태를 공유하지 않고 동작 가능한 프로세스로 실행되어야 합니다.
- 바인딩(Binding): 실행 시에 서비스 또는 리소스와 바인딩될 때 환경 변수를 사용하여 연결합니다.
- 스케일링(Scaling): 수평적으로 확장 가능하도록 설계하여 추가 인스턴스를 쉽게 생성할 수 있도록 해야 합니다.
- 일회용 컨테이너(Disposable Containers): 프로세스가 무상태(stateless)여서 언제든지 중단될 수 있으며 복구 가능해야 합니다.
- 개발/운영 일관성(Dev/Prod Parity): 개발과 운영 환경 사이의 차이점을 최소화하여 일관된 동작을 유지해야 합니다.
- 로그(Logs): 로그 데이터는 이벤트 스트림으로 처리되어 중앙화된 저장소에 기록돼야 합니다.관리
- 프로세수(Processes) : 실행 시간 정보와 상태 정보를 확인할 수 있는 명령형 도구(Command Line Interface)를 제공해야 합니다.
모놀리틱 vs msa
SOA와 MSA 차이점
SOA
- 공통의 서비스를 ESB에 모아 공통 서비스형식으로 서비스제공
Restful API
스프링 클라우드?
- 지원하는서비스
- config
- spring cloud config server
- eureka
- security
- gateway
- open feign
- starters
- 데이터 통신
- 장애극복