-
서론
-
클라우드란 무엇인가?
-
클라우드 컴퓨팅 제공 방식
-
온 프레미스 (On-premise)
-
퍼블릭 클라우드 (Public cloud)
-
프라이빗 클라우드 (Private cloud)
-
하이브리드 클라우드 (Hybrid cloud)
-
클라우드 서비스 종류
-
서비스로서의 인프라스트럭처 (IaaS - Infrastructure as a Service)
-
서비스로서의 플랫폼 (PaaS - Platform as a Service)
-
서비스로서의 플랫폼 (SaaS - Software as a Service)
-
가상머신과 컨테이너
-
가상화
-
하이퍼바이저 방식 (Hypervisor)
-
컨테이너 방식 (Container)
-
도커(Docker)
서론
지금껏 Docker를 개인 NAS 에 서버 올리는 용도로 간단히 공부하여 잘 쓰고 있었다.
그러나 그는 CentOS 이미지를 올렸을 때 나오는 D-Bus문제에 직면했고...
어떻게든 해결은 하였으나 이렇게 된 김에 처음부터 다시 공부해보기로 하는데..
클라우드란 무엇인가?
클라우드란, 인프라에 사용되는 서버, 저장소, 데이터베이스, 네트워크, 소프트웨어, 데이터 분석 등을 포함해 사용자가 언제든지 인터넷과 모바일 등을 통해 IT서비스를 제공받을 수 있도록 하는 컴퓨팅 기술이다.
클라우드의 주요 기능으로는 클러스터, 가상화, 분할, 프로비저닝, 자율 컴퓨팅, 그리드 컴퓨팅 등이 있다.
클라우드 컴퓨팅 제공 방식
온 프레미스 (On-premise)
기업들이 자체 데이터 및 솔루션 등을 저장하기 위해 자사에 데이터 센터를 구축하였던 방식.
장점 | 단점 |
기업에 내재화된 서비스를 통해 품질 및 보안에 대한 신뢰도가 높다. | 하드웨어부터 모든 자원(CPU, Memory, Disk, OS, Network... 등)에 대한 초기 투자 비용과 탄력적이지 않은 제한된 용량으로 인해 지속적 관리 비용이 증가한다. |
최근에 많은 기업들이 클라우드 서비스 전환을 고민하고 있는데, 그 이유는 높은 초기 도입 비용과 운용에 따른 추가 비용 때문이다. (서버도 사야하구, 인프라도 구축해야 하니까..)
이 방식으로 설계한다면, 최대 순간 트래픽이나 최대 사용량을 근거로 해서 구축하기 때문에 고사양의 설계를 하게 되고, 증설에 따른 시간적, 인적 비용도 무시할 수 없게 커질 수 있다.. (하지만 어느 시점부터는 클라우드 비용이 더 커질수는 있겠다)
퍼블릭 클라우드 (Public cloud)
인터넷을 통해 다수의 사용자에게 서버 및 스토리지 등의 클라우드 자원을 AWS, GCP, Azure와 같은 클라우드 서비스 공급자로부터 제공받는 방식. IaaS, PaaS, SaaS가 여기에 해당된다.
다수의 대중을 위하여 인터넷 기반으로 운영되는 클라우드로서,
최소의 투자로 최대의 성과를 낼 수 있고 활용도가 높지만
통제 권한이 부족하거나 전문적인 서비스 제공이 불가능하다는 단점이 있다.
프라이빗 클라우드 (Private cloud)
제한된 네트워크에서 특정 사용자나 기업만을 대상으로 하는 클라우드 서비스 방식이다. 인트라넷이 여기에 해당되며, 보안성이 높다.
오직 한 조직만을 위하여 운영되는 클라우드로서,
보안성이 높고 네트워크 대역폭에 대한 제한이 없으며 서비스 수준 관리가 가능하다는 장점이 있지만
낮은 탄력성, 높은 비용의 문제가 있다.
하이브리드 클라우드 (Hybrid cloud)
Public cloud + Private cloud
두 가지 서비스의 장점을 활용할 수 있도록 만든 클라우드 서비스 방식이며, 용도에 맞는 서비스 구현에 유리하다.
클라우드 서비스 종류
서비스로서의 인프라스트럭처 (IaaS - Infrastructure as a Service)
서버, 스토리지, 네트워크와 같은 인프라 하드웨어 자원을 가상화하여 사용자 요구에 따라 인프라 자원을 사용할 수 있게 제공하는 클라우드 서비스 방식.
ex. KT, LG U+ service, AWS, GCP, Azure, Oracle Cloud platform
자동화되고 신속한 확장성을 갖고 있는 IT 인프라를 의미하며, 비용은 사용량에 따라 지불하는 방식이다.
서비스로서의 인프라스트럭처의 개념도 중요하지만 물리적으로 인프라에 사용되는 각각의 자원의 특징에 대한 지식이 유지관리 차원에서 반드시 필요하다. 2
서비스로서의 플랫폼 (PaaS - Platform as a Service)
서비스 개발자가 애플리케이션 개발, 실행, 관리 등을 할 수 있도록 안정적인 플랫폼(환경) 또는 프레임워크를 제공하는 클라우드 서비스 방식.
ex. AWS, GCP, Azure
개발자가 서비스 개발을 위한 복잡한 설치 과정이나 환경 설정을 하지 않고 완성된 개발 소스만 제공하면 서비스를 올릴 수 있는 플랫폼 서비스를 의미한다.
서비스로서의 플랫폼 (SaaS - Software as a Service)
소프트웨어 사용자가 자신의 컴퓨터에 소프트웨어를 설치하지 않고 인터넷을 통해 클라우드에 접속하여 클라우드 기반 소프트웨어의 기능을 사용할 수 있게 해주는 클라우스 서비스 방식.
ex. Google app service, CRM(Customer Relationship Management) service
소트프웨어 버전 업, 패치, 재설치 등의 작업 없이도 해당 기능을 사용할 수 있다.
가상머신과 컨테이너
가상화
하드웨어 기능을 시뮬레이션하여 애플리케이션 서버, 스토리지, 네트워크와 같은 유용한 IT 서비스를 생성하는 소프트웨어 아키텍처 기술.
최근 사용하고 있는 가상화는 하이퍼바이저를 이용한 가상머신과, 컨테이너를 이용한 도커 방식이다.
하이퍼바이저 방식 (Hypervisor)
가상머신(Virtual Machine)을 생성하고, 실행하는 역할과 가상화된 하드웨어와 각각의 가상머신을 모니터링하는 중간 관리자.
ex. VMWare / VirtualBox 등에서 사용되는, Guest OS가 사용할 수 있는 물리적 공간을 격리하는 기술
각각의 Guest OS는 호스트 운영체제로부터 독립된 자원을 할당받아 가상화된 서비스를 제공하기에, 용량이 큰 이미지를 만들어 사용한다.
컨테이너 방식 (Container)
리눅스 기반의 물리적 공간 격리가 아닌 프로세스 격리를 통해 경량의 이미지를 실행하고 서비스할 수 있게 하는 기술
컨테이너기술은 본래 리눅스 자체 기술인 chroot 3, namespace 4, cgroup 5을 조합한 리눅스 컨테이너(LinuX Container, LXC)에서 출발한다. 6
장점
- Hypervisor와 Guest OS가 없기 때문에 가볍다.
- 경량이기 때문에 만들어진 이미지 복제, 이관, 배포가 쉽다.
- Guest OS를 부팅하지 않기에 Application 시작 시간이 빠르다.
- 가상머신보다 경량이므로 더 많은 애플리케이션을 실행할 수 있다.
도커(Docker)
Application을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼.
도커 컨테이너 기술은 PaaS 서비스를 가능하게 하는 소프트웨어 개발환경을 제공하는 것이다.
대규모 클러스터 환경의 수많은 컨테이너를 쉽고 빠르게 확장, 배포, 관리하기 위해서는.. '쿠버네티스' 툴을 사용해야 하는데.. 나중에 알아보자.
- On-demand - 필요할 때 가져다 쓴다 [본문으로]
- 인프라스트럭처 - '인프라'라고 줄여 표기하는 경우가 많으며, 정보기술이나 인터넷에서 사용자들을 연결하는 데 사용되는 물리적인 하드웨어를 의미하기도 하고, 어떤 서비스가 운영되는 데 필요한 기본 배경을 의미하기도 한다. [본문으로]
- 컨테이너 - 사전적 의미로 보면, '특정 대상을 격리하는 공간'이라는 뜻을 가지고 있다. [본문으로]
- chroot - 특정 디렉토리를 최상위 디렉토리(root)로 인식하게끔 설정하는 리눅스 명령어 [본문으로]
- namespace - 프로세스 자원을 관리하는 기능으로, mnt, pid, net, ipc, user등의 자원을 그룹화하여 할당하는 그룹을 의미. [본문으로]
- cgroup - CPU, Memory, Disk I/O, Network 등의 자원 사용량 제어를 통해 특정 애플리케이션의 과도한 자원 사용을 제한하는 기능 [본문으로]
서론
지금껏 Docker를 개인 NAS 에 서버 올리는 용도로 간단히 공부하여 잘 쓰고 있었다.
그러나 그는 CentOS 이미지를 올렸을 때 나오는 D-Bus문제에 직면했고...
어떻게든 해결은 하였으나 이렇게 된 김에 처음부터 다시 공부해보기로 하는데..
클라우드란 무엇인가?
클라우드란, 인프라에 사용되는 서버, 저장소, 데이터베이스, 네트워크, 소프트웨어, 데이터 분석 등을 포함해 사용자가 언제든지 인터넷과 모바일 등을 통해 IT서비스를 제공받을 수 있도록 하는 컴퓨팅 기술이다.
클라우드의 주요 기능으로는 클러스터, 가상화, 분할, 프로비저닝, 자율 컴퓨팅, 그리드 컴퓨팅 등이 있다.
클라우드 컴퓨팅 제공 방식
온 프레미스 (On-premise)
기업들이 자체 데이터 및 솔루션 등을 저장하기 위해 자사에 데이터 센터를 구축하였던 방식.
장점 | 단점 |
기업에 내재화된 서비스를 통해 품질 및 보안에 대한 신뢰도가 높다. | 하드웨어부터 모든 자원(CPU, Memory, Disk, OS, Network... 등)에 대한 초기 투자 비용과 탄력적이지 않은 제한된 용량으로 인해 지속적 관리 비용이 증가한다. |
최근에 많은 기업들이 클라우드 서비스 전환을 고민하고 있는데, 그 이유는 높은 초기 도입 비용과 운용에 따른 추가 비용 때문이다. (서버도 사야하구, 인프라도 구축해야 하니까..)
이 방식으로 설계한다면, 최대 순간 트래픽이나 최대 사용량을 근거로 해서 구축하기 때문에 고사양의 설계를 하게 되고, 증설에 따른 시간적, 인적 비용도 무시할 수 없게 커질 수 있다.. (하지만 어느 시점부터는 클라우드 비용이 더 커질수는 있겠다)
퍼블릭 클라우드 (Public cloud)
인터넷을 통해 다수의 사용자에게 서버 및 스토리지 등의 클라우드 자원을 AWS, GCP, Azure와 같은 클라우드 서비스 공급자로부터 제공받는 방식. IaaS, PaaS, SaaS가 여기에 해당된다.
다수의 대중을 위하여 인터넷 기반으로 운영되는 클라우드로서,
최소의 투자로 최대의 성과를 낼 수 있고 활용도가 높지만
통제 권한이 부족하거나 전문적인 서비스 제공이 불가능하다는 단점이 있다.
프라이빗 클라우드 (Private cloud)
제한된 네트워크에서 특정 사용자나 기업만을 대상으로 하는 클라우드 서비스 방식이다. 인트라넷이 여기에 해당되며, 보안성이 높다.
오직 한 조직만을 위하여 운영되는 클라우드로서,
보안성이 높고 네트워크 대역폭에 대한 제한이 없으며 서비스 수준 관리가 가능하다는 장점이 있지만
낮은 탄력성, 높은 비용의 문제가 있다.
하이브리드 클라우드 (Hybrid cloud)
Public cloud + Private cloud
두 가지 서비스의 장점을 활용할 수 있도록 만든 클라우드 서비스 방식이며, 용도에 맞는 서비스 구현에 유리하다.
클라우드 서비스 종류
서비스로서의 인프라스트럭처 (IaaS - Infrastructure as a Service)
서버, 스토리지, 네트워크와 같은 인프라 하드웨어 자원을 가상화하여 사용자 요구에 따라 인프라 자원을 사용할 수 있게 제공하는 클라우드 서비스 방식.
ex. KT, LG U+ service, AWS, GCP, Azure, Oracle Cloud platform
자동화되고 신속한 확장성을 갖고 있는 IT 인프라를 의미하며, 비용은 사용량에 따라 지불하는 방식이다.
서비스로서의 인프라스트럭처의 개념도 중요하지만 물리적으로 인프라에 사용되는 각각의 자원의 특징에 대한 지식이 유지관리 차원에서 반드시 필요하다. 2
서비스로서의 플랫폼 (PaaS - Platform as a Service)
서비스 개발자가 애플리케이션 개발, 실행, 관리 등을 할 수 있도록 안정적인 플랫폼(환경) 또는 프레임워크를 제공하는 클라우드 서비스 방식.
ex. AWS, GCP, Azure
개발자가 서비스 개발을 위한 복잡한 설치 과정이나 환경 설정을 하지 않고 완성된 개발 소스만 제공하면 서비스를 올릴 수 있는 플랫폼 서비스를 의미한다.
서비스로서의 플랫폼 (SaaS - Software as a Service)
소프트웨어 사용자가 자신의 컴퓨터에 소프트웨어를 설치하지 않고 인터넷을 통해 클라우드에 접속하여 클라우드 기반 소프트웨어의 기능을 사용할 수 있게 해주는 클라우스 서비스 방식.
ex. Google app service, CRM(Customer Relationship Management) service
소트프웨어 버전 업, 패치, 재설치 등의 작업 없이도 해당 기능을 사용할 수 있다.
가상머신과 컨테이너
가상화
하드웨어 기능을 시뮬레이션하여 애플리케이션 서버, 스토리지, 네트워크와 같은 유용한 IT 서비스를 생성하는 소프트웨어 아키텍처 기술.
최근 사용하고 있는 가상화는 하이퍼바이저를 이용한 가상머신과, 컨테이너를 이용한 도커 방식이다.
하이퍼바이저 방식 (Hypervisor)
가상머신(Virtual Machine)을 생성하고, 실행하는 역할과 가상화된 하드웨어와 각각의 가상머신을 모니터링하는 중간 관리자.
ex. VMWare / VirtualBox 등에서 사용되는, Guest OS가 사용할 수 있는 물리적 공간을 격리하는 기술
각각의 Guest OS는 호스트 운영체제로부터 독립된 자원을 할당받아 가상화된 서비스를 제공하기에, 용량이 큰 이미지를 만들어 사용한다.
컨테이너 방식 (Container)
리눅스 기반의 물리적 공간 격리가 아닌 프로세스 격리를 통해 경량의 이미지를 실행하고 서비스할 수 있게 하는 기술
컨테이너기술은 본래 리눅스 자체 기술인 chroot 3, namespace 4, cgroup 5을 조합한 리눅스 컨테이너(LinuX Container, LXC)에서 출발한다. 6
장점
- Hypervisor와 Guest OS가 없기 때문에 가볍다.
- 경량이기 때문에 만들어진 이미지 복제, 이관, 배포가 쉽다.
- Guest OS를 부팅하지 않기에 Application 시작 시간이 빠르다.
- 가상머신보다 경량이므로 더 많은 애플리케이션을 실행할 수 있다.
도커(Docker)
Application을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼.
도커 컨테이너 기술은 PaaS 서비스를 가능하게 하는 소프트웨어 개발환경을 제공하는 것이다.
대규모 클러스터 환경의 수많은 컨테이너를 쉽고 빠르게 확장, 배포, 관리하기 위해서는.. '쿠버네티스' 툴을 사용해야 하는데.. 나중에 알아보자.
- On-demand - 필요할 때 가져다 쓴다 [본문으로]
- 인프라스트럭처 - '인프라'라고 줄여 표기하는 경우가 많으며, 정보기술이나 인터넷에서 사용자들을 연결하는 데 사용되는 물리적인 하드웨어를 의미하기도 하고, 어떤 서비스가 운영되는 데 필요한 기본 배경을 의미하기도 한다. [본문으로]
- 컨테이너 - 사전적 의미로 보면, '특정 대상을 격리하는 공간'이라는 뜻을 가지고 있다. [본문으로]
- chroot - 특정 디렉토리를 최상위 디렉토리(root)로 인식하게끔 설정하는 리눅스 명령어 [본문으로]
- namespace - 프로세스 자원을 관리하는 기능으로, mnt, pid, net, ipc, user등의 자원을 그룹화하여 할당하는 그룹을 의미. [본문으로]
- cgroup - CPU, Memory, Disk I/O, Network 등의 자원 사용량 제어를 통해 특정 애플리케이션의 과도한 자원 사용을 제한하는 기능 [본문으로]