[docker] 시스템과 인프라 기초 지식

develop, docker
written byzuhern1zuhern

in

2021. 02. 07


공부하는 책
완벽한 IT 인프라 구축을 위한 Docker (2판)
복습을 위해 요약한 것.

목표

docker 책 1장 내용 숙지

  • Docker를 도입하기에 앞서 알아두어야할 시스템 기반의 개요
  • 시스템 기반을 다루기 위해 필요한 인프라 기술의 핵심 내용에 대한 내용

공부내용 정리

  • Docker는 애플리케이션 실행 환경을 작성 및 관리하기 위한 플랫폼1

1.1 docker 시스템과 인프라 기초 지식

  • 클라우드를 구성하는 대부분의 기술은 분산 환경에서 가동시키는 것이 기본
  • 분산환경에서는 인프라 엔지니어가 자동화된 툴을 사용하여 오케스트레이션 함

1.1.1 시스템기반2의 구성 요소

(1) 요구사항

  • 기능: 시스템의 기능으로서, 시스템이나 소프트웨어에서 우엇을 할 수 있는지를 모아놓은 것.
  • 비기능: 시스템의 성능이나 신뢰성, 확장성, 운용성, 보안 등

(2) 구성요소

  • 하드웨어: 서버 장비 본체, 스트리지, 전원 장치 등
  • 네트워크: 라우터, 스위치, 방화벽, 케이블 배선 등
  • OS(운영체제): 하드웨어나 네크워크 장비를 제어하기 위한 기본 소프트웨어. 하드웨어의 리소스나 프로세스를 관리
  • 미들웨어: 서버OS상에서 서버가 특정 역할을 다하기 위한 기능을 갖고 있는 소프트웨어

1.1.2 클라우드와 온프레미스3

(1) 온프레미스(on-premises)

  • 자사에서 데이터센터를 보유하고 시스템 구축부터 운용까지를 모두 수행하는 형태
  • 초기 시스템 투자에 드는 비용 부담이 큼
  • 시스템 이용량과 상관없이 일정 금액을 부담해야하는 것이 특징

(2) 퍼블릭 클라우드

  • 인터넷을 경유하여 불특정 다수에게 제공되는 클라우드 서비스
  • 초기 투자가 필요없음
  • 이용한 시간이나 데이터 양에 따라 요금 지불

(3) 프라이빗 클라우드

  • 특정 기업 그룹에게만 제공되는 클라우드 서비스
  • 이용자를 한정할 수 있으므로 보안을 확보하기 쉬움
  • 독자적인 기능이나 서비스 추가에 용이
  • 클라우드 업체가 요구사항에 맞춰 단기간에 인프라 구축

1.1.3 클라우드가 적합한 케이스

  • 트래픽의 변동이 많은 시스템

    클라우드 오토스케일 기능
    동적으로 서버 사양이나 스토리지 용량을 쉽게 증설시킬 수 있음

  • 해외에 백업을 구축하고 싶은 시스템

    업무 연속성 계획
    재해와 같은, 사업 중단을 야기하는 리스크를 최소한으로 하기위해 미리 준비해 두는 계획

  • 서비스를 빨리 제공하고 싶은 시스템

1.1.4 온프레미스가 적합한 케이스

  • 가용성이 요구되는 시스템
  • 기밀성이 높은 데이터를 다루는 시스템
  • 특수한 요구사항이 있는 시스템

1.1.5 시스템 기반의 구축/운용 흐름

단계 설명
시스템 구축 계획 및 요구사항 정의 단계 구축 범위 선정, 요구사항 정의, 예산 책정, 프로젝트 체계화, 마이그레이션, 연계
인프라 설계 단계 아키텍쳐 설계, OS,미들웨어 선택, 시스템 운용 설계, 시스템 마이그레이션 셜게
인프라 구축 단계 네트워크 부설, 서버설치, 셋업, 테스트, 마이그레이션
운용 단계 서버프로세스, 네트워크, 리소스, 배치job모니터링, 데이터 백업, 정기유지보수, OS,미들웨어 업그레이드, 장애시 대응

Docker는 시스템 구축이나 시스템 운용을 자동화하고 테스트가 끝난 애플리케이션을 지속적으로 제공할 수 있는 플랫폼1
이 책…말이 너무…장황해…어려워 보이고 싶어하는 것 같다

1.2 하드웨어와 네트워크 기초 지식

1.2.1 서버 장비

CPU

  • 프로그램의 설계나 처리 등을 수행하는 전자회로 부품
  • CPU의 작동 주파수가 클수록 연산 능력 높아짐
  • 코어4 수가 많으면, 동시에 처리할수 있는 연산 수가 증가. 멀티코어
  • GPU: (graphics processing unit): 여러개 코어로 동시 및 병렬처리 프로세스

메모리

  • CPU가 직접 액세스할 수 있는 기억장치

스토리지

  • 영구적인 데이터 저장하는 디바이스, 보조기억장치
  • 하드디스크나 SSD등을 이용, 기업용도로 이용되는 Fiber Channer(FC) 하드디스크도 있음.
  • 대부분 다중화 구성을 취함

그외

  • 전원트러블 차단을 막기위한 UPS(무정전 전원장치)
  • KVM 스위치

1.2.2 네트워크 주소

  • MAC 주소 (물리 주소 / 이더넷 주소) : 48비트 주소 (앞 24비트: 네트워크 부품의 제조업체 식별번호)
  • IP 주소: 네트워크에 연결된 장비에 할당되는 식별번호

1.2.3 OSI 참조 모델과 통신 프로토콜

  • 통신프로토콜: 서로 어떤 약속으로 통신을 할지 정한 규약
  • OSI 참조 모델: ISO가 책정한, 컴퓨터의 통신 기능을 계층 구조로 나눈 개념 모델
계층 계층명 대표 프로토콜 대표 통신 기기
7계층 (L7) 응용 계층 HTTP, DNS, SMTP, SSH 방화벽, 로드밸런서
6계층 (L6) 표현 계층
5계층 (L5) 세션 계층
4계층 (L4) 전송 계층 TCP, UDP
3계층 (L3) 네트워크 계층 IP, ICMP 라우터, L3 스위치
2계층 (L2) 데이터 링크 계층 Ethernet L2 스위치, 브리지
1계층 (L1) 물리 계층 리피터 허브

1.2.4 방화벽

방화벽은 내부 네트워크와 외부와의 통신을 제어 > 내부 네트워크의 안전 유지를 위한 기술

  • 패킷 필터형: 포트번호나 IP주소를 바탕으로 필터링하는 방법
  • 애플리케이션 게이트웨이형

1.2.5 라우터

  • 라우터는 2개 이상의 서로 다른 네트워크 사이를 중계하기 위한 통신 장비
  • OSI 참조모델 3계층인 네트워크 계층에서 작동
  • 어떤 루트를 통해 데이터를 전송할지 판단하기 위한 경로 선택 기능을 가지고 있음
정적 경로 동적경로
라우터에 설정된 테이블을 바탕으로 정해진 경로 라우팅 프로토콜에서 설정된 경로

1.2.6 레이터 3 스위치

  • 라우터와 거의 똑같은 기능을 갖고 있음
  • 하드웨어로 라이팅 처리하여 고속
  • 연결가능한 이더넷 포트의 수가 많아서 널리 이용되고 있음

1.3 OS(Linux) 기초 지식

하드웨어나 네트워크를 제어하는 것이 OS의 역할
Docker는 Linux의 기능을 사용한 기술

  • 1991년 핀란드 Linus Torvalds가 개발한 Unix 호환 서버 OS
  • 보안 뛰어나고 안정적으로 작동
  • 스마트폰이나 임베디드 장비의 OS로도 작동
  • 오픈소스

Linux 커널

  • OS의 코어가 되는 부분
  • 하드웨어나 애플리케이션 소프트웨어를 제어하기 위한 기본적인 기능5을 갖고 있는 소프트웨어를 말함

Linux 배포판

  • 패키지화되어 배포되는 형태
  • Linux 커널 이외의 부분을 사용자 공간(userland)라고 함
  • 사용자 공간에서 디바이스에 직접 액세스할 수 없음 (커널을 통해 처리)

1.3.1 Linux 커널

  • 디바이스 관리: 하드웨어6를 디바이스 드라이버로 제어
  • 프로세스7 관리: 프로세스에 PID8부여, 프로세스 실행을 위해 필요한 CPU를 효율적으로 할당하는 역할

메모리 관리: 메모리 할당/해제

메모리의 물리적인 용량을 초과하는 프로그램/데이터를 전개할 때는 하드디스크와 같은 보조기억장치에 가상 메모리 영역을 만듦. 이러한 가상 메모리 영역을 스왑(swap) 이라고 함.

  • 스왑아웃: 메모리상에 전개된 이용 빈도가 낮은 데이터를 스왑으로 보냄
  • 스왑인: 스왑상의 데이터를 메모리로 되돌림

쉘은 생략..

1.3.2 Linux 파일 시스템

  • 파일 시스템은 Linux에서 하드디스크나 USB 메모리, CD, DVD 등과 같은 데이터에 액세스하기 위한 장치
  • VFS9라는 장치를 사용하여 데이터에 대한 투과 액세스를 가능하게 함

Linux 디렉토리 생략..

1.4 미들웨어10 기초 지식

1.4.1 웹 서버/웹 애플리케이션 서버

  • 웹서버: 클라이언트의 브라우저가 보내온 HTTP 요청을 받아, 웹 콘텐츠(HTML, CSS 등)를 응답으로 반환하거나 다른 서버사이드 프로그램을 호출하는 기능을 갖고 있는 서버입니다.
  • 데이터베이스 서버: 시스템이 생성하는 다양한 데이터를 관리하기 위한 미들웨어
  • 시스템 감시 툴

1.5 인프라 구성 관리의 기초 지식

1.5.1 인프라 구성 관리

  • 인프라 구성 관리는 인프라를 구성하는 하드웨어, 네트워크, OS, 미들웨어, 애플리케이션의 구성 정보를 관리하고 적절한 상테러 유지하는 작업을 말합니다.
  • 클라우드에서 이 전에 구성한 인프라를 파기하고 새로운 것을 구축하는 것을 immutable infrastucture 라고 한다.

1.5.2 코드를 사용한 구성 관리

  • 인프라 구성 관리를 코드로 하고 형상관리로 이력 관리
  • Infrastructure as Code 라고 함.
  • Docker는 Dockerfile에 인프라의 구성 정보를 기술할 수 있음.

1.5.3 대표적인 인프라 구성 관리 툴

  • 생략
  • 분산 환경의 서버 관리 툴 : kubernetes11

1.5.4 지속적 인티그레이션/지속적 딜리버리

  • 지속적 인티그레이션: 코드 수정 -> 테스트 하여 확실하게 작동하는 코드를 유지하는 방법. 소프트웨어의 품질 향상을 목적으로 고안된 개발 프로세스



  1. 소프트웨어에서의 플랫폼: 여러가지 기능을 제공해주는 공통 실행환경

  2. 시스템 기반: 애플리케이션을 가동시키기 위해 필요한 하드웨어나 OS, 미들웨어 등과 같은 인프라를 말함.

  3. 온프레미스(on-premises): 자사에서 데이터센터를 보유하고 시스템 구축부터 운용까지를 모두 수행하는 형태

  4. CPU코어: CPU의 연산회로

  5. 하드웨어나 애플리케이션 소프트웨어를 제어하기 위한 기본적인 기능: 메모리관리, 파일시스템, 프로세스관리, 디바이스제어 등

  6. 하드웨어: CPU, 메모리, 디스크, 입출력 장치 등

  7. 프로세스: 해당 프로그램 파일 내용을 메모리상에 전개한 메모리상에 실행된 프로그램

  8. PID: 프로세스 ID

  9. VFS: Virtual File System: 가상 파일 시스템, 각 디바이스를 ‘파일’로 취급하는 것이 특징

  10. 미들웨어: OS와 업무 처리를 수행하는 애플리케이션 사이에 들어가는 소프트웨어. OS가 가진 기능을 확장한 것. 애플리케이션에서 사용하는 공통 기능을 제공하는 것.

  11. kubernetes: 컨테이너 오케스트레이션의 사실상 표준, 컨테이너 가상 환경에 있어서 여러 컨테이너를 통합 관리하는 툴, 배의 키잡이(조타수) 라는 뜻