어플리케이션 수준부터 시스템 수준의 아키텍쳐에 대한 이런 저런 이야기를 계속 해왔다. 사실 이런 이야기들은 이론이다. 이론과 현실은 다른다. 다르다는 것을 인정하고, 현실에 맞춰 이론을 적용하는 것이 선수들이 해야할 일이다.
현실을 규정하는 것들 가운데 가장 큰 몫은 환경일 것이다. 그리고 그 환경 가운데 또한 가장 큰 몫은 바로 조직 모델이지 않을까 싶다. 다른 글에서 Monolithic과 Microservice 아키텍처에 대해 이야기를 했다. 이론에 치우친 분들이 왕왕 Monolithic은 악으로 규정하고, MSA를 뭔 성배마냥 찬양하는 경우가 왕왕있다.
이런 분들께 MSA를 이야기하기 전에, 다음 질문들을 생각해보길 권한다. 당신은? 혹은 당신 조직은 어떤가?
개발 단위가 책임과 역할에 맞게 나뉠 수 있는 규모가 되는지?
MSA는 작은 규모의 서비스들이 만들어진다. 그리고 익숙해지면 더 많이 만든다. 만들어지는 것까지는 좋긴한데 이를 감당할 수 있을 만큼 사람들이 있어야 한다. 사람은 없는데 쪼개는게 좋다고 무조건 쪼개다보면 전체 서비스 혹은 시스템이 뽀개진다. 혹은 사람이 뽀개질지도.
이런건 경험이다. 이미 경험해봤다.
자율에 따른 의사 결정을 실행하고 그 결과를 책임질 수 있는지?
서비스를 마이크로화한다는 것은 빠른 변경과 실행을 하겠다는 것이다. 이런 “빠름”은 몇 단계에 걸친 승인 프로세스에 의해서 일하겠다는 것이 아니다. 서비스를 담당하는 주체(개발 단위)가 자율적으로 결정하고, 이를 적용한 후 결과를 확인하겠다는 것이다. Autonomous하게 움직이고, Fast Feedback을 통해 지속적인 개선을 하겠다는 것이다. 변경을 반영하기 위해서 승인 사다리(Approval Ladder)를 오르락 내리락 하길 조직의 Leader가 원한다면… 괜히 욕먹는다.
권한을 위임할 수 있는 리더가 있어야 한다. 위임된 권한으로 실행 조직이 자율적으로 결정하고, 실행할 수 있어야 한다. 물론 책임도 져야 한다. 그리고 권한을 위임함으로써 유발되는 결과에 대해서도 리더는 책임져야 한다. 님들 책임이라고 하는 분들이 있는데… 이런 리더분이랑 일하시면 매우 피곤한다. 피곤함을 느끼시는 분들은 가장 마지막에 있는 링크 클릭 부탁!
반대로 스스로 의사결정 하나도 못하는 개발자들이 MSA하겠다는 경우가 왕왕있다. “나는 책임지지 못한다. 고로 결정 못(안)한다.” 이런 개발자라면 쓸데없는데 본인과 회사의 자원을 낭비하는 꼴이다. MSA가 Monolithic Architecture보다 돈이 더 든다. 시간낭비 돈낭비 안하는게 좋다.
오류를 어떻게 바라보는지?
SOA가 차세대 Architecture가 될 것 같은 분위기를 잡던 2000년대 초반만 하더라도 Distributed Architecture 환경에서도 Single Application에서 가능한 모든 것들이 실현될 것만 같았다. 하지만 결론은 안된다는 것이다. 그래서 SOAP의 시대는 갔고, RESTful의 시대가 도래했다. SOA의 결론 가운데 하나는 오류가 발생했을 때 Distributed 환경에서는 이를 Transactional하게 관리할 수 없다는 것.
MSA에서의 오류는 태생적이다. Error free한 코드를 작성하는 노력은 MSA와 맞지 않다. 되려 오류가 발생할 것이라는 사실을 인정하고, 발생한 오류를 빨리 찾을 수 있고, 가능하다면 이를 만회할 수 있는 방법을 준비하는 쪽이 정답에 가깝다.
만약 이 질문에 대한 여러분의 답은 어떤가? 충분히 양적으로 질적으로 준비되지 않았다면 아직 떄가 아니다. 이런 구조를 도입하는 것도 학습과 준비가 필요하다. 그것도 나만이 아니라 함께 일하는 동료들도 함께 말이다.
지사(Local Office)에서는 하고 싶어도 못해봤던 것을 본사(쏘카)에서 실현중이다. 모든 것이 완벽한 상태는 아니다.
하지만 고객 중심의 서비스를 개발할 수 있는 Architecture를 만들어내고, 또 이 Architecture를 실현시킬 조직을 만들 수 있다는 것이 행복하다. 올해에는 내가 직접 개발하지는 않지만, 다른 분들이 개발을 더 잘 할 수 있는 환경을 만들어주고, 이 분들이 더 재미있게 개발하는 모습을 볼 수 있을 것 같다.
2022년 연말에 이 과정을 복기해보는 것도 벌써부터 흥미진진할 것 같다.
흥미진진한 여정에 함께하실 분을 모십니다. 빠른 탑승을 부탁드려요~
– 끝 –