📌 클라우드
- 광대한 네트워크를 통하여 접근할 수 있는 가상화된 서버와 서버에서 작동하는 프로그램과 데이터베이스를 제공하는 IT 환경
- 필요한 컴퓨팅 자원을 인터넷으로 쉽게 이용할 수 있다.
⭐ 가상머신(Virtual Machine)
- 하이퍼바이저 위에 가상머신이 설치됨. 독립적으로 OS 설치가능
- 한 대의 하드웨어로 여러명의 독립적인 서비스를 할 수 있음
- 가상화 배포 방식을 기반으로 클라우드가 탄생함
⭐ 오프프레미스, 온프레미스
- 오프프레미스 : 자체 인프라나 하드웨어 설치 없이도 애플리케이션과 리소스를 이용가능, 클라우드 컴퓨팅
- 온프레미스 : 기업이나 개인이 자체 시설을 보유하고 직접 유지관리하는 것
⭐ IaaS, PaaS, SaaS(클라우드 서비스)
💡 IaaS(InfraStructure as a Service)
- 클라우드가 단지 인프라만 제공, 개발자가 직접 많은 것을 설치해야 하는 대신 특정 서비스에 종속되지 않는다.
- 물리적 자원 제공
- 빈 방
- 클라우드가 플랫폼을 제공, 클릭을 통해 해당 서비스를 이용할 수 있다.
- 모니터링, CI/CD가 제공됨
- 소프트웨어 개발을 돕는 플랫폼 제공
- 빌트인 방
💡 SaaS(Software as a Service)
- 클라우드가 완전한 서비스를 제공
- 고객이 사용하는 소프트웨어 제공
- 풀옵션 방
💡 IaaS VS PaaS
- IaaS : 유연하다, 플랫폼에 종속되지 않는다, 이식성 높다, 운영비 효율 안좋다.
- PaaS : 유연하지 않다, 플랫폼에 종속된다, 이식성 낮다, 운영비 효율 좋다.
⭐ 컨테이너와 도커
💡 컨테이너
- 애플리케이션이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 코드와 모든 종속성을 패키징하는 소프트웨어의 표준 단위
- 격리성
- 경량화
- 구동하려는 애플리케이션을 실행할 수 있는 환경까지 감싸서, 어디서든 쉽게 실행할 수 있도록 해 주는 기술
💡 도커
- 컨테이너 배포에 필요한 모든 기능을 제공하는 플랫폼
- IaaS의 장점(이식성, 유연성) + PaaS의 장점(운영효율성)을 합친 것
- 컨테이너를 다루는 도구
💡 도커파일
- 패키지, 환경변수설정 기록 파일, 이를 빌드해 도커 이미지로 변환함
💡 도커 이미지
- 컨테이너의 설계도 역할
- 컨테이너 실행에 필요한 파일과 설정값, 데이터를 포함한 상태값이다. 하나의 이미지에 여러개의 컨테이너를 생성할 수 있다.
- 특정 프로세스를 실행하기 위한 환경 상태들을 여러 파일로 저장해놓은 것
💡 도커 컨테이너
- 컨테이너가 실행되면 도커이미지에 설정된 프로그램, 데이터가 실제 컴퓨팅자원과 연결됨
- 컨테이너로 무엇을 하든 이미지에는 변화가 없다. 다만 컨테이너(독립된 프로세스)에 새로운 파일을 더해 새로운 이미지로 만들수는 있다.
- 도커 이미지는 프로그램 설치 CD이고 도커 컨테이너는 그 프로그램을 실행한 프로세스다.
💡 쿠버네티스(Kubernetes)
- 컨테이너화된 애플리케이션을 배포, 관리, 확장할 때 수반되는 다수의 수동 프로세스를 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼
- 여러 서버(노드)에 컨테이너를 분산해서 배치하거나, 문제가 생긴 컨테이너를 교체하거나, 컨테이너가 사용할 비밀번호나 환경 설정을 관리하고 주입해 주는 일 등
⭐ 전통적 배포방식 VS 가상화 배포방식 VS 컨테이너 배포방식
- 전통적 배포방식
- 하나의 OS위에 여러 프로그램을 사용하는 것, 다른 앱에 영향을 미친다.
- 가상화 배포방식
- 여러개의 OS를 구동하여 다른 앱에 영향을 끼치지 않는다.
- 하이퍼바이저는 하나의 시스템 상에서 가상 컴퓨터를 여러 개 구동할 수 있도록 해 주는 중간 계층
- App은 실행하고자 하는 프로그램, Bin/Library는 프로그램이 실행하는데 필요한 환경과 관련된 파일
- 컨테이너 배포방식
- 컨테이너는 가상머신과 달리 프로그램 구동을 위해서 OS를 매번 설치할 필요가 없다.
- 하나의 OS만 사용한다.
- '서로 다른 프로그램이 서로 다른 컴퓨터에서 깔려 있다’고 생각하게 된다.
- 프로그램의 문제가 OS에 문제를 일으킬 경우에는 OS에서 구동 중인 전체 컨테이너의 문제가 될 가능성