◆ 소프트웨어 배포 성능의 효과적인 측정
◆ 데브옵스 및 린 관리 기법 도입
◆ 깃허브 이슈 및 프로젝트를 사용해 작업 계획, 추적 및 시각화
◆ 깃허브 액션 및 패키지로 지속적 배포
◆ 프로덕션 테스트와 카오스 엔지니어링을 통한 품질 개선
◆ 보안의 우선 순위를 높여 전체 소프트웨어 공급망 보호
◆ 깃허브의 고급 보안 기능으로 데브섹옵스의 모범 사례 사용
◆ 코드 스캐닝, 시크릿 스캐닝 및 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장, "엔터프라이즈 혁신"에서는 모든 것을 한데 모아 놨다. 성공적인 혁신을 추진하고 개발 속도를 높이는 데 사용할 수 있는 많은 도구를 제공한다. 하지만 모든 요소를 종합적으로 고려해야만 혁신에 성공할 수 있다. 많은 혁신이 실패하는 이유와 혁신을 성공으로 이끌기 위해 무엇을 해야 하는지에 대해 설명한다.
◈ 옮긴이의 말 ◈
최근 깃허브(GitHub)와 데브옵스가 빠르게 통합돼 개발 환경의 핵심이 되고 있다. 이러한 중요성에도 불구하고, 이 책처럼 깃허브를 중심으로 다양한 주제를 아우르며 효율적인 개발과 협업 전략, 그리고 보안에 대한 심층적인 내용을 다룬 책은 드물다. 많은 분이 이 책을 통해 소프트웨어 개발 여정에서의 도전에 대응하고 뛰어난 결과를 이루기를 기대한다.
-최재웅
깃허브는 팀들에게 데브옵스와 같은 현대적인 개발 방법을 채택할 수 있는 유연하고 투명하며 통합된 플랫폼을 제공한다. 버전 관리, 협업, 자동화 기능들이 배포 파이프라인을 가속화시키고, 팀 간 협업을 용이하게 하며, 개발 라이프사이클 전반에 걸친 가시성을 제공할 수 있다. 많은 곳에서 깃허브를 활용해 데브옵스를 실천하기 위해 노력을 하고 있다. 이 책이 그들의 길잡이가 됐으면 한다.
-류한진
데브옵스는 개발의 즐거움을 높여주는 중요한 요소다. 질 좋은 코드 관리, 지속적인 빌드 및 배포, 안정적인 롤백을 기반한 팀 간 협업 환경은 개발의 즐거움을 몇 배는 올려줄 것이다. 깃허브를 기반 데브옵스를 잘 설명하며, 보다 실용적인 관점에서의 구축 방법을 제안하는 책이다. 이 책을 통해 많은 분이 보다 더 즐거운 환경에서 개발하는 경험을 하기 바란다.
-백준선
데브옵스 실천을 위한 깃허브의 활용법을 심도 있게 다루는 책이다. 데브옵스의 효용성은 공감하지만 어떻게 조직에 적용할지 고민하는 분들께 좋은 길잡이가 될 것이다. 훌륭한 동료들과 함께 번역하며 책의 내용을 두고 논의하는 일은 매우 유익한 경험이었다. 이 책을 읽는 독자들도 많은 영감을 받길 바란다.
-채민관
코로나19 이후, 기업들은 점점 더 변동성이 커지는 시장에 직면했다. 변화에 빠르게 적응하고 신제품 출시 속도를 높이는 것이 성공의 핵심 요소가 됐다. 이러한 상황에서 가장 효과적인 전략은 기업 내 데브옵스 도입 및 확산을 지속하는 것인데, 이 책은 개발자에게 익숙한 깃허브라는 플랫폼을 통해 이 프로세스를 체계적으로 설명한다. 데브옵스를 어디서부터 시작해야 할지, 어떻게 조직 전체에 효과적으로 확산할지 몰라 갈림길에 서 있는 분들께 이 책이 도움이 됐으면 좋겠다. 마지막으로 바쁜 프로젝트 중에도 같이 번역에 참여한 동료분들 및 책의 원작자, 에이콘출판사에 감사의 인사를 전한다.
-김대곤