July 06, 2021
마이크로 서비스 아키텍처란 하나의 시스템을 컴포넌트별로 나누어 개발하고 합쳐서 큰 시스템으로 구축하는 방법입니다. MSA도입 이전에는 한 어플리케이션 안에 여러가지 컴포넌트들이 들어있었습니다. 이렇게 하나로 되어있으면 배포 및 테스트나 환경설정이 간단하지만, 시스템이 커지고 기능이 많아질 수록 어플리케이션은 점점 무거워질 뿐 아니라 의존성또한 높아지는 문제점이 있습니다. 이를 해결하기 위해서 MSA를 도입하기 시작했습니다. 이 방법을 사용하면 각 컴포넌트를 분리하여 개발할 수 있으며, 개발된 컴포넌트들은 서로 API를 이용하여 통신하게 됩니다.
MSA는 컴포넌트 단위로 서비스를 분리하여 개발하므로 서버가 독립적입니다. 따라서 서로 의존성이 없기에 부분적인 수정이나 확장에 있어 유연하고 재사용성이 좋습니다. 또한 서버가 독립적이므로 트래픽이 몰릴때 해당 서비스 서버만 증축해주면 됩니다.
서비스가 분리되어있으므로 DB도 따로 쓰거나 하나의 DB를 나누어 사용합니다. 따라서 다른 컴포넌트의 데이터를 가져오려면 API통신을 이용해야하므로 성능이 떨어질 수 있습니다. 또한 서버가 다르므로 URL또한 각기 달라서 이를 하나로 묶어주는 작업이 필요합니다.(보통 API Gateway 사용)
MSA는 서비스간 호출이 많기 때문에 메세징 시스템을 활용합니다. 용어 그대로 어플리케이션간 메시지를 교환하는 시스템이며 대표적으로는 kafka나 AWS SQS가 있습니다. 이를 통해 서비스간 결합도를 낮출 수 있으며 비동기요청이나 성능향상, 안정성등의 이점을 가져갈 수 있습니다.
http://clipsoft.co.kr/wp/blog/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98msa-%EA%B0%9C%EB%85%90/ https://victorydntmd.tistory.com/343