티스토리 뷰

반응형

스터디 소개

2022년 6월 30일부터 2022년 11월 3일까지 마이크로서비스 패턴 스터디를 진행했습니다. 진행하기 전에 신청 공고를 페이스북, 링크드인, 커리어리에 올려 두었고, 간단한 폼으로 신청을 받았어요. 어떤 일을 하시는지 여쭤보았고 왜 공부하고 싶으신지 여쭤봤습니다. 그리고 적극적으로 답해주신분들을 제 주관적으로 판단해서 스터디 멤버를 구성했습니다. 중간에 나가신 분도 계셨지만 그래도 열분정도 끝가지 스터디에 참여해주셨어요.

다양한 회사에서 오셨고 다양한 경험을 가지고 계셨어요. 운이 좋게도 각 패턴에 대해서 고민을 하셨던 경험이 있는 분들이 있어서 이야기가 재미있게 오갔습니다. 연차는 비교적 다양하진 않았어요. 2-4년차 분들이 대부분이셨어요. 그래서 더 열정적이었던 것 같아요.

13개의 장을 4달에 나눠서 진행했어요. 구글 밋에서 매주 목요일, 한 챕터당 한사람이 정리해서 공유하는 방식으로 진행했습니다. 진행중에도 질문을 하기도 하고 자신의 경험을 나누기도 하는 그런 방식으로 진행했어요. 한시간 반만 하고 싶었는데, 이야기가 재밌어서 2시간정도 한것 같습니다. 마지막 스터디는 오프라인으로 진행했는데, 역시 저는 오프라인이 훨씬 좋더라고요.

책에 대한 간단한 리뷰

이 책은 패턴을 설명하고 그 구현 코드를 설명하는 방식으로 서술되어 있어요. 만약 이 패턴이 나온 맥락과 상황을 전혀 모른다면 이 책의 효용이 매우 작을거라고 생각해요. 그래서 스터디를 진행하면서 패턴의 맥락과 상황에 대해서 제가 아는 내에서 최대한 이야기 해보려고 노력했어요. 다행히 잘 들어주시고 질문도 해주셔서 이야기가 지식이 전달되는 느낌을 받았습니다. 저도 다른 분들의 경험에서 인사이트를 얻을 수 있었고요.

이 책을 읽으면서, MSA가 당연하게 이야기되는 지금 상황에서 경험이 부족하다면, 이 책을 잘못 이해할 가능성이 조금 있다고 생각했어요. 왜냐하면 이 책에서는 분산시스템을 다루는게 어렵다고 말은 하지만 그게 얼마나 어렵고 비용이 큰 일인지는 자세히 설명하지 않기 때문이에요.

새로 프로젝트를 한다고 해볼게요. 요새 MSA가 좋다고 하니까 처음부터 MSA로 잘 만들고 싶은 마음이 있을거에요. 요구사항에 대해서 작은 단위로 기능을 쪼개고 그것을 서비스로 어렵지 않게 만들수 있을겁니다. 그리고 각 서비스에 대해서 API 요청으로 단순하게 기능을 연결해서 더 큰 기능 구현하는 것도 그리 어렵진 않겠죠. 그러나 사용자들이 그 기능을 사용하게 되고, 요구사항이 변화면서 코드도 변하게 되는 과정에서 기능의 일관성을 유지하는 것은 매우 어려운 일이죠. 각 API의 실패에 대응해야하고, 그로 인해서 발생하는 데이터의 정합 오류를 계속 맞춰줘야하니까요. 그래서 이번엔 이걸 해결하기 위해서 사가 패턴을 도입했다고 해보죠. 그 일관성을 위해서 이벤트 스트리밍 시스템을 구축하고, 각 보상 트랜잭션을 구현을 했습니다. 그런데 그렇게 이벤트로 격리된 시스템을 추적하는 것이 또 너무 어려워졌습니다. 그걸 해결하기 위해서 큰 비용을 주고 솔루션을 사용해야할 수도 있겠죠. (생각만해도 끔직하네요.) 사실 그 새 프로젝트는 그냥 하나의 서버에서 구현해도 되었을 텐데 말이죠. 그렇게 되면 데이터베이스의 트랜잭션을 이용해서 기능의 일관성을 비교적 쉽게 구현할 수도 있고요. 아마 그 팀은 그 기술 선택으로 개발 속도가 느려지고 운영 비용이 커지면서 제품의 성장을 지원하기가 매우 어려워졌을거에요. 트랜드 때문에 적정기술을 선택하지 못한것이죠. 

좀 극단적이 이야기였습니다만, 결국 적정 기술을 판단하는 능력을 갖기 위해서 그 패턴이 왜 나왔는지, 어떤 상황에서 나왔는지 알아야합니다. (사실 이건 이 책에도 적혀있는 내용이에요.) 그 기술을 선택하는데 발생하는 비용이 상쇄될만한 가치를 주는지 판단할 수 있어야겠죠. 정리하면, 패턴의 상황과 맥락을 이해하기 위해서 노력해야합니다.

여담이지만, 제 개인적인 통계에 의하면 대부분의 개발자들이 지금 만들고 있는 제품은 영원히 마이크로서비스 패턴들을 도입해야할 만큼 복잡해지지 않을 가능성이 높은 것 같아요. (왜냐하면 대부분 망하니까…)

개인적으로 요즘 이런 책들이 재미있는 포인트는 바로 그 패턴이 나온 상황과 맥락에 대한 이해를 통해서, 복잡함이라는 문제를 어떤 원리로 해결해나갔는지 체험할 수 있는점입니다. 패턴이라는 해결책들을 찬찬히 살펴보면 결국 어떤 정수(essence)가 흐릿하게 보입니다. 자주 나오는 기출문제들을 계속 보다 보면, 이 시험을 관통하는 중요한 개념을 이끌어낼수 있는 느낌일까요. 저도 아직 흐릿하게 보여서 흐릿하게 말하고 있네요.

결론

"적정 기술을 판단할 수 있는 능력을 갖기 위해서, 패턴의 상황과 맥락을 이해하자!"

아무튼 오랫만에 회사 밖에서 진행했던 스터디는 유익했습니다. 마이크로 서비스에 대해서 그리고 패턴이라는 문제 해결 방법에 대해서 정리할 수 있던 시간이었습니다. 그리고 좋은 인연을 만들 수 있었고요. 다음 스터디도 기대가 됩니다.

 

관련 링크

반응형
댓글
댓글쓰기 폼