클라우드 시대의 인프라 관리 방법을 지지하는 사람들은 연속성을 간단한 것이라고 생각한다. 시스템을 안정적으로 운영하기 위한 가장 친숙한 접근 방식은 변경을 수행하는 데 비용이 많이 들고 위험하다는 구시대의 전제를 기반으로 한다. 이러한 접근 방식은 클라우드, 애자일, 빠른 변경 속도에 중점을 둔 여러 방법의 이점을 약화시킨다.
이 책은 친절한 아키텍처 그림과 함께 책의 표지에 붙어있는 것처럼 27가지의 인프라 관리 패턴에 대해서 소개한다. 패턴과 안티패턴에 대해서 다룬다. 이 책은 코드로 인프라 관리는 어떻게 하는 것이다! 라고 말하는 책이기보다, 표지 그대로 패턴에 대해서 나열되어 있다. 따라서 각 패턴을 이해하기 위해서는 꽤 많은 인프라에 대한 이해가 있어야 한다.
책 소개
이 책의 주제 및 목표는 인프라를 관리할 때 필요한 패턴과 안티패턴을 전하는 것이다. DevOps로서 IaC를 쓰는 상황에서 하면 안되는/해도 되는 패턴들에 대해서 설명하며, 그림들을 통해서 친절하게 설명이 나와있다. 그림 자료가 많기 때문에 책 전반적으로 친절하게 이해할 수 있다.
이 책은 5개의 파트, 그 밑에 21개의 챕터로 이루어져 있다. 파트는 다음과 같다.
- 기초
- 인프라 스택으로 작업하기
- 서버와 여러 애플리케이션 런타임 플랫폼으로 작업하기
- 인프라 설계
- 인프라 딜리버리
그리고 그 밑에 각각의 챕터로 이루어져 있으며, 파트 5인 인프라 딜리버리의 챕터를 예시로 들면 다음과 같다.
- 인프라 코드 구조화하기
- 인프라 코드 딜리버리하기
- 팀 워크플로
- 안전한 인프라 변경
이런 식으로 구성되어 있으며, 각 챕터에 따른 패턴을 소개한다. 따라서 기초를 이야기하는 파트 1 이외에는 순서대로 읽을 필요는 없고, 필요할 때마다 그때그때 찾아서 읽어도 좋을 것 같다.
이 책을 읽으면 좋은 대상
DevOps 및 IaC에 대해서 다루고 있기 때문에, 인프라에 관심이 있는 사람에게 추천하며, 기초적인 내용을 다루는 것이 아니라 어떻게 인프라를 선언하고 다뤄야하는 지 구체적인 패턴들에 대해서 다루고 있기 때문에 중급 이상의 인프라 지식이 있는 경우에 추천한다.
나 또한, 많이 그리고 잘 아는 편은 아니기 때문에 몇몇 패턴들에 대해서는 이해하기 어려운 경우도 있었고, 사실 '왜 이런 패턴이 존재하는거지?' 싶은 경우도 있었다. 내가 IaC를 많이 구현해보면서 직접 그 상황에 쳐해보지 않아서 이렇게 느꼈던 것 같고, 꽤 경험이 많은 사람들은 아마 공감하면서 읽을 수 있을 것이다.
가장 권하는 사람은 IaC 작업을 하기 전에 사전 지식이 필요하다고 느끼는 사람이다. IaC도 그렇고, 애플리케이션 코드도 그렇고 설계의 과정을 빼먹을 수 없다. 무언가를 설계하기 직전에 이 책을 읽는다면, 절대 해서는 안되는 것들이라거나 내가 생각했던 설계에서 어떤 부분을 바꿔야 한다 이런 것들을 느낄 수 있을 것이다.
예를 들면, IaC를 CLI로 띄울 때, 절대로 스택 이름을 넘겨주도록 파라미터로 하면 안된다고 조언한다. 누구는 auth-server 누구는 user-server 이런 식으로 IaC를 적용하면, 똑같은 서버지만 이름이 달라서 두 개가 뜰 수도 있기 때문이다. 이에 반해 권장하는 패턴은 고정된 이름과 환경(prod, dev, stage)를 PREFIX로 달아서 띄우는 방법이다.
이런 것들을 익힐 수 있기 때문에, 위와 같은 단편적인 지식이나 팁, 혹은 잡기술이라고도 부를 수 있겠다. 그런 것들이 많이 필요한 사람들에게는 이 책을 꼭 추천한다.
책의 장점과 아쉬운 점
이 책의 서술 방식은 굉장히 깔끔하다. 특정 주제에 대해서 패턴/안티패턴을 소개하고, 동기 -> 적용성 -> 결과 -> 구현 -> 관련 패턴으로 깔끔하게 소개한다. 본인이 직접 겪어본 패턴이라면 바로 이해할 수 있지만, 겪어보지 못했던 패턴들은, '왜 이 상황에서 이런 식으로 구현하는걸까?' 라는 생각이 든다. 하지만 직접 그 상황에 속한 개발자라면 조직의 분위기, 관습 기타 등등의 사정으로 그렇게밖에 구현할 수 없었을 수도 있다.
이 책은 특정 패턴에 대해서, 왜 그렇게 사람들이 행동(혹은 선택)했는지 설명하는 동기를 설명한다. 위 예시는 안티패턴인 난독화 모듈 방법에 대해서 이야기한다. ( 여기서 모듈은 우리가 흔히 아는 Terraform에서 말하는 인프라 스택 단위이다 )
난독화 모듈의 예시는 퍼사드 모듈과 대비된다. 퍼사드 모듈은 흔히 래퍼 모듈이라고 불리는 패턴이다. 인프라를 좀 다뤄봤다면 모두가 당연하게 생각하는 패턴인데, 특정 스택에 래핑하여, 환경 변수만 따로 주입한다거나 리소스 사용량을 지정한다거나 하는 설정들을 래핑하는 패턴이다. 이를 퍼사드 모듈 패턴이라고 해당 페이지의 이전 페이지에서 소개한다.
사실 환경 변수는 IaC 레벨에서 직접 한땀한땀 지정해주는 것이 아니라, K8s의 ConfigMap이나 AWS의 Parameter Store를 쓰기 때문에 환경 변수가 아닌, 이름 설정이나 리소스 사용량을 바깥쪽 래퍼 모듈에서 덕지덕지 넣으면 난독화가 되어 어렵다는 내용의 패턴이다. 사실, 이 패턴을 보자마자. '어차피 환경 변수는 따로 넣어둘텐데, 뭐가 이렇게 덕지덕지 있다는 거지?'라는 생각이 들었으나, 동기 -> 적용성 -> 결과로 이어지는 설명들을 보면, 어쩔 수 없이 난독화가 되었다는 것을 손쉽게 납득할 수 있다.
이러한 서술 방식이 이책의 장점인 직접 패턴을 겪어보지 않아도 손쉽게 이해할 수 있도록 해준다는 점이다.
아쉬운 점은 장점에서 그대로 나온다. 프로그래밍 세상에서 여타 '패턴'이라고 부르는 것들이 그렇듯이, 코에 걸면 코걸이 귀에 걸면 귀걸이 같은 느낌이 강하다. 위에서 설명한 퍼싸드 모듈과 난독화 모듈도 사실 '기준'이라고 부를 것이 없다. 한 다섯 줄 더 붙어있다고 '난독화되었다'라고 이야기하는데, 이 부분은 사람마다 다를 수 있고 어떤 프로젝트를 하냐에 따라서 느끼는 것이 다를 수도 있기 때문이다.
사실 절반 정도의 케이스에서 (예시를 들면) 이렇게 래퍼 모듈을 분리한 경우 래퍼 모듈에는 어떤 정보만 둔다. 이런 식으로 설명하면 '기준'이 세워지는 것이라 손쉽게 이해하고 공감할 수 있다. 다만 그냥 과하면 안좋고, 적당히 하면 좋은 패턴이다. 라는 느낌이 강하게 드는게 몇몇 있었다.
사실 말 그대로 '아쉬운 점'을 표현하기 위해서 굳이굳이 이렇게 꺼내는 것인데, 이러한 케이스가 많지도 않고, 원래 패턴을 소개하는 책이 다 그런 편이라 크게 문제될 것은 없다. 아니, 사실은 작게 문제될 것도 없이 그냥 이 책의 특징이 그렇다는 점이다.
총평 및 추천 여부
이 책은 정말 추천하는 책이다. 무엇보다 그림이 이렇게 친절하게 나와있는 것에서 감동했다. 보통 개발자들은 그냥 글만 쓰거나, 끽해봐야 코드 정도로 퉁치는데, 이 책은 아키텍처를 하나하나씩 소개하면서 '왜 이 상황에서 이렇게 해야 하는지' 자세하게 설명해준다.
쿠버네티스 패턴이나 이펙티브 타입스크립트처럼 '패턴'을 알려주는 책들에 비하면 친절한 편이라고 생각한다. 사실 인프라 자체가 그림으로 설명해주지 않으면 이해가 어려워서 그럴 수도 있겠다. 누가 타입스크립트에서 any를 쓰지 말라고 하는데 그림을 그려가며 설명하겠는가.
아무튼, 이 책은 친절하고 재미있게 잘 쓰여있으며 가지고 다니며 그때그때 필요한 부분을 읽기에도 좋으니 강추하고 싶은 책이다. DevOps에 관심이 있다면 무조건 사라고 권하고 싶다.
'후기 > 책' 카테고리의 다른 글
책 리뷰 : 이펙티브 타입스크립트 (4) | 2025.07.13 |
---|---|
책 리뷰 : 카오스 공학 (2) | 2025.06.22 |
책 리뷰 : 소프트웨어 장인 정신 이야기 (1) | 2025.06.03 |
책 리뷰 : 이펙티브 엔지니어 (1) | 2025.06.03 |
책 리뷰 : Go 인 액션 (Go in Action) (6) | 2025.05.29 |