기존의 웹 서비스 구조는 대부분 모놀리직 아키텍쳐의 형태로 구성되어 있다.
모노리틱 아키텍쳐는 전통적인 웹 시스템 개발 스타일의 아키텍쳐로 하나의 어플리케이션 내부에 모든것이 들어가 있는 ‘통짜구조’ 이다.
규모가 작은 애플리케이션에서는 배포가 용이하며 운영 및 관리가 상대적으로 쉽다는 장점이 있지만 전체가 통짜로 돌아가기 때문에 크기가 크고, 빌드 및 배포 시간, 서버의 기동 시간이 오래 걸린다.
그에 반해 MSA는 서비스를 독립적으로 두어 하나의 서비스에 장애가 발생하더라도 다른 서비스에 영향을 주지 않도록 설계되어있다.
각각의 서비스를 API형태로 호출하며 각각 독립적인 war 파일로 개발되며 각각의 Tomcat 인스턴스위에서 동작한다.
애플리케이션 로직을 분리해서 여러개의 애플리케이션으로 나눠서 서비스화하고, 각 서비스별로 톰캣을 분산 배치한 것이 핵심이다.
그 덕분에 서비스를 독립적으로 개발/배포/운영가능 하다는 장점이 있으나 데이터를 API 호출로만 통신하기 때문에 성능상 문제 발생 가능성이 있다.
마이크로서비스 아키텍처의 구성요소
다양한 디바이스와 클라이언트에서 발생하는 검색, 빌드, 설정등의 요청에 의해 MSA가 시작된다.
클라이언트의 다양한 요청은 인증 ID 제공자(Google, Facebook, Token 등)에 의해 권한을 확인 한다. 권한이 확인되면 API 게이트웨이로 요청이 넘어간다.
클라이언트의 직접적인 서비스 요청을 방지하는 역할을 한다. 클라이언트의 요청을 API 게이트웨이가 해당 요청에 적절한 서비스로 전달하는 진입점 역할을 한다.
https://brunch.co.kr/@yesjun/2