mydrea***
2017-04-16

AWS와 같은 클라우드가 대중화되면서 서버라는 자원에 누구나 쉽게 접근할 수 있게 되었다. 이제 막 웹 개발을 시작한 사람이라도 AWS의 (그렇게 친절하진 않은) GUI를 통해 서버를 생성하고 나만의 웹페이지를 가질 수 있다. 나 또한 그렇게 웹 개발을 시작했고, 클라우드 환경에서 여러 프로젝트를 수행하면서 이런 생각을 했다.
이제 서버나 네트워크와 같은 인프라를 신경쓰지 않고 어플리케이션 개발에만 집중할 수 있는 시대가 되었구나.
이런 착각은 데이터 엔지니어라는 직함으로 취업하자마자 혹독한 시련과 마주하며 산산조각이 나고 말았다. 내가 맡은 일 중 하나는 20여대의 AWS 인스턴스로 이루어진 데이터 클러스터의 오픈소스 버전 업그레이드, 장비 교체, 에러 대응이었고 또 하나는 API서버 개발, 배포 및 운영이었다.
내가 주로 저지른 실수들은 다음과 같았다.
이런 실수들은 한 번 발생하면 팀의 개발 생산성이 크게 저하되고 개인적인 사기도 떨어져서 많은 악영향을 끼쳤다. 끔찍한 경험들을 하고 나서야 소위 DevOps라는 철학이 이제 모든 개발자들이 기본적으로 갖춰야 할 덕목이라는 생각이 들었다.
마음은 먹었지만서도 막상 무엇부터 해야 할지는 정말 막막하다. 대충 떠올려봐도 해야 할 것들이 정말 많다. 서버 생성, 패키지 설치, 네트워크 설정, 배포 자동화, 무중단 배포, 오토 스케일링 등등… 가장 첫 단계인 서버 생성부터 자동화하고자 클라우드 서비스의 SDK나 Rest API 를 살펴보지만 수많은 파라미터들과 이해하기 힘든 옵션들로 인해 자신감을 잃고 일단 기존 방식대로 하면서 조금씩 배워나가보자라고 미뤄두고 다신 꺼내보지 않게 된다.
바로 이 때 이 책이 큰 도움이 되었다.
우선 첫 챕터부터 피를 토하는 심정으로 인프라 관리 자동화의 필요성을 역설하여 이 작업의 중요성에 대한 확신을 갖게 된다. 친숙하게 이용했던 AWS, Azure의 GUI를 점점 멀리하고 SDK, API를 이용한 서버 생성 및 관리를 당연시 여김으로써 인프라 관리의 첫 관문을 넘을 수 있게 해준다.
두번째로는 인프라 관리 자동화의 여러 측면을 조명해줌으로써 내가 처한 환경에서 선택 가능한 옵션을 고민할 수 있게 도와준다. 이 책에서 동적 인프라 관리를 위해 강조하는 것 중 하나가 서버 이용자가 직접 서버를 생성, 운영 및 제거 할 수 있는 셀프서비스인데 나의 현 직장에서는 인프라 담당자가 따로 있어서 불가능한 부분이었다. 하지만 컨테이너 가상화 기술을 이용하면 기존의 할당받은 서버에서도 셀프 서비스형 인프라 관리를 할 수 있다는 점을 확인하고 시도해볼 수 있었다.
세번째로 특정 도구에 종속되지 않고 개념적인 접근을 취하면서 다양한 도구들을 소개해준다. 이 부분은 바로 실전에 적용할 예를 찾는 사람에게는 단점이 될 수도 있다. 하지만 현재 상황이 급하지 않고 차근차근 인프라 관리의 개념을 익혀가는 나에겐 더 유익한 부분이었다. 추후 실제 업무에 적용할 때는 여기 소개된 다양한 도구들의 장단점을 직접 살펴보고 신중하게 결정할 수 있게 되었다.
개인적 취향의 문제지만 용어들이 지나치게 번역되었다는 점은 가독성을 다소 떨어뜨리지 않았나 하는 생각은 든다. 부하 분산기(로드 밸런서), 감시(모니터링) 등 개발자들이 일상적으로 받아들이는 단어들이 생소한 한글로 번역되어서 읽는 속도가 떨어진다는 생각은 들었다. (물론 읽다보면 적응된다.)
책을 읽고 나면 그제서야 시작이다. 이제 왜 인프라 자동화가 필요하고 완성도 높은 자동화를 위해서 뭘 해야 하는지도 감이 온다. 위에서 겪은 어처구니없는 실수를 줄이기 위해서는 실제로 사용할 도구들을 선정하고 학습하여 현업에 도입해야 한다. 첫번째로 나는 도커를 선택했다. 이제 도커 설치하러 갑니다.