[Architecture] MSA란?

🌟 MSA

🎯 MSA(Micro Service Architecture)란?

마이크로 서비스 아키텍처란 하나의 시스템을 컴포넌트별로 나누어 개발하고 합쳐서 큰 시스템으로 구축하는 방법입니다. 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


Written by@이주형
平常心

GitHubFacebook