Micro Service Architecture 의 줄임말.
말그대로 작고 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크
MSA의 반대되는 개념인 모놀리식 아키텍쳐 (Monolithic Architecture)는 모든 서비스의 구성요소가 하나의 프로젝트로 통합되어잇는 형태를 말합니다
모놀리식 아키텍쳐는 서비스가 동일한 개발 환경으로 의존성 관리가 용이하다는 장점이 있으나, 하나의 프로젝트로 묶여있어 의존성이 높어지고 거대화되어, 배포와 빌드하는 시간이 오래걸리는 등의 단점이 있습니다
그렇기 때문에 소규모의 프로젝트에서는 모놀리식 아키텍쳐 방식을 적용하면 유용한 부분도 있지만, 대규모의 다양한 서비스를 제공하는 프로젝트에서는 득보다 실이 많을 수 있을 수 있기때문에 대부분 마이크로 서비스 아키텍쳐를 적용하고 있습니다
이전 회사에서 다양한 서비스를 마이크로 서비스 아키텍쳐 방식으로 개발을 하였는데, 각각의 서비스마다 독립적인 개발이 가능해, 필요한 부분만 수정할 수 있어서 테스트에도 용이하고 빠르게 빌드와 배포가 가능했던 점이 좋았던 것 같습니다
다만 역시, 각각의 서비스마다 기술 스택 및 환경이 조금씩 달라 파악해야하는 부분이 있었습니다. 동일환 환경이라고 하면 코드의 중복이 발생하기도 하지만, 신규 서비스 등에는 새로운 기술 스택과 언어를 적용해볼 수 있는 장점도 있어 개발자 입장에서는 좋은 측면도 있습니다
MSA의 장/단점은 모놀리틱의 장/단점과 반대되는 특징을 가지고 있어, 서비스의 규모 혹은 비지니스 로직 측면등을 고려하며 좀 더 적당한 아키텍쳐를 선택하는 것이 좋을 것 같습니다