본문 바로가기

책 리뷰,서평

<코드로 인프라 관리하기> 2판 서평

이전 회사는 코드(terraform, ansible, ...)로 인프라를 관리하지 않았다. 쿠버네티스 환경에 애플리케이션을 배포하기 위해 yaml 파일을 사용하고 깃에 버전 관리를 하긴 했지만, AWS EC2나 IAM, SG 등은 손으로 만들었다. 그러다 보니 자연스레 휴먼 에러가 발생해 알맞지 않은 IAM이 생성되어 EC2에서 에러가 나고, 제대로 서비스가 동작하지 않을 때가 있었다. 

현재 회사는 반대다. 

Terraform, Terragrunt, Ansible 등으로 위에서 말한 자원을 생성하고 깃으로 버전 관리를 한다. 지라의 이슈별로 브랜치를 생성해 해당 브랜치에서 작업하고, 팀원들이 승인해 주어야 메인 브랜치에 머지가 가능하다.

현 회사의 깃 레포를 보면 '코드로 인프라를 관리하려면 초기 세팅이 꽤나 힘들겠구나' 라는 생각이 절로 든다. 책에서도 그런 이야기가 나온다. 

코드형 인프라를 시작하는 것은 어렵고 많은 시간이 소요된다. 특히 새로운 인프라 플랫폼을 채택하는 경우 인프라 딜리버리를 자동화하는 도구, 서비스, 실행 방법을 설정하기 위해 많은 작업이 필요하다. 자동화는 서비스 구축과 배포에 사용되기 전에는 그 가치를 입증하기 어렵다.
심지어 서비스에 사용되더라도 인프라와 직접 협력하지 않는 사람은 그 가치를 알기 어렵다.

관리자는 인프라팀에 새로운 클라우드 호스팅 시스템을 신속하게 수작업으로 구축하라고 자주 압박하며 자동화는 나중에 걱정하라고 한다.
- 코드로 인프라 관리하기, 40p

하지만 일단 코드로 인프라를 관리하는 것이 도입된다면, 일은 일사천리다. 필요한 것을 조금만 변경해서 실행하고 커밋하면 이력이 남고, 롤백하기도 쉽다. 에러를 쉽게 바로잡을 수 있다.

반대로 AWS 콘솔에서 자원을 한 땀 한땀 손으로 만들었다면... 이전에 작업한 것에 뭘 추가한 것 같은데, 제대로 기억이 나지 않는다면 어떻게 하겠는가? 뭐가 문제인지 모른 채로 에러의 원인을 찾아 헤멜 것이다.

 

저자는 코드형 인프라를 위한 세 가지 핵심 실행 방법을 다음과 같이 정의한다.

1. 모든 것을 코드로 정의한다.

  • 자원을 빠르게 수정하고 새롭게 빌드하며, 시스템을 예측할 수 있게 만들고 안정적으로 테스트할 수 있도록 한다.

2. 코드를 지속적으로 테스트하고 딜리버리한다.

  • 모든 작업이 완료될 때까지 기다리지 않고 작업을 진행하면서 동시에 테스트한다.

3. 시스템을 작고 간단하게 빌드한다. 

  • 큰 시스템은 변경하기 어렵고 망가지기도 쉽다.

앞으로는 위 내용을 머리에 새기면서 인프라 관리를 해야겠다 싶다.

 

앞으로 앞두고 있는 아키텍처 개선 작업도,

코드로 정의하여 자원을 나중에 쉽게 생성 가능하도록 하며,
지속적으로 테스트하고 배포해볼 것이다.
그리도 시스템을 심플하게 유지해야겠다.

 

한빛미디어 책은 종종 나의 랜선 사수가 되어준다.

<머신 러닝 파워드 애플리케이션>이 그랬고 지금은 이 책이 그렇다.

좋은 책을 발간하고, 제공해준 한빛미디어 감사합니다. 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."