Infrastructure as Code (코드로 인프라 관리하기)

http://bookthumb.phinf.naver.net/cover/117/143/11714383.jpg

AWS와 같은 클라우드가 대중화되면서 서버라는 자원에 누구나 쉽게 접근할 수 있게 되었다. 이제 막 웹 개발을 시작한 사람이라도 AWS의 (그렇게 친절하진 않은) GUI를 통해 서버를 생성하고 나만의 웹페이지를 가질 수 있다. 나 또한 그렇게 웹 개발을 시작했고, 클라우드 환경에서 여러 프로젝트를 수행하면서 이런 생각을 했다.

이제 서버나 네트워크와 같은 인프라를 신경쓰지 않고 어플리케이션 개발에만 집중할 수 있는 시대가 되었구나.

이런 착각은 데이터 엔지니어라는 직함으로 취업하자마자 혹독한 시련과 마주하며 산산조각이 나고 말았다. 내가 맡은 일 중 하나는 20여대의 AWS 인스턴스로 이루어진 데이터 클러스터의 오픈소스 버전 업그레이드, 장비 교체, 에러 대응이었고 또 하나는 API서버 개발, 배포 및 운영이었다.

내가 주로 저지른 실수들은 다음과 같았다.

  1. 서버 교체 시 AWS 인스턴스에 Block Storage를 Mount 하는것을 깜빡하여 용량 부족으로 인스턴스가 죽음
  2. 방화벽 포트 관리 실수로 인스턴스간 네트워크 오류 발생
  3. 약 10여대의 인스턴스로 이루어진 분산 스토리지 시스템을 SSH로 일일이 접속하여 배포하는 과정에서 주요 스텝을 빠뜨려 여러번 다시 배포
  4. API 서버를 Dev, Staging, Production 등의 환경으로 나누어 셋팅 후 각 환경별로 다른 설정을 적용하여 환경마다 서버가 다르게 동작

이런 실수들은 한 번 발생하면 팀의 개발 생산성이 크게 저하되고 개인적인 사기도 떨어져서 많은 악영향을 끼쳤다. 끔찍한 경험들을 하고 나서야 소위 DevOps라는 철학이 이제 모든 개발자들이 기본적으로 갖춰야 할 덕목이라는 생각이 들었다.

마음은 먹었지만서도 막상 무엇부터 해야 할지는 정말 막막하다. 대충 떠올려봐도 해야 할 것들이 정말 많다. 서버 생성, 패키지 설치, 네트워크 설정, 배포 자동화, 무중단 배포, 오토 스케일링 등등… 가장 첫 단계인 서버 생성부터 자동화하고자 클라우드 서비스의 SDK나 Rest API 를 살펴보지만 수많은 파라미터들과 이해하기 힘든 옵션들로 인해 자신감을 잃고 일단 기존 방식대로 하면서 조금씩 배워나가보자라고 미뤄두고 다신 꺼내보지 않게 된다.

바로 이 때 이 책이 큰 도움이 되었다.

우선 첫 챕터부터 피를 토하는 심정으로 인프라 관리 자동화의 필요성을 역설하여 이 작업의 중요성에 대한 확신을 갖게 된다. 친숙하게 이용했던 AWS, Azure의 GUI를 점점 멀리하고 SDK, API를 이용한 서버 생성 및 관리를 당연시 여김으로써 인프라 관리의 첫 관문을 넘을 수 있게 해준다.

두번째로는 인프라 관리 자동화의 여러 측면을 조명해줌으로써 내가 처한 환경에서 선택 가능한 옵션을 고민할 수 있게 도와준다. 이 책에서 동적 인프라 관리를 위해 강조하는 것 중 하나가 서버 이용자가 직접 서버를 생성, 운영 및 제거 할 수 있는 셀프서비스인데 나의 현 직장에서는 인프라 담당자가 따로 있어서 불가능한 부분이었다. 하지만 컨테이너 가상화 기술을 이용하면 기존의 할당받은 서버에서도 셀프 서비스형 인프라 관리를 할 수 있다는 점을 확인하고 시도해볼 수 있었다.

세번째로 특정 도구에 종속되지 않고 개념적인 접근을 취하면서 다양한 도구들을 소개해준다. 이 부분은 바로 실전에 적용할 예를 찾는 사람에게는 단점이 될 수도 있다. 하지만 현재 상황이 급하지 않고 차근차근 인프라 관리의 개념을 익혀가는 나에겐 더 유익한 부분이었다. 추후 실제 업무에 적용할 때는 여기 소개된 다양한 도구들의 장단점을 직접 살펴보고 신중하게 결정할 수 있게 되었다.

개인적 취향의 문제지만 용어들이 지나치게 번역되었다는 점은 가독성을 다소 떨어뜨리지 않았나 하는 생각은 든다. 부하 분산기(로드 밸런서), 감시(모니터링) 등 개발자들이 일상적으로 받아들이는 단어들이 생소한 한글로 번역되어서 읽는 속도가 떨어진다는 생각은 들었다. (물론 읽다보면 적응된다.)

책을 읽고 나면 그제서야 시작이다. 이제 왜 인프라 자동화가 필요하고 완성도 높은 자동화를 위해서 뭘 해야 하는지도 감이 온다. 위에서 겪은 어처구니없는 실수를 줄이기 위해서는 실제로 사용할 도구들을 선정하고 학습하여 현업에 도입해야 한다. 첫번째로 나는 도커를 선택했다. 이제 도커 설치하러 갑니다.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.