콘웨이 법칙과 피자 두 판의 법칙

마이크로서비스 아키텍처와 상반된 조직 구성에서 마이크로서비스 아키텍처를 개발하는 것이 가능할까요? 개발 엔지니어와 운영 엔지니어가 서로 다른 조직에 소속되어 있을 때 마이크로서비스 아키텍처를 안정적으로 서비스할 수 있을까요?

아무리 좋은 개발 방법론도 이를 조직이 제대로 받아들이지 못하면 실패합니다. 그렇다면 마이크로서비스에 적합한 조직은 어떻게 구성해야 할까요? 콘웨이 법칙을 이용해 조직 구성과 시스템 아키텍처 간 상관관계를 이해할 수 있습니다.

콘웨이 법칙은 멜빈 콘웨이(Melvin Conway)가 제안한 법칙으로 시스템 구조는 설계하는 조직의 커뮤니케이션 구조와 닮는다는 내용입니다. 시스템은 대부분 설계에 참여한 각 조직의 역할에 맞추어 설계합니다. 예를 들어 네 팀이 시스템 하나를 만들면 시스템 내부는 네 단계의 구조를 갖습니다. 이렇듯 조직의 구성과 시스템의 구조는 서로 밀접한 관련이 있습니다. 마이크로서비스별로 적절히 팀을 분리하면 마이크로서비스 아키텍처를 개발하는 데 효과적입니다. 그렇다면 몇 명의 인원이 한 팀으로 적합할까요? 피자 두 판의 법칙에서 힌트를 얻을 수 있습니다.

피자 두 판의 법칙은 아마존닷컴의 CEO인 제프 베조스( Jeffrey Preston Bezos)가 한 주장으로 한 팀의 구성원은 피자 두 판으로 식사가 가능한 인원수를 넘어서는 안 된다는 것입니다. 실제로 팀 구성원이 많을수록 커뮤니케이션 비용은 기하급수적으로 증가하기 때문에 한 팀의 인원수를 적절하게 분배하는 것이 중요합니다.

콘웨이 법칙과 피자 두 판의 법칙을 이용해 마이크로서비스 아키텍처에 적합한 조직 구성에 필요한 힌트를 얻었습니다. 다음 절에서는 마이크로서비스 아키텍처에 가장 적합한 조직 구성인 데브옵스를 알아보겠습니다.

데브옵스

콘웨이 법칙에서 언급했듯이 조직 구성과 그 조직이 만든 시스템 아키텍처는 서로 닮아 있습니다. 마이크로서비스 아키텍처를 도입한 회사라면 조직도 마이크로서비스별로 나누는 것이 효율적입니다. 이때 마이크로서비스를 개발하는 팀은 여럿인데 배포와 운영은 한곳에서 담당하게 되면 커뮤니케이션부터 배포 프로세스, 운영 방식 등에서 여러 문제가 일어납니다. 이러한 문제점을 해결하는 개념으로 데브옵스가 있습니다.

데브옵스 개념

데브옵스 개념

데브옵스(DevOps)는 개발(Development)과 운영(Operations)의 합성어로 개발과 운영을 한 팀으로 합치는 것을 의미합니다.

각자 전문 분야가 다른 엔지니어를 한 팀으로 구성하면 업무 효율이 향상되기 어렵다고 생각할 수도 있습니다. 하지만 실제로는 개발자와 운영 엔지니어를 한 팀으로 구성하면 서로의 영역에 조금씩 가까워지는 현상이 발생합니다. 운영 엔지니어는 자동화와 관련된 테스트를 하게 되므로 소프트웨어 개발의 한 축을 책임지고, 개발자들은 모니터링과 로그 분석, 배포에 좀 더 집중합니다. 이는 결국 운영 엔지니어와 개발자 간 기술적 교류를 활발하게 합니다.

마이크로서비스와 데브옵스는 서로 잘 어울리는 개념입니다. 마이크로서비스별로 팀들이 데브옵스를 구성하면 마이크로서비스별로 최적화된 개발-배포-운영 프로세스를 구축할 수 있고, 각종 문제에도 긴밀하게 대응할 수 있습니다. 하지만 조직의 변화와 관련된 주제는 역사가 오래된 기업일수록 쉽게 결정할 수 없으므로 데브옵스의 적용은 다양한 관점의 고찰이 필요합니다.