도커와 쿠버네틱스 실전 활용하기

호떡·2023년 1월 6일
0

지금 당장 DevOps를 해야하는 이유

도커와 쿠버네틱스를 왜 배울까?

DevOps 란

데브옵스는 소프트웨어의 개발과 운영의 합성어로서, 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 말한다.
데브옵스는 소프트웨어 개발조직과 운영조직간의 상호 의존적 대응이며 조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 한다.

개발 프로세스 version

개발 프로세스 v1
코드작성 > 클라우드 서버에 배포
개발 프로세스 v2 (협업을 시작하는 시기)
코드작성 > 깃(Merge,Request or Push) > 클라우드 서버에 배포
개발 프로세스 v3(배포에 자동화를 도입하는 시기)
코드작성 > 깃 > CI/CD(Test, Build, Deploy) > 클라우드 서버에 배포
개발 프로세스 v4(롤백등 배포 전략을 확장하는 시기)
코드작성 > 깃 > CI(Test, Build) > CD (Deploy) > 클라우드 서버에 배포
개발 프로세스 v5(운영이 중요해지는 시기)
코드작성 > 깃 > CI(Test, Build) > CD (Deploy) > 클라우드 서버에 배포 > Monitoring(Metrics, Log)

도커와 쿠버네틱스를 적용해서 DevOps를 하는 것

아래의 4가지를 효율적으로 진행한다.
자동화 (시간 절약, 효율 증가)
측정 (빠른 분석, 효율 증가) : 로그 잘 남겨두기
공유 (팀원 지식 습득, 효율 증가)
축적 (패시브 스킬, 효율 증가)

DevOps 방법들

작은 것부터 시작
많이 사용되는 도구들: 깃, 깃랩(자동빌드 및 배포 연결 가능), 도커, 쿠버네티스


서버를 관리한다는 것

시간의 흐름에 따른 서버의 상태 관리 방법

자체 서버 운영 > 설정(상태) 관리 도구 등장 > 가상머신 등장 > 클라우드 등장 > PaaS 등장 > 도커 등장 > 쿠버네티스 등장 > 서비스메시 등장

1) 자체 서버 운영
서버를 설정하기 위해 많은 노력과 시간이 필요
옛날에 많이 사용하던 방식

2) 설정(상태) 관리 도구 등장
이왕 코드로 관리하면 좋을 것 같다는 배경으로 등장
러닝 커브 긴 단점

3) 가상머신 등장
한 서버에 여러 개 설치도 쉽다
현재 사애를 저장할 수도 있다
근데 처음부터 다시 셋팅하려면 어려움
서버 이미지 공유 어떻게 해야할지...

4) 클라우드
이전보다 많이 편해짐~~
AWS, Google Cloud, Azure, ...
하드웨어 파편화 문제 해결
가상화된 환경만으로 아키텍처 구성이 가능해짐

5) PaaS 등장
Vercel, Heroku, Netlify, ...
잘 구성해 놓은 곳에 소스 코드만으로 배포
일반화된 프로비저닝 방법을 제공
단점이라면, 애플리케이션을 PaaS 방식에 맞게 작성해야 함
서버에 대한 원격 접속 시스템을 제공하지 않음
서버에 파일 시스템을 사용할 수 없음
서버 패키지를 설치할 수 없음
로그 수집을 제한적인 방식으로 허용(STDOUT)
애플리케이션 배포에 대한 새로운 패러다임
크론잡(문자 발송, 예약, 정산 등), 데이터 분석, 로그 분석, 애플리케이션 성능 모니터링 등이 어려움/제한적임

6) 도커의 등장
도커가 등장하고 서버관리/개발 방식이 완전히 바뀌게 되었다.

어떠한 프로그램도(MySQL, redis, Jenkins 등) 컨테이너로 만들 수 있고,
어디서든 실행된다.(amazon 등)
가상머신처럼 독립적으로 실행되지만
훨씬 빠르고, 쉽고, 효율적이다.
무엇보다 다른 프로그램과 격리시키는 것은 도커만의 기능이다. ('자원격리')
프로세스, 파일/디렉토리를 가상으로 분리
CPU/MEMORY/IO를 그룹별로 제한
리눅스 기능을 이용해서 빠르고 효율적으로 서버 관리

가상머신은 OS 위에 또 OS가 올라간 상태에서 작동
도커는 OS 위에서 바로 동작하면서 자원 격리만 해준다.

도커가 가져온 변화
클라우드 이미지보다 관리하기 쉬움
다른 프로세스와 격리되어 가상머신처럼 사용하지만 성능저하 거의 없음
복잡한 기술을 몰라도 사용할 수 있음
이미지 빌드 기록이 남음
코드와 설정으로 관리 > 재현 및 수정 가능
오픈소스 > 특정 회사 기술에 종속적이지 않음

7) 쿠버네티스의 등장 : 배포는 어떻게 할까?
복잡한 컨테이너 환경을 효과적으로 관리하기 위한 도구
즉 많은 컨테이너들을 중앙에서 서서 지휘 및 관리 = "컨테이너 오케스트레이션"
컨테이너 오케스트레이션을 가장 잘 지원하는 도구가 쿠버네티스
쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈 소스 플랫폼


DevOps 엔지니어의 역할

조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것

0개의 댓글