[Spring MSA] 섹션0. microservice와 spring cloud
Cloud Native Architecture
특징
확장 가능한 아키텍처
- 시스템의 수평적 확정에 유연
- 확장된 서버로 시스템의 부하 분산, 가용성 보장
- 시스템 또는, 서비스 애플리케이션 단위의 패키지(컨테이너 기반 패키지)
- 모니터링
탄력적아키텍처
- 서비스 생성 - 통합 - 배포, 비즈니스 환경 변화에 대응 시간 단축 // 파이프라인
- 분할 된 서비스 구조
- 무상태 통신 프로토콜
- 서비스의 추가와 삭제 자동으로 감지
- 변경된 서비스 요청에 따라 사용자 요청 처리 (동적 처리)
장애격리
- 특정 서비스에 오류가 발생해도 다른 서비스에 영향 주지 않음
Cloud Native Application
CI/CD
지속적인 통합, CI(Continuous Integration)
통합 서버, 소스 관리(SCM), 빌드 도구, 테스트 도구
지속적 배포
Continuous Delivery
Continuous Deployment
Pipe line
DevOps
CI/CD를 무한 반복
Container 가상화
12 Factors
BASE CODE - 형상관리하기 위해 코드를 한곳에만 배포, 코드의 통일적인 관리
DEPENDENCY ISOLATION - 종속성, 각 마이크로서비스는 자체 종속성을 가짐, 전체 시스템에 종속되지않고 변경할 수 있어야함
CONFIGURATIONS - 구성정보, 구성관리도구를 통해서 마이크로서비스를 제어
LINKABLE BACKING SERVICES - 서비스 지원, 마이크로 서비스가 가져야될 기능을 추가로 지원
STAGES OF CREATION - 빌드, 릴리즈, 실행환경을 각각 엄격한 분리
STATELESS PROCESSES - 각각의 마이크로서비스는 자체 프로세스에서 운영될 수 있어야함 (독립적인 운영)
PORT BINDING - 각각의 마이크로서비스는 자체 포트에서 노출되는 인터페이스 및 기능과 함께 자체 포함되는 기능이 있어야한다.
CONCURRENCY - 동시성, 강력한 인스턴스에 확장하는것과 반대로 아주 많은수에 서비스를 동일한 프로세스를 복사해서 확장해 나가기 때문에 동시성을 가져야 한다.
DISPOSABILITY - 서비스 인스턴스 자체가 삭제 가능해야한다. 확장성을 높여야한다. 정상적으로 종료될 환경이 되어야한다. (Docker, Container-D, CRI-O 등을 사용하면 쉽게 구현 가능)
DEVELOPMENT & PRODUCTION PARITY - 환경을 중복되지 않고 종속되지 않게 서비스 구현해야 함
LOGS - 로그를 이벤트 스트림으로 처리해야함, 어플리케이션이 실행되지 않은 상태이더라도 로그만은 정상적으로 작동해야 함 (모니터링 도구, 로그관리 도구 사용하면 됌)
ADMIN PROCESSES FOR EVENTUAL PROCESSES - 마이크로서비스들이 어떠한 상태로 사용되고 있으며 리소스를 파악하기 위한 적절한 도구가 있어야한다. (레포팅, 데이터분석 기능이 포함되어야 한다)
+3
API first - api를 구축함에 있어서 사용자측에서 어떠한 상태로 쓸것인가를 먼저 고민해서 개발해야함
Telemetry - 모든지표는 모두 수치화되서 시각화되서 관리되어야되는 항목이다.
Authentication and authorization - api 사용함에있어서 인증은 필수적이다
Monolithic vs MSA
Monolithic vs MSA
Microservice
특징
- Challenges - 패러다임을 상당수 바꿔야함
- Small Well Chosen Deployable Units - 서비스 경계를 구분을 해야함
- Bounded Context - 큰 시스템을 여러 개의 작은 컨텍스트로 나누어 각 컨텍스트 내에서 특정한 비즈니스 규칙과 데이터 모델이 적용되는 것을 의미
- RESTful - 서로 상태에 대해서 REST API 형태로 제공되야함
- Configuration Management - 마이크로서비스는 외부의 시스템으로 환경설정 하겠다. 하드코딩x
- Cloud Enabled - 클라우드 네이티브 형태로 제공
- Dynamic Scale Up And Scale Down -
- CI/CD - 시각화되는 관리도구를 갖춰야한다.
- Visibility