모노폴리 아키텍처

일단 전통적인 아키텍처로 모노폴리 아키텍처가 있다.
이는 하나의 애플리케이션 내에 모든 로직들이 모두 들어 가 있는 기본적으로 생각할 수 있는 모습인 것 같다.
UX부터 모든 서비스컴포넌트가 합쳐진 상태로 보면 될 것이다.

모두 모여있는 만큼 규모가 커진다면 빌드도 오래 걸리고 유지보수가 상당히 어려울 것이다.
하지만 그만큼 성능이 빠를 것 같고 트랜잭션 관리가 수월하다고 한다.


마이크로 서비스 아키텍처

대용량 웹서비스가 많아짐에 따라 정의된 아키텍쳐인데, 그 근간은 SOA (Service Oriented Architecture 서비스 지향 아키텍쳐)에 두고 있다고 한다.
컴포넌트들을 각 서비스별로 나눠서 개발하고 관리한다.
UX에서 각 서비스는 API 통신을 통해 호출 한다. 객체지향과 잘 맞을 것 같다.
데이터베이스도 서비스별로 각각 사용하기에 독립적으로 운영 가능하다.

여러모로 확장성도 좋아보이고 장점만 있을 것 같지만..
성능과 메모리에 문제가 있고 트랜잭션 처리도 어렵고 테스팅이 어렵다고 한다.
또 각 서비스마다 배포도 가능해야 하기에 devOps가 필요 할 것 같다.