클러스터 환경을 구축하면, 자원을 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 의 역활을 수행하지 않는다
p. 331
MSA ( Micro Service Architecture )
- 과거에는 하나의 프로젝트에 모든 것이 들어있는 모놀로식 으로 개발하였다. 허나, 이는 프로젝트의 규모가 커지면서 배포 시간과 서버의 기동시간이 길어지고, 하나의 서비스만 수정해도, 연관된 서비스를 전부 고쳐야하며, 모든 파일을 다시 배포해야 하는 단점이 있다
- 이를 해결하기 위해 고도화 ( 나눠서 동시에 하기 ) 를 하였다
- MSA 는 각 서비스 마다 병렬적으로 분리하여 작업을 한다. 이를 통해 개발 언어나 프레임워크도 각 서비스마다 다르게 사용할 수 있으며, 모놀로식의 단점을 극복하였다
- 이렇게 분리하여 작업된 코드들을 하나로 모아 배포하기 편하게 ' 형상 관리 도구 ' 를 사용한다. 형상 관리 도구에는 대표적으로 Git 이 있다
- 각 기능 개발에서 언어를 지정하지 않으므로, 필요한 언어를 선택하여 개발하면 된다
- 각 기능별 Data 는 API 를 통해 주고 받으면 된다