오렐리의 코드로 인프라 관리하기가 2판이 나왔다. 원칙과 실행 방법, 패턴으로 배우는 클라우드 인프라 구축의 실용적인 방법을 배울 수 있는 책이다. 이 책의 대상 독자는 소프트웨어 배포 및 실행에 필요한 인프라를 프로비저닝하고 관리하는 사람. 팀에서 엔지니어링, 테스트, 설계, 관리자 역할을 맡은 사람이다. 이 책을 이해하기 위해서는 시스템, 인프라 또는 소프트웨어 배포와 실행 관련 배경지식이 필요하다. 저자는 책을 읽는 독자가 인프라 자동화를 위한 코드를 사용하는 클라우드나 가상 인프라에 대한 경험이 있다고 가정하기 때문에 그런 배경이 없다면 어려운 책이다.
본업은 기획자이자 PM으로 실무에서 인프라 업무를 하고 있지 않은 내 입장에서는 어려웠고, 소프트웨어 배포와 실행 관련 배경지식은 있지만, 그 내부까지 세세하게 알지는 못하기 때문에 책을 한 번 보고 익히는 것은 어려운 일이었다. 솔직히 다 읽은 지금도 반만 이해하고 나머지는 잘 모르겠다.
이번 표지는 아프리카의 루펠 독수리가 차지했다. 멸종 위기종으로 간주되며 개체 수가 감소하고 있는 이 새가 이 책의 표지를 맡은 것에는 무슨 의도가 담긴 걸까.
클라우드 시대의 코드형 인프라와 데브옵스를 위한 완벽 가이드. 2017년 3월 초판이 처음 발행된 이후로 거의 5년 만에 2판을 발행했다.
음. 책 정보에는 초판 1쇄 발행이 2017년이라고 되어 있는데, 책 내용에는 2016년 6월에 초판이 나왔다고 하니 뭐가 맞는 건지를 모르겠다.
당시 인프라 자동화는 서버 구성에만 초점이 맞추어져 있었는데, 이후 컨테이너와 클러스터가 훨씬 더 많이 사용되면서 인프라 업무라고 하면 클라우드 플랫폼의 인프라 리소스 집합(그러니까 스택)을 관리하는 일을 뜻하게 되었다. 그래서 새롭게 바뀐 환경에 맞춰 2판이 발행되었다.
2판에서는 코드형 인프라를 사용해서 안전하고 쉽게 변경할 수 있는 세 가지 핵심 실행 방법을 소개하고 다루는데, 모든 것을 코드로 정의하는 것, 지속적으로 테스트하고 딜리버리 하는 것, 시스템을 '작고' '간단하게' 빌드 하는 것. 을 이야기한다.
현재 다니고 있는 회사의 프로젝트는 리눅스 운영 체제를 사용하고 있다. 책이 개편되는 주기보다 도구의 변화는 빠르고 보다 오랫동안 책의 내용이 유효할 수 있도록, 더 많은 사람들에게 도움이 될 수 있도록 책에서는 실제 도구와 클라우드를 위한 코드 예제는 없다. 이 책을 통해서 도구 전반을 이해하는 데 도움이 된다. 마찬가지로 운영체제나 클러스터 설정, 네트워크 라우팅 방법에 대해서도 가이드를 하지 않고, 다만 인프라 환경을 구성하기 위한 인프라 리소스 프로비저닝 방법과 배포를 위한 코드 사용 방법 등을 다룬다.
세부적으로 딥(deep) 한 내용이 아니라 전반적인 내용을 다룬다고 보면 쉽다. 그래서 독자가 기본적으로 인프라 경험이 있다는 전제하에 책이 쓰였다.
2판이기는 하지만 기초 부분을 다룬다. 코드형 인프라란 무엇인지 구시대에서 클라우드 시대로 넘어오면서 변경된 것들과 이점, 최적화에 대해 배울 수 있다. 1.4네 가지 주요 지표는 인프라 실무를 잘 모르는 나에게도 꽤 유익한 내용이었다.
(아, 솔직히 이 책을 그대로 들고 가서 회사 인프라팀에 선물하고 싶다는 생각이 들었지만, 내 영역이 아니니...)
네 번째 파트의 '시스템을 [작고] [간단하게] 빌드 하는 것'. 이 부분이 개인적으로 내가 이 책에서 꼽는 가장 유용한 부분이다. 다른 독자나 사용자의 의견은 알 수 없지만, 잦은 업데이트 및 수정이 있는 프로젝트를 운영하고 있기 때문에 이 부분의 지식은 굉장히 유용하게 다가왔다. 컴포넌트의 설계 규칙에서 특히 순환 의존성을 제거하는 것. 인프라를 모듈화에서 스택 컴포넌트와 컴포넌트로서의 스택을 비교해 준 부분. 스택에서 서버를 사용하는 부분이 흥미로웠다.
팀이 작업 방식을 완전히 조정하는 대신 인프라 코딩 도구를 사용하여 이전의 작업 방식 일부를 자동화할 때 구성 드리프트가 발생하는 경우가 많이 있다. 이때 구성 드리프트를 방지하기 위해 워크플로에서 수행할 수 있는 몇 가지 작업에 대해서 설명을 하는데, 그중 하나가 바로 '임시방편 피하기'. 인프라 코드를 작성하고 적용하여 시스템의 특정 부분을 임시로 변경할 수 있지만, 이러한 습관으로 구성 드리프트나 자동화 지연이 발생할 수 있다.
내 상사가 습관처럼 하는 말이 있는데 '귀찮으면 X 된다.'이다. 분명 이렇게 하면 문제가 일어날 수 있다는 것을 예상하고도 '귀찮음'을 '효율성'으로 포장해 일을 치르면 나중에 X 된다고 했고 의외로 실무에서 그런 일이 빈번하게 일어나고 또 목격이 된다.
챕터 21에서는 안전한 인프라 변경에 대해 다룬다. 서비스를 계속 작동시키면서 일련의 작고 점진적인 변경으로 프로덕션 시스템에 중요한 변경을 딜리버리 할 수 있는 방법. 많은 수의 작은 변경으로 인해 클러스터 자체를 사용할 수 없게 될 수 있기 때문에 기존 코드와 기능을 제자리에 유지하면서 작은 변경을 수행할 방법을 찾아야 한다. 그리고 상황에 따라 사용할 수 있는 기술이 다르다. 그래서 이 책에서는 이전 버전과 호환되는 변환을 어떻게 하는지 다뤄주고 있다.
이 책을 통해 대상 독자는 이제 최신 인프라 플랫폼의 동적 특성을 활용하고 애자일 엔지니어링 실행 방법에서 비롯된 테스트와 일관성에 대한 핵심 내용을 구현할 수 있게 되었다. 시스템을 지속적으로 개선하고, 실패를 학습과 개선의 기회로 활용할 수 있다는 높은 수준의 확신도 갖게 될 것이다.
나는 인프라를 구축, 관리하거나 코드를 작성하는 사람이 아니라 사용자에 있기 때문에 이 책의 내용을 100% 활용할 수는 없지만, 전반적인 내용에 대한 이해가 생겨 회사 업무에 더 도움이 될 것 같다. 실제로 인프라를 구축, 관리하거나 코드를 작성하는 사람이라면 그 이상으로 실용적인 책이며, 최소 3~5년 이상은 오래 두고 볼 수 있는 책이 아닐까 싶다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
댓글
댓글 쓰기