heoh***
2023-05-28

데브옵스 기본 사항, 컨테이너 모범 사례, 모놀리스 해부까지 자바 개발자도 알아야 하는 데브옵스의 모든 것
이 책은 데브옵스를 성공적으로 도입시키고 안정화시키기 위해 필요한 툴들에 대해 설명합니다. 데브옵스를 잘 정착시키기 위해 위해 회사와 조직 구성원 무엇을 어떻게 해야 하는지에 대해 전반적으로 소개합니다.
소스 코드를 관리하고, 도커 컨테이너, MSA 구성, 서비리스, CI/CD, 테스트 자동화, 모니터링, 로깅, 빌드도구, 보안과 품질등 데브옵스 구성에 필요한 모든 구성에 대해서 다룹니다.
DevOps의 정의
Chapter1. 개발자와 데브옵스
데브옵스(Devops)는 소프트웨어(Development)과 운영(Operation)의 합성어로서, 소프트웨어 개발자와 정보기술간의 소통, 협업및 통합을 강조하는 개발환경이나 문화를 말한다. 데브옵스는 완벽한 코드를 생성, 보호, 배포하기 위한 노력의 결정체이다. 데브옵스는 협업이며, 유기적이고 순환적인 소통을 위한 노력이다.
Chpater2. 진실시스템
효과적인 데브옵스 파이프라인을 갖추려면 프로덕션에 배포되는 결과물을 속속들이 파악 할 수 있는 통일 된 시스템이 필요하다. 이른바 진실(truth) 시스템이다. 프로덕션 배포를 목표로 빌드, 컴파일 되는 모든 코드는 소스관리시스템에서 통제되고 제어되어야 한다. 배포된 소스의 리비전을 추적해 버그, 취약점, 성능저하의 근본 원인을 분석 할 수 있다.
Chapter3. 컨테이너
컨테이너는 주로 클라우드 네이티브 환경을 향한 서비스 배포 분야의 관심사이다. 컨테이너는 애플리케이션 일관성, 프로세스 격리, OS 수준 의존성에 관련된 대부분의 문제를 해결하도록 고안된 경량 솔루션이다. 서비스나 애플리케이션을 컨테이너로 패키징하면 캐싱 매커니즘을 통해 배포 및 구동 시간을 극적으로 단축시킬 수 있다.
Chapter4. 모놀리스 해부
모놀리식 아키텍처는 모든 요구사항을 하나의 소스에 담는 동시에 모든 부품을 하나의 유닛에 담아 전달한다. 외부 또는 사용자 입장에서 보는 모놀리스는 자신과 연결되지 않는 컴포넌트의 정의 , 인터페이스, 데이터, 서비스에 대해 거의 알지 못하는 존재이다. 마이크로 서비스 아키텍처는 서비스 지향 아키텍의 진화물이며 애플리케이션을 경량 모듈형 서비스 집합으로 재배치 한다.
Chapter5. 지속적 통합
지속적 통합(CI)에 대한 일반적 정의는 여러 기여자의 코드 변경 사항을 프로젝트의 메인 소스 코드 리포지터리에 수시로 통합하는 것이다. CI의 철학은 모든 팀원이 코딩을 완료한 후 프로젝트를 조합하는 것에서, 개발 도중에 정기적으로 프로젝트를 빌드하는 것으로 진화했다.
Chapter6. 패키지 관리
아티팩트는 일반적으로 빌드 시간, 의존성 버전, 환경 정보 등의 메타데이터를 보유하고 잇다. 메타 데이터는 특정 아티팩트의 출처를 추척하거나, 재현성을 높이거나, 소프트웨어 BOM을 생성할 때 요긴하게 사용할 수 있다.
Chapter7. 바이너리 보안
소프트웨어 보안은 종합 데브옵스 롤아웃의 핵심 과제다. 지난 몇 년간 발생한 전대미문의 침해 사고들은 소프트웨어 보안 취약점에 대한 각계의 경각심을 다시금 불러일으키고 정부 차원의 대응과 새로운 보안 규정을 촉발했다. 개발에서 프로덕션에 이르는 소프트웨어 라이프 사이클을 통틀어 이 규정에 자유로운 영역은 없다.
Chapter8. 개발자와 배포
개발자는 주로 애플리케이션 코드의 성능을 높이는데 주력하지만 데브옵스는 원활한 협업에 중점을 둔다. 데브옵스의 활동으로 말미암아 모두의 작업은 하나의 인프라 속에서 안정적이고 고르게 혼합될 수 있다.
Chapter9. 모바일 워크 플로
스마트폰은 데브옵수를 필수 불가결한 요소로 만드는 특성을 지녔다. 태생적으로 스마트폰은 항상 인터넷에 접속하고 지속적으로 업데이트되어야 하는 장치다. 앱을 업데이트 하는 목적으로 사용자 대상 신 기술 추가, 버그 수정 및 애플리케이션 안정성 향상, 보안 취약점 또는 악용 방지 패치등이 있다.
Chapter10. 지속적 배포 패턴과 안티패턴
지속적 업데이트는 더 이상 소프트웨어 개발의 선택 사항이 아니다. 이제 모든 주요 프로젝트는 지속적 업데이트를 모범 사레로 채택한다. 지속적 업데이트 전략은 프로젝트의 기능적 요구 사항만큼 중요하며, 고도로 자동화된 프로세스가 있어야만 안정적인 결과를 보장 할 수 있다.