◈ 이 책에서 다루는 내용 ◈
◆ 의존성을 격리하고 인프라를 최적으로 모듈화하는 방법
◆ 인프라 변경 실패 시 문제를 완화하거나, 해결하고, 격리하는 방법
◆ 블루-그린 배포를 활용하여 최소 한도의 장애 시간으로 인프라를 업데이트하는 방법
◆ 프로비저닝 도구나 설정 관리 또는 이미지 빌딩을 사용하는 패턴
◈ 이 책의 대상 독자 ◈
◆ 클라우드 인프라와 IaC를 사용하기 시작하고, 팀이나 회사 전체로 확장하려는 모든 사람(소프트웨어 개발자, 보안 엔지니어, 품질 보증 엔지니어, 인프라 엔지니어)
◆ 다양한 인프라 사용 사례, 도구 및 시스템에 적용할 수 있는 일반적인 패턴과 사례를 알고 싶은 개발자
◈ 이 책의 구성 ◈
이 책은 13개의 장, 3부로 구성되어 있다.
1부는 IaC를 소개하고 어떻게 독자가 작성할 수 있는지 소개한다.
1장은 IaC의 개념, IaC의 장점 및 원칙을 정의한다. 하시코프 테라폼을 실행하여 구글 클라우드 플랫폼(GCP)에 배포하는 파이썬 예제를 포함하고 있음을 설명한다. 또한 IaC 여정에서 접하게 될 도구와 사용 사례에 대해서도 논의한다.
2장은 불변성의 원칙을 깊이 있게 다루고 기존 인프라 자원을 IaC로 이전할 수 있는 방법을 설명한다. 또한 깨끗한 IaC 작성 방법도 다룬다.
3장은 인프라 자원을 모듈로 나누거나 그룹화하는 패턴을 제공한다. 각 패턴은 예제와 사용 사례를 포함한다.
4장은 인프라 자원 및 모듈 간 의존성을 관리하는 방법과 의존성 주입 및 일부 공용 패턴을 사용해 의존성을 분리하는 방법을 다룬다.
2부는 팀 단위로 IaC를 작성하고 협업하는 방법을 묘사한다.
5장은 IaC를 다중 저장소 구조로 조직하여 팀 간 공유하는 방법과 고려사항을 다룬다.
6장은 인프라 테스트 전략을 제공한다. 각 테스트 유형을 설명하고 IaC로 작성할 수 있는 방법을 묘사한다.
7장은 지속적인 제공을 IaC에 적용한다. 상위 수준의 브랜칭 모델을 다루고 팀이 이를 활용하여 인프라를 변경할 수 있는 방법을 설명한다.
8장은 테스트와 태깅 방법을 포함하는, 안전하고 규정을 준수하는 IaC를 구축할 수 있는 기술을 제공한다.
3부는 회사 차원에서 IaC를 관리할 수 있는 방법을 다룬다.
9장은 인프라 변경 시 불변성을 적용하고, 블루-그린 배포 예제를 다룬다.
10장은 거대한 IaC를 리팩토링하여 유지보수성을 개선하고 단일 코드베이스에 대한 실패한 변경사항이 미치는 영향 범위를 완화하는 방법을 다룬다.
11장은 IaC 원복과 시스템 롤 포워드 방법을 묘사한다.
12장은 IaC를 사용해 클라우드 비용을 관리하는 방법을 제시한다. IaC로 비용을 추정할 수 있는 예제를 포함한다.
13장은 IaC 도구를 변경하고 업데이트할 수 있는 방법을 소개하며 책을 마무리 짓는다.
◈ 옮긴이의 말 ◈
2023년 초로 기억한다. 갑작스럽게 번역을 하게 되어 번역과 함께 코드 검증 작업을 업무 중 틈틈이 준비했던 일이 엊그제 같은데, 벌써 출판을 앞두게 되어 감개무량하다. 번역과 코드 검증 작업을 진행하면서 늘 신경을 쓴 점들이 있다. 하나는 우리가 최대한 저자의 의도를 살려서 번역 작업에 임했는가? 그리고 또 다른 하나는 이 서적을 읽을 독자들이 이해할 수 있도록 매끄럽게 번역 작업을 했는가? 이 두 가지를 항상 염두에 둔 채 부지런히 번역을 하여 지금에 이른 것 같다.
이 책은 IaC, 즉 코드형 인프라를 다루고 있다. IaC는 데브옵스 방법론을 적용해 코드를 통해 자동으로 인프라를 변경함으로써 확장성, 복원성, 안전성을 달성한다는 것으로, 쉽게 말해서 코드로써 인프라를 관리한다는 내용이다. 이러한 IaC는 2024년 2월 Firefly 설문조사에 따르면 응답자 3분의 2 이상이 “클라우드 인프라의 절반 이상을 IaC로 코드화했다”라고 답변을 할 정도로, 이미 많은 기업에서 도입할 만큼 보편화되었다.
그렇다면 이 IaC를 어떻게 도입하고 적용해야 할까? 이 책은 이 질문에 대한 해결책으로, IaC가 무엇인지 그리고 어떻게 IaC를 실무에 적용해야 하는지에 대해 파이썬과 테라폼을 통해 여러 사례를 보여줌으로써 인사이트를 제공하고 있다.
이 책은 크게 세 파트로 나뉘어 IaC에 대한 소개부터 여러 경우에 따른 IaC 사례, 클라우드 컴퓨팅 비용에 이르기까지 실무에 사용할 수 있는 여러 예시를 제시하고 있다. 이러한 구성은 IaC를 도입하고자 하는 독자들에게 최고의 솔루션이 될 수 있을 것이라 자신한다.
IaC가 전 세계적으로 보편화되었다고 하지만, 각 기업마다 다른 인프라 환경에 어떻게 최선의 방법으로 IaC를 도입할 수 있을지에 대한 인사이트를 얻기 위해서는 아직까지 해외의 사례들을 참조할 수밖에 없는 것이 현실이다. 관련 책 또한 있기는 하지만, 여타 분야와 다르게 그 수가 적다. 이러한 상황 속에서 이 책을 기점으로 국내에 관련 분야의 책들이 많이 출판되었으면 좋겠다는 생각을 조심스레 해본다. 이 책은 IaC에 관련된 사례들을 보여주기 위해 파이썬과 테라폼을 사용한다. 그러나 파이썬과 테라폼을 몰라도 내용을 이해하는 데 큰 어려움은 없을 것으로 보인다. 다만, 이 서적의 코드를 실행하려면 GCP나 AWS 등에 대한 사전지식이 조금은 필요하다. 천 리 길도 한 걸음부터라고 했다. 이 책을 보면서 하나씩 해나가다 보면, 어려움 없이 해낼 수 있을 거라 믿는다. 모쪼록 IaC로 인프라를 관리하고자 하는 분들에게 이 책이 도움이 되기를 바란다.
- 이국성
그동안 국제협력 업무를 담당하면서 정책 보고서 및 책자를 번역한 적은 있었으나, IT 도서번역을 진행하게 된 것은 이번이 처음이었다. 최대한 IT의 전문적인 단어 및 표현을 그대로 번역하되 처음 내용을 접하는 독자에게도 매끄럽게 읽힐 수 있도록 많은 고민을 하면서 번역 작업을 진행했고, 그 작업이 결실을 맺어 출판을 앞두게 되어 감사할 뿐이다.
이 책은 인프라를 코드로서 다루고 관리하는 방법을 논의한다. 초반부는 인프라를 코드화 할 때 필요한 네 가지 원칙을 소개하며, 이러한 원칙을 구체적으로 적용할 수 있는 각양각색의 패턴을 소개함으로써 다양한 인프라 자원을 그룹화하거나 분리하는 방법을 소개한다.
중반부에서는 실제로 있을 법한 실무 사례를 통해 코드형 인프라를 팀 간, 조직 간 협업할수 있는 방법, 인프라 배포 전 테스트를 도입하는 방법 및 지속적인 배포 방안을 소개한다.
후반부에서는 다양한 인프라 배포 방법, 배포 실패 시 영향 범위를 최소화하는 방법, 리팩토링 방법 및 클라우드 환경에서의 비용 절감 방법을 다룬다. 이 책을 읽고 나면 코드형 인프라에 대해 잘 모르던 독자도 코드형 인프라를 왜, 어떻게 도입할 수 있는지 감을 잡을 수 있으리라 생각한다.
책에서 주로 사용하는 코드는 파이썬과 테라폼이며 저자는 코드 전후로 자세한 설명을 하고있기 때문에 책 내용을 수월하게 이해할 수 있을 것이다. 저자는 GCP 환경에 기반하여 인프라를 구축하는 방법을 주로 다루면서도, AWS 및 애저에서 사용할 수 있도록 타 클라우드 환경에서 사용하기 위한 방안을 설명하고 있으므로 다른 클라우드 환경에서 코드형 인프라를 사용하는 데도 큰 어려움은 없을 것이다.
- 김찬규
◈ 추천의 글 ◈
“재사용성, 멱등성, 모듈화, 진화 가능성과 같은 핵심 기능을 깊게 다루면서도 특정 도구에 국한되지 않는 아주 훌륭한 책이다!”
- 루치안 말리(Lucian Maly) / 레드햇
“명확하면서도 포괄적이다. 신뢰 가능하고 재사용 가능한 방법으로 인프라를 자동화하는 방법을 알려준다.”
- 코시모 아타나시(Cosimo Attanasi) / ER Sistemi
“팀이 실무 프로젝트에 IaC의 모범 사례를 적용할 수 있도록 돕는다.”
- 데이비드 크리프(David Krief) / Altanasia
“비판적인 통찰력과 핵심 지식을 제공하는 이 책은 훌륭하다!”
- 제레미 브라이언(Jeremy Bryan) / Anchore