◈ 이 책에서 다루는 내용 ◈
◆ 소프트웨어 배포 성능의 효과적인 측정
◆ 데브옵스 및 린 관리 기법 도입
◆ 깃허브 이슈 및 프로젝트를 사용해 작업 계획, 추적, 시각화
◆ 깃허브 액션 및 패키지로 지속적 배포
◆ 프로덕션 테스트와 카오스 엔지니어링을 통한 품질 개선
◆ 보안의 우선순위를 높여 전체 소프트웨어 공급망 보호
◆ 깃허브의 고급 보안 기능으로 데브섹옵스의 모범 사례 사용
◆ 코드 스캐닝, 시크릿 스캐닝 및 Dependabot으로 코드 보안 유지
◈ 이 책의 대상 독자 ◈
개발자, 솔루션 아키텍트, 데브옵스 엔지니어, 사이트 신뢰성 엔지니어(SRE, Site Reliability Engineer)는 물론 소프트웨어 전달 성능을 향상시키고자 하는 엔지니어링 또는 제품 관리자를 위한 책이다. 데브옵스를 처음 접하거나 이미 경험이 있지만 최대 성능을 달성하는 데 어려움을 겪고 있는 조직 및 이미 깃허브 엔터프라이즈(GitHub Enterprise)를 사용해본 경험이 있거나 애저 데브옵스(Azure DevOps), 팀 파운데이션 서버(Team Foundation Server), 깃랩(GitLab), 비트버킷(Bitbucket), 퍼펫(Puppet), 셰프(Chef) 또는 젠킨스(Jenkins)와 같은 플랫폼 사용 경험이 있는 독자에게 적합하다.
◈ 이 책의 구성 ◈
1장, '메트릭이 핵심'에서는 린(lean) 관리의 이론과 성과 및 문화적 변화를 측정하는 방법을 설명한다. 인재를 유치하고 뛰어난 고객 만족을 달성하는 데 개발자 생산성이 왜 중요한지 살펴본다.
2장, '업무의 계획, 추적, 시각화'에서는 린 원칙을 적용해 소프트웨어 전달 성과를 가속화하는 작업 인사이트에 대해 설명한다. 깃허브 이슈, 레이블, 마일스톤(milestone), 프로젝트를 사용해 팀과 제품 전반에서 업무를 계획, 추적, 시각화하는 방법을 배우게 된다.
3장, '팀워크와 협업'에서는 소프트웨어 협업 개발의 중요성과 팀과 분야 간 협업에 깃허브를 어떻게 사용할 수 있는지 설명한다.
4장, '장소에 제약받지 않는 비동기식 협업'에서는 비동기 작업 방식의 이점과 이를 활용해 책임 공유, 분산된 팀, 품질 향상, 팀 간 협업을 개선하는 방법을 설명한다. 깃허브 모바일, 마이크로소프트 팀즈(Microsoft Teams), 슬랙(Slack), 깃허브 페이지, 위키(Wiki), 토론을 사용해 장소와 기기에 구애받지 않고 협업하는 방법을 알아본다.
5장, '오픈소스와 이너 소스 전략으로 개발 역량 강화'에서는 무료 및 오픈소스 소프트웨어의 역사와 최근 몇 년 동안 클라우드 컴퓨팅의 맥락에서 그 중요성이 커지고 있는 것에 대해 설명한다. 오픈소스를 활용해 소프트웨어 배포 속도를 높이는 방법을 알려 준다. 또한 이너 소스(inner source)에 오픈소스 사례를 적용해 조직을 혁신하는 방법과 오픈소스와 이너 소스가 인소싱 및 아웃소싱 전략에 미칠 수 있는 영향에 대해 살펴본다.
6장, '깃허브 액션으로 자동화'에서는 품질과 속도를 위한 자동화의 중요성에 대해 설명한다. 지속적 전달뿐 아니라 모든 종류의 자동화에 깃허브 액션을 사용하는 방법을 소개한다.
7장, '워크플로 실행'에서는 다양한 호스팅 옵션을 사용해 하이브리드 클라우드 시나리오(hybridcloud scenario) 또는 하드웨어 인 더 루프 테스트(hardware-in-the-loop test)를 처리하는 방법을 설명한다. 또한 자체 호스팅 러너를 설정하고 관리하는 방법을 알아본다.
8장, '깃허브 패키지를 사용한 종속성 관리'에서는 깃허브 패키지와 시맨틱(semantic) 버전 관리를 깃허브 액션과 함께 사용해 팀과 제품 간의 종속성을 관리하는 방법을 설명한다.
9장, '플랫폼별 배포'에서는 마이크로소프트 애저(Microsoft Azure), AWS ECS, 구글 쿠버네티스(Google Kubernetes) 엔진에 대한 간단한 실습 예제를 통해 여러 클라우드와 플랫폼에 쉽게 배포하는 방법을 보여 준다. 또한 깃허브 액션(GitHub Actions)을 사용해 단계별 배포를 수행하는 방법과 IaC(Infrastructure as Code)를 사용해 리소스 프로비저닝을 자동화하는 방법을 알아본다.
10장, '피처 플래그와 피처의 수명 주기’에서는 피처 플래그(Feature Flag) 또는 피처 토글(Feature Toggle)이 어떻게 복잡성을 줄이고 피처 및 소프트웨어의 수명 주기(lifecycle)를 관리하는 데 도움이 되는지 설명한다.
11장, '트렁크 기반 개발'에서는 트렁크 기반 개발의 이점을 설명하고 소프트웨어 배포를 가속화하는 데 가장 적합한 깃 워크플로(Git workflow)를 소개한다.
12장, '품질 향상을 위한 테스트의 시프트-레프트'에서는 개발 속도에 대한 품질 보증 및 테스트의 역할을 자세히 살펴보고 테스트 자동화를 통해 테스트의 시프트-레프트를 보여준다. 또한 프로덕션에서의 테스트 및 카오스 엔지니어링(chaos engineering)에 대해 다룬다.
13장, '시프트-레프트 보안과 데브섹옵스'에서는 소프트웨어 개발에서 보안의 역할과 프로세스에 보안을 도입하고 데브섹옵스(DevSecOps), 제로 트러스트(zero-trust)를 실행하는 방법, 보안을 전환하는 방법을 폭넓게 살펴본다. 일반적인 공격 시나리오를 살펴보고 공격 시뮬레이션과 레드 팀/블루 팀 연습을 사용해 보안을 연습하고 인식을 높이는 방법을 살펴본다. 또한 클라우드의 안전한 개발 환경으로서 깃허브 코드스페이스(GitHub Codespace)에 대해 소개한다.
14장, '코드 보안'에서는 깃허브 어드밴스드 시큐리티(GitHub Advanced Security)를 사용해 CodeQL 및 기타 도구로 정적 코드 분석을 수행한다. 또한 버그, 보안, 컴플라이언스 문제를 제거하고, Dependabot으로 소프트웨어 공급망을 성공적으로 관리하고, 시크릿 스캐닝(Secret Scanning)을 사용해 코드 베이스의 시크릿을 제거하는 방법을 설명한다.
15장, '안전한 배포'에서는 환경에 대해 안전하게 배포하는 방법과 전체 릴리스 파이프라인을 안전하고 규정을 준수하는 방식으로 자동화해 규제 요구 사항도 충족하는 방법을 보여준다. 또한 소프트웨어 구성 명세서(SBoM, Software Bills of Material), 코드 및 커밋 서명, 동적 애플리케이션 보안 테스트, 릴리스 파이프라인의 보안 강화에 대해 다룬다.
16장, '느슨하게 결합된 아키텍처와 마이크로서비스'에서는 느슨하게 결합된 시스템의 중요성과 이를 달성하기 위해 소프트웨어 설계를 발전시킬 수 있는 방법을 설명한다. 마이크로서비스, 진화적 설계, 이벤트 기반 아키텍처를 다룬다.
17장, '팀 고도화'에서는 조직의 커뮤니케이션 구조와 시스템 아키텍처의 상관관계(콘웨이의 법칙(Conway’s law))와 이를 사용해 아키텍처, 조직 구조, 소프트웨어 배포 성능을 개선하는 방법에 대해 설명한다. 또한 투-피자 팀(two-pizza team), 역 콘웨이 전략, 코드에 대한 모노/멀티 레포(mono/multi repo) 전략에 대해 다룬다.
18장, '린 제품 개발과 린 스타트업'에서는 제품 및 기능 수준에서 린 제품 관리의 중요성에 대해 설명한다. 고객 피드백을 제품 관리에 통합하고, 최소 기능 제품(MVP, Minimal Viable Product)을 만드는 방법과 엔터프라이즈 포트폴리오를 관리하는 방법을 알아본다.
19장, '실험과 A/B 테스트'에서는 A/B 테스트와 같은 증거 기반 데브옵스 관행을 통해 가설을 검증하는 실험을 수행해 제품을 발전시키고 지속적으로 개선할 수 있는 방법을 설명한다. 또한 OKR을 활용해 팀이 올바른 실험을 수행하고 올바른 제품을 구축할 수 있도록 지원하는 방법도 살펴본다.
20장, '깃허브 플랫폼 구성'에서는 깃허브가 어떻게 팀을 위한 종합적인 개방형 플랫폼 역할을 할 수 있는지 설명한다. 또한 다양한 호스팅 옵션, 가격, 기존 도구 체인에 통합하는 방법에 대해 알아본다.
21장, '깃허브로 이전'에서는 다른 플랫폼에서 깃허브로 마이그레이션(migration)하는 전략과 다른 시스템과의 통합 지점에 대해 설명한다. 또한 올바른 마이그레이션 전략을 찾는 방법과 깃허브 엔터프라이즈 임포터(GitHub Enterprise Importer) 및 발레(Valet)를 사용해 마이그레이션 작업을 수행하는 방법을 소개한다.
22장, '깃허브를 통한 협업 고도화'에서는 협업을 촉진하고 관리를 용이하게 하기 위해 리포지터리(repository) 및 팀을 조직 및 엔터프라이즈 단위로 구조화하는 모범 사례에 대해 설명한다. 또한 역할 기반 액세스, 사용자 지정 역할, 외부 공동 작업자에 대해 다룬다.
23장, '엔터프라이즈 혁신'에서는 모든 것을 한데 모아 놨다. 성공적인 혁신을 추진하고 개발 속도를 높이는 데 사용할 수 있는 많은 도구를 제공한다. 하지만 모든 요소를 종합적으로 고려해야만 혁신에 성공할 수 있다. 많은 혁신이 실패하는 이유와 혁신을 성공으로 이끌기 위해 무엇을 해야 하는지에 대해 설명한다.
작가의 말
2020년대에 접어든 지금, 10년이 넘는 연구 결과에 따르면 개발자 성과가 높은 기업은 속도와 처리량에서 경쟁사를 능가할 뿐만 아니라 품질, 혁신, 보안, 직원 만족도, 가장 중요한 고객 만족도에서도 더 높은 점수를 받는다.
하지만 일부 유니콘(unicorn) 기업을 제외한 대다수의 기존 기업은 혁신에 어려움을 겪고 있다. 기존 제품의 경직된 구조와 느린 프로세스, 모놀리식(monolithic) 애플리케이션 아키텍처, 긴 릴리스 주기는 기업이 변화하기 어렵게 만든다.
하지만 이는 새로운 현상이 아닐 뿐더러 혁신적 변화는 항상 어렵고 성공하더라도 성공하기까지 수년이 걸린다. 실패할 확률도 매우 높다. 혁신은 매우 다양한 수준에서 이뤄져야 하며, 이러한 변화가 일치하지 않으면 혁신은 실패할 수밖에 없기 때문이다. 이 책은 높은 개발자 성과를 위한 연구뿐만 아니라 소프트웨어 전달을 가속화하는 방법에 대한 실용적인 예제를 제공함으로써 여러분의 혁신에 도움이 될 것이다.
이 책은 데브옵스에 대한 실용적인 가이드다. 이미 데브옵스 여정에 있는 팀이 데브옵스 여정을 더욱 발전시킬 수 있도록 일반적인 문제에 대한 간단한 솔루션을 제공해 소프트웨어 전달 성능을 가속화하게끔 도와준다. 이를 통해 팀은 성공을 측정하는 데 적합한 지표를 찾고 다른 성공 사례에서 배울 수 있으며, 단순히 다른 팀이 수행한 작업을 모방하지 않아도 된다. 또한 깃허브를 데브옵스 플랫폼으로 사용하며 협업, 린 관리, 안전하고 빠른 소프트웨어 전달을 위해 깃허브의 강력한 기능을 활용하는 방법을 제시한다.
이 책을 다 읽고 나면 독자들은 소프트웨어 전달 성능에 영향을 미치는 요소와 전달 역량을 측정하는 방법을 이해할 수 있다. 따라서 팀 간 협업을 위한 투명성과 간단한 솔루션을 통해 현재 위치가 어디인지, 앞으로 어떻게 나아가야 하는지 깨닫게 될 것이다. 일반적인 문제에 대한 간단한 솔루션을 갖춘 독자들은 깃허브 프로젝트를 통해 작업을 가시화하고, 깃허브 인사이트로 올바른 지표를 측정하며, 깃허브 액션 및 고급 보안(advanced security)을 통해 견고하고 검증된 엔지니어링 사례를 사용하고, 이벤트 기반의 느슨하게 결합된 소프트웨어 아키텍처로 전환하는 등 깃허브의 힘을 활용해 가속화하는 방법을 이해할 수 있을 것이다.
옮긴이의 말
최근 깃허브와 데브옵스가 빠르게 통합돼 개발 환경의 핵심이 되고 있다. 이러한 중요성에도 불구하고, 이 책처럼 깃허브를 중심으로 다양한 주제를 아우르며 효율적인 개발과 협업 전략, 그리고 보안에 대한 심층적인 내용을 다룬 책은 드물다. 많은 분이 이 책을 통해 소프트웨어 개발 여정에서의 도전에 대응하고 뛰어난 결과를 이루기를 기대한다.
―최재웅
깃허브는 팀들에게 데브옵스와 같은 현대적인 개발 방법을 채택할 수 있는 유연하고 투명하며 통합된 플랫폼을 제공한다. 버전 관리, 협업, 자동화 기능들이 배포 파이프라인을 가속화시키고, 팀 간 협업을 용이하게 하며, 개발 수명 주기 전반에 걸친 가시성을 제공할 수 있다. 많은 곳에서 깃허브를 활용해 데브옵스를 실천하기 위해 노력을 하고 있다. 이 책이 그들의 길잡이가 됐으면 한다.
―류한진
데브옵스는 개발의 즐거움을 높여주는 중요한 요소다. 질 좋은 코드 관리, 지속적인 빌드 및 배포, 안정적인 롤백을 기반한 팀 간 협업 환경은 개발의 즐거움을 몇 배는 올려줄 것이다. 깃허브를 기반 데브옵스를 잘 설명하며, 보다 실용적인 관점에서의 구축 방법을 제안하는 책이다. 이 책을 통해 많은 분이 보다 더 즐거운 환경에서 개발하는 경험을 하기 바란다.
―백준선
데브옵스 실천을 위한 깃허브의 활용법을 심도 있게 다루는 책이다. 데브옵스의 효용성은 공감하지만 어떻게 조직에 적용할지 고민하는 분들께 좋은 길잡이가 될 것이다. 훌륭한 동료들과 함께 번역하며 책의 내용을 두고 논의하는 일은 매우 유익한 경험이었다. 이 책을 읽는 독자들도 많은 영감을 받길 바란다.
―채민관
코로나19 이후, 기업들은 점점 더 변동성이 커지는 시장에 직면했다. 이러한 변화에 빠르게 적응하고 신제품 출시 속도를 높이는 것이 성공의 핵심 요소가 됐다. 이러한 상황에서 가장 효과적인 전략은 기업 내 데브옵스 도입 및 확산을 지속하는 것인데, 이 책은 개발자에게 익숙한 깃허브라는 플랫폼을 통해 이 프로세스를 체계적으로 설명한다. 이 책을 통해 데브옵스를 어디서부터 시작해야 할지, 어떻게 조직 전체에 효과적으로 확산할지 몰라 갈림길에 서 있는 분들께 도움이 됐으면 좋겠다. 마지막으로 바쁜 프로젝트 중에도 같이 번역에 참여한 동료분들 및 책의 원작자, 에이콘출판사에 감사의 인사를 전한다.
―김대곤
추천사
2011년, 기업가 마크 앤드리슨(Marc Andreessen)은 <월스트리트 저널(Wall Street Journal)>에서 “소프트웨어가 세상을 먹어 치우고 있다”는 유명한 주장을 했다. 소프트웨어의 급부상으로 우리가 알고 있는 모든 산업과 모든 분야가 디지털 방식으로 변모할 것이라고 예측한 것이다. 10년이 지난 지금 이 글을 쓰면서 “마크가 옳았다”는 말 외에는 할 말이 없다. 소프트웨어는 우리의 삶을 변화시켰고, 모든 기업과 조직도 변화시켰다. 넷플릭스를 통해 엔터테인먼트가, 에어비앤비를 통해 여행과 숙박이, 아마존을 통해 지구상에서 구매할 수 있는 거의 모든 것이 어떻게 근본적으로 변화했는지 살펴보라. 마트와 슈퍼에서는 이제 디지털 경험을 제공하고, 주차 미터기는 스마트폰 앱으로 대체되고 있으며, 가장 오래되고 전통적인 은행도 클라우드로 이전했고, 자동차는 휴대폰보다 더 자주 업데이트를 받는다.
모든 기업이 소프트웨어 기업이 돼 가고 있다. 수백만 줄의 코드가 이미 글로벌 경제의 근간을 이루고 있으며 소프트웨어 개발자는 새로운 디지털 세상의 설계자다. 이제 규모나 산업에 관계없이 어떤 조직도 소프트웨어와 개발자 없이는 경쟁하고 성공할 수 없다.
그리고 이러한 추세는 둔화될 기미가 보이지 않는다. 세계경제포럼(World Economic Forum)에 따르면 향후 10년간 경제에서 창출되는 새로운 가치의 약 70%가 디지털로 구현되는 플랫폼 비즈니스 모델에 기반할 것으로 예상된다. 이 기회를 활용하려면 모든 조직은 오픈소스(open source)의 힘을 활용해야 한다. 오픈소스 없이는 경쟁력을 유지할 수 없으며 기업들은 내부 문화를 쇄신하고 강화하며 소프트웨어 제공 성능을 지속적으로 개선하기 위해 데브옵스(DevOps) 관행을 도입해야 한다. 당연히 깃허브(GitHub)의 CEO로서 나는 모든 조직이 이를 달성할 수 있는 최적의 장소가 깃허브라고 믿는다.
2011년 마크가 글을 썼을 때만 해도 깃허브는 아직 초창기였고, 깃 리포지터리(Git repository) 호스팅에 집중하고 있었다. 오늘날 깃허브는 개발자 라이프사이클의 모든 단계에서 개발자를 지원하는 기능을 갖춘 완전한 데브옵스 플랫폼으로 발전했다. 8,300만 명 이상의 개발자가 플랫폼을 사용하며 전 세계 개발자를 위한 홈을 제공하고 있다. 깃허브는 오픈소스, 클라우드 네이티브, 모바일, 엔터프라이즈 등 모든 프로젝트를 생성하고, 현대화해 목적지에 배포할 수 있는 곳이며 서로 연결된 개발자 커뮤니티가 미래의 세상을 구축하는 곳이기도 하다.
마이클(Michael)처럼 경험이 풍부한 사람이 이 책을 집필하게 돼 매우 기쁘다. 소프트웨어 개발자, 컴퓨터 공학도, 솔루션 아키텍트, 사이트 신뢰성 엔지니어 등을 위한 책이다. 이 책은 여러분과 여러분의 조직이 데브옵스와 깃허브의 힘을 활용할 수 있는 명확하고 간결하며 실용적인 방법을 제공한다. 앞으로 다가올 소프트웨어 개발의 황금기를 준비하는 데 도움이 될 것이다.
이 책을 쓰느라 오랜 시간 고생한 것도 자랑스럽지만, 그 이상으로 이 책이 다른 사람들에게 가져올 의미 있는 변화와 진전을 생각하면 더욱 자랑스럽다.
―토마스(Thomas),
깃허브 CEO
마이클과 나는 데브옵스에 대해 발표하던 콘퍼런스에서 처음 만났다. 이후 데브옵스에 대한 공통된 열정을 통해 유대감을 형성했고, 강연을 통해 자주 만났다. 만날 때마다 함께 셀카를 찍는 것이 습관이 됐고 우리의 우정과 데브옵스에 대한 그의 열정이 있었기에 책을 집필해 자신의 지식을 세상에 공유한다는 소식을 듣고 매우 기뻤다.
시간이 지남에 따라 우리가 사용하는 도구는 바뀔 수 있겠지만, 책에서 공유하는 정보는 데브옵스 전환을 시작하는 조직에 보편적으로 적용된다.
코로나19로 인해 전 세계가 원격 근무로 전환되는 상황에서 비동기 작업에 대해 다뤄준 마이클에게 정말 감사했다. 비동기 작업은 빠르게 우리의 새로운 표준이 됐으며, 원격 및 분산된 팀에서 민첩성과 생산성을 유지하기 위해 팀은 이러한 역량을 개발해야 한다.
판도를 바꿀 수 있는 피처 플래그(feature flag)의 사용에 대해 읽을 수 있어서 좋았다. 피처 플래그는 배포와 릴리스를 분리하고 보다 고급 배포 전략을 가능하게 한다. 또한 롤백의 필요성을 줄이고 잘못된 코드에서 복구하는 데 걸리는 시간을 크게 단축할 수 있다. 하지만 모든 것이 그렇듯이 비용도 발생한다. 마이클은 피처 플래그 사용으로 인한 비용과 이를 완화하는 방법을 잘 설명한다. 이를 통해 독자는 피처 플래그가 자신에게 적합한지 여부에 대해 데이터에 입각한 결정을 내릴 수 있다.
내가 만나는 많은 팀은 속도를 높이면 비용을 절감할 수 있다고 생각하지만, 마이클은 프로세스에 품질과 보안을 도입하는 것이 중요하다고 설명한다. 또한 이를 달성하는 방법에 대한 실용적인 지침도 제공한다. 데브옵스를 올바르게 구현하면 안전하고 고품질의 코드를 더 빠르게 제공할 수 있다.
데브옵스의 진정한 힘을 활용하려면 애플리케이션을 리팩토링해야 하는 경우가 많다. 마이클은 소프트웨어 아키텍처가 프로세스와 팀에 미치는 영향을 다룬다. 또한 각 옵션의 장단점도 다뤄 팀이 어떤 것이 최선인지 결정하는 데 도움을 준다.
이 책은 독자들에게 데브옵스 전환을 지원하는 데 없어서는 안 될 도구가 될 것이라고 확신한다.
―도노반 브라운(Donovan Brown),
파트너 프로그램 관리자, 애저 인큐베이션(Azure Incubations), 애저 오피스(Azure Office) 최고기술경영자(CTO)
펼쳐보기