Spring

Spring Cloud 와 Microservice 란

728x90

참조 강의 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

 

 

- IT System 의 역사

출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

 

 

 

- 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가지 사항

참조 : https://12factor.net/ko/

 

The Twelve-Factor App (한국어)

배경 이 문서에 기여한 사람들은 수백개 앱의 개발과 배포에 직접 참여했으며, Heroku 플랫폼을 통해서 방대한 앱의 개발, 운영, 확장을 간접적으로 관찰했다. 이 문서는 실제로 쓰이는 다양한 SaaS

12factor.net

 

 

 

 

- Monolithic architecture 와 Microservice architecture

출처 : https://www.geeksforgeeks.org/monolithic-vs-microservices-architecture/

그림에서 알 수 있듯이

Monolithic architecture 는 하나의 큰 프로젝트 안에서 여러 서비스들을 통합적으로 넣어놓은 것 이라면

Microservice architecture 는 서비스들 마다 개별 모듈로 분리해서 관리하는 방식

 

예를들어, 쇼핑몰 사이트를 운영한다고 하면, 

유저 정보를 관리하는 User microservice

주문 정보를 관리하는 Order microservice

상품 정보를 관리하는 Product microservice 등 으로 나눠서 생각해볼 수 있고

이런 식으로 분할해서 전체 서비스를 관리하는 것을 microservice architecture 라 한다

 

 

- microservice 의 특징과 이점

참조 : https://aws.amazon.com/ko/microservices/

 

마이크로서비스란 무엇입니까? | AWS

마이크로서비스의 경우 각 서비스가 지원하는 애플리케이션 기능의 수요를 충족하도록 해당 서비스를 독립적으로 확장할 수 있습니다. 따라서 팀은 필요한 인프라의 규모를 적절히 조절하고,

aws.amazon.com

 

- 표준 MSA 구성요소

출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

 

- MSA 에 사용되는 주요 기술들

출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

 

 

- 무조건 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 기반의 프레임워크다

출처 : https://happycloud-lee.tistory.com/207

(각 요소들에 대한 자세한 사항은 차후에 포스팅)

728x90

'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