MSA (Microservice Architecture)
MSA 란 ?
Monolithic Architecture 의 경우, 애플리케이션이 구동되기 위한 UI , 비즈니스 레이어 등이 하나의
큰 덩어리로 같이 구성이 되는 것.
MSA 의 경우, 애플리케이션의 각각의 서비스를 MicroService 라는 단위로 쪼개어서 나눈 것.
위의 간단한 예시를 통해, MSA 와 Monolithic Architecture 의 차이를 구별할 수 있다.
API 를 통해 관리하고, 외부에서 호출하는 경우 Service 자체를 노출하는 것이 아닌
API Gateway 를 통해서 인증을 하고, API 정책을 가져갈 수 있도록 하고,
데이터베이스 또한 각각의 서비스가 고유의 데이터베이스를 가질 수 있도록 한다.
그렇다면 MSA 아키텍처는 왜 인기가 있을까 ?
1. 기존의 Monolithc 방식은 소프트웨어의 모든 구성요소가 한 프로젝트에 합쳐져있어, 큰 변화에 대한 대응이 어렵고,
새로운 기능 추가 및 업데이트에 어려움이 있었다.
2. Monolithic Architecture 는 여러 역할을 하는 시스템이 하나의 소프트웨어로 집합되어 있어, 특정 부분에 문제가 발생 시,
큰 장애로 이어질 수 있다.
3. Monolithic Architecture 는 여러 역할을 하는 시스템이 하나의 서버에 함께 올라가있기에 , Scale-out 시 필요없는 자원이
함께 증가된다.
(조회 기능이 90% 이상 사용되고, 사용량이 점점 늘어나고 있다 & 조회만 빈번한 수정이 필요해서 배포가 필요하다
-> 이런 경우 MSA 가 효율적이다.)
4. MSA 는 민첩하고 손쉬운 배포 및 업데이트가 가능하다.
(빈번한 배포 = Agile)
-> 느슨한 결합으로 이루어져있어 신규 기능 개발, 배포를 다시 하는 일 등에 이점이 많다.
MSA 아키텍처를 구성하기 위해 어떤 기술과 구성요소를 알아야 할까 ?
절대적으로 사용해야 하는 기술은 없다 -> 회사 또는 본인의 사정에 맞추어서 적용할 기술을 선택하자.
MSA 는 정말 복잡한 서비스가 아닌 경우, Monolithic 아키텍처가 더 효율적일 수 있기 때문에(생산성이 높을 수 있다.)
상황에 맞춰서 아키텍처를 선택하는 것이 좋다.
-> 각각의 서비스를 모두 쪼개야 하기 때문에 복잡도 & 비용 상승.
참고 영상
https://www.youtube.com/watch?v=8d4h7K_Fq-0