최근들어 대부분의 기업(중견, 대기업 등)에서 이커머스나 핀테크 등 다양한 직군의 회사들이 기존의 레거시한 시스템으로 부터 스텝바이스텝으로 MSA 로 바꾸는 노력을 많이 하고있다. 그래서 나도 진행중인 사이드프로젝트에 겸사겸사 적용시키기위해서 기본개념부터 짚고, 한단계씩 공부한 내용들을 작성해나갈예정이다.
아래 작성할 내용들은 제 공부에 도움을 준 책 '스프링 부트로 개발하는 MSA 컴포넌트' 라는 책에서 정보를 얻어왔습니다.
가장먼저 모놀리식 아키텍처에 대한 개념을 짚고가야한다.
1. 모놀리식 아키텍처
모놀리식 아키텍처는 마이크로서비스 아키텍처와 반대되는 내용인데, 하나의 시스템이 전체 기능을 처리하도록 설계된 것이다. 아마 지금까지 그렇게 개발해 온 사람들이 많을 것으로 생각되고, 오히려 그게 더 관리에 용이할 수도 있다. 나또한 그랬으므로...
이 아키텍처를 사용했을 때 여러기능을 하나의 애플리케이션에서 처리하다보니 스파게티 코드가 되기 쉽다. 그리고 계속 늘어나는 요구사항과 기능들로 인해 점점 로드밸런서 등으로 스케일 아웃을 하려고 하지만 비효율적일수도 있다. 그래서 마이크로서비스 라는 개념이 도입되어 나오기 시작한 것이다.
2. 마이크로서비스 아키텍처
마이크로서비스 아키텍처는 기능 위주로 나뉜 여러 애플리케이션이 있고, 각각 독립된 데이터 저장소를 사용한다. 기능으로 분리된 애플리케이션들은 미리 정의된 인터페이스를 통해 서로 유기적으로 동작한다. 그리고 웹이나 APP 클라이언트에 일관된 형태의 API로 제공된다. 이렇게 기능별로 쪼개진 작은 서비스 들을 MSA 라고 한다.
이미지는 여기 AWS 사이트를 참고하길 바란다.
https://aws.amazon.com/ko/microservices/
MSA의 특징
- 잘 분리된 마이크로서비스로 인한 탈중앙화
- 대규모 시스템을 위한 아키텍처
- 서비스 지향
MSA의 장점
- 독립성
- 대용량 데이터를 저장하고 처리하는데 자유로움
- 시스템 장애에 견고함
- CI/CD 에 용이
MSA의 단점
- 개발하기 어려운 아키텍처
- 운영하기 어려운 아키텍처
- 설계하기 어려운 아키텍처
(이정도면 못쓰는거아님?)
AWS EC2, Spring Boot, JPA, MSA 등 기술 사용한 게시물순서
1. https://yoon-developer.tistory.com/119 - [MSA] 프로젝트 (1) - MSA(마이크로 서비스 아키텍처) 기본 개념
2. https://yoon-developer.tistory.com/120 - [AWS] 프로젝트 (2) - EC2 개념부터 프리티어 인스턴스 생성
3. https://yoon-developer.tistory.com/121 - [Spring Boot] 프로젝트 (3) - 이클립스 Spring Boot 프로젝트 구축 및 로그설정