828. 서비스 메시 (Service Mesh) - 마이크로서비스 간 통신/보안 인프라 추상화
핵심 인사이트: 프로그램을 100개의 작은 조각(마이크로서비스, MSA)으로 쪼개서 컨테이너로 띄웠다. 이제 이 100마리가 서로 수만 번의 API 통신(East-West)을 주고받아야 한다. 그런데 중간에 패킷이 사라지면 누가 다시 보내지? A가 뻗으면 B로 어떻게 우회하지? 통신은 다 암호화(HTTPS)해야 하지 않나? 이 통신 로직(재전송, 암호화, 로드밸런싱)을 개발자가 100개의 프로그램 코드(Java, Python)에 일일이 다 짜 넣어야 한다면 개발자들은 미쳐버릴 것이다. "야! 개발자는 비즈니스 로직(장바구니, 결제) 코드만 짜! 통신하고 암호화하는 그 귀찮은 짓은 전부 네트워크 인프라 바닥에 거미줄(Mesh)처럼 깔아놓은 보이지 않는 요원들이 다 알아서 해줄게!" 이것이 서비스 메시의 혁명이다.
Ⅰ. 마이크로서비스 아키텍처(MSA)의 통신 지옥
- 과거 통짜(Monolithic) 프로그램은 함수끼리 메모리 안에서 호출하니까 0.0001초면 통신이 끝났고 에러도 없었습니다.
- 네트워크의 오류 (Fallacies of distributed computing): 프로그램이 100개로 쪼개져서 랜선을 타고 통신하는 순간, 네트워크는 끊길 수도 있고, 지연(Latency)될 수도 있으며, 해킹당할 수도 있는 **'극도로 불안정한 지뢰밭'**으로 변합니다.
Ⅱ. 서비스 메시 (Service Mesh)의 개념과 목표 🌟
- 개념: 수많은 마이크로서비스들이 서로 통신(Service-to-Service)할 때 필요한 라우팅, 로드밸런싱, 트래픽 제어, 암호화(mTLS), 모니터링 등의 복잡한 네트워크 통제 기능을, 애플리케이션 코드에서 완전히 분리(추상화)하여 인프라(네트워크 계층) 단에서 투명하게 100% 대신 처리해 주는 전용 인프라 소프트웨어 덮개망입니다.
- 목표: "개발자는 코딩만 해라. 통신망 지연, 재전송(Retry), 서킷 브레이커(차단기)는 인프라가 다 알아서 할게."
Ⅲ. 어떻게 애플리케이션 몰래 통신을 제어하는가? (핵심 구조) 🌟
서비스 메시는 컨테이너 시스템을 두 개의 세상으로 완벽하게 분리합니다.
1. 데이터 평면 (Data Plane) - 사이드카 프록시 (Sidecar) 🌟
- 가장 중요한 마법입니다. 개발자가 만든 [결제 컨테이너] 안에는 결제 앱만 돌지 않습니다. 서비스 메시가 몰래 그 옆방에 '사이드카 프록시(Envoy Proxy 등, 830번 문서)'라는 작고 빠른 대리인(요원) 컨테이너를 몰래 하나 찰싹 붙여서 같이 띄웁니다.
- [결제 앱]이 옆에 있는 [로그인 앱]에 데이터를 쏠 때, 데이터는 랜선으로 바로 나가지 않습니다. 무조건 자기 옆에 찰싹 붙어있는 [결제 사이드카 요원]의 입으로 들어갑니다.
- 이 사이드카 요원이 데이터를 암호화(TLS)하고, 목적지 주소를 찾아서, 저 멀리 있는 [로그인 사이드카 요원]에게 냅다 던집니다.
- [로그인 사이드카 요원]은 패킷을 받아 암호를 풀고 깔끔하게 원본만 [로그인 앱]에 먹여줍니다. 앱들은 자기가 암호화 통신을 했는지 꿈에도 모릅니다(투명성 보장).
2. 컨트롤 평면 (Control Plane) - 총사령부
- 전국에 깔린 이 수만 명의 사이드카(요원)들을 통제하는 중앙 지휘소입니다.
- 관리자가 "오늘부터 모든 통신은 암호화해라! 그리고 트래픽의 10%만 새로 만든 2번 결제 앱으로 보내라(카나리 배포)!"라고 지시를 내리면, 컨트롤 평면이 수만 명의 사이드카 요원들에게 0.1초 만에 룰(Rule)을 쫙 하달하여 망 전체의 트래픽을 일사불란하게 지휘합니다.
Ⅳ. 도입 시나리오와 장점 (왜 그 무거운 걸 쓰는가?)
- 서킷 브레이커 (Circuit Breaker): 로그인 서버가 뻗어서 응답을 안 주면, 결제 서버는 계속 기다리느라(Timeout) 같이 뻗어버립니다. 이때 사이드카가 눈치를 채고 0.1초 만에 "야 로그인 서버 맛갔어! 계속 물어보지 말고 그냥 에러 띄워!"라며 통신 선을 스스로 싹둑 끊어버립니다. 연쇄 붕괴를 막는 최고의 기법입니다.
- 가시성 (Observability): 모든 통신이 사이드카의 입을 거치기 때문에, 사이드카가 "누가 누구랑 핑이 10초 걸리는지" 전부 다 기록해서 그래프로 예쁘게 그려줍니다. 에러 추적이 빛의 속도로 끝납니다.
📢 섹션 요약 비유: 마이크로서비스 코딩은 '100명의 외교관들이 외국어로 문서를 주고받는 일'입니다. 옛날엔 외교관(개발자)이 직접 편지를 쓰고, 봉투에 밀랍 도장(암호화)을 찍고, 우체국에 가서 직접 보내고, 편지가 안 가면 다시 복사해서 보내는(재전송) 개고생을 해야 했습니다. **서비스 메시(Service Mesh)**는 국가가 외교관 100명 전원에게 각자의 '1:1 전담 특급 비서(사이드카 프록시)'를 딱 붙여준 것입니다. 외교관은 그냥 편지를 대충 써서 책상에 툭 던져놓고 본업(코딩)만 하면 됩니다. 전담 비서가 그걸 주워다가 완벽하게 암호화를 씌우고, 가장 빠른 퀵서비스 오토바이를 불러 보내며, 가다가 사고가 나면 비서가 알아서 복사본을 다시 보내고(Retry), 모든 배송 기록을 장부에 적어 사령부(컨트롤 플레인)에 보고까지 마치는 완벽한 VIP 통신 대행 서비스입니다.