애플리케이션 서버
서버란? 하드웨어와 그 하드웨어에서 실행중인 소프트웨어를 통합한 단어
즉, 클라이언트의 어떠한 요청에 대한 기능을 수행하고 그 결과를 제공하여 주는 곳.
파일서버, DB서버, 웹서버, 웹애플리케이션 서버(WAS)로 분류된다.
웹서버는 클라이언트가 HTTP요청을 보내면 정적인 웹 페이지를 응답.
WAS는 백엔드 애플리케이션을 실행하는 서버.
가상화 기술과 하이퍼바이저 가상화
가상화 기술 : 실제로 존재하지 않지만 마치 존재하는 것처럼 컴퓨터를 사용하는 기술, 즉 물리적인 컴퓨터에서 논리적인 컴퓨팅 환경을 사용하는 것
사용 이유 : 한개의 물리적인 OS환경에서 여러 프로그램을 돌린다면 서로 영향을 줄 수 있다.
하지만 여러 논리적 OS환경을 사용한다면 서로 리소스를 완벽히 분리하여 사용할 수 있다. 높은 성능의 HW 한개를 사용하는 것이 낮은 성능의 HW 여러개를 사용하는 것보다 경제적이므로 가상화는 필수적이다.가상화 기술 1. 하이퍼바이저 방식
하이퍼바이저는 컴퓨터에 설치하는 프로그램이다.(ex. virtual box)
호스트 OS(물리적OS)에 하이퍼바이저를 설치하여 가상머신을 생성하고, 그곳에 가상환경(게스트OS)을 돌린다.
이 때, 게스트OS는 호스트OS의 리소스를 사용하기 때문에 HW의 리소스에 접근하려면 물리적 OS의 커널을 통해 System Call을 날려야 하고, 만약 게스트OS와 호스트OS가 다르다면 이는 호환되지 않는다. 따라서 이 호환성 문제를 해결하기 위하여 존재하는 것이 하이퍼바이저이다.가상화 기술 2. 컨테이너 가상화
먼저, 하이퍼바이저 방식에 비하여 가볍고 빠르다.
리눅스 커널이 제공하는 LXC를 사용하여 하이퍼바이저 없이 커널의 격리 기능을 활용하여 각각 격리된 공간인 컨테이너를 생성한다.
이 때, 게스트OS들은 호스트OS의 커널을 공유하여 사용하기 때문에 하이퍼바이저를 거치는 Overhead가 적다.
하지만 게스트OS를 호스트OS에 맞추어 사용하여야 한다.
도커란?
커널의 컨테이너 가상화 기술을 사용하기 위한 컨테이너 플랫폼.
클라이언트는 CLI로 형성되어 있으며, 명령어 실행시 DockerD의 API형식에 맞는 요청을 보내고, 이를 통하여 DockerD가 컨테이너를 관리하며 응답을 반환한다.도커 커맨드
도커의 커맨드는 터미널(git bash)에서 실행하며,
docker (Management Command) Command
로 구성되어 있으며, 대분류로 볼 수 있는 Management Command는 생략 가능하다.
각 Manage Command와 Command는docker (Manage Command) --help
를 통하여 확인할 수 있다.