Enjoy My Posts

마이크로서비스패턴 감상평

Posted on By Geunwon Lim

이 포스트에서는 마이크로서비스 패턴을 읽은 후 감상평을 적겠습니다.

msa를 적용하려는 개인 프로젝트는 오래전부터 하고 싶었던 것인데 공부가 부족하고 코딩 실력도 부족하여 미뤄뒀던 것입니다.

마이크로서비스 패턴은 정말 재밌었습니다. 이전에 제가 궁금해하던 것들을 명쾌하게 설명해줬거든요. 어쩌면 제가 it-chain에 참여하지 않았다면 이 책을 이해하지 못했을 수도 있을 것 같아요. it-chain 참여할 때 msa를 적용했고, 저는 하나의 서비스를 맡아 개발했었습니다. 당시 제가 담당한 서비스에 대한 것은 대부분 알고 있었지만, 왜 이벤트로 다른 서비스와 소통하는 것인지, cqrs를 왜 쓰는 것인지, 여러 서비스에 걸친 트랜잭션 처리를 어떻게 한 것인지, 통합 테스트가 어렵다고 하던데 어떻게 한 것인지 등이 궁금했습니다. 교보문고에 가서 여러 msa 책을 비교해보다가 마이크로서비스 패턴에서 “모노리스에서는 @transactional만 붙이면 트랜잭션 처리가 되는데, msa에서는 어떻게 할까요?” 라는 문구를 보자마자 바로 결제했습니다. 책을 다 보고 아주 만족하고 있고요. 설명히 상당히 깔끔합니다. 보고나서 “아 예전에 it-chain때 내가 왜 그렇게 하는지도 모르면서 짰던 코드가, 이 문제를 해결하려고 필요했던 것이구나”를 느끼기도 했죠. 그리고 읽기 전에는 msa에 대한 인식이 장점에 초점이 맞춰져 있었는데, 읽고 보니 장점과 단점을 잘 고려해야겠다고 느꼈습니다. 가장 큰 문제는 ‘어렵다’인 것 같아요. 모노리스에서는 쉽게 처리할 수 있는 문제가 msa를 적용하려고 하면 큰 이슈가 됩니다. 이러한 어려움을 감수할만한 장점이 있어야 할텐데, 대부분의 서비스에서는 장점보다 단점이 클 수 있을 것 같아요. msa를 잘못 적용하면, msa의 장점은 누리지도 못한 채 msa의 어려움만 감수하고 모노리스의 장점을 포기하게 되는, 분산 모노리스를 만들 위험성도 조심해야 할 것 같습니다. 그리고 책의 마지막 부분에 기존 모노리스를 msa로 전환하는 과정을 소개하는데, 이 부분을 보고 이미 서비스되고 있는 모노리스를 msa로 전환한다는 것은 정말 어렵겠다고 느꼈습니다. msa를 잘 적용할 수 있을만큼 개발도 잘해야 하고, 기존 모노리스 시스템도 명확히 이해해야 가능하다고 느꼈거든요. 진짜 제대로 리서치도 되지 않은 상황에서 기존 모노리스를 msa로 전환하겠다고 하는 것은 설레발 주도 개발의 대표적인 사례인 것 같아요.

스프링 마이크로서비스 코딩 공작소를 읽고나서 개발에 들어가려고 하는데, 재밌을 것 같네요. 조금 아쉬운 것은 원래 msa를 적용할 때 각 서비스를 mvc패턴으로 개발하려고 했었는데, 패키지 구조등에 ddd 개념이 조금 들어갈 것 같습니다. ddd는 예전에 it-chain할 때 조금 따라해본 수준이라 제가 잘 알지도 못하지만, 마이크로서비스 패턴을 읽고 ddd에 나오는 내용이 msa가 가지는 이슈 해결을 도와준다고 배웠고, msa 레퍼런스 코드들이 대부분 ddd를 함께 적용했을 것이기 때문에 참고하기 위해서라도 ddd 개념이 좀 들어갈 것 같습니다.