도서 리뷰 : 코드로 인프라 관리하기

nofence 2022. 10. 2. 23:06

고객의 요구 사항은 수시로 변화하면서 비즈니스 세계는 그런 고객의 요구에 부응하기 위해 동분서주하고 있다. 이런 와중에 비즈니스의 복잡성은 나날이 심화되며 이는 수시로 애플리케이션 코드의 복잡성을 가속화 하는 상황을 초래하고 있다. 하지만 여기서 그치는 것이 아니라 애플리케이션의 문제와 별개로 인프라 환경 역시 복잡다단한 변화의 중심에서 벗어날 수 없는 구조와 마주하게 되었다. 개발 환경과 스테이징 환경 그리고 프러덕션 환경으로 이어지는 일련의 환경은 끊임 없이 변경을 요구 받으며 인프라의 생명과 소멸이 반복해서 동작하는 복잡계 속에 포박되어 있는 실정이다. 

 

어떻게 하면 더 빠르게 표준화 된 절차를 통해 완벽하게 인프라를 관리할 수 있을까? 인프라의 생애주기(생성, 변경, 소멸)를 관통하는 하나의 커다란 흐름 속에서 막대한 시간과 비용의 투입 없이 효율적으로 인프라를 관리할 수 있는 방법은 없는 것일까? 이러한 고민 끝에 등장한 개념이 바로 Infrastructure as Code, 일명 IaC이다. IaC를 통해 인프라를 보다 더 효율적으로 관리하고 운영할 수 있는 토대가 마련되었고, 바야흐로 IaC가 인프라 관리의 새로운 패러다임이 되어 버렸다. 오늘은 바로 IaC에 대해 이야기하고 있는 책을 소개하고자 한다. 

 

본 서적은 2판으로서 1판이 서버 구성 자동화에 대해 다루고 있었던 것에 반해, 2판의 등장과 함께 클라우드 환경의 인프라에 대한 논의를 새롭게 이어 가는 책이라 할 수 있겠다. 

 

먼저 저자는 첫 번째 챕터에서 코드형 인프라의 의의에 대해 갈파하고 있다. IaC가 대두된 배경과 함께 이를 사용할 때 얻을 수 있는 이점 그리고 변경 최적화, IaC를 위한 세 가지 핵심 실행 방법에 대해 언설한다. 이윽고 두 번째 챕터에서 클라우드 시대 인프라의 원칙으로서 다섯 가지를 설파하고 있는데, 어찌 보면 이 원칙이야 말로 IaC를 지탱하는 근본이라고도 할 수 있겠다. IaC는 해당 원칙 위에서 토대를 갖추고 더욱 발전해 나가리라 생각한다. 이어서 세 번째 챕터와 네 번째 챕터에서 동적 인프라 플랫폼과 리소스 그리고 코드로서 인프라를 정의하는 것에 대해 저자의 식견을 엿볼 수 있었고 인프라를 코드로 정의하며 구현하기 위한 원칙을 통해 IaC의 사상과 체계를 더욱 깊게 이해할 수 있게 되었다. 

 

두 번째 파트에서 인프라 스택이라는 개념이 등장하는데, 이를 기반으로 스택 구조화에 대한 패턴과 안티 패턴의 여럿 사례를 배울 수 있고, 스택 환경 구축, 스택 인스턴스를 구성하는 실천적 케이스를 학습하게 된다. 첫 번째 파트에 연이어 IaC의 핵 심 실행 방법이 논의되고 있는데, '지속적으로 코드를 테스트하고 딜리버리 한다'는 기치 아래 이를 둘러싼 문제와 테스트 방법에 대해 심도 있는 설명이 이어진다. 또한 인프라 스택을 테스트하기 위한 보다 더 실증적인 사례를 통해 효율적인 가치를 배울 수 있는 기회가 제공된다. 

 

애플리케이션이 동작하는 환경인 런타임, 코드형 서버를 구축하기 위한 논의 그리고 서버 변경 관리에 대한 설명과 코드형 서버 이미지, 복수의 애플리케이션을 클러스터링하는 구축 방법에 대한 이야기가 무르익어 가면서 어느덧 책은 후반부를 향해 힘차게 달려가고 있다. 여기까지 도달하면서 책의 내용에 대해 온전히 이해할 수 있으면 좋으련만 IaC가 익숙치 않은 초심자들은 집중을 잃고 헤맬 수 있는 상황과 맞닥뜨릴 수도 있다고 생각한다. 하지만 이 책은 결코 한 번 읽어서 체득할 수 없으며, 곁에 두고 여러번 통독할 때만이 소기의 목적을 달성할 수 있으리라. 

 

'시스템을 작고 간단하게 빌드한다'는 핵심 실행 방법의 가치가 오롯이 전달되면서 이를 위한 설계 사상을 눈여겨보게된다. 이어서 스택 컴포넌라는 개념의 등장과 함께 이에 대한 패턴과 안티 패턴에 대한 논의가 이어지고, 스택을 컴포넌트로 사용할 때의 패턴에 대한 사례를 학습하게 된다. 

 

마지막 파트에서 인프라를 특정 환경으로 딜리버리 하기 위해 깊게 생각해 볼 거리가 주어진다. 인프라 코드를 구조화 하기 위한 방법과 코드를 딜리버리 할 때 유용한 패턴 사례, 팀 워크플로를 위한 실천적 방법 그리고 안전하게 인프라를 변경하기 위해 반드시 지켜야 하는 유용한 팁을 배우게 되며 이를 끝으로 저자는 하고 싶은 이야기를 마무리 한다. 

 

이 책은 결코 쉬운 서적이 아니다. 어떻게 보면 IaC 입문서로서 적당하지 않을 수도 있겠다. 인프라에 대한 지식이 전무한 상태에서 본 서적을 임한다면 더욱 더 난관에 빠질 수 있으리라. 그럼에도 불구하고 IaC의 원칙과 핵심 사상, 실천적 가치를 맛보고 싶은 초심자에게는 도전적인 일독을 권한다. 세간에 IaC 도구로 활용되고 있는 플랫폼은 굉장히 다양하게 포진돼 있다. 그럼에도 불구하고 저자는 특정 도구를 활용하지 않고, 가상 도구의 코드를 사용하며 범용적인 환경을 철저히 고려했고 그런 가치 아래 이 책의 유용성은 더욱 더 빛난다고 생각한다. 특정 도구를 잘 다룰 수 있는 방법을 제시한다면 그 도구에 갇히게 되겠지만 IaC의 본질을 담고 있는 핵심을, 가상 도구를 통해 여실히 드러낸 저자의 노력에 대해 박수갈채를 보낸다. 

 

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