회사에서 간단한 기술 세미나….? 같은 걸 진행했다.
그중에서도 마이크로서비스 아키텍쳐, 즉 MSA에 관한 내용이 나와서 공부도 하고 정리할 겸 기록하려고 한다.




기존의 어플리케이션 구축 방식으로 모놀리식(Monolithic) 이 가장 많이 쓰였다.
모놀리식을 먼저 알아야 MSA를 더 잘 이해할 수 있겠지…?



모놀리식이란 소프트웨어의 모든 구성요소가 한가지 프로젝트에 집중되어 있는 것을 의미한다.
즉, 프로젝트가 거대한 한 덩어리로 그 안에 그 프로젝트를 구성하는 요소들이 포함되어있다.
프로젝트를 구성하는 서버, DB등이 하나로 통일되어 운영, 배포 등등 그냥 한몸처럼 움직인다고 생각하면 편하다.. (정확한 설명은 아님) 모놀리식을 이용하면 코드 관리가 용이하고 end-to-end 테스트가 편하다.
주로 소규모 프로젝트에 적합한 편인데, 큰 문제점이 있다.
사용량이 많아지면 그것을 감당하기 힘들다는 것이다.
그 예시로 netflix를 들 수 있다.
netflix는 기존에 모놀리식 아키텍처였는데 서비스에 대한 수요를 인프라가 감당할 수 없는 상황에 이르러
결국 모놀리식 아키텍처에서 마이크로서비스 아키텍처로 전환하게 되었다.



자, 그럼 netflix가 택했다는 마이크로서비스 아키텍처는 무엇일까….?!?!
마이크로서비스 아키텍처는 독립적으로 배포 가능한 일련의 서비스를 이용하는 아키텍처 방법이다.
여러개의 서비스가 독립적으로 운영되고, 그 서비스들이 결합하면 하나의 어플리케이션이 된다.
쉽게 말하자면, 어플리케이션은 여러개의 서비스로 나누고 그 서비스 안에서 서버, DB들을 각자 정해서 운영하는 것이다.
미국처럼 주가 여러개 있고, 그 주마다의 법이나 운영방식이 다르지만 결국에는 그것들이 모여 하나의 국가를 이루는 것 같은 방식이다.
그렇다보니 사용량이 많아져도 어플리케이션 이용에 부담이 적어지는 것이다!
사람들이 한가지 서비스만 이용하지는 않으니까~!!



MSA는 각 서비스가 다른 서비스와 독립적으로 확장이 가능하다.
확장이 필요한 경우, 전체 어플리케이션을 확장할 필요 없이 특정 서비스만 확장하면 된다.
그리고 배포 역시 독립적이다.
아주 미세한 오류가 있어서 배포가 필요할 때,
모놀리식은 무조건 전체를 배포해야했지만 MSA는 해당 서비스만 배포를 하면 되는 것이다.
그러나 모놀리식에도 단점은 존재한다.
서비스가 분산되어있기에 관리하는 것이 용이하지 않고 각 서비스가 서로 연결이 잘되는지 확인 필요하다.
비용이나 설계 방식이 간단하지 않다는 것도 단점 중 하나….



결국엔 완벽한 방식은 없다…!
이 방법이 유행이래~ 하면서 무조건 채택하는 자세는 옳지 않으며
장단점을 잘 따져서 각자 가장 잘 맞는 방법을 선택하는 것이 중요할 것이다.

모놀리식 아키텍처와 마이크로서비스 아키텍처가 더 궁금하다면 이곳을 참고하시길….!
마이크로서비스와 모놀리식 아키텍처 비교

태그: ,

카테고리:

업데이트: