프트웨어 전문지 마이크로소프트웨어의 최신호는 우리가 매일 접하는 웹 페이지, 모바일 등 프론트엔드(Front-End)를 주제로 담았습니다. 자바스크립트, 정적 타입, 리액트, 뷰, 앵귤러, 일렉트론, ESNext 등 마소 393호의 주요 기사들을 IT조선 독자에게도 소개합니다. [편집자주]

후이서울 합류 전, 스프링 프레임워크와 오라클 DB를 다뤘다. 조직 이동과 함께 개발 스택이 변화하면서 노드JS(Node.js)를 쓰는 지금의 서비스와 스프링 엔터프라이즈 환경 사이 특징이 눈에 들어왔다. 짧게 느낀 바로는 노드JS와 스프링은 각기 적합한 서비스가 다르다.

엔터프라이즈 시스템은 대용량 DB 트랜잭션을 다룬다. 그 때문에 요청 하나를 처리하는 데 비교적 많은 리소스를 필요로 한다. 이때 멀티 스레드는 작업 하나가 다소 시간이 오래 걸릴 경우, 스레드 풀에서 사용 가능한 자원을 적극적으로 활용해 동시에 처리한다. 인프라 확장성이 어느 정도 받쳐 준다면 상상 이상의 퍼포먼스를 기대할 수 있다. 또한, 오랜 기간 최적화를 거듭한 결과 안정적이고, 무거운 시스템으로 상상하기 어려운 속도를 내는 장점도 있다.

프로젝트 기술 스택을 변경하거나, 새로운 기술을 도입하는 일은 많은 개발팀의 미션이다. 안정화하기까지 많은 시행착오가 필요하고, 학습 비용도 크기 때문이다. 또, 새 구성원을 맞을 때 어떻게 하면 좀 더 빨리, 팀워크를 형성하고, 적응을 도울 수 있는지도 고민이다. 신입 개발자 또는 다른 기술 스택이 익숙한 멤버가 들어올 때 더 그렇다.

필자는 스프링 프레임워크와 오라클 DB 환경에서 일했다. 후이서울에서 사용하는 모든 기술이 처음이었다. IDC를 통하던 업무를 AWS에서 직접 처리하고, 언어와 프레임워크, RDB에서 NoSQL로 DB까지 모든 게 처음이었다. 익숙하지 않은 개발 환경에 빠르게 적응할 수 있었던 건 전적으로 팀 개발 문화 덕분이었다.

짝 프로그래밍. / 위키피디아
짝 프로그래밍. / 위키피디아
프로젝트를 빨리 파악하려면 바로 개발을 해야 한다. 그동안의 개발과 다른 점이 있다면 적응 기간 동안 혼자 코딩하지 않았다는 것이다. 주로 팀원들과 돌아가며 짝을 이뤄 개발했다.

짝 프로그래밍은 애자일(Agile) 방법론 중 하나로, 두 명의 프로그래머가 하나의 컴퓨터에서 함께 작업하는 것을 말한다. 둘 중 한 명은 드라이버(Driver)로 실제 코드를 작성한다. 이때 네비게이터(Navigator) 또는 옵저버(Observer)라 불리는 나머지 한 명이 좀 더 큰 그림으로 전략을 짜고 코드를 리뷰한다. 드라이버와 네비게이터는 고정돼 있지 않고 번갈아 가며 역할을 바꾼다. 애자일 방법론을 제시한 학자 중 한 명인 알리스테어 콕번(Alistair Cockburn)의 논문에 따르면 짝 프로그래밍으로 코드를 작성할 경우 15%의 시간이 더 걸리는 대신, 코드 결함은 15% 감소한다.

후이서울 팀은 1시간 단위로 드라이버와 네비게이터 역할을 바꿨다. 50분 동안 코드를 쓰고, 10분은 쉰다. 작성 중이던 코드가 50분 안에 마무리되지 않더라도 시간을 지킨다. 한 화면을 함께 보고 의견을 나눴기 때문에 작업 중 역할을 바꿔도 괜찮다.

휴식시간은 지켜주는 게 좋다. 실제로 짝 프로그래밍을 하면 혼자 작업하는 것보다 더 많은 에너지가 소모된다. 네비게이터는 코드 전략을 세우는 것뿐만 아니라 드라이버의 코드를 실시간으로 리뷰해야 한다. 그 때문에 평소보다 더 많은 집중력을 요구한다.

김선미 필자의 새로운 기술 스택과 개발팀 문화에 대한 자세한 내용은 ‘마이크로소프트웨어 393호(https://www.imaso.co.kr/archives/3408)’에서 확인할 수 있다.