- IT System 의 역사
- Anti-Fragile 의 주요요소
1) Auto-Scaling
: 사용량에 따라 자동으로 scale-out 하는 방식
2) Microservice
: Monolith 방식 처럼 하나의 큰 프로젝트에 여러 요소 (Frontend, Backend, DB 등) 를 다 넣어서 관리하는게 아니라
각 서비스 마다 개별적인 모듈로 분리해서 관리하는 방식
3) Chaos Engineering
: 예상치 못한 상황에 대응하는 것
4) CI/CD
: 지속적인 통합과 배포
- Cloud Native Architecture 의 특징
1) 확장 가능한 Architecture
: 시스템의 유연한 수평적 확장(Scale-out), 시스템 부하 분산(Load Balancing), Container 기반의 모듈 관리 등
2) 탄력적인 Architecture
: 서비스의 생성, 통합, 배포에 있어서 비지니스 요구사항 변화에 따라 유연하게 대처
3) Fault Isolation
: Microservice 를 기반으로 하므로, 특정 서비스에 장애 발생시 다른 서비스에 큰 영향을 주지 않을 수 있음
- Cloud Native Application 의 주요 요소
1) CI/CD
2) DevOps
3) Microservice
4) Container
- 12 Factors
: Cloud Native Application 을 구축함에 있어서 고려해볼만한 12가지 사항
- Monolithic architecture 와 Microservice architecture
그림에서 알 수 있듯이
Monolithic architecture 는 하나의 큰 프로젝트 안에서 여러 서비스들을 통합적으로 넣어놓은 것 이라면
Microservice architecture 는 서비스들 마다 개별 모듈로 분리해서 관리하는 방식
예를들어, 쇼핑몰 사이트를 운영한다고 하면,
유저 정보를 관리하는 User microservice
주문 정보를 관리하는 Order microservice
상품 정보를 관리하는 Product microservice 등 으로 나눠서 생각해볼 수 있고
이런 식으로 분할해서 전체 서비스를 관리하는 것을 microservice architecture 라 한다
- microservice 의 특징과 이점
참조 : https://aws.amazon.com/ko/microservices/
- 표준 MSA 구성요소
- MSA 에 사용되는 주요 기술들
- 무조건 microservice 를 도입해야 하는가
다음의 질문 사항들을 생각해보고, 만들고자 하는 서비스가 얼마나 부합한지에 따라서 결정하는게 좋다
1) 변화의 빈도수가 높은가
2) 각 서비스가 독립적인 확장성을 가져야하는가
3) 각 서비스가 독립적인 라이프 사이클을 가지는가
4) 서비스간의 경계가 구분이되는가 (외부 종속성과 상호작용이 단순한지 등)
5) 하나의 기술 뿐 아니라 다른 여러 기술이 필요한가
6) 격리된 오류가 필요한가
- SOA 와 MSA 의 차이
SOA 는 Service Oriented Architecture 를 의미하고
MSA 는 Microservice Architecture 를 의미한다
둘다 서비스 단위로 개발한다는 특징이 있으나
SOA 는 하나의 서비스가 다른 서비스에서 재사용하게 만드는 특징이 있으나
MSA 는 서비스를 서로 공유하는게 아니라 각각이 독립적으로 실행되는 것을 지향한다는게 차이점이다
또한 SOA 는 ESB, SOAP 등 여러 미들웨어를 통해서 서로 통신하지만
MSA 는 RESTful API 를 통해서 통신한다는게 차이점이다
- Spring Cloud 란
: Microservice 의 개발, 배포, 운영에 관한 아키텍처를 쉽게 구성할 수 있도록 제공하는 Spring Boot 기반의 프레임워크다
(각 요소들에 대한 자세한 사항은 차후에 포스팅)
'Spring' 카테고리의 다른 글
Spring Boot 로 이메일 회원가입 하기 (1) | 2021.07.06 |
---|---|
Spring Cloud Netflix Eureka (0) | 2021.07.05 |
Swagger 를 통한 REST API 문서화 (0) | 2021.04.30 |
MapStruct 란? (0) | 2021.04.15 |
Lombok 이란? (0) | 2021.03.29 |