마이크로서비스(MicroService)란? _MicroService와 Serverless
본문 바로가기
DevOps 부트캠프/etc.

마이크로서비스(MicroService)란? _MicroService와 Serverless

by liveloper jay 2022. 4. 6.

MicroService와 Serverless가 무엇인지, 둘은 어떤 관계가 있는지를 알아보겠습니다.

 

 

 

모놀리식(Monolithic)


사진출처: https://medium.com/@suitable.kim.d.h/마이크로서비스와-서버리스-컴퓨팅-6588c4b884c

 모놀리식은 기존에 많이 쓰이는 전형적인 ‘애플리케이션 구조’ 입니다. 모놀리식은 위의 사진과 같이 다양한 로직을 하나의 서비스로 구성하기 때문에 모든 로직들이 결합도와 의존성을 강하게 가집니다.

그렇기 때문데 각 로직들 간 호출이 빠르고, 시스템 메모리 및 리소스 사용이 좀 더 효율적으로 이루어진다는 장점을 가지게 됩니다.

 

하지만 로직들이 하나로 결합되어 있기 때문에, 이 중에서 특정 로직만 업데이트를 진행하고자 하는경우 업데이트 하고자하는 로직이 아니어도 영향을 받게됩니다. 그렇기 때문에 업데이트 시 고려해야 할 사항이 많아지게 된다는 단점도 존재합니다.

 

 

 

 

마이크로서비스(MicroService)


사진출처: https://medium.com/@suitable.kim.d.h/마이크로서비스와-서버리스-컴퓨팅-6588c4b884c

 

 

 이러한 모놀리식의 문제를 해결하기 위해 제안된 대용량 분산형 아키텍처가 바로 마이크로서비스 입니다.

마이크로서비스는 각 로직을 독립적인 작은 서비스 단위로 배포 및 업데이트를 진행하도록 구성이 되어 있으며, 이들은 각각 느슨한 결합(Loosely Coupled)로 연결되어있습니다. 

마이크로 서비스가 가지는 장점 및 단점은 다음과 같습니다.

  • 장점
    • 개별 서비스를 소규모의 모듈로 구성이 가능합니다.
    • 개별 서비스들도 각각 다양하게 구현이 되기 때문에 장애에 강해집니다.
    • 각각의 서비스가 다른 언어, 프레임워크 등을 자율적으로 선택하여 배포하는 것이 가능하기 때문에 기술에 대한 빠른 적용이 가능하다.
  • 단점
    • 여러 서비스로 나누고 각각 배포를 진행하여야 하므로 배포과정을 수동으로 진행하기 복잡합니다. -> 배포 자동화가 필수적입니다.
    • 각각의 서비스를 배포하기위해 서비스 뿐만아니라 환경 또한 따로 구축하여야 하므로 시스템의 메모리 소요가 상대적으로 높아집니다.

 

 

 

서버리스(Serverless)


 개인 및 조직에 물리적인 서버가 존재하지 않더라도 AWS EC2와 같이 일정 금액을 지불하고 빌려서 서버를 구성할 수 있습니다. 하지만 이렇게 구성한 서버의 소프트웨어도 보안, 업데이트, 백업과 같은 많은 관리 과정이 필요하게 됩니다. 서버리스는 이러한 어려움을 해결하기 위해 등장하게 된 개념입니다.

서버리스하는 것은 '서버가 없다'는 것이 아니라, 별도의 서버를 구축할 필요 없이 애플리케이션의 개발과 배포를 지원하는 클라우드 컴퓨팅 서비스를 의미합니다.

 

이러한 서비리스의 아키텍처는 크게 2가지로 나누어집니다.

  • FaaS(Function as a Service)  
  • BaaS(Backend as a Service)

여기서 우리가 일반적으로 서버리스 라고 하면 FaaS를 가리킵니다.

 

Baas 란?

BaaS는 애플리케이션 개발 시 요구되는 복잡한 백엔드 기능들을 개발자가 직접 개발하지 않고 클라우드 공급자가 제공하는 서비스를 이용해 쉽고 안정적으로 구현하는 것을 의미합니다.

 

 

Faas(Function as a Service)

 Faas는 프로그램을 함수 단위로 클라우드에 배포하고, 이벤트가 발생하면 함수가 실행되는 서비스 방법입니다.  이벤트가 발생하면 함수가 실행되기 때문에 사용자는 함수가 실행된 횟수 및 시간에 따른 비용만을 지불합니다.

여기서 이벤트는 요청이 들어올 경우 발생하게 됩니다. -> 특정 주기로 이벤트를 발생시키거나 직접 호출하는 것도 가능합니다.

이러한 Faas가 가지는 특징은 다음과 같습니다.

  • Stateless : FaaS는 함수가 실행되는 동안에만 자원을 할당하게 되고, 함수가 실행되는 위치가 항상 같은 곳에서 실행된다는 보장이 없습니다. 따라서 함수 실행시 로컬에서 어떠한 상태가 유지될 수 없습니다.
  • Ephemeral : 특정 이벤트가 발생했을 경우에만 컨테이너로 배포가 되고, 끝나면 자원이 회수되기 때문에 일시적으로만 배포된다고 할 수 있습니다.

 

💡 서버리스와 마이크로서비스의 연관성

서버리스 컴퓨팅은 마이크로서비스 구조의 개발을 구성하기 위해 매우 적합한 형태의 서비스입니다.

  모든 마이크로서비스가 function 단위로 구성되는 것은 아니지만 (마이크로서비스≠서버리스) 서버리스는 function 단위로 구성을 하고, 각각의 서비스는 독립적인 API 형태로 구성하여 배포를 진행하면 마이크로서비스 형태의 애플리케이션이 될 수 있기 때문에 연관성이 있고 적합한 형태의 서비스라고 할 수 있습니다.

댓글