◈ 이 책의 대상 독자 ◈
사용자 대상 웹 애플리케이션, API, 백엔드 서비스 같은 분산 서비스를 운영 중이거나 운영할 계획이 있는 개발자, 아키텍트, 서비스 운영자를 대상으로 한다. 최종 사용자에게 고가용성 서비스를 제공할 때 이 책이 도움이 될 것이다. 혹은 조직 내 많은 개발 팀에게 인프라와 로그 관리, 모니터링, 컨테이너 오케스트레이션 등의 지원 요소를 제공하는 플랫폼 엔지니어링 팀의 일원이라면, 이 책은 앱을 복원력 있고 안전하고 관찰 가능하게 만들 수 있으면서 새로운 기능을 출시하는 데 따르는 위험을 줄일 수 있는 도구를 사용자에게 제공하는 방법을 보여준다.
이스티오를 테스트 또는 스테이징 환경에서 사용하고 있지만 작동 원리에 대해 많이 알지 못한다면, 이 책은 이스티오의 구성 요소를 명확히 이해하는 데 도움이 될 것이다. 특히 후반부에서는 조직에서 서비스 메시를 어떻게 확장하는지, 동작이 예상과 다를 때 어떻게 트러블 슈팅하는지, 어떻게 회사의 필요에 맞게 커스터마이징하는지를 보여준다.
지난 3년간 현장에서 쌓은 경험을 이 책에 녹여내기 위해 심혈을 기울였기 때문에 이스티오 전문가인 독자도 이 책을 유용하게 활용할 수 있을 것이다. 컨테이너 구축이 처음이거나 쿠버네티스 디플로이먼트(deployment), 파드, 서비스가 무엇인지 잘 모른다면, 이 책이 아직 적합하지 않을 수 있다. 다행히 처음 시작하는 데 도움이 되는 자료가 많이 있다. 여기서는 마르코 룩샤(Marko Lukša)의 『쿠버네티스 인 액션』(에이콘, 2020)을 강력히 추천한다. 이 책은 쿠버네티스에 대한 빈틈없는 입문서일 뿐 아니라 흥미로운 내용을 담고 있다. 쿠버네티스의 기초와 관련 리소스, 쿠버네티스 컨트롤러의 동작 방식까지 이해하고 나면 이 책으로 다시 돌아와 이스티오 서비스 메시를 깊이 파고들 수 있을 것이다.
뿐만 아니라 네트워킹에 대한 기본적인 이해도 필요하다. 여기서 ‘기본적인 이해’란 말 그대로 기초적인 수준의 지식을 말한다. OSI 모델의 네트워크 계층(3계층)과 전송 계층(4계층)에 친숙하고 이 계층들이 애플리케이션 계층(7계층)과 무엇이 다른지 잘 알고 있다면, 이 책을 읽을 준비가 된 것이다.
◈ 이 책의 구성 ◈
총 4개 부, 14개 장으로 구성돼 있다. 1부는 서비스 메시의 개념을 소개하고, 이스티오가 서비스 메시를 어떻게 구현하는지 설명한다. 1부에 속하는 3개 장에서는 이스티오의 아키텍처를 알아보고, 엔보이가 그 안에서 어떤 역할을 하고 이스티오를 사용했을 때 조직이 어떤 이점을 얻을 수 있는지 알아본다.
1장에서는 이스티오의 장점과 서비스 메시 도입이 조직에 가져다줄 수 있는 가치를 소개한다.
2장은 쿠버네티스 클러스터에 이스티오를 설치하는 실습 튜토리얼을 보여준다. 첫 번째 애플리케이션을 배포하고 메시에 통합한 후, 이를 이스티오의 커스텀 리소스로 설정해본다. 또한 데모 애플리케이션을 사용해 이스티오의 기본 기능을 개괄적으로 설명하고 트래픽 관리, 관찰 가능성, 보안을 다룬다.
3장은 엔보이를 집중해 살펴본다. 엔보이가 어떻게 등장했는지, 어떤 문제를 해결하는지, 서비스 메시 아키텍처에서 어떤 역할을 하는지 등을 설명한다.
2부에서는 이스티오를 깊이 있게 다룬다. 실용적인 예제로 초점을 맞춰 ‘클러스터로 들어오는 트래픽을 보호하는 방법은 무엇인가?’, ‘서비스를 더 복원력 있게 만드는 방법은 무엇인가?’, ‘서비스 프록시가 생성하는 텔레메트리를 사용해 시스템을 관찰 가능하게 만드는 방법은 무엇인가?’ 등의 주요 운영 관련 질문에 답해본다. 2부는 6개 장으로 구성돼 있다.
4장은 이스티오 인그레스 게이트웨이를 사용해 퍼블릭 네트워크에서 서비스로 트래픽을 안전하게 라우팅하는 방법을 설명한다(일명 north-south 트래픽).
5장은 트래픽을 클러스터에 허용한 이후의 과정을 다루며, VirtualService와 DestinationRule을 사용해 트래픽을 세밀하게 라우팅하는 방법을 보여준다. 세밀한 트래픽 라우팅 덕분에 새 소프트웨어를 릴리스할 때 위험을 줄여주는 복잡한 배포 패턴을 사용할 수 있다.
6장에서는 애플리케이션 팀에게 이스티오가 어떤 이점이 있는지 살펴본다. 재시도, 회로 차단, 리전(region) 간 로드 밸런싱, 지역성 인식 로드 밸런싱 기능을 서비스 메시에서 구현해 서비스를 견고하게 만드는 방법을 설명한다.
7장에서는 이스티오가 메트릭, 트레이싱, 로그를 생성해 서비스를 관찰 가능하게 만드는 방법을 설명한다. 여기서는 서비스 프록시가 생성하는 메트릭, 메트릭이 기록하는 정보, 기록하는 정보를 커스터마이징하는 방법을 자세히 살펴본다.
8장에서는 수집된 데이터를 이해하는 데 도움이 되는 텔레메트리 시각화 도구의 사용법을 다룬다. 이를 위해 메트릭을 프로메테우스(Prometheus)로 수집하고 그라파나(Grafana)로 시각화한다. 또한 서비스들을 거치는 요청의 트레이스를 예거(Jaeger)로 연결하고, 키알리(Kiali)가 이 정보들을 어떻게 결합해 메시 안의 서비스 문제 해결을 간편하게 만드는지 보여준다.
9장에서는 이스티오가 서비스 간 트래픽을 어떻게 보호하는지, 서비스가 어떻게 자신의 ID를 부여받는지, 그 ID를 어떻게 사용해 접근 제어를 구현하고 잠재적인 공격 범위를 줄이는지를 자세히 설명한다.
3부는 서비스를 운영하는 단계에 초점을 맞췄다. 따라서 데이터 플레인에서 발생하는 문제를 해결하고 컨트롤 플레인의 안정성과 성능을 유지하는 방법을 주로 다룬다. 이 부분을 마무리하면, 이스티오의 내부 구조를 충분히 이해하게 돼서 문제를 스스로 발견하고 해결하는 능력을 갖추게 될 것이다.
10장에서는 Istioctl, 키알리 등의 도구와 수집돼 시각화된 텔레메트리를 사용해 데이터 플레인의 문제를 해결하는 방법을 보여준다.
11장에서는 이스티오의 성능에 영향을 미치는 요소들을 다루며, 이스티오를 어떻게 설정해야 컨트롤 플레인의 성능을 높일 수 있는지 보여준다. 이는 견고한 서비스 메시의 토대가 된다.
마지막으로 4부에서는 이스티오를 커스터마이징하는 방법을 소개한다. 기업들은 서로 다른 클러스터, 서로 다른 네트워크 또는 클라우드 네이티브 워크로드와 레거시 워크 로드의 혼합과 같이 다양한 환경에서 서비스를 운영하고 있다. 4부를 마치고 나면, 워크로드를 단일 메시로 통합하고 웹어셈블리를 활용해 자신만의 요구 사항에 맞게 메시의 동작을 커스터마이징하는 방법을 알게 될 것이다.
12장은 서로 다른 쿠버네티스 클러스터에서 실행 중인 워크로드를 연결하는 방법을 보여준다. 이를테면 다른 클라우드 제공자, 온프레미스(on-premise), 또는 하이브리드 클라우드에서 실행되는 클러스터를 연결하는 방법이다.
13장에서는 가상 머신에서 실행되는 레거시 워크로드를 메시에 통합하고 메시의 복원력과 고가용성 기능을 해당 워크로드에 확장하는 방법을 보여준다.
14장에서는 기존 엔보이 기능이나 루아 스크립트 및 웹어셈블리 코드를 사용해 이스티오의 기능을 확장하고 커스터마이징하는 방법을 설명한다.
◈ 옮긴이의 말 ◈
최근 몇 년간 서비스 메시에 대한 필요성이 크게 증가하고 있습니다. 마이크로서비스와 클라우드 네이티브 애플리케이션 시대가 도래하면서 분산 시스템은 더욱 복잡해지고 있으며, 동시에 급변하는 고객의 요구에 빠르게 대응하기 위해 애자일 방법론의 중요성도 날로 커지고 있습니다. 이러한 두 흐름이 맞물리면서 개발자의 부담을 줄이고 효과적으로 시스템을 관리할 수 있는 방법에 대한 요구가 증가하고 있으며, 그 해결책으로서 서비스 메시의 중요성이 대두됐습니다.
서비스 메시란 무엇이며, 왜 필요할까요? 마이크로서비스 아키텍처에서는 수많은 서비스가 서로 통신해야 합니다. 이 과정에서 보안, 로드 밸런싱, 모니터링 등의 과제가 생기게 되는데, 서비스 메시는 이러한 과제를 해결하는 기술입니다. 특히 서비스 메시를 사용하면 각 서비스 간의 통신을 일관되게 관리하고 제어할 수 있어 시스템의 복잡성을 크게 줄일 수 있습니다.
그렇다면 왜 여러 서비스 메시 중에서 이스티오를 선택해야 할까요? 이스티오는 서비스 메시 기술의 사실상 표준으로 자리 잡고 있습니다. 오픈소스 기술을 채택할 때 커뮤니티의 생명력은 매우 중요한 요소인데, 커뮤니티의 활동이 멈추면 오픈소스로서의 강점을 상실하기 때문입니다. 이스티오는 커뮤니티가 대단히 활발하며, IT 최전선에 있는 기업들, 예를 들어 카카오, 토스, 크래프톤 등이 채택하고 있어 신뢰할 만한 기술임을 증명하고 있습니다.
이 책의 매력은 무엇일까요? 이스티오에 대한 정보의 원천으로 공식 문서가 있지만, 대부분의 문서가 개별적인 기능만을 다루기 때문에 체계적인 학습에는 한계가 있습니다. 게다가 이러한 필요성에도 불구하고 국내에는 잘 안내된 서적이 아직 출판되지 않았습니다. 다행히도 이 책은 이스티오의 필요성과 아키텍처부터 일반적으로 다루지 않는 복잡한 사용사례에 이르기까지 다양한 내용을 이해하기 쉽게 체계적으로 설명하고 있습니다. 비록 최근 개발 중인 앰비언트 메시(ambient mesh) 같은 비교적 최신인 내용은 포함되지 않았지만, 이 기능이 아직 알파 단계에 불과하다는 점을 고려하면 큰 단점이 되지는 않을 것입니다.
이 책을 번역하면서 가장 중점을 둔 부분은 최대한 자연스럽게 읽히도록 하는 것이었습니다. 저 역시 대학 시절부터 직장인인 현재에 이르기까지 숱한 번역서를 접했는데, 그 과정에서 가장 이해하기 어려웠던 것은 원문을 그대로 옮긴 표현이었습니다. 따라서 이 책에서는 원문을 그대로 옮기기보다는 한국어에 더 가까운 표현을 사용하고자 노력했습니다. 번역 과정에서 가장 큰 어려움은 기술 용어와 개념을 정확히 전달하면서도 자연스럽게 번역하는 것이었는데, 이 과정에서 쿠버네티스 문서 한글화 가이드의 용어집을 참고했습니다. 부디 이 번역서가 ‘원서로 보는 편이 더 나은 책’이 아니길 바랍니다. 제 노력으로 독자 여러분이 좀 더 쉽게 이스티오를 이해하고 실무에 적용할 수 있다면 더 바랄 게 없습니다.