일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- docker create
- docker logout
- RM
- Ctrl
- 이미지
- 파일
- q!
- locate 설치 방법
- find
- 리눅스마스터2급
- 도커
- lcoate 설치
- 레드햇
- container
- 자격증
- 디스크
- PS
- 명령어
- docker logs
- 컨테이너
- 리눅스
- etc
- linux
- umask
- image
- mkdir
- 이미지 레지스트리
- LS
- Docker
- 셸
- Today
- Total
Bae's Digital Dialogues
도커[Docker] 애플리케이션 서버와 서버 운영 방법론 본문
도커는 컨테이너를 관리하기 위해 만들어진 소프트웨어이다
컨테이너는 큰 서버를 효율적으로 나누어서 사용하기 위한 '가상화'라는 기술이다
도커와 컨테이너를 이해하려면 먼서 서버와 가상화 기술이 무엇인지 그리고 왜 사용하는지에 대한 이해가 필요하다
서버를 한마디로 정의하면 하드웨어나 그 하드웨어에서 실행 중인 소프트웨어까지 모두 포함하는 단어라고 생각하면 된다. 하드웨어 기계만 두고도 서버라고 부르고 소프트웨어만 있을때도 서버라고 부르는 경우가 있기 때문에 서버라는 단어는 문맥에 따라서 이해하면 된다.
"서버의 전원이 꺼졌습니다" -> 하드웨어 서버
"서버 설치 파일을 다운받았습니다" -> 소프트웨어 서버
일반적으로는 하드웨어에서 실행 중인 소프트웨어라고 생각하면 된다
서버: 하드웨어에서 실행중인 소프트웨어
서버는 항상 어떤 요청에 대한 결과를 제공해 준다. 그리고 서버에 무언가를 요청하는 주체를 클라이언트라고 부른다.
클라이언트가 서버에게 요청을 보내면 물리적인 하드웨어를 통해서 소프트웨어로 전달되고 소프트웨어가 요청에 해당하는 실제 기능을 수행한 다음에 클라이언트에게 원하는 결과를 응답해준다.
서버는 서버에서 어떤 소프트웨어가 실행 중인지에 따라서 다양한 서버로 분류할 수 있다.
대표적으로 파일 서버, DB 서버, 웹 서버, 웹 애플리케이션 서버가 있다.
파일 공유 소프트웨어가 설치되어 있으면 파일 서버라고 부른다.
데이터를 관리하는 DBMS가 설치된 서버는 DB서버라고 부른다.
파일 서버는 파일 공유, DB 서버는 데이터를 저장하는 기능을 클라이언트에게 제공한다.
이런 서버들은 이미 개발되어 있는 소프트웨어를 다운받아서 실행시키는 형태이다 보통 우리가 웹브라우저를 사용할때 크롬을 다운받아서 실행시키는 것과 비슷하다. 다운받는 소프트웨어는 오픈소스 소프트웨어를 사용할 수도 있고 유료 라이언스를 구매해서 사용할 수도 있다.
대표적으로 DB 서버는 오픈소스인 MySQL이나 PostgreSQL을 사용할수도 있고 오라클 DB 제품을 구매해서 설치할 수도 있다.
나는 주로 PostgreSQL을 다룰려고 해본다.
웹 서버는 클라이언트가 웹 브라우저를 통해서 HTTP 요청을 보내면 정적인 웹 페이지를 제공해주는 서버이다.
주로 HTML, JavaScript, CSS 같은 프론트엔드 개발자가 개발한 파일들이 사용된다. 나는 Nginx라는 웹서버를 주로 다룰 것이다. 그리고 Java와 같은 프로그래밍 언어로 개발된 백엔드 애플리케이션을 실행하는 서버를 웹애플리케이션 서버, 줄여서 WAS라고 부른다.
엔터프라이즈 환경에서는 아주 많은 양의 서버를 운영해야 한다.
엔터프라이즈 운영 환경은 WEB, WAS, DB로 보통 구성되어 있다.
기업에서 많은 양의 서버를 운영하는 방법은 크게 세 가지가 있다.
그 중 첫번째는 베어메탈 방식이다.
베어메탈 방식은 우리가 일반적으로 컴퓨터를 구입하고 프로그램을 실행시키는 방식과 비슷하다. 서버를 하나 구입한 다음에 그 서버위에서 OS를 설치하고 여러 개의 소프트웨어를 실행시키는 것이다. 그런데 이 베어메탈 방식은 여러 가지 이유로 기업에서 운영하기에는 비효율적이다. 그래서 두 가지 서버 운영 방식이 추가로 사용된다.
바로 하이퍼바이저 방식과 컨테이너 방식이다.
도커는 여기서 세 번째 방식인 컨테이너를 다루는 기술이다.
현대 IT 산업에서 인프라 운영은 아주 높은 수준의 추상화 기술을 제공하고 있다.
추상화되었다는 것은 다루기 더 쉬워졌다는 것을 의미한다.
개발자와 운영자의 경계를 허무는 DevOps 문화도 많이 확산되었다.
소스코드로 인프라를 운영하는 IAC 기술도 이미 현업에서 많이 활용하고 있다.
도커를 활용하면 개발자가 인프라의 설정 영역까지 기술 스택을 확장시킬 수 있고 특히 마이크로 서비스 아키텍처 MSA구조에서는 개발자가 개발 소스뿐만 아니라 개발한 애플리케이션이 실행되는 실행 환경 역시 중요하게 고려해야 할 부분이 되었다.
도커를 잘 다루려면 스토리지나 네트워크, 서버 운영 같은 전반적인 IT지식이 필요하다.
컨테이너를 공부하면서 업무나 학업에 지식의 폭을 넓히는 좋은 기회가 될 수 있을것이다.
'Docker' 카테고리의 다른 글
도커[Docker] 이미지의 메타데이터(Metadata) (0) | 2024.05.21 |
---|---|
도커[Docker] 이미지와 컨테이너 (0) | 2024.05.20 |
도커[Docker] 컨테이너 실행 (0) | 2024.05.20 |
도커[Docker] 가상화 기술과 하이퍼바이저 가상화 (0) | 2024.05.14 |
도커[Docker] docker 컨테이너를 모두 삭제하는 방법 (0) | 2024.05.13 |