개발 프로세스도 유행을 탄다. 애자일 방법론 중에서도 스크럼(Scrum)이 대세인 것 같더니 이제는 칸반(Kanban)이 뜬다고 한다. 하지만 소프트웨어(SW) 회사에서 개발 프로세스는 개발 문화를 좌우하는 중요한 요소 중 하나이다. 유행하는 프로세스를 쫓아가다 정작 중요한 개발문화를 제대로 싹틔우지 못하면 곤란하다.
그런면에서 웹 문서 솔루션 업체 사이냅소프트는 독특한 개발 방법론과 문화를 만들어 가고 있어 주목된다. 최근 사이냅소프트를 찾아가 지난 8년간 회사가 추구해온 개발 방법에 대한 이야기를 들어봤다.
사이냅소프트 강중빈 개발본부 상무는 “동작하는 SW를 만드는 것이 개발 조직의 중요한 모토이며 그런점에서 실용적이고 실제적인 능력을 갖출 수 있는 방식으로 조직을 운영하고 있다”고 설명했다.
사이냅소프트 사무실엔 시선 닿는 곳마다 ‘품질은 우리의 자존심’, ‘100% 코드리뷰’, ‘테스트 자동화’라고 적힌 포스트가 붙어있었다. 동작하는 SW를 만들자는 모토가 공허한 구호만은 아닌듯 보였다.
사이냅소프트는 국내SW 업체 중 애자일 방법론을 빨리 접한 회사로도 알려져 있다. 회사가 처음 애자일 컨설팅을 받은 건 2007년이다. 애자일에 관심을 갖은 이유도 “품질관리를 잘해보자”라는 생각에서다. 강중빈 상무의 설명에 따르면 2007년 당시엔 대기업에서도 버전관리나 이슈트래킹의 중요성을 잘 모르던 때인데 사이냅소프트는 나름 신문물을 일찍 받아들인 편이다.
하지만 지금 사이냅소프트는 내부에서 애자일이라는 용어를 거의 사용하고 있지 않다. 스프린트, 회고, 지속적인통합(CI), 짝프로그래밍 등 애자일에서 사용되는 중요한 프랙티스를 채택하고 있지만 회사 환경에 맞게 적용해 정석적인 애자일 방법과는 거리가 있기 때문이다.
사이냅소프트는 남들보다 조금 일찍 애자일 방법론을 접하면서 ‘좋다고 다하는 게 능사는 아니다’라는 교훈을 얻었다고 한다. 회사가 목표로하는 품질관리에 필요한 요소를 적극적으로 받아들이되 원리원칙대로 적용하지 않아야 소화할 수 있다는 걸 일찍 깨달은 것이다.
강중빈 상무는 "개발 기법이 잘 차려놓은 코스 요리라면 그것을 소화할 수 있는 것은 각 조직의 상황과 여건에 따라 다르다”며 "‘OO 기법’이라는 프레임 안에 갇히게 된다면 정작 처음의 도입 목적을 잃을 수 있기 때문에 각 개발 조직에 맞게 작게 시도하고 그것을 체화하는 것이 중요하다”고 말했다.
이런 이유로 회사는 애자일이라는 틀에 갇히기 보다 상황에 맞는 요소들을 도입해 나름의 체계를 갖추는데 노력을 기울였다. 강 상무는 “매번 동작하는 SW가 주기별로 나오게 한다는 큰 전제”아래 사이냅소프트의 개발 프로세스가 운영되고 있다고 설명했다.
사이냅소프트는 개발 주기를 크게 마일스톤 단위로 잡고 사이사이를 스프린트로 나눠 반복적으로 수행하고 있다. B2B 제품을 개발하는 만큼 사업팀이나 전략팀에서 가져오는 요구사항과 개발팀 내부에서 리팩토링 할 사항들을 모아 놓고 스프린트를 시작한다.
매일 아침 스탠딩 미팅으로 진행하는 선별회의를 통해 이슈가 할당된다. 개발자들은 자신이 잘할 수 있을 것 같은 이슈를 자발적으로 가져간다. 이슈관리는 지라를 통해하고 있다. 개발자들은 소스버전 관리 툴에서 최신 업데이트된 버전을 받아 작업하고 퇴근 전 커밋한다. 모든 프로젝트가 오픈돼 있기 때문에 누가 어떤 코드를 작성했는지 훤히 볼 수가 있다.
하루는 일일회고로 마감한다. 일일회고 때는 선별회의 때 나온 이슈에 대해서도 이야기 하지만 주로 하루 힘들었던 점이나 좋았던 점을 많이 이야기한다. 이런 감성공유를 통해 팀원들 서로가 어떤 도움이 필요한지 자연스럽게 알게 된다고 한다.
새벽에는 자동으로 테스트와 빌드가 이뤄진다. 지속적인 통합(CI)를 통해 빠르게 실패를 알아내고 개선하기 위해서다. 제대로 빌드가 되지 않은 것들을 다음날 출근해 신속하게 고치게된다. 품질관리 높이기 위해 CI툴에 정적분석(static analysis) 플러그인도 추가해 사용하고 있다. 코드를 실행시키지 않아도 잠재적인 오류를 찾아내 알려주고 세팅된 코드 컨벤션에 맞지 않은 코드를 짜면 경고 표시를 띄워준다.
코드가 프리즈(통합 빌드하기 위한 단계)되면 그 묶음이 품질팀(QA)에 넘어가고 명세대로 잘 만들어졌는지 확인하는 단계를 거친다. QA팀은 얼토당토 않은 실수가 없는지 살펴보는 스모크테스트(새너티 체크)부터 회귀체크테스트까지 다양한 수준의 테스트를 진행한다. 출시가능(Sign off) 여부를 승인하는 일도 QA팀의 일이다.
개발팀은 QA팀에서 받은 테스트케이스(TC)와 새로운 요구사항을 바탕으로 다시 이슈를 선별하고 사이클을 반복한다. 테스트와 개발이 맞물려 돌아가는 구조다. 보통 2주단위로 스프린트가 돌아간다.
역시 스프린트가 끝날 때마다 스프린트회고를 한다. '예정된 대로 잘 진행됐는지’, '어떻게하면 더 잘 할 수 있는지’에 대해 이야기한다. 물론 마일스톤 회고도 진행한다.
사이냅소프트는 지금처럼 잘짜여진 개발 프로세스를 갖추기 위해 상당한 노력을 들였다. 강중빈 상무는 “2007년에 이어 제작년에도 개발 방법론에 대한 컨설팅을 한번 더 받았고 중소기업이지만 도움이 된다면 상용툴도 적극적으로 도입해서 사용하고 있다”고 설명했다.
회사는 프로세스안에서 품질을 높이기 위한 방안을 계속 고민하고 있다. 최근엔 동료의 코드리뷰를 받지 않으면 커밋할 수 없게 하는 깃랩(GitLab)이라는 코드리뷰 툴도 활용하고 있다. 강중빈 상무는 “여러가지 사정으로 리뷰를 빼먹을 가능성이 있기 때문에 일종의 강제 리뷰제도로써 동료 리뷰를 강조할 계획”이라고 말했다.
관련기사
- 개발자의 50가지 그림자2015.11.03
- SW개발자 성장에 꼭 필요한 리뷰2015.11.03
- '삶과 일의 균형'…제니퍼소프트의 개발문화2015.11.03
- 인원 늘면 꼬이는 SW개발문화의 현주소2015.11.03
너무 잘 짜여진 프로세스가 개발자들에게 업무 부담으로 다가오진 않을까? 강 상무는 선별회의, 코드리뷰, 회고 등을 거치면 문제가 작은 상태일 때 빨리 찾아 해결할 수 있어, 진짜 큰 문제가 터지는 것을 막아준다고 강조했다. 강 상무는 “잘 짜여진 프로세스 때문에 오히려 시원하게 하루를 마감하고 꼭 필요한 야근이 아니면 안하는 문화가 자리 잡았다”고 말했다.
아무리 프로세스가 잘 갖춰져 있다해도 구성원들이 따라주지 않으면 아무 소용이 없다. 그런이유에서 사이냅소프트는 배우고 성장하자하는 의지가 강한 개발자를 선호한다. 강중빈 상무는 "면접과정에서 실기면접을 통해 코딩능력뿐만 아니라 문제가 주어졌을 때 해결하는 과정과 태도를 중요하게 본다”고 설명했다.