학습 목표
- 여기서는 Docker를 도입하기에 앞서 알아두어야 할 시스템 기반의 개요와 시스템 기반을 다루기 위해 필요한 인프라 기술의 핵심 내용에 대해 설명한다.
Docker 의 간단한 정의
- 개발한 애플리케이션을 릴리스하여 최종 사용자가 이용할 수 있도록 하려면 시스템 기반을 구축하고 그 위에 애플리케이션의 실행 환경을 마련해야 한다.
- 시스템 기반이란 애플리케이션을 가동시키기 위해 필요한 하드웨어나 OS/미들웨어 등과 같은 인프라를 말한다.
- Docker는 애플리케이션 실행 환경을 작성 및 관리하기 위한 플랫폼이다.
- Docker는 시스템 구축이나 시스템 운용에 있어서 지금까지 사람의 손으로 해 왔던 많은 작업을 자동화하고, 테스트가 끝난 안전한 애플리케이션을 지속적으로 제공할 수 있는 플랫폼이다.
1.1 시스템 기반의 기초 지식
- 폭포형 모델*을 사용한 시스템 개발에서는 애플리케이션 실행 환경의 구축은 네트워크나 하드웨어에 능통한 인프라 엔지니어가 담당하고, 애플리케이션 개발 부분은 업무 지식 및 프로그래밍, 테스트 방법과 같은 기술을 잘 아는 애플리케이션 엔지니어가 담당하는 것이 일반적
폭포수 모델(waterfall model)은 순차적인 소프트웨어 개발 프로세스(소프트웨어를 만들기 위한 프로세스)로, 개발의 흐름이 마치 폭포수처럼 지속적으로 아래로 향하는 것처럼 보이는 데서 이름이 붙여졌다. 이 폭포수 모델의 흐름은 소프트웨어 요구사항 분석 단계에서 시작하여, 소프트웨어 설계, 소프트웨어 구현, 소프트웨어 시험, 소프트웨어 통합 단계 등을 거쳐, 소프트웨어 유지보수 단계에까지 이른다. by. 위키백과
- 하지만 클라우드의 등장으로 흐름이 바뀜. 온프레미스 환경에서 클라우드 상의 가상 인스턴스로 옮겨짐.
인프라 엔지니어가 수동으로 운용을 하지 않고 자동화 된 툴을 사용하여 오케스트레이션*을 한다. 따라서 인프라 엔지니어에게는 인프라 기술에 더하여 에플리케이션 엔지니어와 똑같이 코드를 작성하는 스킬이 요구됨.
시스템 관리에서 오케스트레이션(orchestration)은 컴퓨터 시스템과 소프트웨어의 자동화된 구성, 조율, 관리이다.
클라우드 컴퓨팅 문맥에서 워크플로 자동화와 오케스트레이션 간의 주된 차이점이 있는데 워크플로우는 자동화 목적을 위해 하나의 도메인 안에서 프로세스로서 처리되고 완성되는 반면 오케스트레이션에는 워크플로가 포함되며 더 큰 목표와 목적을 위한 지시된 동작을 제공한다. by. 위키백과
이러한 컨테이너 오케스트레이션 도구들로는 Kubernetes, Docker Swarm, Apache Mesos 등이 있다. - by. manTech
1.1.1 시스템 기반의 구성 요소
- 시스템 기반이란 애플리케이션을 가동시키기 위해 필요한 하드웨어나 OS, 미들웨어 등과 같은 인프라를 말한다. 이러한 시스템 기반을 다루는 기술을 인프라 기술이라고 부르겠다.
기본이 되는 시스템 기반의 구성요소
- 하드웨어
- 시스템 기반을 구성하는 물리적인 요소
- 서버 장비 본체나 데이터 저장을 위한 스토리지, 전원 장치
- 넓은 의미에서는 이러한 하드웨어들을 설치하는 데이터 센터의 설비(건물, 공조, 보안 설미, 소화 설비)도 포함된다
- 네트워크
- 시스템 이용자가 원격지에서 엑세스 할 수 있도록 서버들을 연결하기 위한 요구사항.
- 라우터, 스위치, 방화벽 등과 같은 네트워크 장비나 그것들을 연결하기 위한 케이블 배선 등도 관리
- 사용자가 이용하는 클라이언트 단말기에서 무선 LAN으로 연결하는 경우에는 엑세스 포인트 등도 필요
- OS(운영체제)
- 하드웨어나 네트워크 장비를 제어하기 위한 기본 소프트웨어로, 하드웨어의 리소스나 프로세스를 관리
- 클라이언트 OS는 Windows/macOS 등이 있다. 클라이언트 OS에는 이용자가 사용하기 쉽도록 GUI 기능이나 멀티미디어 기능이 마련되어 있다.
- 서버 OS로는 Windows Server, Unixm Linux 등이 있다. 서버 OS는 시스템을 고속 및 안정적으로 가동시키기 위해 필요한 기능으로 특화되어 있다.
- 미들웨어
- 서버 OS 상에서 서버가 특정 역할을 다하기 위한 기능을 갖고 있는 소프트웨어를 말한다.
1.1.2 클라우드와 온프레미스
- 온프레미스
- 자사에서 데이터센터를 보유하고 시스템 구축부터 운용까지를 모두 수행하는 형태
- 하드웨어 뿐만 아니라 OS나 미들웨어도 모두 자사에서 구입하며, 라이선스 관리나 버전업도 자사에서 한다.
- 퍼블릭 클라우드
- 인터넷을 경유하여 불특정 다수에게 제공하는 클라우드 서비스
- 자사에서 데이터센터를 보유하지 않으므로 서버나 네트워크 등 인프라와 관련된 초기 투자가 필요 없다.
- 제공할 서비스에 따라 Iaas/PaaS/SaaS 등이 있다.
- 프라이빗 클라우드
- 특정 기업 그룹에게만 제공되는 클라우드 서비스
- 이용자를 한정할 수 있으므로 보안을 확보하기 쉬우며 독자적인 기능이나 서비스를 추가하기 쉽다
IaaS : 물리적 자원 제공
인프라스트럭처 서비스는 확장성이 높고 자동화된 컴퓨팅 리소스를 가상화하여 제공하는 것입니다.
PaaS : 소프트웨어 개발을 돕는 플랫폼 제공
클라우드 플랫폼 서비스는 주로 응용 프로그램을 개발할 때 필요한 플랫폼을 제공하는 것입니다.
SaaS : 고객이 사용하는 소프트웨어 제공
클라우드 애플리케이션(소프트웨어) 서비스는 사용자에게 제공되는 소프트웨어를 가상화하여 제공하는 것입니다. SaaS는 타사 공급 업체가 관리하는 사용자에게 응용 프로그램을 제공하기 위해 인터넷을 사용합니다. 대부분의 SaaS 애플리케이션 웹 브라우저를 통해 직접 실행되므로 클라이언트 측에서 다운로드나 설치가 필요하지 않습니다.
by. WhaTap
1.1.3 클라우드가 적합한 케이스
- 트래픽의 변동이 많은 시스템
- 트래픽 양에 따라 시스템 기반의 서버 사양이나 네트워크 대역을 가늠하는 설계를 사이징(sizing)이라고 하는데, 사이징이 어려운 시스템은 트래픽 양에 따라 시스템을 단기간에 쉽게 증설시킬 수 있는 클라우드 시스템으로 구성하는 것이 좋다.
- 오토스케일 기능을 사용하면 시스템 부항에 맞춰 "동적"으로 서버 사양이나 스토리지 용량을 쉽게 증설시킬 수 있다.
- 물리적인 서버나 네트워크를 의식하지 않고 스케일러블한 기반을 구축할 수 있다.
- 재해 대책으로 해외에 백업을 구축하고 싶은 시스템
- 서비스를 빨리 제공하고 싶은 시스템
1.1.4 온프레미스가 적합한 케이스
- 높은 가용성이 요구되는 시스템
- 네트워크가 잠시라도 끊어져서는 안 되는 경우
- 기밀성이 높은 데이터를 다루는 시스템
- 특수한 요구사항이 있는 시스템
- 범용적이지 않은 디바이스나 특수한 플랫폼에서만 움직이는 시스템을 구축하거나 이전할 필요가 있는 경우, 그러한 환경을 클라우드 측이 처리해 주지 못하면 이용할 수 없다. 의료 시스템과 같이 전용 장비와의 연결이 필요한 경우가 해당
참고
1. https://ko.wikipedia.org/wiki/%ED%8F%AD%ED%8F%AC%EC%88%98_%EB%AA%A8%EB%8D%B8
3. https://www.whatap.io/ko/blog/9/
'Docker' 카테고리의 다른 글
Docker Compose - 1 (0) | 2023.02.23 |
---|---|
Docker 명령어 정리 - 2 (0) | 2023.01.26 |
DockerFile 작성하기 - 구성과 명령어 정리 - 1 (0) | 2023.01.23 |
Docker에 대해 알아보자 - 정의, 작동 방식, 사용 이유 (0) | 2023.01.22 |
[Docker] 1. WSL2 에 Docker 개발 환경 구축하기 (0) | 2022.11.28 |