티스토리 뷰
링커드란?
링커드란? 링커드는 서비스 메쉬로 설치될 수 있도록 부얀트가 개발한 오픈 소스 네트워크 프록시입니다. 링커드는 서비스 메쉬라는 용어와 관련된 최초의 제품 중 하나로 도커나 Kubernetes 등의 플랫폼을 지원합니다. IT라고도 불리는 정보기술에서 서비스 메쉬는 서비스 간 통신을 제어하고 애플리케이션의 개별 부분이 서로 통신할 수 있도록 하는 전용 인프라 계층입니다. 서비스 메쉬는 일반적으로 클라우드 기반 애플리케이션, 컨테이너 및 마이크로 서비스에서 사용됩니다. 마이크로 서비스 애플리케이션 내에서 최대 수백 개의 서비스가 서로 통신하고 있기 때문에 어떤 서비스가 서로 통신하고 있는지 추적하는 것은 곧 혼란스러울 수 있습니다. 링커드는 로드 밸런싱, 서비스 디스커버리, 프록시 통합 및 투과성, 적응형 라우팅, 장애 복구, 회로 차단 및 계측 등의 기능을 제공함으로써 이러한 서비스 간의 통신을 보호하는 클라우드 조정 도구로 사용할 수 있습니다. 이러한 링커드는 대규모 애플리케이션 및 시스템의 운영 및 관리와 관련된 문제를 해결하기 위해 설계되었습니다. 서비스 간의 상호 작용은 애플리케이션 런타임 동작에서 굉장히 중요한 구성 요소입니다. 따라서 이 커뮤니케이션을 제어하는 추상화 레이어를 제공함으로써 링커드는 개발자에게 보다 가시성과 신뢰성을 제공합니다. 전용 제어층이 없으면 애플리케이션 문제 및 장애를 측정하고 진단하기가 어려울 수 있습니다. 그렇다면 본격적으로 링커드의 구조에 대해서 살펴보겠습니다. 링커드는 스탠드아론 프록시로 실행되며 특정 언어나 라이브러리에 의존하지 않으며 컨테이너 또는 마이크로 서비스에서 사용할 수 있습니다. 이러한 링커드의 2가지 일반적인 배치 모델은 호스트별 배치 모델과 사이드카로서의 배치 모델입니다. 호스트 단위 배치에서는 링커드 인스턴스를 물리 호스트 또는 가상 호스트에 연결할 수 있습니다. 다음으로 각 응용 프로그램서비스 인스턴스로부터의 모든 호스트트래픽을 링커드 인스턴스를 통해 라우팅합니다. 링커드를 사이드카로 배치하면 각 응용 프로그램서비스의 인스턴스당 1개의 링커드 인스턴스를 설치할 수 있습니다. 이것은 컨테이너 기반 응용 프로그램에 유용합니다. 예를 들어 링커드는 도커 컨테이너 또는 Kubernetes 포드를 사용하는 마이크로 서비스 애플리케이션에서 사용할 수 있습니다. 이어서 링커드는 다음 3가지 구성 중 하나를 사용하여 응용 프로그램서비스와 통신할 수 있습니다. 링커드의 첫번째 구성은 서비스 투 링커입니다. 각 서비스 인스턴스는 대응하는 링커드 인스턴스를 통해 트래픽을 라우팅합니다. 이 인스턴스는 이후 트래픽 규칙을 처리합니다. 링커드의 두번째 구성은 링커 투 서비스입니다. 링커드 사이드카는 트래픽을 직접 수신하는 서비스인스턴스가 아닌 대응하는 서비스인스턴스로 트래픽을 전송하여 라우팅합니다. 링커드의 세번째 구성은 링커 투 링커입니다. 착신 트래픽을 처리하여 대응하는 서비스인스턴스로 트래픽을 라우팅합니다. 서비스 투 링커 및 링커 투 서비스 Configuration의 조합이며 다음으로 서비스 인스턴스는 발신 트래픽을 링커드 인스턴스를 통해 라우팅합니다. 이러한 링커드의 이점에 대해서 설명하겠습니다. 먼저 가장 크다고 생각되는 이점은 마이크로 서비스와 컨테이너의 서비스 간 통신을 단순화하며 응용 프로그램의 일부가 상호 작용하는 방법을 문서화하는 프로세스를 보다 쉽게 관리할 수 있습니다. 링커드의 다음 이점은 메인 애플리케이션 코드와의 통신을 분리하여 가시성과 제어성을 높이고 애플리케이션 관리자는 애플리케이션 자체를 변경하지 않고 통신 및 기계 문제를 해결할 수 있으며 레이텐시 대응 로드밸런싱, 서비스 디스커버리, 트레이스 및 계측 등의 일반적인 서비스 메쉬 기능을 제공합니다. 그리고 다음 이점으로 프로바이더는 서비스에 가장 적합한 코딩 언어를 선택할 수 있고 애플리케이션 코드를 보다 효율적이고 쉽게 확장할 수 있습니다. 한편, 링커드와 이스티오를 비교해자면 먼저 이스티오는 구글, IBM 및 Lyft가 제공하는 오픈 소스 서비스 메쉬입니다. 원래 이스티오는 처음에 Kubernetes에서 사용하기 위해 개발된 범용 컨트롤 플레인으로 설계되었지만 여러 플랫폼을 지원하도록 확장되어 뻗어나갔습니다. 이스티오가 제공하는 기능에는 로드 밸런싱, ID 및 키 관리, 장애 주입, 하이브리드 도입, 서비스 간 인증, 감시 및 로깅이 포함됩니다. 또한, 이스티오는 사용자가 만든 팟에 사이드카 프록시를 추가할 수 있는 자동 사이드카 주입 기능을 제공합니다. 이스티오는 많은 기능을 가지고 있지만 이스티오 자체는 학습 곡선이 가파르고 링커드보다 사용자 친화성이 떨어지는 것은 아쉽지만 사실입니다. 예를 들어서 컨트롤 플레인은 설정하는 것이 매우 복잡한데요. 다만 이것은 디폴트의 옵션과 설정을 고수하는 것으로 유저 익스피리언스의 부담이 경감된다는 장점이 있습니다. 물론 기본적인 서비스 메쉬로서 이스티오와 링커드가 모두 적합하다고 보시면 될 것 같습니다. 마무리하자면 현재 정보기술 업계를 이끌고 있는 개발자와 더불어 차기 정보기술 업계를 이어가려고 공부하는 차세대 개발자까지 링커드에 대해서 자신의 분야가 아니더라도 꼭 알고 있어야 한다고 생각됩니다. 지금까지 링커드의 구조와 이점에 대해서 알아봤습니다.