-
서버 관리 : 서버의 상태를 관리하기 위한 노력
- 문서화 : 설치하는 방법 등 A~Z 캡처
-> 버전, OS 변경되면 따라하기 어려워짐
- 서버 관리하는 도구 등장 : 사용자가 직접 서버에 접속이 아닌 도구를 사용해서 명령어를 날림
-> 도구 사용법을 배워야 함, 복잡하게 관리하면 도구 사용법 난이도 증가
- 가상머신 : 서버 하나에 가상머신 여러개
-> 느리지만 충돌이 없고 좋긴 함
-> 클라우드 환경에 안맞음, 특정 벤더에 디펜던시
- 도커 컨테이너 : 모든 실행환경을 컨테이너
-> 효율적 동작(어디서든 동작, 사용법 쉬움, 속도 느림x)
-> 대부분 서버 관리자들의 복잡함 해결
-
컨테이너 특징
- 가상머신과 비교하여 컨테이너 생성이 쉽고 효율적
- 컨테이너 이미지를 이용한 배포와 롤백이 간단
- 언어나 프레임워크에 상관없이 애플리케이션을 동일한 방식으로 관리
- 개발, 테스트, 운영 환경, 로컬PC, 클라우드까지 동일한 환경 구축
- 특정 클라우드 벤더에 종속적이지 않음(AWS -> 애저, 구글 옮기기 간편)
-
containerization(컨테이너라이제이션) : 프로그램을 컨테이너화 해서 사용하는 것
- 코드 작성 -> Build(도커 이미지 화) -> ship(도커허브나 저장소 저장) -> Run(실행)
- 이전에는 언어, 프레임워크에 따라 방법이 달랐으나 도커를 도입한 이후 모두 동일하게(정형화)됨 -> 관리자 입장에서는 매우 편함
-
편해진 듯 하나 컨테이너가 많아질 수록 관리의 문제(컨테이너 수백, 수천개..)
-
Run 다음의 뭔가 단계가 있으면 좋을듯 한 생각
-
도커를 활용한 배포 방법
-> 서버 각각에 들어가서 하나하나 일일히 도커 실행
-> 도커 사용량이 많아지면 빈 공간에 컨테이너를 띄우려면 어떤 서버가 비워있는지 확인
-> 롤백/업데이트의 손이 너무 많이감(일일히 다 적용)
-
도커를 활용한 서비스 검색 : 프록시->웹 / 웹 서버 부하가 많아져 서버 증가 => 로드밸런서 설치하고 웹 서버들을 가르키게 함, 프록시를 로드밸런서를 가르키게 함
=> 로드밸런서 설치, IP변경시 업데이트 등 굉장한 작업이 많아짐
-
도커를 활용한 서비스 노출 : public에 nginx를 두고 내부 컨테이너 연결
=> 설정의 자동화 필요성 생각..
-
서비스 이상, 부하 모니터링 : 자동화 되거나 모니터링의 뭔가 방안이 필요함 => 자동화 필요성 증가(새벽에 문제생기면..)
-
Container Orchestration : 복잡한 컨테이너 환경을 효과적으로 관리하기 위한 도구
-> 서버 관리자가 해주는 일을 대신해주는 프로그램을 만드는 것
-> Container Orchestration 자체는 개념적 측면, 구현체는 DEIS, RANCHER, docker SWARM, 쿠버네티스 등 많은 구현체가 많음
- 특징
- Cluster
-> 기존 : 각 서버의 사양 등 알고 관리
-> 많아지면 하나로 합쳐 Cluster 단위로 추상화 하여 관리
-> 각 서버마다 접속하여 관리가 어려우니, 마스터 서버를 두고 마스터서버에게 명령어를 주면 마스터서버가 알아서 노드에 명령어를 보냄
-> 클러스터 내 네트워크간 통신이 잘 되어야 함
-> 노드의 수가 수천개, 수만개여도 잘 돌아야 함(초기 설계시 잘 해야 부하가 일어나지 않음
- State(상태관리)
-> 사용자가 직접 조취를 안하더라도 그 상태를 맞춰주기를 원함
-> ex) 이미지 3개 => 3개 하고 1개가 문제 생기면 자동으로 1개를 죽이고 자동으로 다시 생성 기대
- Scheduling(배포관리)
-> 특정 앱을 배포하고 싶을때 서버 관리자가 기존에는 어떤 서버에 여유가 있는지 등을 체크
-> 자동으로 체크해서 넣어주는 스케줄링 기능
-> 만일 여유있는 서버가 없다면 서버를 하나 더 열어서 앱을 넣어주는 등 스케줄링 기능 필요
- ROLLOUT/ROLLBACK(버전관리)
-> 버전을 올렸으면 자동으로 업데이트 되고, 문제가 생겨 롤백하면 자동으로 롤백되도록(중앙 관리)
- Service Discovery(서비스 검색측면)
-> 100번 등록, 101번 신규 => 프록시 서버는 저장소를 관찰하고 변경될 때마다 설정을 바꿔주고 프로세스 재시작
-> 관리자가 하나하나 IP 바꿔줄 필요 없이 자동으로 재설정 기대
- Volume 스토리지 기능
-> 각 노드마다 다른 볼륨을 연결할 수 있음
-> 각 노드마다 설정하는 것이 아닌 추상화로 지정해서 한번에 관리