brunch

You can make anything
by writing

C.S.Lewis

by 신현묵 Jan 05. 2017

데이터 중심의 소프트웨어 개발, #6

MSA에 대한 이해와 인력 구성의 변화

소프트웨어 개발과 소프트웨어 아키텍처, 마이크로 서비스 아키텍처에 대한 이야기를 풀어나가기 위해서는 조직의 구성이나 구조, 거너번스에 대해서 이야기를 하지 않을 수 없다.


먼저, MSA(마이크로 서비스 아키텍처)에 대한 단어와 같이 떠오르게 되는 단어들을 생각해보자.


Agile, Docker, SpringBoot, Play 등등...


그리고, Rest API들이 등장한다. 


그런데, 소프트웨어를 개발하는 우리들은 잘 알고 있다. 소프트웨어 아키텍처가 왜 추상화(?)가 될 뿐이고, 실제 SA의 역할을 하지 못하는가에 대해서.


그것은, 소프트웨어 아키텍처는 '팀의 구조'를 그대로 반영하고 있기 때문이다. 소프트웨어 아키텍처에 대한 정의가 이루어지고, 조직의 변화나 팀원의 변화가 발생하지 않는다면.. 소프트웨어 아키텍처는 무용지물이 된다. 말 그대로 추상화(?)의 역할밖에 하지 못한다.


소프트웨어 아키텍처가 3 Tier로 구성되거나, 미들티어에 대한 프레임웍이 존재한다고 정의한다는 것은 그것을 다루거나 그것을 '운용', 그것을 '책임'지는 개발자나 담당자가 존재하는 것을 의미한다. 새로운 기술이나 새로운 프레임워크를 선택한다는 것은 그 '책임'과 '권리'를 모두 부여한다는 것을 뜻한다.


그래서, 소프트웨어 아키텍처는 사실 그대로의 조직 구조를 그대로 투영하고 있다.


IT기업 내부의 소프트웨어 아키텍처나 시스템 구성도, 애플리케이션의 구성도를 자세하게 살펴보면, 해당 조직의 거버넌스 구조나, 역할, 어떤 업무를 어느 정도 비중으로 담당하고 있는지가 그대로 그려진다.


사실상 아키텍처는 팀의 구성, 팀의 역할, 팀의 색깔, 팀의 거버넌스 구조, 권력구조를 그대로 투영한다.


새로운 리더나 CTO가 새로운 아키텍처를 그리고 있다는 것은 팀의 권력 구조가 변화하고, 인력 변동이 발생한다는 것에 대해서는 이제 어렵지 않게 설명하고, 대부분 그것을 인지한다.


매우 당연하게, 수직적인 구조의 Monolitic 구조의 상하구조가 MSA에서는 분권화되고, 개별적인 개발자들에게 배포 권한과 책임들이 나누어지게 된다는 것을 의미한다.


현재, 최고의 IT기업으로 알려진 대부분의 기업들은 MSA구조를 택하고 있다는 것을 손쉽게 알 수 있다. 대부분 하나의 팀원의 크기가 8명 미만이다. 아! 군대를 다녀온 사람들에게는 1개 분대의 구조에 대해서 설명하는 것이 더 좋을 것 같다. 개발팀의 인력 구성에 대해서 이야기를 잠시 해보자.


군대에서 하나의 목적을 이루는 최소한의 구성단위는 '분대'이다. 군대에서 분대장을 Squad Leader라고 부른다. 대부분의 군대는 6~12의 인원으로 전투와 행정을 하나의 단위로 다루게 된다. 이 경우 분대장을 '지휘관'이라고 부르지 않고, '지휘자'라고 부른다.


군대에서 이러한 '분대'의 개념이 만들어진 것은 사실상 소규모 전투 부대에서의 전투역량이 급상승할 수 있었던 분대 화력에 '기관총'이 보급되면서부터이다. 엄청나게 강력한 기관총을 중심으로 소총수들이 엄호하는 구성으로 특정 지리적인 이점만 있다면 '1개 분대'하나 만으로도 엄청난 위력을 자랑할 수 있게 되었다.


2차 세계대전을 기점으로 기관총이 2정 이상 편제되고, 2~3개의 소총반으로 구성된 분대의 구성에서는 분대장에게도 소대장 이상의 지휘능력이 필요하게 되었고, 실질적으로 일반 병사보다는 직업군인인 부사관에게 분대장의 직책을 부여하는 것이 일반적인 군대의 구성이다. 물론, 한국군의 경우 부사관이 그다지 똑똑하지 못한 경우도 많아서 ( 특히, 하사 ) 내무반장인 병장이 이 역할을 하는 것이 더 효과적인 상황이기도 하다.


잠시, 이런 군대의 '분대'에 '강력한 화기'로 인해서 적은 인원의 1개 행정 채 계가 엄청난 위력을 자랑하게 변한 것처럼, MSA는 6~12명 정도의 소규모 인원으로 소비자의 요구나 비즈니스의 지원이 가능한 기술적인 기반들이 이미 대중화되었다는 것을 의미한다.


Agile, Docker, SpringBoot, Play, Rest API 등등...


이러한 기술들은 MSA구조에서 소규모 개발팀이 과거의 대규모 개발 구조에서 하지 못했던 신속하고 빠른 개발이 가능하게 한다.


그러한 장점 중의 하나는 '커뮤니케이션'비용이 엄청나게 줄어들게 된다는 것을 의미한다. 과거에는 팀, 팀장, 부서장의 회의와 협의과정에 엄청난 시간과 비용이 투자되었지만, 소규모 개발팀과, 슬랙과 같은 커뮤니케이션 도구들로 인해서 이 비용이 최소화를 넘어선 신속화가 가능하게 된다.


MSA 그 자체는 팀원의 구성을 줄여주고, 커뮤니케이션 비용을 엄청나게 절약한다.


후원 : http://www.whatap.io 



매거진의 이전글 데이터 중심의 소프트웨어 개발, #5
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari