2016년 8월 9일 화요일

Devops 핵심 요약! 클라우드의 서브시스템/컴포넌트 -

안녕하세요. Kin입니다. 

필드에 너무 많은 클라우드 기술들이 존재해서 뭘 써야하나 고민하셨죠. 오늘은 특정한 클라우드 솔루션을 소개하는것보다 모든 솔루션들의 기본이 되는 devops의 핵심 중에 핵심을 간단한 아키텍처 관점에서 살펴보도록 하겠습니다. 



제가 생각하는 클라우드에는 백본(backbone)이 되는 가장 중요한 기술이 3개입니다. 



  • Ochestration tool  
    •  후려쳐서 말하자면 machine들을 클러스터로 묶고 각 machine의 리소스를 관리하며 이 리소스를 기반으로 스케줄링하여 어플리케이션을 필요한 위치에 런치하고 관리하는 tool이라고 생각하시면 됩니다. 대표적인 솔루션으로는 Mesos/marathon, Kubernetes, nomad, diego 등이있습니다.
      • Cluster management -  클라우드를 구성하는 노드(node. 그냥 서버 한대라고 생각하시죠.) 들의 묶음을 만들고 관리하는 역할입니다. 즉 후려처서 멤버쉽을 관리하는 놈이라고 생각하면됩니다. 
      • Resource management - 관리하는 노드들의 리소스를 관리하는 역할입니다.
      • Scheduling - 자 이제 마지막으로 노드들의 집합에서 리소스를 기반으로 스케줄링하여 릴리즈 할 어플리케이션이 어느 노드에 배포되어야 하지는 결정하는 역할입니다. 
      • Executer 또는 Driver - 각 노드에 설치되서 스케줄러가 할당한 Job을 실행하는 역할입니다. 
  • Service discovery 
    • Service discovery 말은 복잡해 보이지만 실은 무지 간단합니다. 일단 왜 필요 하냐면요. 간단히 말하자면 사용자가 많아지면 인스터스를 scale out하고 사용자가 적이지면 scale in을 해야겠죠. 즉 인스턴스가 상황에 따라 노드들을 왔다갔다 하면 죽었다 살았다를 반복하지요. 그럼 문제. 자 살아있는 인스턴스 어디에 있는지 어떻게 확인하죠? 이런 문제를 해결하는 메커니즘이 서비스 디스커버리 입니다.  자 그럼 구성요소를 살펴 보겠습니다.
      • Service registry - 후려쳐서 Key-value store 라고 생각하시면 됩니다.  즉 여기에 어디에 어떤 인스턴스가 살아있다라고 쓰고 읽고 하는 장소라고 생각하시면 됩니다. 
      • Server registrar - 서비스 레지스트리에 서비스 인스턴스를 등록하는 주체입니다. 보통 ochestration tool과 연동하면 자동적으로 서비스 레지스트리에 등록합니다. 
      • 보통 오케스트레이션 툴과 서비스 디스커버리는 한 세트입니다. 예를 들면 Kuberneters라는 툴은 etcd라는 서비스 디스커버리 구현체를 내장하고 있지요. 물론 다른 구현체로 교체도 가능합니다. 
      • 대표적인 구현 솔루션은 consul , etcd, zookeeper 등입니다. 나중에 하나씩 자세히 뜯어 먹어 볼께요. 나중에!
  • Configuration management
    1. 뭐 다들 아시겠지만 후려친 개념부터 말씀들리면 서버 또는 가상서버에 소프트웨어를 설치하거나 설정을 자동화 할 수 있게 하는 스크립트라고 생각 하시면 됩니다. 
      1. 필요한 소프트웨어, 라이브러리, 설정 파일을 한 번에 여러 노드에 배포 하실때 자동화하는 메커니즘입니다. 
      2. 구현 솔루션으로 Chef, Puppet, Ansible 등이 있습니다. 

자 이제 위의 세가지 솔루션으로 무얼 할 수 있을까요? 

한 번 가정해보죠. 사용자가 폭주하여 서비스 인스턴스를 늘려야 한다고 가정해보죠. 

그럼 새로운 서버 또는 가상 서버가 필요하겠네요. 자 그럼 뚝하고 가상서버나 서버가 생성됐다고 생각해보시죠. 자 그다음은 이 서버들에 필요한 서버들에 소프트웨어를 설치하고 설정해야겠네요. 이때 필요한게 configuration management tool입니다. 

그 후에는 어떨까요. 새롭게 셋업된 이 친구를 우리 그룹(클러스터) 에 추가해야겠죠.  사실 configuratno managment 과정중에 제가 필요한 소프트웨어를 설치한다고 말씀드렵는데 이때 cluster 의 slave 클라이언트가 보통 설치 됩니다. 즉 셋업되면서 설정에 따라 클러스터에 멤버가 되는거지요.  서비스 디스커리리 클라이언트도 똑같은 방법으로 설치되고요. 

즉 configuratno management시에 필요한 클러스터링 툴, 서비스 디스커버리 툴이 설치되고 우리가 작성한 설정에 따라 자동으로 멤버쉽이 형성되면서 이제 클러스트에 하나의 노드가 되지요. 따라서 스케줄러가 이넘이 놀고 있으니 JOB을 할당 하여 분산을 실행할꺼고 분산 중에 어플리케이션이 재배치 되는 과정중에 서비스 레지스트리가 업데이트 되면서 지속적으로 위치를 파악할 수 있게 됩니다. 

그림은 업데이트 할께요. 


댓글 없음:

댓글 쓰기