마이크로 서비스는 Mirco Service, 초소형 서비스를 말한다. 한 가지 앱에서 지원해야 할 서비스가 많아지면 당연하게 그 크기느 커질 수 있겠지만 마이크로 서비스 아키텍쳐는 그것들을 많이 세분화하여 작은 서비스의 여러개의 묶음으로 표현하려는 것이다. 처음에는 이것에 대해서 그럴 수 있고, 간단하다는 생각을 하였는데, 이것이 생각보다 약속할 것도 많고 설계시에 까다로운 부분들이 존재하다는 것을 알 수 있었다.

 

 분리된 각 서비스는 자율성을 가질 수 있다. 그렇기에 각 서비스마다 다른 기술을 적응시킬 수 있다. 이는 서비스 끼리의 의사소통은 네트워크 호출로 이루어지기 때문에 가능하다. " 각 서비스는 독립적이고 자율성을 가지며 다른 서비스와는 네트워크로만 통신한다. "라고 보았을 때 중복 코드가 무수히 많아질 것이라는 생각도 따라온다. 또한, 네트워크 통신에 대한 규칙에 얽메일 수 있고 주고 받는 데이터가 바뀔 때 독립성이 모호해지는 것이 아닌가 하는 생각에도 빠진다. 이는 어쩌면 끊임 없이 '다른 변경 없이 특정 서비스만을 변경하고 배포하는가?' 에 대해서 고민해야하는 방법이다.

 

 그렇기에 마이크로 서비스는 초기 설계와 개발하면서 진행 될 수 많은 토론과 회의 그리고 고민이 필요하다는 생각으로 연결 되었다. 자연스럽게 이런 노력과 시간이 의미가 있는 방법론인가? 생각하였고, 내가 일하면서 불편했던 것들의 단점들을 보완한다는 결론에 이르렀다.

 

 첫 번째는 매우 작은 서비스들로 세분화 되었기 때문에 몇몇 부분에서는 새로운 기술을 도입하려고 해도 리스크가 적다는 것이다. 문제를 해결하려고 할 때 이를 해결 할 수 있는 기술이나 방법을 찾아본 적이 있을 것이다. 하지만 모놀리식 서비스로 구성되었을 경우에는 새로운 기술에 대한 리스크에 고민과 고민의 수 많은 연결고리에서 현재 적용된 시스템에 영향을 미치지 않는 방법을 찾기 위한 시간을 보내야 했다. 하지만 세분화된 마이크로 서비스에서는 이러한 리스크가 작아지는 것을 느낄 수 있을 것이다.

 

두 번째는 독립성을 가지고 세분화된 마이크로 서비스는 배포에서도 큰 장점을 가질 수 있다. 모놀리그식 서비스로 구성된 것의 경우 작은 수정에도 전체 애플리케이션을 배포해야하는 번거로움이 있다. 하지만 마이크로 서비스의 경우 해당 서비스에 대한 배포만 하면 된다. 신속하고 빠르게 배포하고 더 자주 배포할 수 있을 것이다.

 

다른 장점들이 있지만 기존의 모놀리그 식에서 느꼈던 단점을 보완하는 이 두가지의 장점이 내게 와닿았다. (이는 아직 마이크로 서비스에 대한 학습과 이해가 부족해서 일 수 있다.)

 

마이크로 서비스에 대해서 잠깐 보았을 때 느껴진 것은 장점이 많지만 이는 모든 것의 만능열쇠는 아니라는 것 그리고, 세분화를 할 때 생각해야하는 수 많은 고리들에 대한 깊은 고민을 해야하는 것이다. 

 

어떻게 하면 이런 장점을 극대화시키면서 서비스를 구축할 수 있을지 고민해봐야겠다.

 

 

 

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

 

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

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

www.hanbit.co.kr

 

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

4. 통합  (0) 2021.04.25
3. 서비스 모델링하기  (0) 2021.04.11
2.진화적 아키텍트  (0) 2021.04.11

+ Recent posts