-
-
코드로 인프라 관리하기 - 효율적인 인프라 관리를 위한 자동화 방법
키프 모리스 지음, 강재준 옮김 / 한빛미디어 / 2017년 3월
평점 :
구판절판
먼저 '코드로 인프라 관리하기'를 접했을 때 책 제목에서 예전의 서버와 네트워크 관리를 위한 단순 반복 작업에 유용하고 일상 작업을 도와주는 스크립트 등을 소개하는 부류의 책이라는 선입견을 갖게 되었다. 하지만 막상 책을 읽어보니 생각했던 것과는 다른 책이었다.
아예 초반에 '이 책은 특정 스크립트 언어나 도구의 사용법을 알려주지 않는다.'라고 선언을 한다.
먼저 인프라가 필요하게 된 현재의 시대를 '클라우드 시대'라 부르고, 이전의 시기를 '철기 시대'라고 부를 정도로 책에서 부를 정도로 과거와 달라진 환경에 대한 이야기로 시작한다. 예전 '철기 시대'를 경험해봤는데, 그때는 장애가 일어나면 하드웨어에 직접적으로 모니터와 키보드, 마우스 등을 연결해서 직접 보면서 문제를 해결하고, 한 사람이 관리하는 장비들의 숫자도 그리 많은 편은 아니었다. 그러나 이제는 MS나 아마존 등이 제공하는 가상 서버, 클라우드를 이용하는 환경이 보편화 됨에 따라 관리자는 물리 하드웨어에서 벗어나게 되었다.
또한 '철기시대'의 '매우 신뢰할 수 있는 하드웨어 위에서 동작하던 신뢰할 수 없는 소프트웨어'에서 '클라우드 시대'의 '신뢰할 수 없는 하드웨어 위에서 신뢰성 있게 동작하는 소프트웨어'로 패러다임이 변하게 되었다. 이런 변화에 기존의 인프라를 관리하는 방식은 새로운 환경에 맞지 않게 된 것이다.
그러면 이제부터 새로운 환경에 어떤 방식으로 인프라를 관리해야 하는 것일까?
그 이전에도 많은 설명이 나오지만 13장에서 가장 명확하게 언급하는 새로운 방식은 "서버와 인프라에서 직접 작업하던 것에서 벗어나 간접적인 방식으로 작업하는 것"이다.
이제 인프라 담당자는 변경을 하려고 더 이상 서버에 로그인하지 않아도 된다. 아니 오히려 하면 안 된다. 도구와 정의를 변경한 후 책에서 변경 관리 파이프라인을 통해 자동적으로 변경이 서버에 적용되게 하는 것이다. 초반에는 간단한 것도 더 느리고 더 복잡한 방식으로 하는 것처럼 느껴질 수 있지만, 코드로서의 인프라에 익숙해지면 일상적이고 반복적인 작업에 드는 시간을 줄일 수 있고 줄어든 시간을 예외 상황, 문제를 처리하면서, 인프라를 개선하는 데 시간을 사용할 수 있다.
즉 코드로서의 인프라를 채택하면 일상적인 작업을 실행하는 데는 시간이 적게 들이고, 시스템 자체를 개선하는 데 더 많은 시간을 들일 수 있다.
이 책은 스크립트, 코딩이나 코드에 대한 이야기가 아니라이렇게 인프라팀, 부서의 패러다임과 효율성을 바꿔놓을 코드로서의 인프라를 적용하기 위한 전반적인 부분을 언급하고 설명한 책이다.
우리나라에서도 서버 관리자, 시스템 엔지니어등 서버나 인프라를 관리하는 분들은 개발자와는 다른 프로세스로 일을 하는 경우가 많았으나, 책을 보면 이제 인프라 관리자, 부서도 개발자, 개발팀과 거의 같은 지식과 프로세스를 갖춰야 하는 상황이 되었다. 관리용 스크립트를 버전관리시스템(VCS)를 쓰면서 관리했던 일은 드물었을테지만, 코드로서의 인프라에서는 핵심인 코드를 버전관리시스템(VCS)를 통해서 관리하고 해당 코드는 개발 프로세스와 동일하게 테스트, 자동 배포, 지속적 통합(CI)까지 책에서는 요구한다. 개발자를 위한 서적에서 언급되는 클린 코드, 기술적 부채, 애자일등도 언급되어 코드로서의 인프라에서 요구되는 코드의 수준이 상당한 수준이며 매우 중요한 핵심임을 알 수 있다.
이런 과정을 거친 인프라는 기존의 견고함 수준을 넘어 충격을 받으면 더 강해지는 반취약성(Antifragility)을 갖을 수 있는 수준까지 올라오게 될 것이다.
앞서 이야기 한대로 책 제목에 코드가 언급되어 상당한 양의 소스 코드가 나오게 될 것으로 예상하였으나, 코드가 나오는 예제는 테스트를 언급하며 테스트관련 코드가 다량으로 나오는 11장 전까지는 간단한 루비 코드 예제 2개에 지나지 않는다. 책 마지막에따라잡기 힘들 정도로 세상이 빨리 변하고 있있는 상황에서 모든 주제의 모든 부분을 다루는 것은 간단한 일이 아니며 특히 특정 도구로 구현한 기술적인 세부 사항까지 깊게 들어가는 것은 더욱 어려운 일이라고 언급한 부분을 보면, 오히려 플랫폼과 특정 기술에 국한된 부분은 과감히 생략하였기에 코드로서의 인프라를 전반적으로 볼 수 있었다는 생각이 들었다. 다만 이 책은 시작이고 앞으로의 방향을 안내해주는 안내서의 역활인데, 모든 것을 한 권의 책에 담겨있을거라고 기대한다면 실망할 수 있다는 생각이 든다.
