앞으로의 목표 👍
- javascript 능력 및 고난도 알고리즘 풀이 능력
- Nest, Graphql등 최신 기술 스택 활용 능력
- 기초 미니프로젝트 포트폴리오
- 로그인, 결제기반 심화프로젝트 포트폴리오
- 배포를 위한 네트워크 및 CI/CD 배포자동화 능력
- 120% 백엔드 개발 지식
오늘부터 꾸준히 해야할 일 👍
- 영타실력 늘리기
- 단축키 사용 익숙해지기
- 코드리딩 실력 키우기
- 데일리 퀴즈
- 포트폴리오 작성
- 독스에 친숙해지기
- MDN 보는 연습하기
오늘의 수업 👍
📝 운영중인 서비스의 배포
- 운영중인 서비스를 어떻게 새로 배포할지에 대한 전략이 몇가지가 있다.
▷ 블루 그린 배포 (Blue Green Deployment)
-
현재 운영하고 있는, 기존 버전을 가진 서버를 Blue 컴퓨터라고 부른다.
-
유저들은 모두 Blue 컴퓨터에 연결되어있다.
-
새로운 버전을 배포해야할 때, 새로운 버전을 가진 서버를 Green 컴퓨터에 켠다. 그리고, Blue에 있던 유저 트래픽을 Green 으로 한번에 옮긴다.
-
Blue는 계속 대기하고 있다가, 혹시 Green에 문제가 생기면 다시 Blue로 트래픽을 옮긴다.
▶ 단점
-
현재 운영중인 서버의 2배 가량의 자원이 필요하다는 것이다.
▷ 카나리 배포 (Canary Deployment)
- 카나리 배포는 일부 유저 트래픽만 새로운 버전을 배포한 서버로 보내서, 문제가 없는지 체크한다.
- 괜찮다면 더 많은 유저 트래픽을 새로운 배포한 서버로 보내고, 이를 반복한다.
▷ 롤링 배포 (Rolling Deployment)
- 롤링 배포는 카나리 배포와 비슷한 면이 있다.
- 현재 운영중인 서버 중에서 하나의 컴퓨터를 꺼준다.
- 껐던 컴퓨터에 새로운 버전을 담아 배포한다. 두번째 컴퓨터를 꺼준다.
- 이런식으로 기존버전에서 새로운 버전으로 트래픽을 점진적으로 전환하는 것을 롤링 배포라고 한다.
📝 Kubernetes
- 컨테이너 관리자로 컨테이너 운영을 자동화하기 위한 도구이다.
- 쿠버네티스와 동일한 기능을 하는 도구에는 메소스(Mesos), 도커 스웜(Docker Swarm) 등 이 있다.
- 이런 도구를 컨테이너 오케스트레이션 도구라고 한다.
- 많은 수의 컨테이너를 협조적으로 연동시키기 위한 통합 시스템이며 이 컨테이너를 다루기 위한 API 및 명령행 도구 등이 함께 제공된다.
▷ Kubernetes Cluster
- Kubernetes의 여러 리소스를 관리하기 위한 집합체를 말한다.
- 리소스 중에서 가장 큰 개념은 노드(node)이다.
- 노드(node)는 클러스터(cluster)의 관리 대상으로 등록된 도커 호스트로, 도커 컨테이너가 배치되는 대상이다.
▶ Master Node
- Kubernetes Cluster 전체를 컨트롤하는 역할로 API 서버,스케줄러,컨트롤러 매니저, etcd 로 구성된다.
- api서버 = 본사 전산직
- etcd = 정보를 수집하는 직원
- 스케줄러 = 공장의 업무를 담당해주는 직원
- 컨트롤러 매니저 = 업무를 구체화 시켜주는 직원
▶ Worker Node
- Master Node에 의해 주어진 명령어를 받고 실제 워크로드에 생성하여 서비스하는 컴포넌트다.
- Kubelet, kube-proxy, cAdvisor 와 컨테이너 런타임으로 구성된다.
- kubelet = 공장 전산직
- kube-proxy = 공장 직원에 업무를 명령을 일하는 직원에게 전송 직원
- container runtime= 공장기계 또는 일하는 직원
- cAdisor = 공장에 기계가 잘 돌아가는 지 확인하는 직원
▶ Pod
-
컨테이너가 모인 집합체의 단위로, 적어도 하나 이상의 컨테이너로 이루어진다.
-
쿠버네티스(Kubernetes)에서는 결합이 강한 컨테이너를 파드로 묶어 일괄 배포한다.
-
한 팟 안의 컨테이너는 모두 같은 노드에 배치된다.
-
팟 하나가 여러 노드에 걸쳐 배치될 수는 없다.
▷ Kubernetes VS Load Balancer
▶ Load balncer
- 부하를 모니터링해 부화를 분산하는 일을 하게 된다.
- 가상 컴퓨터(instance) 위에서 docker container가 실행되는데, 인스터스가 실행되는 속도가 느려서 부화를 분산할때 속도면에서 느리다.
▶ Kubernetes
- 여러 가지 일을 할 수 있지만 부화 모니터링을 통한 부화 분산 역할도 진행할 수 있다.
- 같은 역할을 하는 Load balancer 와 Kubernetes 차이점은 실행 환경이다.
- cluster라는 큰 컴퓨터 안에서 docker container가 실행되기 때문에 따로 가상 컴퓨터(instance)를 실행하지 않아도 분산 부화를 할 수 있다.
- 속도 면에서 Load balncer 보다 비교적 빠르다.
📝 Kubernetes Network
- 노드박스 하나가 컴퓨터 한대라고 보면 된다.
- 노드박스 하나에 파드 여러개가 들어가 있다.
- 부하분산기 => 외부 IP
- 노드포트 => 컴퓨터IP
- 클러스터 IP => 내부 IP
📝 실습
쿠버네티스 만들기 실습, 쿠버네티스 배포 실습,쿠버네티스 명령어 실습, 쿠버네티스 네트워크 연결 실습,
오늘의 마무리 👍
- 복습
- github 공부
- 블로그 포스팅
- 데일리 퀴즈
- 알고리즘 문제 풀기
항상 겸손한 자세로 배우면서 성장하자, 할 수 있다!! 💪
출처 : 코드캠프