제1장 서론
지난 주에 저는 텐센트 글로벌 디지털 생태계 대회 에 참석했습니다.
오늘은 제가 얻은 일부 수확을 공유하고자 합니다. 바로 다수 클러스터 도구를 이해하게 된 것입니다.
소프트웨어 개발자 분들은 컨테이너 관리 도구인 Kubernetes를 들어보셨을 겁니다. 이는 본질적으로 매우 복잡한 도구입니다.
따라서 여러 Kubernetes 클러스터를 동시에 관리하는 도구는 분명히 더욱 복잡해야 할 것입니다. 하지만 저는 이번에 발견한 것은 다수 클러스터는 사실상 쉽게 이해할 수 있다는 것입니다.

당시 대회에서는 텐센트의 새로운 서비스에 대한 연설이 있었는데, 다수 클러스터 관리와 관련이 있으며 TKE AppFabric이라는 이름으로 불리며, 매우 간단하게 설명되어 있어 저는 즉시 이해했습니다.
아래에서,제가가장간단한말로Kubernetes는무엇인지,다수클러스터도구는무엇인지,가장간단한사용법은무엇인지설명하겠습니다。
이중에서Docker부터설명해보겠습니다
Kubernetes를이해하기위해서는Docker부터설명해야합니다

2013년,Docker이태어나서소프트웨어애플리케이션의실행환경을소스코드와함께포장해서컨테이너이미지(image)로만들었습니다

컨테이너이미지는이진파일로,직접배포할수있습니다다른컴퓨터에Docker을설치하면이파일을실행할수있습니다소프트웨어를가상환경(컨테이너라고함)안에서실행해서실행환경과개발환경이일치하도록하며환경설정,시작오류와 같은복잡한사항을피할수있습니다
더중요한것은,컨테이너 이미지는 표준화된 파일로, 소프트웨어가 어떤 언어로 개발되든 마지막에 컨테이너로 만들어지는 것은 모두 동일한 형식입니다. 따라서 하나의 도구로 모든 컨테이너 프로젝트의 릴리스를 처리할 수 있으며, 개발 언어의 차이를 전혀 무시할 수 있습니다.
정확히 Docker가 표준화되고 일관된 소프트웨어 실행 프로세스를 제공했기 때문에, 이후 보편적인 "컨테이너 애플리케이션 관리 도구"의 길을 열었습니다.
지금, Docker는 소프트웨어 배포의 표준이 되었습니다. 소프트웨어가 소스 코드로 릴리스되든 컨테이너 이미지로 릴리스되든, 마지막에는 Docker 내에서 배포 및 실행됩니다.
3. 마이크로서비스 아키텍처
Docker가 나타난 후, 소프트웨어 배포가 크게 단순화되어 컨테이너 이미지만 실행하면 되었습니다. 자연스럽게 개발자들은 단일의 거대한 소프트웨어를 여러 구성 요소(즉, 여러 컨테이너)로 분할하여 배포할 수 있는지 고민하기 시작했습니다.
기존의 기업급 대규모 애플리케이션은 보통 거대한 모노리틱 소프트웨어(monolithic)로, 다양한 기능을 가진 여러 컴포넌트를 포함합니다. 하나의 컴포넌트만 수정해도 전체 소프트웨어를 다시 배포해야 합니다.
현재의 관행은 큰 기능 컴포넌트를 분리하여, 각 컴포넌트가 독립적인 서비스로 존재하도록 하고, Docker 컨테이너로 개별적으로 발행 및 배포합니다.
그래서, 모노리틱 소프트웨어는 Docker 컨테이너로 구성된 소프트웨어 시스템으로 변화하며, 이것이 현재 인기 있는 "마이크로서비스 아키텍처"(microservices) 입니다. 소프트웨어는 여러 마이크로서비스를 포함하며, 각 마이크로서비스는 Docker 컨테이너에 대응합니다.

4. 컨테이너 관리 도구 Kubernetes
마이크로서비스는, 매번 발행할 때마다 다양한 컨테이너가 많이 관련되므로, 이들을 관리하는 것은 한 도전 과제가 됩니다. 컨테이너 관리 도구가 등장했습니다.
모든 컨테이너 관리 도구 중에서 가장 유명한 것은 Kubernetes 입니다.
구글이 개발한 오픈 소스 소프트웨어로, 단어 첫 글자 K와 끝 글자 s 사이에 8개의 문자가 있어서 종종 K8s로 쓰입니다. 이미 사실상의 컨테이너 관리 표준이 되었습니다.

구체적으로, 주요 기능은 다음과 같습니다.
(1) 통합 하드웨어 인터페이스 . 개발자는 하드웨어 세부 사항을 신경 쓸 필요 없이, 하드웨어 서버의 차이가 어떻든 통합된 작업 인터페이스로 추상화됩니다.
(2) 자동 확장 . 소프트웨어 부하 상황에 따라 빠르게 수평 확장을 완료할 수 있습니다.
(3) 고가용성입니다. 특정 컨테이너가 실패할 때, 자동으로 재시작하거나 해당 컨테이너를 교체하여 트래픽이 사용 가능한 노드로 흐를 수 있도록 합니다. 소프트웨어 릴리스 문제가 발생하면 자동으로 롤백할 수도 있습니다.
(4) 기타 기능 입니다. 서비스 발견, 부하 분산, 리소스 모니터링 등 다양한 관련 기능을 제공하며, 광범위한 플러그인과 확장 기능, 활발한 커뮤니티를 갖추고 있습니다.
5. 다중 클러스터는 무엇인가요?
Kubernetes의 기저는 여러 컨테이너가 실행되는 서버 그룹입니다. 각 Kubernetes 인스턴스는 클러스터(cluster)라고 불립니다. .
일반 소프트웨어 애플리케이션은 하나의 클러스터로 충분합니다. 하지만 아래에 언급된 이유로 인해 기업급 애플리케이션은 여러 클러스터에 배포해야 하는 경우가 많습니다.

다수 클러스터(multi cluster)는 같은 데이터 센터에 있을 수도 있고, 다른 데이터 센터에 있을 수도 있습니다. 실제 적용에서는 주로 후자인데, 즉 여러 데이터 센터에 분산되어 있을 때, 클러스터가 다른 클라우드 서비스 제공자에서 비롯되거나 다른 성격의 클라우드인 경우를 "다중 클라우드"(multicloud)라고 합니다.
다수 클러스터의 주요 고려 사항은 다음과 같습니다.
(1) 재해 복구. 하나의 클러스터가 문제가 발생하더라도 다른 클러스터가 있어서 사용 가능성을 보장할 수 있습니다.
(2) 격리. 클러스터 간에 매우 강한 물리적 격리를 구현하여 상위 사용자(차량)의 격리를 달성할 수 있습니다.
(3) 유연성. 다중 클라우드는 공급자 고정을 줄여주어 필요에 따라 가장 적합한 인프라와 서비스를 선택할 수 있게 합니다.
(4) 준수성입니다. 다른 지역마다 다른 규제 요구사항이 있을 수 있으며, 다수의 클러스터는 각 클러스터에 더 정밀한 보안 정책과 접근 제어를 적용할 수 있습니다.
6. 다수의 클러스터의 도전 과제
다수의 클러스터는 이전 절의 이점이 있지만, 복잡성도 두 배로 증가하여 사용자에게 많은 도전 과제를 가져옵니다.
(1) 구성 및 관리 복잡성 . 모든 클러스터는 일관된 구성 및 배포가 필요하며, 차이를 최대한 제거해야 합니다.
(2) 네트워크 연결 및 지연 . 다른 지리적 위치에 있는 클러스터가 안전하고 신뢰할 수 있는 연결을 보장하면서 지연을 최소화하는 방법입니다.
(3) 서비스 발견 및 부하 분산 . 특정 서비스가 다른 클러스터에서 다른 서비스를 발견하는 방법과 다른 클러스터에서 부하 분산을 하는 방법입니다.
(4) 모니터링입니다. 모든 클러스터의 지표와 로그는 최대한 통합하여 중앙 집중식 모니터링을 용이하게 하기 좋습니다.
(5)보안 및 접근 제어입니다. 다수의 클러스터의 보안 정책, 접근 제어, 자격 증명 관리는 더욱 복잡해지며, 신중한 규칙 설정과 순차적인 구성이 필요합니다.
다수의 클러스터 도구 및 문제점
입니다. 위의 도전 과제를 해결하기 위해 특정 다수의 클러스터 관리 도구가 등장했습니다. 예를 들어 Argo CD, Rancher Fleet, Karmada 등이 있습니다.
그들은 개발자와 Kubernetes 사이의 중간 계층으로 볼 수 있으며, 클러스터 관리의 복잡성을 해결합니다.
문제는, 이들을 사용하려면 먼저 Kubernetes를 배워야 하고, 그 다음에 이러한 도구 자체를 학습해야 한다는 것입니다. 이는 막대한 학습 비용이며, 그래서 다수의 클러스터 도구는 애플리케이션 개발자를 대상이 아니라 클러스터 관리자를 대상으로합니다.
현실에서는 다수 클러스터는 매우 전문적인 분야로, 다른 분야의 개발자들은 전혀 이해하지 못합니다. 개발자들은 소프트웨어 개발을 완료한 후 애플리케이션을 클러스터 관리자에게 넘겨주어 그들이 배포하도록 합니다.
이는 양측에게 모두 번거로운 문제입니다. 한쪽으로는 개발자가 배포 전략을 결정할 수 없고 하드웨어 리소스를 알지 못하며, 많은 경우 컨테이너 관리에 개입해야 합니다. 다른 한쪽으로는 클러스터 관리자가 애플리케이션 레벨에 개입될 수밖에 없으며, 하드웨어 리소스 조정이 발생하면 개발자에게 알리고 애플리케이션의 작동을 보장하기 위해 참여하도록 해야 합니다.
8. 애플리케이션을 위한 다중 클러스터 보조 프로그램 TKE AppFabric
어떻게 개발자들이 여러 클러스터를 더 쉽게 사용할 수 있도록 할 수 있을까요?
텐센트 클라우드의 해결책은,애플리케이션을 위한 중간 계층을 추가하고, 다중 클러스터 도구 계층을 숨기어 사용 난이도를 낮추세요이 서비스는 TKE AppFabric이라고 명명합니다.

그 이름에서 TKE는 "텐센트 클라우드 컨테이너 서비스" (Tencent Kubernetes Engine)를 의미하며, AppFabric은 애플리케이션 컨테이너를 직물처럼 엮어주는 것을 의미합니다.
이는 애플리케이션 개발자를 대상으로 하며, " 위로 애플리케이션을 잘 서비스하고, 아래로 클러스터를 잘 관리"라는 정의를 가지며, 애플리케이션의 다중 클러스터 보조 역할을 수행합니다.
다중 클러스터 도구를 포장한 이유로 복잡한 전문 용어가 없어 이해하기 쉽며, 개발자는 빠르게 이해하고 사용할 수 있으며, 하부 자원에 신경 쓸 필요가 없으며, "클러스터"라는 개념을 알 필요도 없습니다.
그의 간단함은 다음과 같은 면에서 나타납니다.
첫째, 개발자가 더 쉽게 이해할 수 있는 "사용 가능 영역" (availability zone)을 사용합니다. 애플리케이션 배포 시, 어느 영역(예: 광저우 1구, 상하이 1구)에 배포할지만 지정하면 되며, 이것이 배포 위치입니다.
전체 과정이 애플리케이션을 겨냥하며 Kubernetes와 분리되어 있습니다. 이 측면에서 개발자는 더 많은 에너지를 비즈니스에 집중할 수 있으며, 한편으로는 클라우드 서비스 제공자가 자원을 효과적으로 배분하고 자원 활용률을 높일 수 있습니다. 또한 클러스터의 업그레이드와 유지보수에 대해 상위 사용자도 전혀 느끼지 못합니다.
두 번째로, 설정을 단순화하여 선언적 설정을 채택하며, 선언 파일을 잘 작성하면 되므로 학습 비용을 더욱 낮추었습니다.
세 번째로, Kubernetes와 애플리케이션 실행 관련 기능을 포장하여 사용하기 쉽게 하고, 다양한 모니터링 지표와 로그도 한 곳에 모이게 하여 쉽게 발견할 수 있습니다.
9. 다중 클러스터 사례: 텐센트 건강
텐센트 건강은 TKE AppFabric 위에 구축되어 있으며, 이를 통해 다중 클러스터를 활용하여 대규모 서비스를 구축하는 방법을 살펴보겠습니다.
아래 그림은 텐센트 건강의 배경 시스템 아키텍처입니다.

위 그림에서 게이트웨이(gateway)는 접근 입구이며, 아래에 zone1, zone2와 zone3 세 개의 가용 영역이 동시에 배포되어 있습니다. 이들은 서로 다른 방실에 배포되어 있습니다.
이 세 가지 가용 영역은 완전히 동일하며, 각 영역에는 하나의 시스템 인스턴스가 배포되어 있습니다. 각 시스템 인스턴스에는 세 개의 계층적 의존성을 가진 애플리케이션이 포함되어 있으며: app1은 app2에 의존하고, app2는 app3에 의존합니다. 이 세 가지 애플리케이션 자체는 모두 컨테이너 그룹(app pods)입니다.
이러한 아키텍처는 세 가지 장점이 있으며, 고가용성과 부하 분산을 보장할 수 있습니다.
(1) 재해 복구 배포. 만약 하나의 가용 영역에 장애가 발생하면 다른 가용 영역으로 전환할 수 있습니다(예: zone1의 app2가 장애가 발생하면 zone2의 app2로 전환할 수 있음), 이로 인해 서비스가 유지됩니다.
(2) 라우팅 제어. 사용자에게 가장 가까운 가용 영역을 자동으로 할당하여 접근 속도를 향상시킵니다.
(3)그레이도 배포。새로운 기능은 단일 가용 영역에서 그레이도 검증을 먼저 수행한 후, 완료되면 모든 가용 영역에서 배포하여 배포 위험을 낮출 수 있습니다.
현장 발표에 따르면, 모든 텐센트 내부 자원 클라우드 이전 사업, 예를 들어 QQ, 텐센트 회의, 오디오/비디오 서비스는 TKE AppFabric 위에 배포될 것입니다. 올해 4분기에 외부 테스트 운영을 시작하고, 내년 1분기에 공식적으로 개방될 예정입니다.
10. 요약
"미들웨어 아키텍처"를 채택한 기업级 애플리케이션에서 비즈니스가 중요하고 높은 가용성이 필요하다면, 여러 Kubernetes 클러스터를 선택할 수밖에 없습니다.
회사에 전문 팀이 있다면, 여러 클러스터 관리를 직접 수행할 수 있습니다. 그렇지 않다면 클라우드 서비스 제공자의 도구를 고려할 수 있습니다.
저는 점점 더 많은 클라우드 서비스 제공업체들이 앞으로 동시에 두 가지 도구를 제공할 수 있을 것이라고 믿습니다: 하나는 원래의 다중 클러스터 도구로, 고급 사용자를 위해 전용으로 있고, 다른 하나는 TKE AppFabric과 같이 애플리케이션을 대상으로 하고 다중 클러스터의 세부 사항을 숨기는 보조 도구로, 일반 개발자를 위해 사용됩니다.
다중 클러스터 또는 TKE AppFabric에 관심 있는 분들은 위의 QR 코드를 위쪽으로 스캔하여 제품 매뉴얼을 확인할 수 있습니다.

(완)












