• toc {:toc}

On-Premises (On-Prem)

  • 자체적으로 데이터 센터를 직접 구축하고 운영, 관리하는 것을 말한다.

  • Private 클라우드를 사용한다.

  • On-Premises vs Cloud Computing

  • On-Premises

    • 소프트웨어 라이선스 비용 정도로 표면적인 비용이 드러나나, 실제로 하드웨어 설치, 운영, 업그레이드 등 숨어있는 비용이 많다.
    • Pets Model. 직접 하드웨어, 소프트웨어를 설정한다. 그런 만큼 애정을 갖기에 서버에 고유 이름을 붙인다.
  • Cloud Computing

    • 구독하는 비용이 대부분을 차지하고 그 내부 하드웨어, 네트워크 등의 유지 보수에 대해서는 크게 비용을 사용하지 않는다.
    • 필요 시 사용하고 필요없으면 폐기하는 형태를 띤다.
  • Pets Model

    • 각 모든 서버는 이름이 주어지고 독특하게 설정하는 것.
    • 각자 독특하고, 귀하기 때문에 문제가 있으면 바로 정상적으로 돌리기 위해 노력한다.
    • 서버가 많아지면 많아질수록 이를 구분하기 힘들기 때문에 cattle 모델로 이동한다.
  • Cattle Model

    • 아이디, 태그를 통해 구분한 이름을 부여한다.
    • 각 cattle은 동일하고 단지 태그에 의해 구별될 뿐이다.
    • 문제가 생긴다면 고치지 않고 새로운 것으로 교체하면 그만이다.

image[Fig1]

Infrastructure as Code

Infrastructure

  • 하드웨어/네트워크
    • 서버 - CPU, 메모리, 스토리지
  • 운영체제
    • 리눅스
  • 미들웨어
    • 어플리케이션이 필요로 하나, 운영체제가 제공하지 않는 기능을 제공하는 소프트웨어

관리 가능하고 신뢰성있는 강력한 클라우드 컴퓨팅을 통해 편의성을 가질 수 있지만 어떻게 유지 관리 할 것인 지가 문제이다.

  • Infrastructure를 설치하려면?
    • 랙을 설치하고 서버를 물리적으로 쌓는다.
    • 하드웨어를 수동으로 설정한다.
    • 하드웨어에 어플리케이션을 배포한다.
  • 해당 과정은 일단 설정하기 위한 공간, 사람, 긴 시간 등 많은 비용이 든다.
  • 하드웨어가 증가하면 증가할수록 유지 관리에 필요한 비용은 더 많이 증가한다.
  • 또한 사람이 설정하기 때문에 설정에서 원치 않은 변화가 일어날 수 있다.

IaC (Infrastructure as Code)

  • 사람이 직접 설정했던 하드웨어와 소프트웨어의 구축을 코드를 통해 구축하도록 설정하여 자동으로 동일한 환경을 설정해주는 방식을 통해 서버를 제공해주자!

  • IaC를 통해 하나의 컴퓨터 위에 작은 작업을 올리고 작은 작업이 많아진다면 여러 CPU를 사용하여 작업을 수행한다.

    • 때문에 거대한 프로그램을 만드는 것이 아니라 작은 프로그램을 만들기 때문에 만들고 제어하는 사람도 적어졌다.
  • IaC는 사람이 전혀 개입하지 않고 소프트웨어로 다룸으로써 빠르고 일정하게 설정, 배포될 수 있도록 돕는다.

  • 장점

  1. 속도, 간편함
  2. 설정 동일성
  3. 위험의 최소화 (실수가 적어지고, 설정 및 저장할 지역을 지정할 수 있다.)
  4. 소프트웨어 개발에서 효율 증가
  5. 비용 절감

Mutable / Immutable

  • Mutable Infrastructure - Pets

    • 인프라 구조는 서비스하는 목적과 필요를 충족시키기 위해 끊임없이 업데이트하고 조정될 것이다.
    • 업데이트가 진행될 수록 각 서버는 서로 차이가 생기게 되고 제공하는 서비스에서 차이가 발생한다.
  • Immutable Infrastructure - Cattle

    • 서비스와 소프트웨어 배포를 각각 변화시키는 것이 아닌, 전체를 모두 새로운 버전으로 대체한다.
  • Mutable은 업데이트할 때 재부팅을 통해 소프트웨어를 변종을 하면서 여러 버전을 만들지만, Immutable은 종료하고 새로운 버전으로 다시 실행한다.

  • Immutable의 장점

    • 복잡도, 실패 확률이 적어진다.
    • 문제 대응이 쉽다.
    • 변화 목록을 기록하고 추적할 필요가 없다. 새롭게 만든 인스턴스가 기대를 충족하지 못한다면 이전 인스턴스로 롤백하면 된다.

참고문헌