서평

[나는 리뷰어다] 코드로 인프라 관리하기 (2판)

작삼심일 2022. 9. 27. 07:16

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

코드로 인프라 관리하기 (2판) 도서 표지

소프트웨어 개발을 하다 보면, 제품이나 개발 프로세스에서 빠지지 않는 부분이 바로 인프라에 대한 내용입니다. 특히 빠르게 변하는 소프트웨어의 특성으로 인해 지속적인 통합(Continuous Integration)과 지속적인 배포(Continuous Deploy)가 강조되는 만큼 이를 구현하기 위해서는 인프라의 도움이 절실한 상황입니다. 하지만 소프트웨어에 요구되는 빠른 변화는 인프라에게도 동일하게 적용됩니다. 빠르게 변하는 인프라에 대한 요구사항을 주먹구구식으로 대응할 수 없습니다. 이에 따라 인프라 자체도 코드 활용할 수 있다면 자체적인 버전 관리를 통해 안정적으로 쌓아 올릴 수 있고, 적절한 모듈화를 통해 확장성과 재사용성마저 증가시킬 수 있습니다. <코드로 인프라 관리하기>는 어떻게 하면 인프라를 코드로 관리할 수 있는가에 대해 설명합니다.

이 책에서는 코드로 인프라를 관리해야 하는 이유가 바로 클라우드 시대로의 변화에 있다고 합니다. 과거의 인프라는 엄격한 변경 관리 프로세스를 통해 가능한 안정적인 상태를 벗어나지 않으려고 했습니다. 하지만 클라우드 시대로 변하게 되면서 인프라는 클라우드 속에 가상화되어 원하면 언제든 몇개의 명령어로 손쉽게 불러올 수 있게 되었습니다. 더 이상 엄격한 관리로는 통제되지 않는 상태가 되었습니다. 빠르게 변할 수 있는 동적 인프라를 관리하기 위해 코드형 인프라를 적용하면 다음과 같은 이점이 있습니다.

  • IT 인프라로 신속한 배포 간능
  • 인프라 변경에 따른 노력과 위험 감소
  • 인프라 사용자에게 필요한 리소스 지원
  • 개발,운영, 관리 간에 공통 도구 제공
  • 거버넌스, 보안, 규정 준수 제어를 시각화
  • 장애 해결과 문제 분석 속도 향상

코드형 인프라는 소프트웨어와 동일한 성격을 갖고 있습니다. 따라서 소프트웨어를 개발하는 것처럼 코드형 인프라는 모든 것을 코드로 정의해야 합니다. 또한 CI/CD에서 이야기하는 것과 같이 지속적인 테스트와 전달 과정이 필요합니다. 마지막으로 시스템을 가능한 작고 간단하게 빌드해야 합니다.

이 책에서 특히 인상깊었던 부분은 코드형 인프라 반대론자들에 대한 반격(?)입니다. 개발 프로세스에 대한 제언들은 "자동화가 필요할 정도로 변경이 잦지 않다", "그런 것은 우리에겐 시기상조다", "그것을 적용하기엔 우리는 너무 바쁘다"와 같은 핑계로 도입을 미루고 있습니다. 신기하게도 이러한 것들은 코드형 인프라를 적용하지 않으려는 반대론자들도 동일한 맥락으로 도입을 미루고 있습니다. 저자는 이런 반대론자들의 주장을 자동화를 사용할 수 있는 방법과 사용해야 하는 방법에 대한 오해에서 비롯된다고 말합니다.

먼저 "자동화가 필요할 정도로 변경이 잦지 않다"에 대해서는 결국 대부분의 시스템은 폐기되기 직전까지 지속적인 변경이 필요합니다. "변경이 잦지 않다"라고 말한 것은 몇 번의 시스템 변경이 있었지만, 이는 일시적이고 임시적인 내용이라 불편을 감수하면서 며칠 밤낮을 고생해 수정했어도 감수해야 한다는 이야기입니다. 앞서 이야기한 것처럼 인프라가 지속적으로 클라우드로 넘어가고 있는 시점에서 안정적인 시스템을 구축하기 위해서는 지속적인 변경에서 비롯됩니다. 따라서 변경이 별로 없다는 시스템의 인프라 역시 코드형 인프라 구축은 필요합니다.

다음으로 코드형 인프라 구축은 시간이 오래 걸리기 때문에 시스템을 구축한 다음 자동화를 도입해야 한다는 주장에 대해서 이 책은 다음과 같이 말합니다. 시스템의 구축 단계에서부터 자동화를 도입하지 않으면, 이미 구축된 시스템에 대해 자동화를 적용하는 것이 훨씬 어렵습니다. 또한 자동화 자체는 거추장 스러운 것이 아니라 오히려 더 빠른 개발을 도와주는 편리한 도구에 가깝습니다. 자동화를 통해 지속적인 테스트와 배포를 통해 훨씬 안정적인 프로세스를 만들 수도 있습니다.

마지막으로 빠르게 개발해야 하는 시스템의 경우 자동화 도입은 품질은 높일 수 있지만, 개발 속도가 늦춰진다는 오해에 대해서 이 책은 이렇게 말합니다. 속도와 품질은 서로 트레이드 오프 관계에 있는 것이 아닙니다. 빠르게 개발하기 위해서는 높은 품질을 유지할 수 있어야 하고, 반대로 높은 품질을 유지하기 위해선 빠른 변경이 필요합니다. 속도를 높이기 위해 품질을 포기하게 된다면, 포기한 품질에서 비롯된 기술 부채가 점차 누적되어 결국 개발 속도가 느려지게 되는 문제를 겪게 될 것입니다. 반대로 품질을 위해 속도를 포기하게 된다면 마감일에 대한 압박으로 인해 결국 어느 순간에는 속도가 필요하게 되어 품질을 포기하려 하게 됩니다.

지속적이고 안정적인 개발을 위해서는 적절한 인프라를 활용해야 합니다. 웹, 앱, 딥러닝, 자율주행 등 수 많은 도메인의 시스템들 역시 다양한 형태의 인프라를 정의하고 있습니다. <코드로 인프라 관리하기>는 특정 도메인에만 적용되는 특수 도구가 아닌 범용적으로 수많은 도메인에서 필요로 하는 안정적인 인프라 관리 방법에 대한 책입니다. 빠르게 변화하는 클라우드 시대에 기반이 되는 안정적인 인프라 도입을 위해 개발자라면 한번쯤 읽어 볼만한 책이라 생각됩니다.

728x90
반응형