- Facts
: 시스템 인프라 기초 지식, 컨테이너 기술, Docker 개요, Docker 이미지 조작까지 진도 나감 - Findings
:
<시스템과 인프라 기초 지식>
시스템 기반
- 애플리케이션을 가동시키기 위해 필요한 하드웨어나 OS/미들웨어 등과 같은 인프라
시스템 기반의 구성 요소
- 인프라 기술 : 시스템 기반을 다루는 기술
- 시스템에 요구되는 사항 : 기능요구 사항 : 시스템의 기능으로서 요구되는 사항
비기능 요구 사항 : 시스템의 성능이나 신뢰성, 확장성, 운용성, 보안 등과 같은 요구사항
시스템 기반의 구성 요소 하드웨어 시스템 기반을 구성하는 물리적인 요소
스토리지, 전원 장치 등네트워크 시스템 이용자가 원격지에서 액세스할 수 있도록 서버들을 연결하기 위한 요구사항
라우터, 스위치, 방화벽 등OS(운영체제) 하드웨어나 네트워크 장비를 제어하기 위한 기본 소프트웨어
클라이언트OS : Windows/macOS
서버 OS: Windows Server, Unix, Linux미들웨어 서버 OS 상에서 서버가 특정 역할을 다하기 위한 기능을 갖고 있는 소프트웨어
클라우드와 온프레미스
- 온프레미스 : 자사에서 데이터센터를 보유하고 시스템 구축부터 운용까지를 모두 수행하는 형태
초기 시스템 투자에 드는 비용 부담이 크며 시스템 가동 후의 운용에 드는 비용도 시스템 이용량과 상관없이 일정
금액을 부담
- 퍼블릭 클라우드 : 인터넥을 경유하여 불특정 다수에게 제공되는 클라우드 서비스
IaaS : 시스템 기반 부분을 이용하는 서비스 / 이용한 시간이나 데이터 양에 따라 요금 지불
- 프라이빗 클라우드 : 특정 기업 그룹에게만 제공되는 클라우드 서비스 / 서비스를 이용한 만큼만 요금 부과
클라우드가 적합한 케이스
- 트래픽의 변동이 많은 시스템
- 재해 대책으로 해외에 백업을 구축하고 싶은 시스템
- 서비스를 빨리 제공하고 싶은 시스템
온프레미스가 적합한 케이스
- 높은 가용성이 요구되는 시스템
- 기밀성이 높은 데이터를 다루는 시스템
- 특수한 요구사항이 있는 시스템
서버 장비
- CPU : 프로그램의 설계나 처리 등을 수행하는 전자회로 부품 / 코어 수가 많을수록 연산을 동시에 처리할 수 있는 수 증가
- 메모리 : CPU가 직접 액세스할 수 있는 기억장치를 메모리(주기억장치)라고 한다.
- 스토리지 : 데이터베이스에 기록하는 데이터 등과 가은 영구적인 데이터를 저장하는 디바이스 (보조기억장치)
네트워크 주소
- MAC 주소 (물리 주소/이더넷 주소) : 네트워크 인터페이스 카드나 무선 LAN 칩과 같은 네트워크 부품에 물리적으로 할당되는 48비트 주소
- IP 주소 : 인터넷이나 인트라넷과 같은 네트워크에 연결된 컴퓨터나 네트워크 장비에 할당되는 식별 번호
OSI 참조 모델과 통신 프로토콜
- OSI 참조 모델 : 국제표준화기구(ISO)가 책정한 컴퓨터의 통신 기능을 계층 구조로 나눈 개념 모델
OSI 참조 모델 대표 프로토콜 대표 통신 기기 7 계층(L7) 응용 계층 HTTP, DNS,SMTP, SSH 방화벽 로드밸런서 애플리케이션에 특화된 프로토콜을 규정 6 계층(L6) 표현 계층 데이터의 저장 형식이나 압축, 문자 인코딩과 같은 데이터의 표현 형식을 규정 5 계층(L5) 세션 계층 커넥션 확립 타이밍이나 데이터 전송 타이밍을 규정 4 계층(L4) 전송 계층 TCP, UDP 데이터 전송을 제어하는 계층 3 계층(L3) 네트워크 계층 IP, ICMP 라우터, L3 스위치 서로 다른 네트워크 간에 통신을 하기 위한 규정
라우팅 : 서로 다른 네트워크에 데이터 패킷을 전송2 계층(L2) 데이터 링크 계층 Ethernet L2 스위치, 브리지 동일한 네트워크 안(동일 세그먼트)에 있는 도드 간의 통신을 규정
MAC 주소로 데이터를 전송1 계층(L1) 물리 계층 리피터 허브 통신 장비의 물리적 및 전기적 특성을 규정
방화벽
- 내부 네트워크와 외부와의 통신을 제어하고 내부 네트워크의 안전을 유지하기 위한 기술
- 패킷 필터형 : 통과하는 패킷을 포트 번호나 IP 주소를 바탕으로 필터링하는 방법
- 애플리케이션 게이트웨이형 : 패킷이 아니라 애플리케이션 프로토콜 레벨에서 외부와의 통신을 대체 제어 ( 프록시 서버)
라우터/레이어 3 스위치
- 라우터 : 2개 이상의 서로 다른 네트워크 간을 중계하기 위한 통신 장비 / 경로 선택 기능 / 정적 경로, 동적 경로
- 레이어 3 스위치 : 라우팅을 하드웨어로 처리하고 있어서 고속으로 작동 / 연결 가능한 이더넷 포트의 수가 많음
Linux
- Unix 호환 서버 OS로 보안이 뛰어나며 안정적으로 작동
- Linux 커널 : OS의 코어로 OS로서 하드웨어나 애플리케이션 소프트웨어를 제어하기 위한 기본적 기능을 갖고 있는 소프트웨어
- Linux 배포판 : 리눅스 커널과 함께 각종 커맨드, 라이브러리, 애플리케이션이 포함
Linux 커널
- 하드웨어 제어에 관한 OS의 핵심이 되는 기능
- 디바이스 관리 : 하드웨어를 디바이스 드라이버라는 소프트웨어를 이용하여 제어
- 프로세스 관리 : 프로세스에 PID(프로세스ID)라는 식별자를 붙여 관리 / 필요한 CPU를 효율적으로 할당
프로세스 : 명령을 실행할 때는 해당 프로그램 파일에 쓰여있는 내용을 읽어 들여 메모리상에 전개한 후 메모리상의
프로그램을 실행
- 메모리 관리 : 프로그램/데이터를 물리 메모리에 효율적으로 할당하는 역할 / 실행이 끝난 프로세스가 사용하던 메모리 영역 해제
스왑(swap) : 가상 메모리 영역
쉘(shell) : 사용자가 내린 명령을 커맨드로 받아 리눅스 커널에 전달
쉘 스크립트 : 쉘에서 실행하고자 하는 명령을 모아서 텍스트 파일에 기술한 것
Linux 파일 시스템
- 파일 시스템 : Linux에서 하드디스크나 USB 메모리, CD, DVD 등과 같은 데이터에 액세스하기 위한 장치
- Linux 커널은 VFS(Virtual File System: 가상 파일 시스템)라는 장치를 사용하여 데이터에 대한 투과 액세스를 가능하게 함
미들웨어
- OS와 업무 처리를 수행하는 애플리케이션 사이에 들어가는 소프트웨어
웹 서버
- 클라이언트의 브라우저가 보내온 HTTP 요펑을 받아, 웹 콘텐츠(HTML, CSS 등)를 응답으로 반환하거나 다른 서버사이드 프로그램을 호출하는 기능을 갖고 있는 서버
- Apache HTTP Server / Internet Information Services, Nginx
데이터베이스 서버
- 시스템이 생성하는 다양한 데이터를 관리하기 위한 미들웨어
- 관계형 데이터베이스 : 데이터를 2차원 표 형식으로 관리하는 데이터베이스로 여러 개의 표를 결합하여 이용
- DBMS(Database Management System) : MySQL / PostreSQL / Oracel Database
- NoSQL : 대량의 데이터 축적이나 병령 처리에 뛰어나 다수의 사용자 액세스를 처리할 필요가 있는 온라인 시스템에서 이용
Redis / MongoDB / Apache Cassandra
시스템 감시 툴
- 시스템의 감시 대상인 서버나 장비의 상태를 감시하여 미리 설정한 경계 값을 초과한 경우에 정해진 액션을 실행
- Zabbix / Datadog / Mackerel
인프라 구성 관리
- 인프라를 구성하는 하드웨어, 네트워크, OS, 미들웨어, 애플리케이션의 구성 정보를 관리하고 적절한 상태로 유지하는 작업
- Immutable Infrastructure : 한번 구축한 인프라는 변경을 하지 않고 파기 후 새로운 것 구축 / 현재 작동하고 있는 인프라의 상태를 관리
- 툴 : OS의 시작을 자동화 하는 툴 : Vagrant
OS나 미들웨어의 설정을 자동화하는 툴 : Ansible
여러 서버의 관리를 자동화하는 툴 : Kubernetes
지속적 인티그레이션
- Continuous Integration : 애플리케이션의 코드를 추가 및 수정할 때마다 테스트를 실행하고 확실하게 작동하는 코드를 유지하는 방법
<컨테이너 기술과 Docker의 개요>
Docker
- 컨테이너 기술을 사용하여 애플리케이션의 실행 환경을 구축 및 운용하기 위한 플랫폼
- 애플리케이션의 실행에 필요한 환경을 하나의 이밈지로 모아두고 그 이미지를 사용하여 다양한 환경에서 애플리케이션 실행 환경을 구축 및 운용하기 위한 오픈소스 플랫폼
- Docker 이미지 : Docker를 사용하여 개발한 애플리케이션의 실행에 필요한 모든 것이 포함
컨테이너
- 호스트OS상에 논리적인 구획(컨테이너)을 만들고, 애플리케이션을 작동시키기 위해 필요한 라이브러리나 애플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것
- 애플리케이션의 실행에 필요한 모든 파일 및 디렉토리들을 모은것
- 컨테이너 기술 : 애플리케이션의 실행 환경을 모음으로써 이식성을 높이고 확장성이 좋은 환경에서 작동하는 것을 지향
Docker의 기능
- Build : 이미지를 만드는 기능 (이미지 : 애플리케이션의 실행에 필요한 파일들이 저장된 디렉토리)
- Ship : 이미지를 공유하는 기능
- Run : 컨테이너를 작동시키는 기능
Docker 컴포넌트
- Docker Engine : 이미지를 생성하고 컨테이너를 기동시키기 위한 핵심 기능
- Docker Registry : 이미지를 공개 및 공유하기 위한 레지스트리 기능
- Docker Compose : 여러개의 컨테이너 구성 정보를 코드로 정의하고 명령을 실행함으로써 애플리케이션의 실행환경을 구성하는 컨테이너들을 일원 관리하기 위한 툴
- Docker Machine : 실행환경을 명령으로 자동 생성하기 위한 툴
- Docker Swarm : 호스트들을 클러스터화하기 위한 툴
namespace
- 컨테이너를 구획하는 장치
- PID namesapce : PID란 Linux에서 각 프로세스에 할당한 고유한 ID로 PID namespace는 PID와 프로세스를 격리 시킴
- Network namespace : 네트워크 디바이스, IP 주소, 포트 번호, 라우팅 테이블, 필터링 테이블 등과 같은 네트워크 리소스를 격리된 namespace마다 독립적으로 가질 수 있음
- UID namespace : namespace 안과 호스트 OS 상의 UID/GID가 서로 연결되어 이름공간 안과 갑ㄲ에서 서로 다른 UID/GID를 가질 수 있다
- MOUNT namespace : 마운트란 컴퓨터에 연결된 기기나 기억장치를 OS에 인식 시켜 이용 가능한 상태로 만드는 것
- UTS namespace : 호스트명이나 도메인명을 독자적으로 가질 수 있다
- IPC namespace : 프로세스간의 통신(IPC) 오브젝트를 namespace 별로 독립적으로 가질 수 있다.
cgroups (control groups)
- 자원의 할당 관리
- 프로세스와 스레드를 그룹화하여 그 그룹안에 존재하는 프로세스와 스레드에 대한 관리를 수행하기 위한 기능
가상 NIC
- OSI 참조 모델의 레이어 2인 가상 네트워크 인터페이스로, 페어인 NIC와 터널링 통신을 한다
NAPT(Network Address Port Translation)
- 하나의 IP 주소를 여러 컴퓨터가 공유하는 기술로 IP 주소와 포트 번호를 변환하는
Docker 이미지의 데이터 관리 장치
- AUFS : 다른 파일 시스템의 파일이나 디렉토리를 투과적으로 겹쳐서 하나의 파일 트리를 구성할 수 있는 파일 시스템
- Btrfs : 과거의 상태로 돌아갈 수 있는 롤백 기능이나 어떤 시점에서의 상태를 저장할 수 있는 스냅샷 기능을 갖고있다
- Device Mapper : 파일 시스템의 블록 I/O와 디바이스의 매핑 관계를 관리
- OverlayFS : 파일 시스템에 다른 파일 시스템을 투과적으로 머징
- ZFS : 볼륜 관리 스냅샷, 체크섬 처리, 리플리케이션 등을 지원
Docker 명령어
- docker container run : 컨테이너 작성 및 실행
- docker version : 버전 확인
- docker system info : 실행 환경 확인
- docker system df : 디스크 이용 상황 확인
- docker container ps : docker로 가동시킨 Nginx 서버의 상태 확인
- docker container stats : 컨테이너 가동 확인
- docker image pull : 이미지 다운로드 / docker image ls : 취득한 이미지 목록 표시 / docker image inspect : 이미지 상세 정보 확인 / docker image tag : 이미지에 표식이 되는 태그 붙임 / docker image rm : 이미지 삭제 / docker image prune : 사용하지 않은 Docker 이미지 삭제 / docker image push : 이미지 업로드
- docker login : Docker 리포지토리에 업로드하기 위해서 로그인 할때 / docker logout
- docker search : Docker Hub에 공개되어있는 이미지 검색
- -a 옵션 : 모든 태그 취득
Nginx
- 오픈 소스 웹 서버로 대량의 요청을 처리하는 대규모 사이트에서 주로 이용. 리버스 프록시나 로드밸런서와 같은 기능도 갖고 있다.
<수업 필기>
클라우드 : 가상화 기술을 이용해서 네트워크로 접근 가능한 서비스를 제공
온프레미스 : 직접 구성
비용 : 온프레미스 환경을 구성하려면 초기 구성 비용 증대
클라우드 환경은 사용 기간에 따른 비용 발생
시간 : 클라우드 사용 시 초기 구성 시간 절약
보안 : 클라우드는 제공업체에서 직접 구성 / 관리
신뢰도 측면에서 선택
온프레미스는 개인정보 등의 민감한 데이터 저장에 유리
도커 : 컨테이너 런타임(엔진) -> 컨테이너 가상화 환경에서 컨테이너를 만들고 관리해주는 소프트웨어 (하드웨어 접근에 대해서는 x)
컨테이너 가상화 기술을 이용해서 어플리케이션을 독립적으로 실행하는 기술(소프트웨어)
도커가 사용하는 기본 기술 : 네임스페이스 / Cgroup / 소프트웨어 브릿지 /. 계층적파일시스템.
네임스페이스 : 컨테이너에서 하용할 개체의 구분
Cgroup : 컨테이너 별 리소스 할당 / 제어
소프트웨어 브릿지 : 컨테이너에 대한 외부 접근 (NAPT)
계층적 파일 시스템 : COW / overlay -> 컨테이너에서의 쓰기 작업 지원
'GOORM' 카테고리의 다른 글
GOORM: Kubernetes-33 (0) | 2021.12.25 |
---|---|
GOORM: Kubernetes-32 (0) | 2021.12.25 |
GOORM: Kubernetes-30 (0) | 2021.12.06 |
GOORM: Kubernetes-29 (0) | 2021.12.02 |
GOORM: Kubernetes-28 (0) | 2021.12.01 |
댓글