- toc {:toc}
On-Premises (On-Prem)
-
자체적으로 데이터 센터를 직접 구축하고 운영, 관리하는 것을 말한다.
-
Private 클라우드를 사용한다.
-
On-Premises vs Cloud Computing
-
On-Premises
- 소프트웨어 라이선스 비용 정도로 표면적인 비용이 드러나나, 실제로 하드웨어 설치, 운영, 업그레이드 등 숨어있는 비용이 많다.
- Pets Model. 직접 하드웨어, 소프트웨어를 설정한다. 그런 만큼 애정을 갖기에 서버에 고유 이름을 붙인다.
-
Cloud Computing
- 구독하는 비용이 대부분을 차지하고 그 내부 하드웨어, 네트워크 등의 유지 보수에 대해서는 크게 비용을 사용하지 않는다.
- 필요 시 사용하고 필요없으면 폐기하는 형태를 띤다.
-
Pets Model
- 각 모든 서버는 이름이 주어지고 독특하게 설정하는 것.
- 각자 독특하고, 귀하기 때문에 문제가 있으면 바로 정상적으로 돌리기 위해 노력한다.
- 서버가 많아지면 많아질수록 이를 구분하기 힘들기 때문에 cattle 모델로 이동한다.
-
Cattle Model
- 아이디, 태그를 통해 구분한 이름을 부여한다.
- 각 cattle은 동일하고 단지 태그에 의해 구별될 뿐이다.
- 문제가 생긴다면 고치지 않고 새로운 것으로 교체하면 그만이다.
[Fig1]
Infrastructure as Code
Infrastructure
- 하드웨어/네트워크
- 서버 - CPU, 메모리, 스토리지
- 운영체제
- 리눅스
- 미들웨어
- 어플리케이션이 필요로 하나, 운영체제가 제공하지 않는 기능을 제공하는 소프트웨어
관리 가능하고 신뢰성있는 강력한 클라우드 컴퓨팅을 통해 편의성을 가질 수 있지만 어떻게 유지 관리 할 것인 지가 문제이다.
- Infrastructure를 설치하려면?
- 랙을 설치하고 서버를 물리적으로 쌓는다.
- 하드웨어를 수동으로 설정한다.
- 하드웨어에 어플리케이션을 배포한다.
- 해당 과정은 일단 설정하기 위한 공간, 사람, 긴 시간 등 많은 비용이 든다.
- 하드웨어가 증가하면 증가할수록 유지 관리에 필요한 비용은 더 많이 증가한다.
- 또한 사람이 설정하기 때문에 설정에서 원치 않은 변화가 일어날 수 있다.
IaC (Infrastructure as Code)
-
사람이 직접 설정했던 하드웨어와 소프트웨어의 구축을 코드를 통해 구축하도록 설정하여 자동으로 동일한 환경을 설정해주는 방식을 통해 서버를 제공해주자!
-
IaC를 통해 하나의 컴퓨터 위에 작은 작업을 올리고 작은 작업이 많아진다면 여러 CPU를 사용하여 작업을 수행한다.
- 때문에 거대한 프로그램을 만드는 것이 아니라 작은 프로그램을 만들기 때문에 만들고 제어하는 사람도 적어졌다.
-
IaC는 사람이 전혀 개입하지 않고 소프트웨어로 다룸으로써 빠르고 일정하게 설정, 배포될 수 있도록 돕는다.
-
장점
- 속도, 간편함
- 설정 동일성
- 위험의 최소화 (실수가 적어지고, 설정 및 저장할 지역을 지정할 수 있다.)
- 소프트웨어 개발에서 효율 증가
- 비용 절감
Mutable / Immutable
-
Mutable Infrastructure - Pets
- 인프라 구조는 서비스하는 목적과 필요를 충족시키기 위해 끊임없이 업데이트하고 조정될 것이다.
- 업데이트가 진행될 수록 각 서버는 서로 차이가 생기게 되고 제공하는 서비스에서 차이가 발생한다.
-
Immutable Infrastructure - Cattle
- 서비스와 소프트웨어 배포를 각각 변화시키는 것이 아닌, 전체를 모두 새로운 버전으로 대체한다.
-
Mutable은 업데이트할 때 재부팅을 통해 소프트웨어를 변종을 하면서 여러 버전을 만들지만, Immutable은 종료하고 새로운 버전으로 다시 실행한다.
-
Immutable의 장점
- 복잡도, 실패 확률이 적어진다.
- 문제 대응이 쉽다.
- 변화 목록을 기록하고 추적할 필요가 없다. 새롭게 만든 인스턴스가 기대를 충족하지 못한다면 이전 인스턴스로 롤백하면 된다.