Back
Featured image of post [책] Istio in Action 리뷰

[책] Istio in Action 리뷰

시작하며

저는 데브옵스 엔지니어로 현재(2022년 9월)의 회사에 입사한 후, 기존에 막연하게 궁금증을 가져왔던 Istio라는 제품을 주로 담당하게 됐습니다.

공식 문서와 릴리즈 노트 위주로 Istio를 공부하던 중 팀원분께 Istio in Action이라는 책을 추천받게 됐고, 이 책을 통해 조금 두루뭉실했던 이해와 삽질을 바탕으로 했던 판단들이 좀 더 분명해질 수 있었던 것 같습니다.

그 동안은 지루함으로 인해 책을 다소 멀리 하고 짧은 아티클들을 위주로 학습을 해온 반면 올해 제 목표 중 하나는 을 통해 좀 더 개념을 잘 정리하고 깊이 있게 공부를 해나가는 것이었습니다. 이 책은 그런 저의 목표에 다행히 잘 부합해줬던 것 같고 정말 간단히 리뷰를 해보려합니다.

책에 담긴 내용 간단히 정리

책에 담겨있던 내용들과 함께 제 개인적인 견해, 선호를 담아 간단히 정리해보겠습니다 :)

  • 서비스 메쉬란 무엇인지 Istio는 무엇인지에 대한 이해를 돕습니다.
    • 사실 Istio 관련 작업을 진행해오면서도 서비스 메쉬라는 개념이 도대체 무엇인가 의문이었습니다.
    • 이 책에 서비스 메쉬라는 이름의 유래나 그 정의가 잘 소개되어있는지는 모르겠는데 Istio가 뭘 해주는 녀석인지는 상세히 설명된 듯 합니다.
    • 궁금했던 서비스 메쉬에 대해 따로 알아본 내용을 정리해보자면
      • 우선 그 이름의 유래가 궁금했는데 네트워크 형태가 그물망인 메쉬 네트워크에서 유래되어 서비스 간의 통신이 메쉬 네트워크 형태를 띄기 떄문에 서비스 메쉬라고 이름이 붙은 듯 합니다.
      • 네트워크가 그물망 형태를 갖는다는 이유는 프록시와 같은 애들에게 각 서비스들의 요청, 응답이 다 전달되는데 이떄 하나의 Gateway에 의존하기보다는 그물망처럼 프록시들 스스로가 자신이 어떤 로직을 수행한 후 어디로 요청을 전달해야하는지를 인지하기 때문입니다.
      • 프록시가 모든 서비스들에게 붙다보니 공통된 기능을 인프라 레벨에서 수행할 수 있습니다.
  • 서비스마다 공통적으로 필요한 기능이면서 각 서비스들이 해당 기능을 개별적으로 개발할 필요 없이 인프라 레벨에서 공통으로 지원할 수 있는 기능은 무엇이 있는지 알려줍니다.
    • 인증, 인가, timeout, retry, circuit breaker, rate limiting 등이 있습니다.
    • 해당 기능들을 애플리케이션 내부에서 각각 구현하면 어떤 단점들이 있는지, 인프라 레벨에서 지원하면 어떤 장점들이 있는지 잘 소개되어 있습니다.
    • (개인적 의견) 그렇다고해서 Istio로 그런 것을 지원하는 것만이 옳은 선택지다라고는 생각하지 않습니다… 현실적으로 개발 단계에서 해당 기능들을 구현하는 게 더 간단할 수도 있고, 사소하거나 간단한 기능일 수도 있는 부분들을 릴리즈가 빠른 Istio에게 맡기는 것이 옳을지는 갸우뚱입니다. Dev와 Ops가 어우러질 수 있는 시대라고는하나 Istio의 기능에 기대게 되는 순간 그 기능을 테스트해보기 위해서는 Istio가 지원되는 테스트 환경에서 테스트를 진행해봐야할 것이고, 이 경우 보통의 개발자들에게는 번거로움이 될 수 있다고 생각합니다.
  • Ingress나 k8s의 기본 Service 리소스만으로는 왜 부족한지, 왜 Istio의 Gateway, VirtualService, DestinationRule 등의 리소스가 필요한지 설명해줍니다.
    • VirtualService와 DestinationRule을 이용하 카나리 배포를 손 쉽게 이용할 수도 있고, 앞서 언급한 timeout, retry, circuit breaker의 기능도 인프라 레벨에서 지원이 가능합니다.
  • Envoy의 역할과 xDS API에 대해 설명해줍니다.
    • 사실 Istio는 Envoy를 추상적이고 선언적으로 관리하게 해주는 도구일 뿐이지 않나 싶습니다.
    • 그래서 Envoy라는 애를 잘 이해해야하는데 Envoy가 뭘 하는 애인지, 어떻게 설정할 수 있고 어떻게 설정을 확인할 수 있는지 잘 설명해줍니다.
  • 트러블 슈팅 팁들을 알려줍니다!
    • 이 부분은 정말 어디서도 찾아보기 힘든 내용이었던 것 같고 실제 트러블슈팅 시에 필요한 개념을 잡는 데에 도움이 많이 됐던 것 같습니다.
    • 디버깅 로그를 켜는 법, 그것을 해석하는 법, SNI 이름을 해석하는 법, 과부하의 원인이 될 수 있는 점, 컨트롤 플레인이 동작하지 못할 때 발생할 수 있는 현상 등을 알려줍니다.
    • (제가 개인적으로 트러블 슈팅을 좋아하기도 합니다.)
  • VM을 우리 Service Registry에 포함시켜 Istio를 구성하는 방법, 다양한 모델의 Multi Cluster을 이용하는 법 등을 설명해줍니다.
    • VM 관련된 내용은 그닥 해당 사항이 없을 듯하여 슥슥 넘겼고, 추후에 제가 Istio Multi Cluster을 이용하게 될 수도 있어 흥미로웠습니다.
  • Istio를 설치하는 다양한 방법에 대해 소개하고, 주관적이면서도 현실적인 추천안을 제시해줍니다.
    • Helm으로 Istio를 설치하는 경우는 어떠한지, 아예 수동으로 따로 설치하는 것은 어떤지, Istioctl을 이용하면 어떤지, control plane과 data plane을 따로 관리하는 방식은 어떤지 등을 설명해줍니다. 이런 내용을 잘 정리해서 설명하는 자료는 거의 찾아보기 힘들었던 것 같습니다.
  • 기본적으로 Istio가 제공하는 선언적인 API들 외에 Lua Script나 Wasm을 통해 Envoy의 기능을 확장하는 방법을 알려줍니다.

마치며

2022년 독서 현황
2022년 독서 현황

“북적북적"이라는 앱을 통해 캡쳐한 저의 2022년 독서 상태입니다. 앞으로 약 2달이 남았는데 남은 2달 동안 한 권을 또 독파해 올해에 총 3권을 읽어보는 게 소박한 목표입니다. 소박하지만 이렇게 점차 늘려가다보면 나중엔 속도도 빨라지고 지식의 양도 복리처럼 늘어나있기를 기대해봅니다.

미래에 누군가 제게 “신입 엔지니어 시절에 주로 뭐 했냐” 묻는다면 이제는 Istio를 빼놓을 수 없을 듯합니다. 😊

Istio의 개념이 궁금은 하지만 직접 다뤄보긴 부담스러운 분들께서는 한 번 진득히 읽어보시면 좋을 듯하고, Istio를 살짝 사용은 해보고있는데 개념이 잘 정리되어있지 않아 한 번 정리를 원하시는 분들은 슥슥 읽어보시면 좋을 듯합니다. 그럼 이로서 Istio in Action의 리뷰를 마치겠습니다.

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Hugo로 만듦
JimmyStack 테마 사용 중