Section 0: Microservice와 Spring Cloud 소개 - KwangtaekJung/MSA-SpringCloud-user-service GitHub Wiki
Software Architecture
- Antifragile
- Auto scaling
- Microservices
- Chaos engineering
- Continuous deployments
Cloud Native Architecture
- 확장 가능한 아키텍처
- 탄력적 아키텍처
- 장애 격리 (Fault isolation)
- 특정 서비스에 오류가 발생해도 다른 서비스에 영향을 주지 않음.
Cloud Native Application
- Microservices
- CI/CD
- 지속적인 통합, CI(Continuous Integration)
- 통합 서버, 소스관리(SCM), 빌드 도구, 테스트 도고
- ex) Jenkins, Team CI, Travis CI
- 지속적 배포
- Continuous Delivery
- Continuous Deployment
- Pipe line
- 카나리 배포와 블루 그린 배포
- DevOps
- Development + Operations + QA(Quality Assurance)
- Containers
- 12 Factors + 3 (피보탈에서 3가지를 더해 15가지를 제시함.)
-
- API first
-
- Telemetry
-
- Authentication and authorization
Monolithic vs MSA
- Monolith vs Front & Back vs Microservice Architecture
Microservice
SOA와 MSA 와의 차이점
- 서비스의 공유 지향점
- SOA - 재사용을 통한 비용 절감
- MSA -
Microservice Architecture Structures
Spring Cloud
Main Projects
- Spring Cloud Config
- Spring Cloud Netflix
- Spring Cloud Security
- Spring Cloud Sleuth
- Spring Cloud Starters
- Spring Cloud Gateway
- Spring Cloud OpenFeign
Spring Cloud를 이용하여 Application 구축 시 설정해야 하는 것들
- Centralized configuration management
=> 환경 설정 관리
- Spring Cloud Config Server
- Location transparency
=> 서비스의 등록과 위치 정보 확인 및 검색
- Naming Server(넷플리스의 Eureka 서버를 이용)
- Load Distribution (Load Balancing)
- Ribbon(Client Side)
- Spring Cloud Gateway
=>여기에서는 Ribbon 보다는 Spring Cloud Gateway를 사용한다.
- Easier REST Clients
=>Microservices 간 통신
- Visibility and monitoring
- Zipkin Distributed Tracing (혹은 ELK 등등)
- Netflix API gateway
- Fault Tolerance