마이클카우프만
(MichaelKaufmann)
개발자와엔지니어가직장에서행복하고생산적으로일할수있다고믿는다.개발자뿐만아니라데브옵스,깃허브,애저및최신기술들을좋아한다.
제비아(Xebia)그룹의컨설팅회사인엑스피리트저머니(XpiritGermany)의창업자이자CEO이며20년이상IT분야에서일해오고있다.클라우드및데브옵스전환과새로운업무방식구현을통해고객이성공할수있도록지원하고있다.
2015년부터마이크로소프트지역책임자(MicrosoftRegionalDirector)에선정됐으며,데브옵스부문과깃허브에마이크로소프트최우수전문가(MicrosoftMVP)에도선정됐다.
책과교육을통해지식을공유하고있으며,국제콘퍼런스에서정기적으로연사로활동하고있다.
1부.린관리와협업
1장.메트릭이핵심
__가속화가필요한이유
__엔지니어링속도
____공수로개발속도측정하기
____독이되는추정치
____막연한계획을예측하는방법
____개발자의개발속도와엔지니어링속도
__높은성과를내는조직
____개발자의개발속도지수
____데브옵스연구평가보고서
__메트릭측정의중요성
____전달소요시간
____배포주기
____평균복구시간
____변경실패율
____4개의핵심대시보드
____하지말아야할것
__개발자의생산성을위한SPACE프레임워크
____만족도와웰빙
____성과
____활동성
____소통과협업
____효율성과플로
____SPACE프레임워크사용법
__목표와핵심결과
____OKR이란?
____OKR의동작원리
____OKR과데브옵스
__정리
__사례연구
__더읽을거리및참고자료
2장.업무의계획,추적,시각화
__모든일은업무다
__계획되지않은작업과재작업
__업무시각화
____당기기확립
____우선순위지정
____단순하게유지
__WIP제한
____WIP제한설정
____배치크기줄이기
____핸드오프줄이기
__깃허브이슈,레이블,마일스톤
____새이슈만들기
____이슈에대한공동작업
____이슈백로그
____마일스톤
____이슈고정
____이슈템플릿
__깃허브프로젝트
____시작하기
____프로젝트에작업항목추가
____작업에메타데이터추가
____테이블뷰작업
____보드뷰작업
____뷰로작업하기
____워크플로
____인사이트
____액세스관리
__서드파티통합
____Jira
____애저보드
__사례연구
__정리
__더읽을거리및참고자료
3장.팀워크와협업
__소프트웨어개발은팀스포츠다
__협업의핵심-풀리퀘스트
__실습-풀리퀘스트생성
__변경제안
____드래프트풀리퀘스트
____코드소유자
____필수리뷰
____풀리퀘스트리뷰요청
____자동병합
__풀리퀘스트리뷰
____풀리퀘스트에서제안된변경사항리뷰
____파일을조회된상태로표시
____실습-제안하기
____풀리퀘스트에피드백통합
____리뷰제출
____풀리퀘스트완료
__코드리뷰를위한모범사례
____깃가르치기
____풀리퀘스트를이슈에연결
____드래프트풀리퀘스트사용
____최소2명의승인자확보
____피어리뷰수행
____리뷰단계자동화
____변경사항배포및테스트
____리뷰가이드/행동강령
__정리
__더읽을거리및참고자료
4장.장소에제약받지않는비동기식협업
__동기식,비동기식업무환경의비교
____소통의역사
____업무와소통
____대면업무와원격업무
__분산된팀
__팀간협업
__비동기식업무로전환
__팀즈와슬랙의활용
__깃허브디스커션
____깃허브디스커션시작
____디스커션카테고리
____디스커션시작
__페이지와위키
____깃허브페이지
____위키
____깃허브위키
____사용자정의위키
__깃허브모바일을통한장소에구애받지않는업무환경
__사례연구
__정리
__더읽을거리및참고문헌
5장.오픈소스와이너소스전략으로개발역량강화
__자유-오픈소스소프트웨어의역사
____공개도메인소프트웨어
____자유소프트웨어
____오픈소스소프트웨어
____오픈소스소프트웨어의부상
__오픈소스와개방형개발의차이점
__기업이오픈소스를도입할때의이점
____OSS로더빠르게공급하기
____커뮤니티참여를통해더나은제품만들기
____노후화위험이낮은도구사용하기
____인재유치
____새로운기술및표준에영향을미침
____오픈소스프로젝트에서학습해프로세스개선
__오픈소스전략구현
__오픈소스와이너소스
__내부개발의중요성
__깃허브스폰서
____스폰서등급
____후원목표
__정리
__더읽을거리및참고자료
2부.데브옵스실천
6장.깃허브액션으로자동화
__깃허브액션개요
__워크플로,파이프라인,액션
____YAML기본
____주석
____스칼라타입
____Collection타입
__워크플로문법
____워크플로트리거
____워크플로잡
____워크플로스텝
____콘텍스트와표현식문법
____워크플로명령
__시크릿사용
____시크릿저장
____시크릿접근
____GITHUB_TOKEN시크릿
__워크플로실습
__액션실습
__깃허브마켓플레이스
__정리
__더읽을거리및참고자료
7장.워크플로실행
__호스팅러너
____격리및권한
____하드웨어
____소프트웨어
____네트워크
____가격
__자체호스팅러너
____러너소프트웨어
____러너와깃허브간의통신
____프록시서버뒤편에서자체호스팅러너사용
____깃허브에자체호스팅러너추가하기
____자체호스팅러너제거하기
__러너그룹으로액세스관리하기
__레이블사용하기
__자체호스팅러너확장하기
____임시러너
____깃허브웹훅으로스케일업및스케일다운하기
____기존솔루션
__모니터링및문제해결
____러너의상태확인
____애플리케이션로그파일검토
____작업로그파일검토
____서비스상태확인
____리눅스
____macOS
____윈도우
____러너업데이트프로세스모니터링
__사례연구
__정리
__더읽을거리및참고자료
8장.깃허브패키지를사용한종속성관리
__깃허브패키지
____요금책정
____권한과가시성
__액션과npm패키지사용
__패키지와도커사용
__아파치메이븐,그래들,NuGet,RubyGem패키지
____아파치메이븐을사용한자바
____그래들
____RubyGems
____NuGet
__정리
__더읽을거리및참고자료
9장.플랫폼별배포
__단계별배포
__배포자동화
__애저앱서비스에배포하는방법
____애저리소스배포
____깃허브액션을사용해애플리케이션배포하기
__AWSECS에배포하는방법
____AWS리소스배포
____깃허브액션으로컨테이너배포하기
__GKE에배포하는방법
____구글리소스배포
____깃허브액션으로컨테이너배포하기
__코드형인프라
____도구
____모범사례
____전략
____워크플로템플릿
____재사용가능한워크플로
__성공측정
__사례연구
__정리
__더읽을거리및참고자료
10장.피처플래그와피처의수명주기
__피처플래그란무엇인가
__피처의수명주기
__피처플래그의이점
__피처플래그시작하기
__피처플래그와기술부채
__프레임워크및제품
__피처플래그를사용한실험
__정리
__더읽을거리및참고자료
11장.트렁크기반개발
__트렁크기반개발
__복잡한브랜치를피해야하는이유
__다른깃워크플로들
____깃플로
____깃허브플로
____릴리스플로
____깃랩플로
__마이플로로고도화
____메인브랜치
____전용토픽브랜치
____출시
____핫픽스
____자동화
__사례연구
__정리
__더읽을거리및참고자료
3부.견고한출시전략
12장.품질향상을위한테스트의시프트-레프트
__시프트-레프트테스트및테스트자동화
____테스트주도개발
____테스트포트폴리오관리
____단위테스트(레벨0)
____통합테스트(레벨1)
____데이터를사용한기능테스트(레벨2)
____운영테스트(레벨3)
__불안정한테스트제거
__코드커버리지
__시프트-라이트운영환경에서의테스트
____상태데이터및모니터링
____피러플래그및카나리릴리스
____비즈니스연속성및재해복구
____탐색적테스트및사용성테스트
__결함주입및카오스엔지니어링
__테스트와규정준수
__깃허브에서의테스트관리
__사례연구
__정리
__더읽을거리
13장.시프트-레프트보안과데브섹옵스
__시프트-레프트보안
__침해가정,제로트러스트,보안우선사고방식
__공격시뮬레이션
__레드팀-블루팀훈련
____팀구성
____게임규칙
____기간
____규칙과행동강령
____제공항목
____어디서부터시작해야할까?
__공격시나리오
__깃허브코드스페이스
__정리
__더읽을거리및참고자료
14장.코드보안
__종속성관리및Dependabot
____종속성탐색
____Dependabot
____깃허브액션으로Dependabot업데이트자동화
____Dependabot을사용해깃허브액션을최신상태로유지
__시크릿스캔
____코드스캔
____깃허브에서코드스캔
____코드스캔실행
____시작하기
____코드스캔알림
____심각도
____이슈알림추적
____데이터흐름분석
____CodeQL쿼리
____타임라인
____풀리퀘스트통합
____코드스캔구성
__CodeQL쿼리작성
__정리
__더읽을거리
15장.안전한배포
__컨테이너와인프라보안스캐닝
____컨테이너스캔
____인프라정책
__인프라변경프로세스자동화
__소스코드및인프라무결성
____SBOM
____커밋서명
____코드서명
__동적애플리케이션보안테스트
__릴리스파이프라인보안강화
____러너보안강화
____액션보안유지하기
____환경을보호하라
____가능한경우토큰을사용하라
____보안텔레메트리수집
__사례연구
__정리
__더읽을거리및참고문헌
4부.소프트웨어아키텍처
16장.느슨하게결합된아키텍처와마이크로서비스
__느슨하게결합된시스템
__마이크로서비스
__진화적설계
__이벤트중심아키텍처
__정리
__더읽을거리
17장팀고도화
__콘웨이의법칙
__투-피자팀
__역콘웨이전략
__전달주기
__모노레포,멀티레포전략
____대형모노레포작업
____주제및스타목록을사용해레포구성
____코드를구조화하기위해깃서브모듈사용
____적절한전략은무엇인가?
__사례연구
__정리
__더읽을거리
5부.린제품관리
18장.린제품개발과린스타트업
__린제품개발
__고객피드백통합하기
__MVP
__엔터프라이즈포트폴리오관리
__제품관리기술향상
____고객에대한이해
____비즈니스이해
____제품이해
__비즈니스모델캔버스
__정리
__더읽을거리및참고자료
19장.실험과A/B테스트
__과학적방법으로실험수행
____관찰-데이터수집및분석
____가설수립(가설공식화)
____실험구축
____결과검증
__GrowthBook및Flagger를사용한효과적인
__A/B테스트
____GrowthBook
____Flagger
__실험과OKR
__정리
__더읽을거리
6부.엔터프라이즈를위한깃허브
20장.깃허브플랫폼구성
__호스팅옵션및가격
____호스팅옵션
____깃허브엔터프라이즈클라우드
____깃허브엔터프라이즈서버
____깃허브엔터프라이즈AE
____깃허브커넥트
____가격
__실습-GitHub.com에서계정생성하기
__기업보안
____SAML인증
____SCIM
____자동팀동기화
____기업관리사용자
____GHES를사용한인증
____감사API
__깃허브스킬즈
__정리
__더읽을거리및참고문헌
21장.깃허브로이전
__올바른마이그레이션전략선택하기
__낮은충실도의마이그레이션으로규정준수달성하기
__원활한전환을위한요구사항동기화
__코드마이그레이션
__애저데브옵스또는깃허브에서마이그레이션하기
__파이프라인마이그레이션
__정리
__더읽을거리
22장.깃허브를통한협업고도화
__깃허브범위및네임스페이스
____깃허브엔터프라이즈
____깃허브조직
__깃허브팀구성
__역할기반액세스
__사용자정의역할
__외부공동작업자
__정리
__더읽을거리
23장.엔터프라이즈혁신
__많은혁신이실패하는이유
____회사나업계가특별하다고가정
____긴박감부재
____명확한비전부재
____혁신을막는장애물
____도움을거절하는것
__왜?부터시작하기
____목적에기반한미션
____엔지니어링문화구축
__데이터기반혁신
____제약이론
____병목제거
____데브옵스는지속적인개선의여정
____밸류스트림에맞춘팀을위한최적화
__정리
__더읽을거리및참고자료
◈이책에서다루는내용◈
◆소프트웨어배포성능의효과적인측정
◆데브옵스및린관리기법도입
◆깃허브이슈및프로젝트를사용해작업계획,추적,시각화
◆깃허브액션및패키지로지속적배포
◆프로덕션테스트와카오스엔지니어링을통한품질개선
◆보안의우선순위를높여전체소프트웨어공급망보호
◆깃허브의고급보안기능으로데브섹옵스의모범사례사용
◆코드스캐닝,시크릿스캐닝및Dependabot으로코드보안유지
◈이책의대상독자◈
개발자,솔루션아키텍트,데브옵스엔지니어,사이트신뢰성엔지니어(SRE,SiteReliabilityEngineer)는물론소프트웨어전달성능을향상시키고자하는엔지니어링또는제품관리자를위한책이다.데브옵스를처음접하거나이미경험이있지만최대성능을달성하는데어려움을겪고있는조직및이미깃허브엔터프라이즈(GitHubEnterprise)를사용해본경험이있거나애저데브옵스(AzureDevOps),팀파운데이션서버(TeamFoundationServer),깃랩(GitLab),비트버킷(Bitbucket),퍼펫(Puppet),셰프(Chef)또는젠킨스(Jenkins)와같은플랫폼사용경험이있는독자에게적합하다.
◈이책의구성◈
1장,'메트릭이핵심'에서는린(lean)관리의이론과성과및문화적변화를측정하는방법을설명한다.인재를유치하고뛰어난고객만족을달성하는데개발자생산성이왜중요한지살펴본다.
2장,'업무의계획,추적,시각화'에서는린원칙을적용해소프트웨어전달성과를가속화하는작업인사이트에대해설명한다.깃허브이슈,레이블,마일스톤(milestone),프로젝트를사용해팀과제품전반에서업무를계획,추적,시각화하는방법을배우게된다.
3장,'팀워크와협업'에서는소프트웨어협업개발의중요성과팀과분야간협업에깃허브를어떻게사용할수있는지설명한다.
4장,'장소에제약받지않는비동기식협업'에서는비동기작업방식의이점과이를활용해책임공유,분산된팀,품질향상,팀간협업을개선하는방법을설명한다.깃허브모바일,마이크로소프트팀즈(MicrosoftTeams),슬랙(Slack),깃허브페이지,위키(Wiki),토론을사용해장소와기기에구애받지않고협업하는방법을알아본다.
5장,'오픈소스와이너소스전략으로개발역량강화'에서는무료및오픈소스소프트웨어의역사와최근몇년동안클라우드컴퓨팅의맥락에서그중요성이커지고있는것에대해설명한다.오픈소스를활용해소프트웨어배포속도를높이는방법을알려준다.또한이너소스(innersource)에오픈소스사례를적용해조직을혁신하는방법과오픈소스와이너소스가인소싱및아웃소싱전략에미칠수있는영향에대해살펴본다.
6장,'깃허브액션으로자동화'에서는품질과속도를위한자동화의중요성에대해설명한다.지속적전달뿐아니라모든종류의자동화에깃허브액션을사용하는방법을소개한다.
7장,'워크플로실행'에서는다양한호스팅옵션을사용해하이브리드클라우드시나리오(hybridcloudscenario)또는하드웨어인더루프테스트(hardware-in-the-looptest)를처리하는방법을설명한다.또한자체호스팅러너를설정하고관리하는방법을알아본다.
8장,'깃허브패키지를사용한종속성관리'에서는깃허브패키지와시맨틱(semantic)버전관리를깃허브액션과함께사용해팀과제품간의종속성을관리하는방법을설명한다.
9장,'플랫폼별배포'에서는마이크로소프트애저(MicrosoftAzure),AWSECS,구글쿠버네티스(GoogleKubernetes)엔진에대한간단한실습예제를통해여러클라우드와플랫폼에쉽게배포하는방법을보여준다.또한깃허브액션(GitHubActions)을사용해단계별배포를수행하는방법과IaC(InfrastructureasCode)를사용해리소스프로비저닝을자동화하는방법을알아본다.
10장,'피처플래그와피처의수명주기'에서는피처플래그(FeatureFlag)또는피처토글(FeatureToggle)이어떻게복잡성을줄이고피처및소프트웨어의수명주기(lifecycle)를관리하는데도움이되는지설명한다.
11장,'트렁크기반개발'에서는트렁크기반개발의이점을설명하고소프트웨어배포를가속화하는데가장적합한깃워크플로(Gitworkflow)를소개한다.
12장,'품질향상을위한테스트의시프트-레프트'에서는개발속도에대한품질보증및테스트의역할을자세히살펴보고테스트자동화를통해테스트의시프트-레프트를보여준다.또한프로덕션에서의테스트및카오스엔지니어링(chaosengineering)에대해다룬다.
13장,'시프트-레프트보안과데브섹옵스'에서는소프트웨어개발에서보안의역할과프로세스에보안을도입하고데브섹옵스(DevSecOps),제로트러스트(zero-trust)를실행하는방법,보안을전환하는방법을폭넓게살펴본다.일반적인공격시나리오를살펴보고공격시뮬레이션과레드팀/블루팀연습을사용해보안을연습하고인식을높이는방법을살펴본다.또한클라우드의안전한개발환경으로서깃허브코드스페이스(GitHubCodespace)에대해소개한다.
14장,'코드보안'에서는깃허브어드밴스드시큐리티(GitHubAdvancedSecurity)를사용해CodeQL및기타도구로정적코드분석을수행한다.또한버그,보안,컴플라이언스문제를제거하고,Dependabot으로소프트웨어공급망을성공적으로관리하고,시크릿스캐닝(SecretScanning)을사용해코드베이스의시크릿을제거하는방법을설명한다.
15장,'안전한배포'에서는환경에대해안전하게배포하는방법과전체릴리스파이프라인을안전하고규정을준수하는방식으로자동화해규제요구사항도충족하는방법을보여준다.또한소프트웨어구성명세서(SBoM,SoftwareBillsofMaterial),코드및커밋서명,동적애플리케이션보안테스트,릴리스파이프라인의보안강화에대해다룬다.
16장,'느슨하게결합된아키텍처와마이크로서비스'에서는느슨하게결합된시스템의중요성과이를달성하기위해소프트웨어설계를발전시킬수있는방법을설명한다.마이크로서비스,진화적설계,이벤트기반아키텍처를다룬다.
17장,'팀고도화'에서는조직의커뮤니케이션구조와시스템아키텍처의상관관계(콘웨이의법칙(Conway'slaw))와이를사용해아키텍처,조직구조,소프트웨어배포성능을개선하는방법에대해설명한다.또한투-피자팀(two-pizzateam),역콘웨이전략,코드에대한모노/멀티레포(mono/multirepo)전략에대해다룬다.
18장,'린제품개발과린스타트업'에서는제품및기능수준에서린제품관리의중요성에대해설명한다.고객피드백을제품관리에통합하고,최소기능제품(MVP,MinimalViableProduct)을만드는방법과엔터프라이즈포트폴리오를관리하는방법을알아본다.
19장,'실험과A/B테스트'에서는A/B테스트와같은증거기반데브옵스관행을통해가설을검증하는실험을수행해제품을발전시키고지속적으로개선할수있는방법을설명한다.또한OKR을활용해팀이올바른실험을수행하고올바른제품을구축할수있도록지원하는방법도살펴본다.
20장,'깃허브플랫폼구성'에서는깃허브가어떻게팀을위한종합적인개방형플랫폼역할을할수있는지설명한다.또한다양한호스팅옵션,가격,기존도구체인에통합하는방법에대해알아본다.
21장,'깃허브로이전'에서는다른플랫폼에서깃허브로마이그레이션(migration)하는전략과다른시스템과의통합지점에대해설명한다.또한올바른마이그레이션전략을찾는방법과깃허브엔터프라이즈임포터(GitHubEnterpriseImporter)및발레(Valet)를사용해마이그레이션작업을수행하는방법을소개한다.
22장,'깃허브를통한협업고도화'에서는협업을촉진하고관리를용이하게하기위해리포지터리(repository)및팀을조직및엔터프라이즈단위로구조화하는모범사례에대해설명한다.또한역할기반액세스,사용자지정역할,외부공동작업자에대해다룬다.
23장,'엔터프라이즈혁신'에서는모든것을한데모아놨다.성공적인혁신을추진하고개발속도를높이는데사용할수있는많은도구를제공한다.하지만모든요소를종합적으로고려해야만혁신에성공할수있다.많은혁신이실패하는이유와혁신을성공으로이끌기위해무엇을해야하는지에대해설명한다.