Top

[도커와 젠킨스, 쿠버네티스로 만드는]
배포 자동화와 지속적 인도

  • 원서명Continuous Delivery with Docker and Jenkins, 2nd Edition (ISBN 9781838552183)
  • 지은이라파엘 레쉬코(Rafał Leszko)
  • 옮긴이이정표
  • ISBN : 9791161756271
  • 35,000원
  • 2022년 08월 31일 펴냄
  • 페이퍼백 | 386쪽 | 188*235mm
  • 시리즈 : 소프트웨어 테스팅

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/docker-jenkins

요약

소프트웨어를 개발해 고객에게 인도하는 절차를 효과적으로 구축하는 데 필요한 주요 기술과 사례를 설명한다. 지속적 통합 및 인도의 기본 개념과 구조를 설명한다. 또한 젠킨스와 도커, 쿠버네티스와 앤서블을 이용해 애플리케이션을 빌드하고, 지속적으로 통합하고, 테스트를 자동화하고, 구성을 관리해서 지속적으로 배포하는 프로세스를 체계적으로 구축하는 방법을 구체적인 사례를 가지고 설명한다. 이 책을 통해 자신의 조직에 적합한 지속적 통합/인도 프로세스를 계획하고, 실제로 적용하고, 발전시키는 데 필요한 지식을 갖출 수 있다.

이 책에서 다루는 내용

◆ 도커의 기초를 배우고 지속적 인도 프로세스에 맞게 애플리케이션을 도커 이미지로 제작하기
◆ 클라우드 환경에서 젠킨스 활용하기
◆ 쿠버네티스로 도커 서버 풀 확장하기
◆ 큐컴버로 인수 테스트를 작성하고 이를 도커 환경에서 젠킨스로 실행하기
◆ 도커 레지스트리에 이미지를 발행하고 모범 사례에 맞춰 젠킨스 파이프라인 배포하기

이 책의 대상 독자

데브옵스 엔지니어와 시스템 관리자, 도커 전문가 또는 도커와 젠킨스를 통합하는 방법에 관심이 있는 개발자를 대상으로 한다.

이 책의 구성

1장, ‘지속적 인도 소개’에서는 전통적인 인도 프로세스의 문제점을 보여주고, 아마존과 야후의 성공 사례를 설명한다.
2장, ‘도커 소개’에서는 컨테이너화에 대해 간략히 소개하고, 도커 플랫폼으로 애플리케이션과 서비스를 운영할 때의 이점을 알아본다.
3장, ‘젠킨스 구성’에서는 젠킨스 도구와 아키텍처를 소개하고, 마스터/에이전트 인스턴스를 도커 서버나 클라우드에 또는 도커 없이 설치하는 방법을 알아본다. 그런 다음 에이전트 확장 방법을 다룬다.
4장, ‘지속적 통합 파이프라인’에서는 기존의 지속적 통합 파이프라인에서 세 가지 주요 단계(체크아웃, 빌드, 단위 테스트)가 어떻게 이뤄지는지를 설명한다.
5장, ‘자동인수 테스트’에서는 애플리케이션을 릴리스하기 전에 자동 인수 테스트를 수행해 전체 시스템이 예상대로 동작하는지를 확인하는 방법에 대해 설명한다.
6장, ‘쿠버네티스로 하는 클러스터링’에서는 도커 도구를 사용해서 여러 팀과 프로젝트로 규모를 확장하는 방법을 설명한다. 쿠버네티스에 대해 소개하고, 이를 지속적 인도 프로세스에서 사용하는 방법을 배운다.
7장, ‘앤서블로 하는 구성 관리’에서는 서버를 확장하고 여기에 애플리케이션을 배포하는 방법을 배운다.
8장, ‘지속적 인도 파이프라인’에서는 최종 파이프라인에서 다루지 않은 주제인 환경 및 인프라 구성, 애플리케이션 버전 관리, 비기능 테스트 등을 다룬다.
9장, ‘지속적 인도 – 고급편’에서는 완전한 파이프라인을 구축한 후 당면하게 될, 더 어려운 실제 시나리오를 다룬다.

저자/역자 소개

지은이의 말

이 책은 지속적 통합을 적용한 앱 개발 방식을 개선하는 데 있어 어떻게 도커와 젠킨스를 잘 활용할 수 있는지를 다룬다. 처음에는 도커 서버의 설정과 젠킨스를 구성하는 것으로 시작한다. 그런 다음 도커 파일에서 애플리케이션을 빌드하고, 이를 지속적 통합, 인수 테스트 자동화, 구성 관리와 같은 지속적 인도 프로세스를 사용해 젠킨스와 통합하는 단계를 간략히 다룬다.
이어서 쿠버네티스와 젠킨스의 확장 기능, 도커 컨테이너로 애플리케이션을 신속하게 배포하는 방법을 배우고, 도커 이미지로 배포한 애플리케이션을 젠킨스로 테스트하는 과정을 알아본다. 그리고 CD 파이프라인에서 다루지 않았던 환경과 인프라 구성, 애플리케이션 버전 관리, 비기능 테스트에 대해서도 살펴본다. 이 책의 마지막에서는 도커와 젠킨스의 기능을 통합해 데브옵스 워크플로우를 향상시킬 것이다.

지은이 소개

라파엘 레쉬코(Rafał Leszko)

소프트웨어 개발자이자 강사로, 폴란드 크라쿠프에 살고 있다. 구글, CERN, Hazelcast 등 여러 기업에서 개발자와 아키텍트로 경력을 쌓았다. 또한 Devoxx와 Voxxed Days를 포함한 많은 국제 회의에서 강연 및 워크숍을 진행했으며, 항상 새로운 도전에 열린 자세를 갖고 있다.

옮긴이의 말

나는 오랫동안 소프트웨어 개발 분야에 있다가 몇 년 전부터는 소프트웨어 용역 개발 분야에 솔루션과 개발사를 발굴하고 평가하는 업무를 하고 있다. 사업 부서에서 요청한 서비스를 구현하기에 적합한 개발사를 발굴해, 필요시 회사를 직접 방문했다. 인터뷰와 조사로 기술 역량을 파악해 다양한 프로젝트, 소프트웨어 개발사와 개발자와 만날 수 있었고, 인터뷰로 국내 스타트업부터 중견 개발사에 이르기까지 각 기업이 추구하는 개발 방법론과 개발 환경을 직접 확인할 수 있었다.
소프트웨어 개발 기업의 역량을 파악하고자 다양한 평가 도구를 사용하지만, 그중 가장 중요한 것이 애플리케이션 수명 관리(ALM, Application Lifecycle Management) 환경이다. ALM은 비즈니스의 요구 사항 관리와 소프트웨어 개발 과정을 융합하고 이를 자동화된 툴을 이용해 관리하는 것이다. 이는 요구 사항 관리, 설계, 코딩, 테스트, 이슈 관리, 릴리스 등을 모두 포함한다.
그러므로 하루가 다르게 진보하는 기술의 변화 속에서 소프트웨어 개발사가 다양한 고객의 요구를 만족시키면서도 지속성을 유지하려면 적은 인원으로도 효율적으로 빠르게 운영돼야 한다. ALM 환경이 얼마나 효율적으로 운영되는지를 보고 기업의 역량을 간접적으로 파악할 수 있다. 기술 조사 및 평가 업무를 시작하던 수 년전까지만 해도 지속적 통합과 인도(CI/CD) 프로세스는 대형 인터넷 기업이나 일부 팀에서만 적용하고 있던 개발 방법이었다. 그러나 이후 스타트업이 폭발적으로 성장하면서 애자일, 린 스타트업 등의 방법론이 폭넓게 확산됐다. 이제는 국내의 많은 기업도 배포 자동화, 품질 검증 활동 자동화 등을 비즈니스 역량과 통합해 대응하는 추세다.
이 책은 소프트웨어를 개발해 고객에게 인도하는 절차를 효과적으로 구축하며, 필요한 최신 기술을 활용해 구체적으로 구현하는 방법을 설명한다. 깔끔한 구성과 유용한 내용 덕분에 2017년 초반 발행 이후 지속적인 인기를 누리면서 현재까지도 꾸준히 업데이트되고 있다. 모쪼록 자신의 조직에 적합한 지속적 통합/인도 프로세스를 계획하고, 실제로 적용하며 발전시키는 데 필요한 지식을 갖추고자 하는 독자들에게 도움이 됐으면 한다.

옮긴이 소개

이정표

모바일 브라우저 개발부터 클라우드 서비스 기획까지 20년간 다양한 개발 프로젝트에 참여했으며, 현재는 통신회사에서 SW/IT 분야의 기술조사평가 업무를 하고 있다.
옮긴 책으로는 에이콘출판사에서 펴낸 『Hudson3 설치와 운용』(2014), 『난독화, 디지털 프라이버시 생존 전략』(2017), 『젠킨스 마스터』(2018), 『젠킨스 블루오션 시작하기』(2019), 『린 모바일 앱 개발』(2019), 『알고리즘 윤리』(2021) 등이 있다.

목차

목차
  • 1부. 환경 설정

  • 1장. 지속적 인도 소개
    • 지속적 인도(CD)의 이해
      • 전통적 인도 프로세스
        • 전통적 인도 프로세스의 동작 방식
        • 전통적 인도 프로세스의 단점
      • 지속적 인도(CD) 방식의 장점
      • 성공 스토리
    • 자동 배포 파이프라인
      • 지속적 통합(CI)
      • 자동 인수 테스트
        • 애자일 테스팅 매트릭스
        • 테스트 피라미드
      • 구성 관리
    • CD의 전제 조건
      • 조직 구조의 전제 조건
        • 데브옵스 문화
        • 프로세스 내의 고객
        • 사업적 의사결정
      • 기술 및 개발의 전제 조건
    • CD 프로세스 구축
      • 도구 소개
        • 도커 생태계
        • 젠킨스
        • 앤서블
        • 깃허브
        • 자바/스프링 부트/그래들
        • 그 외의 도구들
    • 완벽한 CD 시스템 생성하기
      • 도커 소개
      • 젠킨스 구성
      • 지속적 통합 파이프라인
      • 자동 인수 테스트
      • 쿠버네티스 클러스터링
      • 앤서블로 하는 구성 관리
      • 지속적 인도 파이프라인/지속적 인도-고급편
    • 요약
    • 질문
    • 더 읽을거리

  • 2장. 도커 소개
    • 기술 요구 사항
    • 도커 소개
      • 컨테이너화와 가상화 비교
      • 도커의 필요성
        • 실행 환경
        • 격리
        • 애플리케이션 구성
        • 이식성
      • 고양이와 가축
      • 다른 컨테이너화 기술들
    • 도커 설치
      • 도커에 필요한 환경
      • 로컬 머신에 설치하기
        • 도커 데스크톱
        • 우분투용 도커
        • 다른 리눅스 배포판용 도커
        • 도커 설치 테스트
        • 서버에 설치
        • 전용 서버
    • 도커에서 hello-world 실행하기
      • 도커 컴포넌트
        • 도커 클라이언트와 서버
        • 도커 이미지와 컨테이너
    • 도커 애플리케이션
    • 도커 이미지 빌드
      • 도커 커밋
      • 도커파일
      • 도커 애플리케이션 완성하기
        • 애플리케이션 작성
        • 환경 준비하기
        • 이미지 빌드하기
        • 애플리케이션 실행하기
        • 환경 변수
    • 도커 컨테이너 상태
    • 도커 네트워킹
      • 서비스 실행하기
      • 컨테이너 네트워크
      • 컨테이너 포트 공개
      • 자동 포트 할당
    • 도커 볼륨 사용하기
    • 도커에서 이름 사용하기
      • 컨테이너 이름 지정하기
      • 이미지에 태그 달기
    • 도커 클린업
      • 컨테이너 클린업
      • 이미지 클린업
    • 도커 명령어 살펴보기
    • 요약
    • 연습 문제
    • 질문
    • 더 읽을거리

  • 3장. 젠킨스 구성
    • 기술 요구 사항
    • 젠킨스란 무엇인가?
    • 젠킨스 설치
      • 도커로 젠킨스 설치하기
      • 전용 패키지로 젠킨스 설치하기
        • 초기 구성
      • 쿠버네티스에 젠킨스 설치하기
      • 클라우드에서 젠킨스 사용하기
    • 젠킨스-Hello World
    • 젠킨스 아키텍처
      • 마스터와 에이전트
      • 확장성
        • 수직적 확장
        • 수평적 확장
      • 테스트 인스턴스/프로덕션 인스턴스
      • 샘플 아키텍처
    • 에이전트 구성하기
      • 통신 프로토콜
      • 에이전트 설정하기
        • 영구 에이전트
        • 영구 도커 호스트 에이전트
        • 젠킨스 스웜 에이전트
        • 동적 프로비저닝 도커 에이전트
        • 동적 프로비저닝 쿠버네티스 에이전트
      • 동적 프로비저닝 쿠버네티스 에이전트 이해하기
      • 에이전트 테스트하기
    • 커스텀 젠킨스 이미지
      • 젠킨스 에이전트 구축하기
      • 젠킨스 마스터 빌드하기
    • 구성 및 관리
      • 플러그인
      • 보안
      • 백업
      • 블루오션 UI
    • 요약
    • 연습 문제
    • 질문
    • 더 읽을거리

  • 2부. 애플리케이션 설계 및 테스트

  • 4장. 지속적 통합 파이프라인
    • 기술 요구 사항
    • 파이프라인 소개
      • 파이프라인의 구조
      • 멀티-스테이지 Hello World
      • 파이프라인 구문
        • 섹션
        • 지시어
        • 스텝
    • 커밋 파이프라인
      • 체크아웃
        • 깃허브 리포지토리 생성
        • 체크아웃 스테이지 생성하기
      • 컴파일
        • 자바 스프링 부트 프로젝트 생성하기
        • 코드를 깃허브로 푸시하기
        • 컴파일 스테이지 생성하기
      • 단위 테스트
        • 비즈니스 로직 생성하기
        • 단위 테스트 작성하기
        • 단위 테스트 스테이지 생성하기
      • 젠킨스파일
        • 젠킨스파일 생성하기
        • 젠킨스파일에서 파이프라인 실행하기
    • 코드-품질 스테이지
      • 코드 커버리지
        • JaCoCo를 그래들에 추가하기
        • 코드 커버리지 스테이지 추가하기
        • 코드 커버리지 리포트 발행하기
      • 정적 코드 분석
        • 체크스타일 구성 추가하기
        • 정적 코드 분석 스테이지 추가하기
        • 정적 코드 분석 리포트 발행하기
      • 소나큐브
    • 트리거와 알림
      • 트리거
        • 외부 트리거
        • 폴링 SCM 트리거
        • 스케줄 빌드 트리거
      • 알림
        • 이메일
        • 그룹 채팅
        • 팀 사무실
    • 팀 개발 전략
      • 개발 워크플로우
        • 트렁크-기반 워크플로우
        • 브랜치 워크플로우
        • 포크 워크플로우
      • 지속적 통합 적용하기
        • 브랜치 전략
        • 기능 토글
      • 젠킨스 멀티-브랜치
      • 비기술 요구 사항
    • 요약
    • 연습 문제
    • 질문
    • 더 읽을거리

  • 5장. 자동 인수 테스트
    • 기술 요구 사항
    • 인수 테스트 소개
    • 도커 레지스트리
      • 아티팩트 리포지토리
      • 도커 레지스트리 설치하기
        • 클라우드 방식 도커 레지스트리
        • 도커 허브
        • 자체 호스팅 방식 도커 레지스트리
      • 도커 레지스트리 사용하기
        • 이미지 빌드하기
        • 레지스트리로 이미지 푸시하기
        • 레지스트리에서 이미지 가져오기
    • 젠킨스 파이프라인에서의 인수 테스트
      • 도커 빌드 스테이지
        • 도커파일 추가하기
        • 도커 빌드를 파이프라인에 추가하기
      • 도커 푸시 스테이지
      • 인수 테스트 스테이지
        • 스테이징 배포를 파이프라인에 추가하기
        • 인수 테스트를 파이프라인에 추가하기
        • 클린업 스테이지 추가하기
    • 인수 테스트 작성하기
      • 사용자 - 대면 테스트 작성하기
      • 인수 테스트 프레임워크 사용하기
        • 인수 기준 생성하기
        • 스텝 정의 생성하기
        • 자동 인수 테스트 실행하기
      • 인수 테스트-주도 개발
    • 요약
    • 연습 문제
    • 질문
    • 더 읽을거리

  • 6장. 쿠버네티스로 하는 클러스터링
    • 기술 요구 사항
    • 서버 클러스터링
      • 서버 클러스터링 소개
    • 쿠버네티스 소개
      • 쿠버네티스 기능 개요
    • 쿠버네티스 설치
      • 쿠버네티스 클라이언트
      • 쿠버네티스 서버
        • 로컬 환경
        • 클라우드 플랫폼
        • 사내 설치
      • 쿠버네티스 설정 검증
      • 쿠버네티스 사용하기
        • 애플리케이션 배포
        • 쿠버네티스 서비스 배포
        • 애플리케이션 노출
    • 쿠버네티스의 고급 기능
      • 애플리케이션 확장
      • 애플리케이션 업데이트하기
      • 롤링 업데이트
      • 쿠버네티스 객체와 워크로드
    • 애플리케이션 의존성
      • 쿠버네티스 DNS 확인
      • 멀티 애플리케이션 시스템 개요
      • 멀티 애플리케이션 시스템 구현
        • 그래들에 Hazelcast 클라이언트 라이브러리 추가하기
        • Hazelcast 캐시 구성 추가하기
        • 스프링 부트 캐시 추가하기
        • 도커 이미지 빌드하기
      • 멀티 애플리케이션 시스템 테스트
    • 대체 다른 클러스터 관리 시스템
      • 도커 스웜
      • 아파치 Mesos
      • 기능 비교
    • 요약
    • 연습 문제
    • 질문
    • 더 읽을거리

  • 3부. 애플리케이션 배포

  • 7장. 앤서블로 하는 구성 관리
    • 기술 요구 사항
    • 구성 관리 소개
      • 좋은 구성 관리 도구의 특징
      • 구성 관리 도구 개요
    • 앤서블 설치
      • 앤서블 서버 요구 사항
      • 앤서블 설치
    • 앤서블 사용하기
      • 인벤토리 생성하기
      • 애드혹 명령
      • 플레이북
        • 플레이북 정의하기
        • 플레이북 실행하기
        • 플레이북의 멱등성
        • 핸들러
        • 변수
        • 롤 이해하기
        • 앤서블 갤럭시
    • 앤서블을 이용한 배포
      • Hazelcast 설치하기
      • 웹 서비스 배포하기
        • Hazelcast 호스트 주소 변경하기
        • 플레이북에 계산기 배포 추가하기
        • 배포 실행하기
    • 도커 및 쿠버네티스와 앤서블
      • 앤서블의 장점
      • 앤서블 도커 플레이북
        • 도커 설치하기
        • 도커 컨테이너 실행하기
        • 앤서블 쿠버네티스 플레이북
    • 요약
    • 연습 문제
    • 질문
    • 더 읽을거리
    • 기술 요구 사항

  • 8장. 지속적 인도 파이프라인
    • 환경 및 인프라
      • 환경 유형
        • 프로덕션 환경
        • 스테이징 환경
        • 테스트 환경
        • 개발 환경
        • 지속적 인도 환경
        • 보안 환경
    • 비기능 테스트
      • 비기능 테스트의 유형
        • 성능 테스트
        • 내구성 테스트
        • 보안 테스트
        • 유지보수 테스트
        • 복구 테스트
      • 비기능 테스트의 어려운 점
    • 애플리케이션 버전 관리
      • 버전 관리 전략
      • 젠킨스 파이프라인에서의 버전 관리
    • 지속적 인도 파이프라인 완성하기
      • 인벤토리
      • 버전 관리
      • 원격 스테이징 환경
      • 인수 테스트 환경
      • 릴리스
      • 스모크 테스트
      • 젠킨스파일 완성하기
    • 요약
    • 연습 문제
    • 질문
    • 더 읽을거리
    • 기술 요구 사항

  • 9장. 지속적 인도 - 고급편
    • 데이터베이스 변경 관리
      • 스키마 업데이트의 이해
        • 데이터베이스 마이그레이션 소개
        • Flyway 사용
      • 지속적 인도에서 데이터베이스 변경
        • 하위 버전과 호환이 가능하게 변경한 경우
        • 하위 버전과 호환이 불가능하게 변경한 경우
        • 코드 변경 사항에서 데이터베이스 업데이트 분리
      • 공유 데이터베이스 분리
      • 테스트 데이터 준비
        • 단위 테스트
        • 통합/인수 테스트
        • 성능 테스트
    • 파이프라인 패턴
      • 파이프라인 병렬화
      • 파이프라인 컴포넌트 재사용
        • 파라미터 방식 빌드
        • 공유 라이브러리
      • 배포 롤백
      • 수작업 스텝 추가
    • 릴리스 패턴
      • 블루-그린 배포
      • 카나리아 릴리스
    • 레거시 시스템과의 연동
      • 빌드 및 배포 자동화
      • 테스트 자동화
      • 리팩토링과 새로운 기능 추가
      • 인간적 요소의 이해
    • 요약
    • 연습 문제
    • 질문

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안