[MSA] MSA 도입 필요 조건

2023. 6. 13. 10:54기술 창고/MSA

728x90
SMALL

MSA 아키텍쳐 방식을 도입하기 위해서는 크게 두 가지 측면에서 조건을 맞추어야 효율적이라고 볼 수 있습니다.

두 가지 측면이라 함은, 사업/조직적 측면과 기술적 측면이 있습니다.

이 두 가지 측면에 대한 조건에 대해 알아보도록 하겠습니다.

 

 

사업 / 조직적 측면

- MSA가 중장기적으로 Business Benefit을 올릴 수 있어야 한다는 합의가 있어야 합니다.

- 또한, 고위 경영진의 강력한 Commitment 및 용기가 있어야 합니다.
  잘 동작하는 시스템을 건드리기 무서운 것이 사실이기 때문에 확실한 결정권자의 결정이 있어야 합니다.

- MSA 도입은 단순 기술 도입이 아닌 조직과 프로세스의 개선 작업이 필요합니다.

- DevOps 문화가 정착이 되어있어야 합니다.
  빠른 개발, 빌드, 배포를 위함이기 때문입니다.

- 사내 교육, 학습을 위한 자원을 투자되어야 합니다.

 

 

기술적 측면

- Rapid Provisioning -> 클라우드 환경, 인프라 자동화, Docker/Kubernetes 

- 정교한 Monitoring 및 장애관리
  다양한 레벨의 모니터링이 가능해야하며, 모든 서비스에 대해 실시간으로 모니터링할 수 있어야 합니다.

- 자동화된 배포

   End to End 배포 파이프라인 구축이 되어야 합니다.

  초기의 프로젝트라면 수동으로 배포할 수도 있겠지만 갈수록 커져갈 수 밖에 없는 프로젝트의 특성상 일일히 수동 배포하는 것은 말이 안됩니다.

 

 

MSA 시작점

MSA를 도입하기 좋은 시작점에 대해 알기 이전에 다시 한번 더 MSA의 장점과 단점에 대해 복습하고 가겠습니다.

 

 

[장점]

  • 빠르게 변화하는 비즈니스 환경에 민첩하게 대응 가능
  • 작은 서비스 단위로 확장 가능
  • 일부의 장애가 시스템 전체 장애로 이어지지 않음
  • 서비스 단위로 자율적 배포 가능
  • 서비스마다 적절한 기술을 도입하여 Polyglot 적용 가능

 

[단점]

  • 성능이 내부 호출보다 느리다.
  • jvm과 같은 자원을 사용할 때 메모리 관리가 비효율적일 수 있다.
  • 모니터링이 어렵다.
  • 배포가 어렵다.
  • 장애 대응이 어렵다.
  • 테스팅이 어렵다.
  • 트랜잭션 처리가 어렵다.

 

우선 위의 장단점을 확인했을 때 파악해야 하는 내용들이 몇 가지 있다는 것을 볼 수 있습니다.

MSA 도입 비용이 크다는 점을 인식해야 하고, MSA로 얻을 수 있는 Business Benefit이 MSA의 단점보다 크다고 판단되었을 때 적용되어야 할 것입니다.

또한, 기존의 Monolithic System 구조로 구성되어있는 프로젝트에서 발생되는 단점들이 Business 에 미치는 부정적인 영향이 너무 클 때 변경하는  것이 좋을 것입니다.

시스템의 Scale Out 비용이 크다거나, 빌드/배포 시간이 오래 걸려서 잦은 배포가 어렵다거나, 작은 버그에도 시스템 전체 실패 가능 하다거나, 코드 수정 시 영향도 파악이 어렵다는 등 여러 부정적인 영향이 있겠죠.

 

MSA 로 전환하기 위해 주의해야할 점들이 있는데,

처음부터 전부 MSA로 전환하려고 사는 시도는 금물입니다.

MSA 로 전환하는 것 자체가 어렵고 시간도 많이 가는 작업일 뿐더러 자칫 잘못하면 프로젝트에 예상치 못한 에러들이 발생될 수도 있기 때문입니다.

따라서, 작게 시작해야 합니다.

Monolithic 시스템에서 작은 일부 기능부터 분리를 하거나, 신규 기능을 새로운 마이크로 서비스로 시작 개발하는 것이 좋다고 생각합니다.

작게 시작해서 전환이 성공한 첫 성공 경험이 중요합니다.

분리하는 과정에서 경험을 쌓고 그로 인해 이후에 추가적인 중요한 기능들을 보다 수월히 분리할 수 있도록 도움을 줄 수 있기 때문입니다.

 

 

 

어떤 부분부터 분리해야 할까?

  1. 비즈니스 변화에 민첩하게 대응해야 하는 기능
  2. 요구사항 변경이 빈번하여 빌드 / 배포를 자주 해야 하는 기능
  3. 유연한 수평 확장이 필요한 기능
  4. 하지만, 우선 중요도가 높은 기능들을 분리하기 이전에 중요하지 않은 기능들을 우선적으로 분리해보는 연습과정이 필요.

 

 

이렇게 MSA를 도입하기 위한 필요조건과 전환하기 시작해야할 시작점, 전환 시작 부분에 대해 정리해 보았습니다.

저 또한 MSA 를 도입하면 최신 트렌드에 맞는 시스템 구조를 설계할 수 있고 기존의 정형화된 Monolithic 구조를 벗어나 좀 더 유연하고 빠른, 효율적인 구조를 만들 수 있을 것으로 생각했으나 MSA도 Monolithic 과는 반대의 단점 또한 다수 존재한 다는 것을 알았습니다.

따라서, 시스템 구조를 설계할 때 프로젝트나 종사하고 있는 기업의 구조에 따라 방식을 맞춰서 진행하면 좋을 것 같습니다.

Monolithic 또한 많은 장점을 가지고 있기 때문에 반드시 MSA 방식을 지향할 필요도 없을 것입니다.

 

728x90
반응형
LIST

'기술 창고 > MSA' 카테고리의 다른 글

[MSA] MSA 란?  (0) 2023.06.10