본문 바로가기
Project/Cloud Project

IaC를 이용한 클라우드 인프라 구축 프로젝트 1

by kjy1010 2023. 12. 5.

IaC를 이용하여 클라우드 인프라 구축 프로젝트를 진행했습니다.

프로젝트를 설명하기 전에 IaC에 대해 알아보겠습니다.

 

IaC란? 
IaC는 "Infrastructure as Code"의 약자로, 인프라스트럭처를 코드로 정의하고 구성하는 접근 방식을 나타냅니다. IaC를 사용하면 서버, 네트워크, 데이터베이스 등과 같은 IT 인프라스트럭처를 코드로 작성하여 버전 관리, 자동화, 반복성, 확장성 등을 증가시킬 수 있습니다. IaC는 주로 템플릿 언어를 사용하여 인프라를 정의하고, 이를 사용하는 도구들은 AWS CloudFormation, Terraform, Ansible, Chef, Puppet 등이 있습니다. 이러한 도구들을 통해 사용자는 코드로 인프라를 정의하고, 도구가 이를 해석하여 실제 인프라를 생성하고 관리합니다.

 

IaC의 특징과 이점

  • 자동화된 프로비저닝
    -
    IaC는 인프라를 자동으로 프로비저닝하고 구성하는데 사용됩니다. 코드를 통해 리소스를 정의하면 시스템을 일관되게 구축하고 확장할 수 있습니다.
  • 반복 가능성과 일관성
    - 코드로 인프라를 정의하면 이를 반복적으로 사용할 수 있습니다. 동일한 코드를 재사용하거나 수정하여 동일한 인프라를 여러 환경에 배포할 수 있습니다.
  • 버전 관리
    - 코드로 인프라를 정의하면 버전 관리 시스템(Git 등)을 통해 변경 이력을 추적할 수 있습니다. 변경 사항을 추적하고 롤백하는 것이 용이합니다.
  • 문서화와 협업 강화
    - IaC 코드는 문서화 역할을 하며, 코드 자체가 시스템의 구성을 명확하게 표현합니다. 또한 팀 간의 협업이 용이하도록 합니다.
  • 스케일링과 확장성
    - 코드 기반의 정의는 자동 확장과 스케일링을 지원합니다. 수요가 증가하면 코드를 수정하여 리소스를 동적으로 조정할 수 있습니다.
  • 클라우드 벤더 중립성
    - IaC는 클라우드 벤더 간의 이식성을 제공합니다. 코드를 작성하면 동일한 코드로 다양한 클라우드 환경에 배포할 수 있습니다.
  • 인프라 관리의 복잡성 감소
    - 수동으로 인프라를 관리하는 과정에서 발생할 수 있는 실수와 복잡성을 감소시킵니다. 코드를 통해 인프라를 정의하고 관리하면 자동으로 일관성을 유지할 수 있습니다.

이제 진행한 프로젝트에 대해 설명해보겠습니다.첫번째로 IaC중 Terraform 이용하여 AWS의 주요 서비스인  EC2, VPC, AutoScaling, ELB, RDS, S3를 생성하는 프로젝트를 진행하였고, 두번째로는 CloudWatch 이용하여 EC2 서비스를 모니터링 할 수 있도록 구현하였습니다.우선  Terraform에 대해 알아보겠습니다.

 

 

 

 


Terraform이란?

Terraform은 인프라스트럭처를 코드로 관리하는 오픈 소스 도구로, 다양한 클라우드 서비스 및 온프레미스 인프라를 효과적으로 프로비저닝하고 관리할 수 있도록 지원합니다. HashiCorp에서 개발한 이 도구는 단순하면서도 강력한 구조를 갖추고 있어 다양한 환경에서 사용되고 있습니다. Terraform을 사용하면 코드로 인프라를 관리함으로써 인프라 구성의 버전 관리, 반복 가능성, 자동화 등의 이점을 얻을 수 있습니다. 코드 기반의 접근 방식은 기존의 수동 방식보다 유지보수가 쉽고 신속한 인프라 구성을 가능하게 합니다.

 

Terraform의 특징과 개념

  • 선언적 언어
    - Terraform은 JSON 또는 HCL (HashiCorp Configuration Language)과 같은 선언적 언어를 사용합니다. 이를 통해 사용자는 어떤 상태를 원하는지를 정의하고, Terraform이 그 상태를 달성하도록 합니다.
  • 다양한 인프라스트럭처 지원
    - Terraform은 AWS, Azure, Google Cloud Platform, VMware, OpenStack 등 다양한 클라우드 서비스 및 온프레미스 인프라를 지원합니다. 이는 멀티클라우드 및 하이브리드 클라우드 환경에서의 사용을 가능하게 합니다.
  • 선언적 리소스 정의
    - Terraform 코드에서는 인프라 리소스를 선언적으로 정의할 수 있습니다. 예를 들어, 가상 머신, 네트워크, 스토리지 등의 리소스를 코드로 표현하여 프로비저닝할 수 있습니다.
  • 상태 관리
    - Terraform은 인프라의 현재 상태를 추적하여 관리합니다. 이는 Terraform이 코드를 통해 정의된 상태와 현재 인프라 상태 간의 차이를 파악하고 변경 사항을 적용하는 데 사용됩니다.
  • 모듈화
    - Terraform 코드는 모듈로 구성될 수 있습니다. 모듈은 재사용 가능한 코드 블록으로, 인프라 구성의 각 부분을 모듈화하여 코드의 가독성과 재사용성을 높일 수 있습니다.
  • 자동화 및 변경 관리
    - Terraform은 변경 사항을 검출하고 적용하는 자동화 기능을 제공합니다. 코드를 수정하고 terraform apply 명령을 실행하면 변경 사항이 인프라에 적용됩니다.

이제 프로젝트를 이해하기 위한 기본적인 설명이 끝났습니다.

다음 포스팅에서 프로젝트를 어떻게 구현하였는지 설명드리겠습니다.