좋은 마이크로 서비스를 구성하기 위해서는 느슨한 결합과 강한 응집력에 대한 고민은 필수적이다.

 

느슨한 결합이 잘 되어 있으면 하나의 서비스를 변경했을 때 다른 서비스는 변경이 되지 않으며, 이를 통해서 다른 변경없이 특정 서비스를 변경하고 배포할 수 있다. 강한 응집력이 잘되어 있으면 특정 행위에 대한 변경이 한 곳에서 이루어지는 것이다. 이는 같은 행위가 여러 곳에 분산되면 한 행위의 수정을 위해 여러 서비스를 변경 배포해야하는 문제가 발생하게 된다. "느슨한 결합" 그리고 "강한 응집력" 이 두 가지를 지키지 않으면 마이크로 서비스의 큰 장점을 잃을 수 있기 때문에 이를 효과적으로 컨트롤할 수 잇는 방법을 찾아야 한다.

 

특정 모델에 대해 경계가 정해진 적용 가능성, 콘텍스트를 제한한느 것은 팀원들로 하여금 무엇에 대해 일관성을 유지하고, 무엇을 독립적으로 개발할 수 있는 지 명확하게 공유할 수 있게 하는 것을 "경계가 있는 콘텍스트" 라고 한다. 각 콘텍스트 내에는 외부와 통신할 필요가 없는 것과 다른 외부로 통신하는 것이 함께 존재하고, 명백한 인터페이스로 어떤 모델이 다른 콘테스트와 공유될지를 결정한다.

 

 어떤 모델을 공유하고, 어떤 모델을 공유하지 않는 지를 명확하게 고려하게 되면 우리가 피해야 할 강한 경합 (우리는 느슨한 결합을 하고 싶다.)을 피할 수 있게 된다. 또한, 서로 조화를 이루는 비지니스들이 존재하는 도메인 내부의 경계를 설정함으로 높은 응집력을 이룰 수 있다. 이렇게 관련된 기능을 모으고, 내외부의 공유를 설정하는 작업을 통해서 모듈화를 이루고, 이를 모델링하게 되면 이는 마이크로 서비스의 후보가 될 수 있다. ( 애플리케이션의 관점에서 각 기능에 대해서 관련된 것들을 구역화하고, 이들의 모델의 내부와 외부에 대한 인터페이스를 설정하게 되면 그 구역화를 기점으로 마이크로 서비스를 이룰 수 있는 것을 의미하는 것이다.)

 

이러한 마이크로 서비스를 이룰 때 고려해야할 점 중 하나는 조직 구조와의 관계성에 대한 고민이다. 각 작은 서비스에 대해서 한 팀에서 다루면 큰덩어리의 한 묶음으로 관리하여 테스팅 단순화를 도모할 수 있고, 각 작은 서비스가 다른 팀이 하게 되면 최상위 계층의 마이크로 서비스가 될 수 있다. 

 

모놀리식 시스템을 어떻게 하면 구역화하고 어떻게 마이크로 서비스들의 묶음으로 수정할 수 있을 지에 대한 고민을 하게 되는 것 같다. 무엇보다 중요한 쟁점은 마이크로 서비스의 장점을 살리고, 그것을 이용하는 방법에 달린 것 같다. 더 고민해봐야할 것들이다.  

 

이는 마이크로서비스 아키텍처 구축을 공부하면서 생각을 정리한 것입니다.. 관련된 내용에 대해서 더 알고 싶은 경우에는 해당 책을 보는 것을 권유합니다.

 

마이크로서비스 아키텍처 구축

마이크로서비스, 웹 기반 분산 시스템의 디자인 패러다임을 바꾸다!

www.hanbit.co.kr

 

'개발자로 살아남기 > Micro Service Architecture' 카테고리의 다른 글

4. 통합  (0) 2021.04.25
2.진화적 아키텍트  (0) 2021.04.11
1. 마이크로 서비스  (0) 2021.04.11

+ Recent posts