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
하드웨어 자원의 제약 때문에 서버가 다운될 일이 적다.
다중사용자 접속
방화벽을 오픈하고 외부에서 접속할 수 있는 경로를 만들 필요가 없다.(접근보안 차원에서)
위와 같은 장점들로 높은 서비스 탄력성 및 개발 유연성을 유지할 수 있다.
반면 단점에는,
단점
비용
사용한만큼 내는 요금제라 합리적이지만 예상치 못한 시나리오로 과금될 수 있다.
보안
경쟁력있는 데이터를 보관하는 것에 대한 불신,
물리적으로 존재하는 컴퓨터의 자원을 가상화하는 소프트웨어의 결함 .
클라우드 서버의 공격으로 인한 서비스 중단
벤더 의존도 증가
비용의 문제로 이어질 수 있다.
블랙박스 문제
클라우드 서비스 벤더가 제공하는 서비스에 문제가 생겼을 시,
사용자는 입장에서 주도적으로 원인 분석을 할 수 없다.
위와 같은 잠재적 문제 때문에
하이브리드 클라우드의 형태로 많이 넘어가기도 한다.
하지만 이중에서
하지만 이중에서
보안 : 물리적으로 존재하는 컴퓨터의 자원을 가상화하는 소프트웨어의 결함,
클라우드 서버의 공격으로 인한 서비스 중단
은 사설 서버를 구축해도 생길 수 있는 문제라서
클라우드 서버만의 단점이라고 볼수는 없다.
댓글
댓글 쓰기