MSA 구축 1 : 언제, 왜, 클라우드 서비스를 이용했을때 장단점

마이크로 서비스 아키텍쳐, Microservices architecture, 이하 MSA는

모놀리식 아키텍쳐와 비교할 수 있다.


모놀리식 아키텍쳐가 서비스의 모든 기능들을 하나의 거대한 서비스 형태로 관리해왔다면,

MSA는 이 거대한 서비스를 기능 및 하위서비스 단위로 나누어 관리한다.

(당연하지만, 거대한 하나의 서비스를 기능 단위의 서비스로 나눌지라도
거대한 하나의 서비스와 동일한 기능을 해야한다.)


MSA가 가지고 있는 장점은 다음과 같다.

  • 각 서비스의 개별 데이터베이스를 가지고 동작한다.

       -> 모놀리식 아키텍쳐처럼 하나의 DB에서 모든 데이터를 처리하지 않는다.

  • 변경사항이 있는 서비스 영역에서만 개발하면 된다.
    각 서비스는 개별 프로세스에서 실행되기 때문.

    -> 모놀리식 아키텍쳐는, 기능 서비스 한 곳에 수정사항이 생기면
     모든 서버의 내용들을 다시 빌드하고 배포해야한다.

    -> 개발 용이, 추가 기능에 민첩하게 대응가능

  • 확장이 용이하다.
    -> 모놀리식의 경우 사용자, 데이터, 트래픽이 늘어나서 물리적인 메모리 증설이
        필요할 때는 수직적으로 용량을 증가시키는 방법 밖에 없다.
        ( scale up : 하드웨어적으로 증설, 더 높은 사양의 Instance로 교체 )
    -> MSA의 경우
        ( scale out : 비슷한성능의 머신을 여러대로 늘리는 것 ) 
        ( 사용량이 많은 서비스만 scale out 할 수 있음 )

  • 기술스택의 자율성
    인터페이스만 만족하면 단위 서비스안의 기술스택은 자율적으로 선택할 수 있다.
    단위 서비스는 서로 다른 언어, 데이터, 저장기술을 사용할 수 있다.
    단위 서비스끼리는 http , api 와 같이 가벼운 수단을 사용해서 통신하기 때문에
    세션과 같은 상태정보를 가지지 않는다.


위와 같이 개발과 유지관리에 소요되는 시간과 비용을 줄일 수 있기 때문에,

모놀리식 아키텍쳐로 빠른 개발이 끝나고 모든 기능에 대한 검증이 끝나면

MSA로 많이 옮겨가는 추세다.

팀의 숙련도에 따라서는 바로 MSA로 개발할 수도 있다.


MSA로 아키텍쳐를 설계해야할 때는 다음 특성을 고려해서 설계해야한다.

  • 느슨한 결합(Loose Coupling)
  • 높은 응집성(High Cohesion)

MSA는 클라우드 서비스를 이용하든,
서버 및 네트워크 전문가가 직접 하드웨어를 구비하여 구축하든,
아키텍쳐가 구현만 된다면 위에서 말한 이점을 가져갈 수 있다.

그러나 대부분의 케이스에서
클라우드 서비스를 제공하는 벤더들
AWS, Azure, IBM 등을 이용한다.

MSA를 클라우드 서비스를 통해 구축한다면 다음과 같은 이점을 누릴수도 있다.

장점

On - demand
필요할 때 VOD 서비스처럼 즉시 이용가능하다.  

장치와 위치 독립성
장치가 어디에 있는지 중요하지 않다.

유지보수의 편리함
벤더에서 서버의 유지보수를 담당한다.


재해 복구 용이
벤더에서 이중화와 같은 솔루션을 제공한다.

autos-scaling
하드웨어 자원의 제약 때문에 서버가 다운될 일이 적다.


다중사용자 접속 
방화벽을 오픈하고 외부에서 접속할 수 있는 경로를 만들 필요가 없다.(접근보안 차원에서)

위와 같은 장점들로 높은 서비스 탄력성개발 유연성을 유지할 수 있다. 



반면 단점에는,
단점

비용
사용한만큼 내는 요금제라 합리적이지만 예상치 못한 시나리오로 과금될 수 있다.


보안
경쟁력있는 데이터를 보관하는 것에 대한 불신,
물리적으로 존재하는 컴퓨터의 자원을 가상화하는 소프트웨어의 결함 .
클라우드 서버의 공격으로 인한 서비스 중단

벤더 의존도 증가
비용의 문제로 이어질 수 있다.

블랙박스 문제
클라우드 서비스 벤더가 제공하는 서비스에 문제가 생겼을 시,
사용자는 입장에서 주도적으로 원인 분석을 할 수 없다.


위와 같은 잠재적 문제 때문에
하이브리드 클라우드의 형태로 많이 넘어가기도 한다.



하지만 이중에서
보안 : 물리적으로 존재하는 컴퓨터의 자원을 가상화하는 소프트웨어의 결함,
클라우드 서버의 공격으로 인한 서비스 중단
은 사설 서버를 구축해도 생길 수 있는 문제라서
클라우드 서버만의 단점이라고 볼수는 없다.


댓글

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code TIL 6 : 6장. 객체와 자료구조

백엔드 개발자가 Djnago fullstack 사이드 프로젝트를하며 ( html, css, vanillaJS 그리고 JS프레임워크 )