Etc ( 기타 )/IT트렌드

[IT 트렌드] 마이크로서비스(Microservice)

노루아부지 2021. 9. 15. 22:56

안녕하세요 노루 아부지 입니다.

 

최근 웹 프로젝트 배포의 대세가 war에서 jar로 바뀌고 있는 이유에 대해 알아보다가 마이크로서비스 아키텍처라는 것에 대해 알게 되었는데요

마이크로서비스 아키텍처란 무엇일까요?

 

마이크로서비스 아키텍처(microservice architecture, MSA)란?

마이크로서비스 아키텍처는 소프트웨어 프로젝트를 작고 독립적이며 느슨하게 결합된 모듈로 분해하여 서비스를 제공하는 아키텍처입니다. 소프트웨어 개발에 대한 이러한 접근 방식은 세분화, 경량화되어 있으며 다수의 애플리케이션 간에 유사한 프로세스를 공유하는 기능을 중시합니다. 이는 클라우드 네이티브 모델 구현을 위해 애플리케이션 개발을 최적화하는 데 중요한 주요 구성 요소입니다.

 

 

모놀리식 아키텍처와 마이크로서비스 아키텍처 비교

모놀리식 아키텍처의 경우 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행됩니다. 따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 합니다. 또한 코드 베이스가 증가하게 되면 모놀리식 애플리케이션의 기능을 추가하거나 개선하기가 더 어려워집니다.

종속관계를 이루며 긴밀하게 결합된 많은 프로세스에 인해 단일 프로세스의 실패로 인한 영향이 증가함에 따라 모놀리식 아키텍처는 애플리케이션 가용성에 대한 위험을 가중시킵니다.

 

마이크로서비스 아키텍처의 경우 애플리케이션이 독립적인 구성요소로 이루어져 각 애플리케이션 프로세스가 서비스로 실행됩니다. 이러한 서비스는 경량 API를 사용하여 잘 정의된 인터페이스를 통해 통신합니다. 서비스는 비즈니스 기능을 위해 구축되며 서비스마다 한 가지 기능을 수행합니다. 서비스가 독립적으로 수행되기 때문에 애플리케이션의 특정 기능에 대한 수요를 충족하도록 각각의 서비스를 업데이트, 배포 및 확장할 수 있습니다.

 

 

마이크로서비스의 이점

  • 민첩성
    • 기존의 모놀리식 아키텍처는 전체 애플리케이션의 소스코드는 하나의 배포 유닛(war 등)으로 되어있기 때문에  최소한의 변경사항이 있어도 대규모 업데이트를 해야 했습니다.
    • 마이크로 서비스는 해당 서비스를 소유한 독립적인 소규모 팀 조직을 육성하는 역할을 합니다.
    • 팀은 충분한 이해를 바탕으로 하는 소규모 컨텍스트 내에서 활동하며 더 독립적이면서 신속하게 업무를 수행할 수 있습니다. 덕분에 개발 주기 시간이 단축됩니다.
  • 유연한 확장성
    • 마이크로서비스는 각 서비스가 지원하는 애플리케이션 기능의 수요를 충족하도록 해당 서비스를 독립적으로 확장할 수 있습니다.
  • 손쉬운 배포
    • 모놀리식 애플리케이션의 경우 업데이트로 인해 오류가 발생할 경우, 전체를 오프라인으로 전환하고 운영 규모를 축소시킨 다음 문제를 해결해야 했습니다.
    • 마이크로서비스는 지속적 통합 및 지속적 전달을 통해 새로운 아이디어를 손쉽게 시험하고 문제가 발생할 경우 간단히 롤백할 수 있게 해 줍니다. 이처럼 저렴한 실패 비용 덕분에 더 쉽게 코드를 업데이트하고 새로운 기능의 출시 시간을 앞당길 수 있습니다.
  • 기술적 자유
    • 마이크로서비스는 소규모 서비스 단위로 이루어져 있기 때문에 각 서비스에 대해 가장 적합한 도구를 자유롭게 선택할 수 있습니다.
  • 재사용 가능한 코드
    • 소프트웨어를 잘 정의된 소규모 모듈로 분할하면 팀이 기능을 여러 용도로 사용할 수 있게 됩니다. 특정 기능을 위해 구축된 서비스를 다른 기능에서 사용할 수 있게 되는 것입니다. 이를 통해 개발자가 코드를 처음부터 작성하지 않고도 새 기능을 생성할 수 있습니다.
  • 복원성
    • 모놀리식 아키텍처에서는 단일 구성 요소가 실패하는 경우 전체 애플리케이션이 실패하게 될 수 있습니다. 반면, 마이크로서비스는 서로에게 영향을 주지 않습니다. 즉, 모놀리식 애플리케이션 모델과는 달리 한 부분에 장애가 발생하더라도 전체 애플리케이션이 다운되지 않습니다.

 

 

 

 

 

 

 

 

 

https://aws.amazon.com/ko/microservices/

 

마이크로서비스란 무엇입니까? | AWS

마이크로서비스의 경우 각 서비스가 지원하는 애플리케이션 기능의 수요를 충족하도록 해당 서비스를 독립적으로 확장할 수 있습니다. 따라서 팀은 필요한 인프라의 규모를 적절히 조절하고,

aws.amazon.com

https://www.redhat.com/ko/topics/microservices/what-are-microservices

 

마이크로서비스란?

마이크로서비스란 애플리케이션을 구축하기 위한 아키텍처 기반의 접근 방식으로 애플리케이션의 각 요소가 독립적으로 작동합니다.

www.redhat.com

https://giljae.medium.com/%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%98-microservices-architecture-%EC%9D%98-%EC%9E%A5%EC%A0%90%EA%B3%BC-%EB%8B%A8%EC%A0%90-7c45615cfe1a

 

마이크로서비스 아키텍처(Microservices Architecture)의 장점과 단점

마이크로 서비스는 대규모 소프트웨어 프로젝트를 마이크로 단위의 모듈로 분리하여 loosely-coupled한 구조로 만들고 API를 통해 서로 통신합니다.

giljae.medium.com

 

728x90
loading