MSA(Micro Service Architecture)란
마이크로서비스 아키텍처(MSA)는 소프트웨어를 구축하는 데 사용되는 아키텍처 중 하나입니다. 애플리케이션을 상호 독립적인 최소 구성 요소로 분할하여 구성하는 방법으로, 각각의 구성 요소는 자체적으로 독립적인 기능을 수행하며, 특정 서비스를 처리하기 위한 작은 단위로 구성됩니다. 마이크로서비스로 애플리케이션을 분할하면 개발, 배포, 확장 및 유지보수가 용이해집니다. 또한, 하나의 서비스가 장애를 일으키더라도 다른 서비스는 정상적으로 동작할 수 있어 전체 시스템의 안정성을 보장할 수 있습니다.
예를 들어 쇼핑몰 앱을 운영한다고 가정해 봅시다. 이때 MSA 구조를 적용하면, 사용자 관리, 상품 관리, 주문 관리 등의 기능을 하나의 모놀리틱한 애플리케이션으로 구성하는 대신, 각각의 기능을 서로 독립적인 마이크로서비스로 분할합니다. 이렇게 분할된 각각의 마이크로서비스는 자체적인 데이터베이스와 인터페이스를 갖추고 있어 독립적으로 개발, 배포, 운영이 가능합니다.
MSA에 대한 이점
· 새로운 기능 및 유지 보수 시 배포/롤백이 간편합니다.
· 서비스에 장애 발생 시 전체 장애(또는 큰 장애)로 이어지는 것을 막을 수 있습니다.
· 필요한 기능만 배포하면 되기 때문에 Scale-Out과 같은 확장성에 용이합니다.
· 서비스 및 기능을 전담하는 개발자는 자신이 편한 언어로 개발할 수 있습니다.
MSA의 철학은 모듈화된 시스템을 개발, 운영, 관리, 배포하는 것이 가능한 DevOps를 지원하는 것입니다. MSA는 각각의 마이크로서비스로 시스템을 분할하여 더욱 유연하고 확장 가능한 구조로 만들 수 있다는 것입니다. 개발자가 더욱 빠르고 안정적으로 애플리케이션을 개발하고 배포할 수 있도록 도와주며, DevOps의 핵심 가치 중 하나인 빠른 피드백과 CI/CD를 지원합니다. 따라서 MSA는 개발 환경과 서비스의 품질을 개선하며, 시스템을 보다 효율적으로 운영할 수 있게 도와줍니다.
DevOps와 MSA의 연관성
DevOps와 MSA는 현대 소프트웨어 개발에서 중요한 연관성이 있습니다. DevOps는 보다 효율적인 개발 프로세스를 만드는 것을 목표로 소프트웨어 개발(Development)과 운영(Operation)을 결합하는 방법입니다. MSA는 모놀리식 애플리케이션을 독립적인 마이크로서비스로 세분화하는 소프트웨어 아키텍처입니다. 이 두 방법론은 모두 조직이 유연하고 안정적으로 소프트웨어를 더 신속하게 개발 및 배포할 수 있도록 지원하는데 목적이 있습니다.
따라서 MSA를 위한 DevOps 환경은 상당히 중요합니다. 이에 대한 이점은 아래와 같습니다.
출시 시간 단축: 개발과 운영을 통합함으로써 조직은 소프트웨어 개발 프로세스를 가속화하고 새로운 기능과 제품을 더 빠르게 시장에 출시할 수 있습니다.
민첩성 향상: MSA를 사용하면 소프트웨어 개발의 유연성과 민첩성을 높일 수 있습니다. 팀은 전체 시스템을 중단할 걱정 없이 새로운 기능을 빠르게 개발 및 배포할 수 있습니다.
확장성: MSA는 확장 가능하도록 설계되어 조직이 전체 시스템을 점검하지 않고도 필요에 따라 새로운 마이크로서비스를 추가할 수 있습니다.
안정성 향상: 데브옵스와 MSA는 많은 작업을 자동화하고, 인적 오류를 줄이고, 내결함성을 개선하여 소프트웨어 시스템의 안정성과 신뢰성을 향상시킬 수 있습니다.
비용 절감: 개발 및 배포 프로세스를 간소화함으로써 조직은 소프트웨어 개발 및 유지 관리와 관련된 비용을 절감할 수 있습니다.
마무리
기업은 MSA 구성을 위해 반드시 고려해야 할 사항들이 있습니다.
· 다른 팀이나 기능, 서비스와의 연동 부분은 항상 상호 커뮤니케이션이 이루어져야 하기 때문에 조직의 문화적 변화가 필요합니다.
· 기존 모놀리식 구조에서 MSA로의 전환 시 목적과 목표가 분명해야 이점을 잘 활용할 수 있습니다.
· 인프라부터 애플리케이션까지 구조를 복잡하게 설계해야 하므로, 늘어난 관리 요소로 인한 장애에 잘 대처해야 합니다.
· MSA의 분산된 특성으로 인해 주의 깊게 관리하고 모니터링해야 합니다.
MSA는 고도의 기술 전문 지식을 필요로 하지만, 성공적으로 도입할 경우 조직에 상당한 이점을 줄 수 있다는 점을 끝으로 마무리 하겠습니다.
레퍼런스
· https://youtu.be/dSGnJWHuxtQ
· https://medium.com/@bsc0227/finda-msa%EB%A5%BC-%EC%9C%84%ED%95%9C-kubernetes-%EC%84%B8%ED%8C%85%EA%B3%BC-ci-cd-pipeline-%EA%B5%AC%EC%84%B1-%EA%B7%B8%EB%A6%AC%EA%B3%A0-monitoring-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95-1-783bf49af15b
· https://blog.naver.com/challen793/222936691368
· https://chat.openai.com/
· https://www.youtube.com/watch?v=8d4h7K_Fq-0