230501_TIL

majungha·2023년 5월 1일
1

TIL

목록 보기
44/68

앞으로의 목표 👍


  1. javascript 능력 및 고난도 알고리즘 풀이 능력
  2. Nest, Graphql등 최신 기술 스택 활용 능력
  3. 기초 미니프로젝트 포트폴리오
  4. 로그인, 결제기반 심화프로젝트 포트폴리오
  5. 배포를 위한 네트워크 및 CI/CD 배포자동화 능력
  6. 120% 백엔드 개발 지식

오늘부터 꾸준히 해야할 일 👍


  • 영타실력 늘리기
  • 단축키 사용 익숙해지기
  • 코드리딩 실력 키우기
  • 데일리 퀴즈
  • 포트폴리오 작성
  • 독스에 친숙해지기
  • MDN 보는 연습하기

오늘의 수업 👍



📝 운영중인 서비스의 배포


  • 운영중인 서비스를 어떻게 새로 배포할지에 대한 전략이 몇가지가 있다.

▷ 블루 그린 배포 (Blue Green Deployment)

  • 현재 운영하고 있는, 기존 버전을 가진 서버를 Blue 컴퓨터라고 부른다.

  • 유저들은 모두 Blue 컴퓨터에 연결되어있다.

  • 새로운 버전을 배포해야할 때, 새로운 버전을 가진 서버를 Green 컴퓨터에 켠다. 그리고, Blue에 있던 유저 트래픽을 Green 으로 한번에 옮긴다.

  • Blue는 계속 대기하고 있다가, 혹시 Green에 문제가 생기면 다시 Blue로 트래픽을 옮긴다.
    ▶ 단점

  • 현재 운영중인 서버의 2배 가량의 자원이 필요하다는 것이다.

▷ 카나리 배포 (Canary Deployment)

  • 카나리 배포는 일부 유저 트래픽만 새로운 버전을 배포한 서버로 보내서, 문제가 없는지 체크한다.
  • 괜찮다면 더 많은 유저 트래픽을 새로운 배포한 서버로 보내고, 이를 반복한다.

▷ 롤링 배포 (Rolling Deployment)

  • 롤링 배포는 카나리 배포와 비슷한 면이 있다.
  1. 현재 운영중인 서버 중에서 하나의 컴퓨터를 꺼준다.

  1. 껐던 컴퓨터에 새로운 버전을 담아 배포한다. 두번째 컴퓨터를 꺼준다.

  • 이런식으로 기존버전에서 새로운 버전으로 트래픽을 점진적으로 전환하는 것을 롤링 배포라고 한다.

📝 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


  • 노드박스 하나가 컴퓨터 한대라고 보면 된다.
  • 노드박스 하나에 파드 여러개가 들어가 있다.

  1. 부하분산기 => 외부 IP
  2. 노드포트 => 컴퓨터IP
  3. 클러스터 IP => 내부 IP

📝 실습


쿠버네티스 만들기 실습, 쿠버네티스 배포 실습,쿠버네티스 명령어 실습, 쿠버네티스 네트워크 연결 실습,

오늘의 마무리 👍



  • 복습
  • github 공부
  • 블로그 포스팅
  • 데일리 퀴즈
  • 알고리즘 문제 풀기

항상 겸손한 자세로 배우면서 성장하자, 할 수 있다!! 💪


출처 : 코드캠프

profile
개발자 블로그 / 항상 겸손한 자세로 배우면서 성장하자 할 수 있다!

0개의 댓글