일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- #링크복사
- 인스타사진다운로드
- 인스타그램사진다운로드
- 4K_Stogram
- 인프라기초 #infra #인프라 #웹개발기초
- 인스타퍼오기
- 4KStogram
- #시작
- 저작권프리 #무료이미지편집
- 유튜브밴스드 #유튜브프리미엄크랙 #유튭크랙
- 인프라기초 #인프라 #infra #웹개발기초
- 인프라기초 #인프라 #웹개발기초 #infra #미들웨어
- 인프라기초 #웹개발기초 #인프라 #가상화 #infra
- 인프라기초 #인프라 #웹개발기초 #인프라구성관리 #infra
- #fansly #onlyfans #patreon #크리에이터플랫폼 #팬슬리 #오니팬스 #온니팬스 #패트리온
- Today
- Total
웹기획자의 생각정리함
개발자를 위한 인프라 기초 총정리 - 가상화 본문
가상화 Virtualization
가상화란 쉽게 말해 컴퓨터 안에 독립적인 컴퓨터를 만드는 것입니다. 왜 컴퓨터 안에 컴퓨터를 만들까요? 주요한 목적 중 하나는 물리적인 리소스를 여러 사용자 또는 환경에 배포해서 제한된 리소스를 최대한 활용하기 위함입니다.
예를 들어 다음과 같이 세 개의 물리 서버가 있는데 사용량이 크지 않은 경우를 봅시다.
https://www.redhat.com/ko/topics/virtualization/what-is-virtualization
이럴 때는 가상화를 이용해 하나의 서버에 두 개의 서버를 독립적으로 분리하면 영향을 받지 않고 리소스를 더 효율적으로 사용할 수 있습니다.
https://www.redhat.com/ko/topics/virtualization/what-is-virtualization
특히 하나의 서버 자원을 여러 사용자들이 나눠서 사용하는 클라우드 컴퓨팅의 기반이 됩니다.
호스트형 서버 가상화
http://www.govmlab.com/news-section-3/
하드웨어 위에 호스트 OS 를 설치하고 OS에서 가상화 SW를 이용해 게스트 OS를 작동시키는 기술입니다. 가상화 SW 를 설치하면 쉽게 가상 환경을 구축할 수 있기 때문에 개발 환경 구축 등에 주로 사용합니다. 오라클의 Virtual Box 나 VMware 가 있습니다.
하지만 OS 상에서 또 다른 OS 가 돌아가므로 자원이 많이 소비되고 느리다는 단점이 있습니다.
하이퍼바이저형 가상화
https://www.docker.com/resources/what-container
하드웨어 상에 가상화를 전문적으로 수행하는 SW 인 하이퍼바이저(Hypervisor)를 올라가는 방식입니다. 이 하이퍼바이저가 하드웨어와 가상 환경을 제어합니다. 호스트 OS 가 없어져서 조금 덜 부담되지만 그래도 각 VM(Virtual Machine)마다 게스트 OS 가 돌아가기 때문에 가상 환경 시작에 걸리는 오버헤드가 커집니다. 클라우드의 가상 머신에서도 사용하는 방법입니다.
컨테이너 Container
https://www.docker.com/resources/what-container
컨테이너는 오버헤드를 최소화하기 위한 방법입니다. 호스트 OS 상에 독립적인 공간을 만들고 별도의 서버인 것처럼 사용합니다. 따라서 각 컨테이너는 같은 호스트 OS 를 공유하기 때문에 오버헤드가 적고 고속으로 동작합니다. 항구의 컨테이너처럼 안에 필요한 것을 모두 담고 다른 컨테이너와 격리시켜놓은 것이라고 볼 수 있습니다.
컨테이너는 애플리케이션 실행에 필요한 모듈을 하나로 모을 수 있기 때문에 여러 개의 컨테이너를 조합해서 하나의 애플리케이션을 구축하는 마이크로서비스와 잘 맞습니다.
도커 Docker
도커는 애플리케이션 실행에 필요한 환경을 이미지로 만들고 해당 이미지를 활용해 다양한 환경에서 실행 환경을 구축하기 위한 오픈소스 플랫폼입니다. 도커는 내부에서 컨테이너를 사용합니다.
일반적인 개발 환경에서는 잘 동작하다가 갑자기 스테이징이나 운영 환경으로 가면 동작하지 않는 경우가 있습니다. 이런 인프라 환경을 도커를 이용해 컨테이너로 관리하면 어떨까요? 필요한 것을 모두 컨테이너로 모아서 이미지로 만드는 것입니다.
좀 더 자세히 보면 개발자가 커밋을 할 때마다 CI 를 통해 도커 이미지로 빌드를 하고 해당 이미지를 관리합니다. 그리고 개발 환경이든 테스트 환경이든, 실제 운영 환경이든 해당 이미지를 배포하면 컨테이너에서 독립적으로 배포된 환경에서 동작하기 때문에 오류 없이 동작할 수 있습니다.
쿠버네티스 Kubernetes
실제 애플리케이션은 여러 컨테이너에 걸쳐 있고 이러한 컨테이너는 여러 서버에 배포되어 있습니다. 이렇게 여러 대의 서버나 하드웨어를 모아서 한 대처럼 보이게 하는 기술을 클러스터링(clustering)이라고 합니다. 이를 통해서 가용성과 확장성을 향상시킬 수 있습니다.
이런 멀티호스트 환경에서 컨테이너를 클러스터링하기 위한 툴을 컨테이너 오케스트레이션 툴이라고 합니다. 오케스트레이션 툴은 컨테이너들을 클러스터링하기 위해 컨테이너 시작 및 정지와 같은 조작, 호스트 간 네트워크 연결, 스토리지 관리, 컨테이너를 어떤 호스트에서 가동시킬지와 같은 스케줄링 기능을 제공합니다.
위에서 잠시 살펴봤지만 컨테이너 오케스트레이션 툴의 사실 상 표준은 쿠버네티스입니다. 쿠버네티스는 구글을 중심으로 한 오픈소스로 다양한 기업이 개발에 참여하고 있습니다. 하지만 온프레미스 환경에서 쿠버네티스 환경을 대규모로 구축하고 운영하는 것은 쉽지 않습니다. 내부적으로 인프라 기술자가 없다면 퍼블릭 클라우드에서 제공하는 서비스를 이용하는 것도 좋습니다.
'웹기획 .' 카테고리의 다른 글
개발자를 위한 인프라 기초 총정리 - 인프라 구성관리 (0) | 2021.05.21 |
---|---|
개발자를 위한 인프라 기초 총정리 - 미들웨어 (0) | 2021.05.21 |
개발자를 위한 인프라 기초 총정리 - 운영체제 (0) | 2021.05.21 |
개발자를 위한 인프라 기초 총정리 - 네트워크 (0) | 2021.05.21 |
개발자를 위한 인프라 기초 총정리 - 하드웨어 (0) | 2021.05.21 |