Spring Cloud Gateway 공부하기 전에 MSA(=MicroService Architecture)
아키텍처에 대해서 좀 더 알아야 했다.
MicroService Architecture
용어의 이야기는 하도 많이 들어봤지만, 구성 방식이나 사용하는 기술들에 대해서는 아직 자세히 알지 못하니까 전통적인 Monlithic Architecture
와 MicroService Architecture
에 대해서 좀 더 알아보도록 하자~~
말 그대로 하나로 짜여져있는 구조이다.
소규모 프로젝트인 경우 Monolithic Architecture
로 구성하는게 대부분이다. MicroService Architecture
과 비교하여 구성이 간단해서 개발 속도가 빠르다는 점을 장점으로 볼 수 있다.
그이 비해 단점이 좀 많은 편인데,
정도가 있을 것 같다.
1, 2, 3 은 개발자 입장에서는 큰 문제고 서비스 바깥에서 봤을 때는 알 수도 없고 치명적인 문제는 아닌 것 같다. 아마 MicroService Architecture
같은 개념이 나오기 전에는 크게 문제점으로 인식이 되지도 않았을 것 같은 느낌? 다만 개발자 입장에서는.. 생산성을 저하시키는 큰 문제이고, 이를 MicroService Architecture
로 해소가 가능하다.
cncf 에서 MicroService Architecture 구성에 사용하는 기술들을 볼 수 있다.
Red Hat 의 자료에서는 MircroService Architecture 에 대한 장점으로 아래의 6가지를 말한다.
이외에도 여러가지 장점이 있겠지만, 그냥 대강 구성한다고 얻어지는 이점은 아니고 Heroku 에서 제시한 Cloud Application 을 개발 할 때 고려해야 할 12가지 항목, 12 Factors
와 같이
12 Factors
각 항목에 대해서 설명이 잘 된 포스팅이 있어서 링크만 투척
https://medium.com/dtevangelist/12-factors-%EB%9E%80-b39c7ef1ed30
Monolithic Architecture
에 비해 MicroService Architecture
는 구성/구조가 복잡하고 고려해야 할 것들이 많다. 때문에 작은 서비스에서는 굳이 MicreoService Architecture
를 고집 할 필요는 없는 것 같다.
다만 서비스가 확장 될 가능성이 있다면 MicroService Archirecture
를 고려해야 할 듯!
규모가 그닥 크지 않더라도 초기에 아키텍처 구성만 잘 해둔다면 Monolithic Architecture
보다 몇 배는 우수한 생산성을 가져갈 수도 있을 것 같다.... 이거는 경험담...!!