이 책은 최근에 참여하고 있는 인프라 스터디에서 교재로 사용하면서 읽어보았다. 클라우드와 컨테이너가 대세가 되면서 인프라 관리에 대한 양상도 최근 몇 년간 많이 달라졌는데 그동안 소프트웨어 개발에 쌓인 경험이 인프라 쪽에 많이 적용되고 있다고 생각하는 편이다. 그래서인지 이런 류의 책은 책의 대상 독자가 이전에 인프라를 관리하는 사람과 개발자 두 가지 부류로 나누어져 있는 것 같다. 코드로 인프라 관리하기를 볼 때도 비슷한 느낌을 받았는데 인프라스트럭처에서 소프트웨어 개발 방법을 적용하는 부분은 너무 당연한 내용처럼 느껴지는데 이 책도 그런 부분은 비슷하다고 느껴진다.
전체적인 느낌을 얘기하자면 코드로 인프라 관리하기보다 훨씬 못하다. 사실 전체적으로 무슨 얘기를 하고 싶은 건지 잘 모르겠는데 책의 제목이나 내용을 보았을 때 특정 기술을 다룬다기보다는 클라우드 기반으로 바뀐 인프라스트럭처의 개념 혹은 앞으로 발전해야 하는 개념을 설명하고 싶어하지만 독자들이 특정 도구가 클라우드 네이티브라고 생각하지 않도록 특정 도구나 기술은 최대한 언급하지 않고 추상화된 개념만 설명하고 싶었던 것 같다.
하지만 너무 추상적인 개념만 얘기하다 보니 너무 뻔한 얘기처럼 들리고 핵심이 무엇인지 이해하기가 어렵고 내용이 빙빙 도는 느낌이다. 차라리 구체적인 예시와 함께 설명하는 게 이해가 더 좋지 않았겠나 생각하고 다 읽어보아도 "그래서 클라우드 네이티브 인프라스트럭처가 뭔데?"라는 궁금증만 남았다. 구체적인 예시를 제시하지 않을 거면 Twelve-Factor app처럼 개념이라도 구체적으로 얘기해 주면 좋은데 뻔한 설명이 많아서 나한테는 많이 도움은 되지 않았다.
크게 보면 클라우드 네이티브 인프라스트럭처가 무엇인지를 설명하는데 이는 Infrastructure as Code의 개념보다 하나 더 나아간 Infrastructure as Software의 개념으로 설명하고 있다. 내가 이해한 Infrastructure as Software는 Terraform으로 인프라를 관리하면서 서버와의 상태를 계속 맞춰주고 관리하는 소프트웨어가 있거나 Ansible Tower, Kubernetes와 비슷하게 느껴졌다. 특히 Kubernetes가 인프라 자체를 다 관리하진 않지만, 책을 읽다 보면 Kubernetes가 가장 Infrastructure as Software 개념과 맞아 보인다.
클라우드 네이티브 인프라스트럭처는 클라우드 네이티브 애플리케이션을 효과적으로 실행하기 위해 반드시 필요하다.
그리고 클라우드 네이티브 인프라스트럭처를 구성한다고 끝나는 것은 아니고 거기서 동작하는 애플리케이션도 클라우드 네이티브 애플리케이션이어야 한다고 하는데 클라우드 네이티브 애플리케이션의 설명은 더더욱 무슨 말인지 잘 모르겠다. 다른 애플리케이션과 클라우드 네이티브 애플리케이션이 정확히 어떻게 다른지 잘 이해를 못 했다.
클라우드 네이티브 애플리케이션은 플랫폼에서 실행되도록 설계되었으며, 이를 기반으로 회복성, 애자일성, 운영성, 관측 가능성을 갖추도록 설계되었다. 회복성(resiliency)은 장애를 막아내려 애쓰기보다 포용하며, 플랫폼에서 수행되는 동적 특성을 활용한다. 애자일성(agility)은 신속한 배포와 빠른 반복을 가능하게 한다. 운영성(operability)은 외부 프로세스와 모니터링 시스템에 의존하는 대신 애플리케이션 내에서 수명주기를 제어한다. 관측 가능성(observability)은 애플리케이션 상태에 대한 정보 조회 기능을 제공한다.
개인적으로 "클라우드 네이티브"라는 용어를 좋아해서 기대하고 읽었는데 약간은 실망했다. 물론 클라우드에서 인프라스트럭처와 애플리케이션을 관리하려면 어떻게 접근해야 하는지 전체적인 접근을 다루고 있어서 가볍게 읽는 정도로는 괜찮을 수도 있겠다.
Comments