0부터 시작하는 Docker Swarm 공부 - Cluster 환경 & Docker Swarm Mode 와 MSA

Jaehong Lee·2022년 8월 24일
0
post-thumbnail

1. Cluster 환경

  • 클러스터 환경을 구축하면, 자원을 Pool 에 담아 하나의 자원 ( computing, network, storage ) 으로 활용될 수 있다

  • 기능적으로 두 가지 기능이 Host 에게 부여된다 ( p. 332 )

    • manager ( K8S 에서는 master ) : controller 의 역활을 수행
      • manager 는 worker 의 기능을 포함한다. 일반적으로 manager 는 container 배포에서 제외시키고, 주로, 컨트롤 / 관리 / 모니터링 역활에 주력해야 한다. 이는 Docker Service 생성시 label 이나 role 을 통해 지정할 수 있다
    • worker ( K8S 에서는 node ) : 컨트롤로부터 명령을 전달 받고, 이를 수행하는 역활
  • manager, worker 는 처음 클러스터 생성시 자동으로 node.role 이 각 노드에 부여된다. 또는 추가적으로 label 을 각 노드에 부여하여 컨테이너 배포시 활용할 수 있다

    role==worker
    zone==busan

    • zone busan 에 있는 worker node 를 뜻한다
  • 단, K8S 의 master 는 worker 의 역활을 수행하지 않는다

2. Docker Swarm Mode 와 MSA

p. 331

Docker Swarm mode 는 물리적 서버 클러스터를 통해 컨테이너를 확장하기 위한 Docker 고유의 플랫폼으로, 여러 서버에 걸쳐 간단한 분산 워크로드를 구현할 수 있다

Docker 는 여러 서버 클러스터에 컨테이너화 된 애플리케이션 기반의 마이크로 서비스를 배포하여, 다양한 Runtime 환경에서 애플리케이션의 효율성과 가용성을 유지하도록 개발되었다

MSA ( Micro Service Architecture )

  • 과거에는 하나의 프로젝트에 모든 것이 들어있는 모놀로식 으로 개발하였다. 허나, 이는 프로젝트의 규모가 커지면서 배포 시간과 서버의 기동시간이 길어지고, 하나의 서비스만 수정해도, 연관된 서비스를 전부 고쳐야하며, 모든 파일을 다시 배포해야 하는 단점이 있다
  • 이를 해결하기 위해 고도화 ( 나눠서 동시에 하기 ) 를 하였다
  • MSA 는 각 서비스 마다 병렬적으로 분리하여 작업을 한다. 이를 통해 개발 언어나 프레임워크도 각 서비스마다 다르게 사용할 수 있으며, 모놀로식의 단점을 극복하였다
  • 이렇게 분리하여 작업된 코드들을 하나로 모아 배포하기 편하게 ' 형상 관리 도구 ' 를 사용한다. 형상 관리 도구에는 대표적으로 Git 이 있다

MSA 는 고도화를 위해 다수의 컨테이너나 VM 을 이용하여 개발을 진행할 수 있다. 개발 속도를 향상 시키고, 모듈 형식으로 기능을 구분하여 개발하므로, 문제 발생시 해당 컨테이너나 코드, VM 만 확인하면 되므로, 관리가 용이하다. 또한 수평적 확장에도 유용하다

  • 각 기능 개발에서 언어를 지정하지 않으므로, 필요한 언어를 선택하여 개발하면 된다
  • 각 기능별 Data 는 API 를 통해 주고 받으면 된다
profile
멋진 엔지니어가 될 때까지

0개의 댓글