Monolithic Architecture, MicroService Architecture

Buddy·2023년 10월 15일
0

Spring Cloud Gateway 공부하기 전에 MSA(=MicroService Architecture) 아키텍처에 대해서 좀 더 알아야 했다.
MicroService Architecture 용어의 이야기는 하도 많이 들어봤지만, 구성 방식이나 사용하는 기술들에 대해서는 아직 자세히 알지 못하니까 전통적인 Monlithic ArchitectureMicroService Architecture 에 대해서 좀 더 알아보도록 하자~~

Monolithic Architecture

말 그대로 하나로 짜여져있는 구조이다.

  • 모든 업무 로직이 하나의 형태로 패키지 되어있다.
  • 애플리케이션에서 사용하는 데이터가 한 곳에 모이고 참조되어 서비스 된다.

소규모 프로젝트인 경우 Monolithic Architecture 로 구성하는게 대부분이다. MicroService Architecture 과 비교하여 구성이 간단해서 개발 속도가 빠르다는 점을 장점으로 볼 수 있다.

그이 비해 단점이 좀 많은 편인데,

  1. 규모가 커지면 빌드, 배포에 걸리는 시간이 늘어남
  2. 변경사항이 있으면 서비스 전체를 다시 빌드/배포 해야함
  3. 프로젝트의 크기가 너무 큼 (이로 인해 유지보수 하기가 복잡함)
  4. 하나의 에러가 치명적으로 동작할 수 있음

정도가 있을 것 같다.

1, 2, 3 은 개발자 입장에서는 큰 문제고 서비스 바깥에서 봤을 때는 알 수도 없고 치명적인 문제는 아닌 것 같다. 아마 MicroService Architecture 같은 개념이 나오기 전에는 크게 문제점으로 인식이 되지도 않았을 것 같은 느낌? 다만 개발자 입장에서는.. 생산성을 저하시키는 큰 문제이고, 이를 MicroService Architecture 로 해소가 가능하다.

MicroService Architecture

cncf 에서 MicroService Architecture 구성에 사용하는 기술들을 볼 수 있다.

Red Hat 의 자료에서는 MircroService Architecture 에 대한 장점으로 아래의 6가지를 말한다.

  1. 더 빠른 출시
  2. 높은 확장성
  3. 뛰어난 복구 능력
  4. 손쉬운 배포
  5. 편리한 액세스
  6. 향상된 개방성

이외에도 여러가지 장점이 있겠지만, 그냥 대강 구성한다고 얻어지는 이점은 아니고 Heroku 에서 제시한 Cloud Application 을 개발 할 때 고려해야 할 12가지 항목, 12 Factors 와 같이

12 Factors

  1. Codebase
  2. Dependencies
  3. Config
  4. Backing services
  5. Build, Release, Run
  6. Processes
  7. Port Binding
  8. Concurrency
  9. Disposability
  10. Dev/Prod Parity
  11. Logs
  12. Admin Processes

각 항목에 대해서 설명이 잘 된 포스팅이 있어서 링크만 투척

https://medium.com/dtevangelist/12-factors-%EB%9E%80-b39c7ef1ed30

Monolithic Architecture 에 비해 MicroService Architecture 는 구성/구조가 복잡하고 고려해야 할 것들이 많다. 때문에 작은 서비스에서는 굳이 MicreoService Architecture 를 고집 할 필요는 없는 것 같다.

다만 서비스가 확장 될 가능성이 있다면 MicroService Archirecture 를 고려해야 할 듯!
규모가 그닥 크지 않더라도 초기에 아키텍처 구성만 잘 해둔다면 Monolithic Architecture 보다 몇 배는 우수한 생산성을 가져갈 수도 있을 것 같다.... 이거는 경험담...!!

Reference

profile
가볍게 쓰는 내용들이라 주관과 틀린 내용이 많습니다. 비판적인 시각으로 봐주시고 지적은 환영 :)

0개의 댓글