2011년 에릭 리스가 토요타로 대표되는 일본의 린 생산 방식을 신사업 개발 방법론에 적용한 경험을 바탕으로 쓴 『린 스타트업』(인사이트, 2012)이 미국에서 출간된 지 벌써 9년이 흘렀다. 린 방식은 소개되고 얼마 지나지 않아 미국 스타트업 사이에서 빠르게 전파됐고, 많은 성공 사례가 나오면서 개념이 정착됐다. 국내에서도 이듬해부터 관련 번역서가 빠르게 출간되며 많은 스타트업과 개발자들에게 영향을 끼쳤다. 당시 내가 속한 조직에서도 여러 모바일 서비스를 개발했는데, 일부 개발팀은 해외의 최신 서비스를 벤치마킹하는 과정에서 린 스타트업 방식을 알게 돼 이 방식을 적용하는 시도를 했다.
린 스타트업 방식의 핵심 중 하나는 개발-측정-학습으로 구성되는 피드백 루프다. 시장의 불확실성이 크고, 변화의 속도가 빠른 분야에서는 정교한 시장 조사와 전략을 세우는 데 시간을 낭비하기보다 최대한 빨리, 최소기능제품을 만들어 사용자에게 검증 받아 교훈을 얻고, 이를 제품에 반영하는 선순환을 지속적으로 반복해서 성공적인 제품을 완성하자는 것이다.
이러한 방식은 비용, 시간, 인력 등 모든 것이 부족한 초창기 스타트업에게 매우 혁신적인 방법론이기 때문에 사실상 오늘날 스타트업의 표준이 됐다. 그렇다고 린 방식이 모든 스타트업에게 통하는 만병통치약은 아닐 것이다. 고객의 생명이나 돈을 다루는 의료나 재무 분야처럼, 작은 실패가 큰 불신을 초래해 사업 초기 제품 평판에 악영향을 끼치는 경우도 있기 때문이다. 물론 이런 경우 안전이 담보돼야 하는 핵심 기능은 기존 방식대로 하고, 사용성이 중시되는 분야만을 린 방식으로 하는 융합적 시도도 가능할 듯하다.
이 책도 린 스타트업의 철학을 따른다. 즉, 정교한 논리를 장황하게 펼치기보다는 시간이 부족한 스타트업의 CTO나 개발자들이 빠르게 린 스타트업 방식을 이해하고 적용해볼 수 있도록 안내하고 있다. 특히 마지막 장은 저자가 실제로 개발해 적용했던 앱을 토대로 앞서 설명한 모든 사례를 통합 적용한 사례를 상세히 보여준다.
모쪼록 이 책이 성공적인 모바일 앱 개발을 시작하는 모든 분들, 특히 스타트업 개발자나 CTO에게 도움이 되길 바란다.
나는 오랫동안 소프트웨어 개발 분야에 있다가 몇 년 전부터는 소프트웨어 용역 개발 분야에 솔루션과 개발사를 발굴하고 평가하는 업무를 하고 있다. 사업 부서에서 요청한 서비스를 구현하기에 적합한 개발사를 발굴해, 필요시 회사를 직접 방문했다. 인터뷰와 조사로 기술 역량을 파악해 다양한 프로젝트, 소프트웨어 개발사와 개발자와 만날 수 있었고, 인터뷰로 국내 스타트업부터 중견 개발사에 이르기까지 각 기업이 추구하는 개발 방법론과 개발 환경을 직접 확인할 수 있었다.
소프트웨어 개발 기업의 역량을 파악하고자 다양한 평가 도구를 사용하지만, 그중 가장 중요한 것이 애플리케이션 수명 관리(ALM, Application Lifecycle Management) 환경이다. ALM은 비즈니스의 요구 사항 관리와 소프트웨어 개발 과정을 융합하고 이를 자동화된 툴을 이용해 관리하는 것이다. 이는 요구 사항 관리, 설계, 코딩, 테스트, 이슈 관리, 릴리스 등을 모두 포함한다.
그러므로 하루가 다르게 진보하는 기술의 변화 속에서 소프트웨어 개발사가 다양한 고객의 요구를 만족시키면서도 지속성을 유지하려면 적은 인원으로도 효율적으로 빠르게 운영돼야 한다. ALM 환경이 얼마나 효율적으로 운영되는지를 보고 기업의 역량을 간접적으로 파악할 수 있다. 기술 조사 및 평가 업무를 시작하던 수 년전까지만 해도 지속적 통합과 인도(CI/CD) 프로세스는 대형 인터넷 기업이나 일부 팀에서만 적용하고 있던 개발 방법이었다. 그러나 이후 스타트업이 폭발적으로 성장하면서 애자일, 린 스타트업 등의 방법론이 폭넓게 확산됐다. 이제는 국내의 많은 기업도 배포 자동화, 품질 검증 활동 자동화 등을 비즈니스 역량과 통합해 대응하는 추세다.
이 책은 소프트웨어를 개발해 고객에게 인도하는 절차를 효과적으로 구축하며, 필요한 최신 기술을 활용해 구체적으로 구현하는 방법을 설명한다. 깔끔한 구성과 유용한 내용 덕분에 2017년 초반 발행 이후 지속적인 인기를 누리면서 현재까지도 꾸준히 업데이트되고 있다. 모쪼록 자신의 조직에 적합한 지속적 통합/인도 프로세스를 계획하고, 실제로 적용하며 발전시키는 데 필요한 지식을 갖추고자 하는 독자들에게 도움이 됐으면 한다.
오랫동안 소프트웨어 개발을 하는 분야에 있다가 몇 년전 부터는 소프트웨어를 평가하는 업무를 맡게 되었다. 업무 중 하나로써 사업부서에서 요청한 서비스를 구현하기에 적합한 개발사를 발굴하여, 필요시 회사를 직접 방문하고 인터뷰 및 조사를 통해 기술 역량을 파악하기로 하는데, 이를 통해 다양한 프로젝트, 다양한 소프트웨어 개발사와 개발자를 접할 수 있었고, 인터뷰를 통해 국내 스타트업부터 중견 개발사에 이르기까지 각 기업이 추구하는 개발 방법론과 개발 환경을 직접 확인할 수 있었다.
소프트웨어 개발 기업의 역량을 파악하기 위해 다양한 평가 도구를 사용하지만, 그 중 가장 중요한 것이 애플리케이션 수명 관리(Application Lifecycle Management, ALM) 환경이다. ALM은 비즈니스의 요구 사항 관리와 소프트웨어 개발 과정을 융합하고 이를 자동화된 툴을 이용하여 관리하는 것으로, 요구 사항 관리, 설계, 코딩, 테스트, 이슈 관리 및 릴리스 등을 모두 포함한다.
그러므로, 하루가 다르게 진보하는 기술의 변화 속에서 소프트웨어 개발사가 다양한 고객의 요구를 만족시키면서도 지속성을 유지하려면 적은 인원으로도 효율적으로 빠르게 운영되어야 할 필요가 있으며 ALM 환경이 얼마나 효율적으로 운영되는지를 통해서 기업의 역량을 간접적으로 파악할 수가 있다.
국내에도 이제는 많은 기업들이 배포 자동화, 품질 검증 활동 자동화 등을 비즈니스 역량과 통합하여 대응하는 추세다. 특히 대표적인 자동화 솔루션인 젠킨스를 활용하는 기업들이 많다. 하지만 여전히 많은 개발사들이 젠킨스의 무궁무진한 기능은 거의 활용하지 못한채 기초 기능만 사용하는 경우가 많다는 것을 지난 몇 년간의 업무를 통해 알게 됐다.
이 책은 독자가 젠킨스를 활용하여 지속적 통합과 인도, 배포할 수 있는 역량에 필요한 많은 정보를 제공한다. 또한 마스터/슬레이브를 활용한 젠킨스 확장, 고급 테스트 자동화 기법, 빌드 파이프라인 및 플러그인 개발 기법 등 블로그나 인터넷에서는 자세히 설명되어 있지 않는 내용들에 대해서도 다루고 있어, 독자가 속한 조직에서 젠킨스 자동화 솔루션을 구축하고 관리하는데 심화된 지식을 필요로 하는 경우 큰 도움이 될 것이라 생각한다.
아쉬운 점은 젠킨스가 아직 완벽한 한글화가 되지 않아, 영문 그대로 쓰는 경우가 많다는 것이다. 아마 이는 개발사의 규모와 상관없이 젠킨스를 운영 관리하는 사람은 소수이기 때문이기도 할 것이다. 이런 이유로 이 책에서는 영문버전 젠킨스를 기본으로 하고, 필요시 우리말로 부연설명을 하는 방식으로 독자에게 편의를 제공하고자 했다.
또한 이 책을 번역하는 중에 젠킨스 메이저 버전의 업그레이드(2.7)가 이뤄졌다. 이에 업그레이드 버전 검토를 해 본 결과 버그 수정, 기능 변경, 사용자 인터페이스 부분의 일부 변화가 있으나 본 서에서 설명하는 주요 기능에 큰 변화가 없다는 것을 확인했다. 하지만 일부 메뉴의 경우 업그레이드 버전에서 위치가 변경되거나, 접근 경로가 달라져서 혼란이 있을 수 있기 때문에 본서의 기준 버전 이후에 발생한 업그레이드에 대해 젠킨스 공식 사이트에서 제공하는 업그레이드 가이드(https://jenkins.io/doc/upgrade-guide/)를 번역하여, 업그레이드 버전을 사용하는 독자의 혼란을 예방하고자 했다.
데브옵스로 불리는 개발 환경 자동화는 기업 규모와 관계없이 소프트웨어 개발을 하는 모든 분야에서 표준적인 환경이 되고 있다. 즉, 이전에는 데브옵스의 채택 여부가 기업의 경쟁력이었다면 이제는 데브옵스를 얼마나 효율적으로, 비즈니스 역량과 통합해 대응할 수 있는가로 경쟁력이 옮겨가는 추세다.
데브옵스 분야의 대표적인 자동화 솔루션인 젠킨스가 이러한 변화에 대응하고자 내놓은 대안이 바로 블루오션이다. 블루오션을 활용해 빌드 파이프라인을 구성한다면 이전에는 몇 주 이상 걸리던 학습 기간을 며칠로 단축할 수 있다. 젠킨스 블루오션의 직관적인 인터페이스와 강력한 파이프라인 편집기를 활용해 지속적 인도 파이프라인을 만들고 운영하다 보면 어느새 경쟁력이 높아진 자신을 발견할 수 있을 것이다.
이 책을 번역을 하면서 아쉬웠던 점은 젠킨스가 완벽하게 한글화가 되어 있지 않아, 영문 그대로 쓰는 경우가 많다는 사실이다. 아마 이는 개발사의 규모와 상관없이 젠킨스를 운영 관리하는 사람이 소수라 굳이 한글화의 필요성을 느끼지 못하는 이유도 있을 테고, 릴리스가 매우 빈번하고, 새로 등장하는 용어도 많은 제품의 특성상 한글화를 할 겨를이 없기 때문이기도 할 것이다. 이런 이유로 이 책에서는 영문 버전 젠킨스를 기본으로 하고, 필요시 우리말로 부연설명을 하는 방식으로 독자에게 편의를 제공하고자 했다.
또한 블루오션에서 사용하는 파이프라인 코드 기술 방식인 'declarative pipeline'은 '선언형 파이프라인'으로, 기존에 사용하던 기술 방식인 'scripted pipeline'은 '스크립트형 파이프라인'으로 번역했다. 이는 프로그래밍 언어에서 사용하는 'imperative language'와 'declarative language'를 우리말로 통상 '명령형 언어'와 '선언형 언어'로 사용하는 것에 맞춘 것으로 독자의 이해를 부탁드린다.
소프트웨어 개발 기업의 역량을 파악하는 가장 중요한 평가 요소 중에는 애플리케이션 수명 관리(ALM, Application Lifecycle Management) 환경을 얼마나 잘 갖추고 운영하는지를 점검하는 항목이 있다. 여기서 말하는 ALM은 비즈니스의 요구 사항 관리와 소프트웨어 개발 과정을 융합하고 이를 자동화된 툴을 이용해 관리하는 것으로, 요구 사항 관리, 설계, 코딩, 테스트, 이슈 관리, 릴리스 등을 모두 포함한다.
하루가 다르게 진보하는 기술의 변화 속에서 소프트웨어 개발사가 다양한 고객의 요구를 만족시키면서도 지속성을 유지하려면 적은 인원으로도 효율적으로 빠르게 운영될 필요가 있다. ALM 환경이 얼마나 효율적으로 운영되는지를 통해서 기업의 역량을 간접적으로 파악할 수가 있는 것이다.
이제는 국내에서도 많은 기업이 배포 자동화, 품질 검증 활동 자동화 등을 비즈니스 역량과 통합해 대응하고 있으며, 이를 지원하는 도구도 다양하다. 하지만 그중 대표적인 자동화 솔루션인 젠킨스가 여전히 가장 높은 점유율을 갖고 있다.
윈도우 기반의 젠킨스를 활용해 지속적 통합과 배포 환경을 구축하는 방법을 자세하게 다루는 이 책이 유사한 환경에서 젠킨스 자동화 솔루션을 구축하고 관리하는 데 큰 도움이 될 것이라 생각한다.
아쉬운 점은 젠킨스가 아직 완벽한 한글화가 되지 않아, 영문 그대로 쓰는 경우가 많다는 것이다. 아마 이는 개발사의 규모와 상관없이 젠킨스를 운영 관리하는 사람은 소수이기 때문이기도 할 것이다. 이런 이유로 이 책에서는 영문 버전 젠킨스를 기본으로 하고, 필요시 우리말로 부연 설명을 하는 방식으로 독자에게 편의를 제공하고자 했다.
‘왜 어떤 소프트웨어 제품은 고급스러우면서도 직관적이고, 기본 기능만 익히면 복잡한 기능도 금세 자연스럽게 응용할 수 있는 데 비해, 어떤 제품은 불필요하게 복잡하고 일관성 없이 동작할까?’라는 생각은 소프트웨어 개발 분야에 종사하는 사람이라면 누구나 한 번쯤 가져봤을 것이다. 역시 소프트웨어 개발 분야에서 오랫동안 몸담았던 역자도 같은 생각을 하면서 이 책을 번역했다.
MIT 컴퓨터과학과 교수인 다니엘 잭슨은 이러한 질문에 대한 대답으로 소프트웨어 디자인에 대한 혁신적인 ‘콘셉트’ 기반 접근법을 제시한다. 저자는 우리에게도 상당히 익숙한 100개가 넘는 앱의 사례를 통해 소프트웨어 디자인에 대한 새로운 관점을 제시하면서 오래된 질문에 대한 새로운 답을 제시한다. 그의 ‘콘셉트’ 기반 접근법이라는 아이디어는 획기적인듯하면서도 친숙하고, 깊이가 있으면서 단순한데, 기본적으로는 인간 중심의 접근법을 제시하기 때문에 소프트웨어를 더 유용하게 디자인하는 방법을 제공하는 프레임워크라 할 수 있다.
특이하게도 이 책은 전체의 40% 정도가 주석으로 구성돼 있다. 이는 독자들이 핵심 주제를 빠르게 간단히 이해할 수 있도록 저자가 의도한 구성이며, 본문에서 다루지 않은 내용은 주석에서 상세히 설명하고 있다.
또한, 다양한 분야와 수준의 일반 독자를 위한 책으로, 소스 코드가 없어서 코딩 세부 사항보다는 소프트웨어 디자인의 원칙에 좀 더 집중할 수 있을 것이다.
모쪼록 이 책이 소프트웨어 개발자, 디자이너뿐만 아니라 전략가, 마케터, 관리자 등 훌륭한 소프트웨어 제품과 도구를 만드는 분들께 도움이 되는 안내서가 되길 바란다.
허드슨을 일컬어 대표적인 오픈소스 기반의 지속적 통합 도구라고 한다. 지속적 통합CI, (Continuous Integration)이란 애자일(Agile) 방법론 중 비교적 초기부터 소개된 XPeXtreme Programming의 실천법으로서, 소프트웨어를 개발하는 과정인 빌드와 테스트와 배포의 각 단계를 자동화하고 품질을 수치화해서 코드 품질을 높이는 과정을 말한다.
허드슨은 썬마이크로시스템즈에서 근무하던 코슈케 카와구찌가 오픈소스 기반의 지속적 통합 서버를 만들면서 시작되었고, 2005년 2월에 첫 번째 버전이 릴리스 되었다. 당시 지속적 통합을 지원하는 대표적인 툴인 크루즈컨트롤 등 다수의 소프트웨어가 존재했음에도 불구하고 허드슨이 급속하게 이들 소프트웨어의 대체재로서 인기를 끌게된 요인은 무엇일까?
주요 원인은 허드슨이 오픈소스 기반으로서 다양한 시스템과의 연동이 쉽다는 점과 강력한 플러그인 시스템을 통한 기능 확장이 가능했다는 이유 때문일 것이다. 즉, 허드슨을 사용하면 개발자들은 이미 본인에게 익숙한 기존 시스템에 큰 변화를 주지 않고도 지속적 통합 도구의 장점을 살릴 수 있고, 추가로 필요한 기능이 있다면 플러그인 확장을 통해 자유롭게 구현할 수 있다.
허드슨의 경우 지속적 통합 도구로서의 인기 만큼이나 많은 사건이 있었다. 2010년 오라클이 썬마이크로시스템즈를 합병함에 따라 허드슨이 오라클의 소유가 된 사건과 그 과정에서 허드슨 프로젝트의 인프라와 상표의 주도권에 대한 의견 차이로 인해 코슈케 등을 비롯한 초창기 허드슨 프로젝트 컨트리뷰터들이 별도의 젠킨스(Jenkins) 프로젝트를 시작한 사건, 그리고 오라클이 허드슨을 이클립스 재단에 귀속시키는 절차를 시작하여 2012년 12월 12일 허드슨 3.0 버전이 출시됨과 동시에 허드슨 프로젝트가 이클립스 재단의 정식 프로젝트가 된 사건 등을 들 수 있다.
이 책은 허드슨이 이클립스 재단의 정식 프로젝트가 되고 최초로 출시된 바로 그 3.0 버전과, 이후 팀 콘셉트 기능이 추가된 3.1 버전을 다루며, 설치에서 운용과정까지의 핵심 항목을 순서대로 간결하게 설명한다. 따라서 허드슨을 직접 사용할 소프트웨어 개발자뿐만 아니라 허드슨의 동작방식을 알고 싶거나 테스트 결과나 이력 추이를 시각적으로 확인하고 싶은 개발팀 리더나 테스터에게도 큰 도움이 되리라 확신한다.