클라우드/DevOps

DevOps - IaaC(Infra as a Code)

박다큐 2021. 10. 20. 23:24

IaaC란?

  • Infrastructure as a Code의 약자
  • IT 서비스(IaaC)를 위한 시스템을 구성(IaC)할 때 수동으로 구성하는 대신 Shell 기반의 스크립트를 사용하여 컴퓨팅 인프라를 구성하는 기술
  • 프로그래밍형 인프라 라고도 불림 - 프로그램 처리하는 방식
  • 핵심적인 구성요소로 자리 잡음
  • 성공적인 DevOps 도입을 위해 반드시 필요한 기술 중 하나

IaaC 배포 방법

  • IaC
    • CloudFormation
    • Ansible
    • Terraform
  • AWS OpsWorks
  • AWS Lambda
  • CloudWatch - 모니터링 해주는 기술
  • CI/CD
    • Cloud9
    • CodeCommit
    • CodeBuild
    • CodeDeplay
    • 위의 것들을 합치는것이 CodePipeline

 

IaC 의 기대효과

  • 비용 절감
  • 빠른 실행
  • 리스트 관리

Infra as a Code 도구

  • 구성 조정 도구(Configuration Orchestration Tool)
    • 인프라를 코드로 만들어서 배포하는 것 
    • 서버 및 기타 인프라의 구축을 자동화하도록 설계
    • ex) AWS Cloud Formtaion, Terraform
  • 구성 관리 도구(Configuration Management Tool)
    • 시스템을 구성하고 관리하는 것 
    • 이미 프로비저닝된 인프라의 소프트웨어와 시스템을 구성하고 관리하도록 설계
    • 프로비저닝
      • 준비상태를 말한다.
      • 즉 배포를 받고나서 운영하기 전 단계
    • ex) Chef, ANSIBLE

Infra as a Code 도구 모음

AWS CloudFormation - 템플릿 기반 구성 조정 도구

  • AWS 리소스를 모델링 하고 설정하여 리소스 관리 시간을 줄인다.
  • AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해주는 대표적인 IaC 기반의 조정 도구. 
    구분 내용
    서비스명 AWS CloudFormation
    설명 모든 클라우드 인프라 리소스를 모델링 및 프로비저닝
    주요 특징 1. 사용자 인프라용 템플릿 생성
    2. JSON, YAML 파일로 텍스트 모델링 작성
    3. 인프라 변경 사항에 대해 미리보기 기능 제공
    4. 코드처럼 버전 관리/코드 검토/템플릿 업데이트 기능 제공
    5. 종속성 요구에 기반하여 AWS 리소스 제공
    6. 개발, CI/CD 및 관리 도구와 통합
    7. 리소스 사용 비용만 지불

AWS CloudFormation 특징

  • 인프라 관리 최소화
    • Cloudformation을 사용하여 스택 생성하면 리소스를 스택 단위로 손쉽게 구성 및 관리 가능
  • 신속한 인프라 복제
    • 가용성을 높이기 위해 여러 리전에 복제할 수  있음
  • 인프라 변경 사항을 쉽게 제어 및 추적
    • 리소스와 설정이 템플릿에 저장되어 버전 관리 기능을 통해 이전과의 차이점 추적 가능
    • 문제가 생기면 언제든지 이전 버전으로 되돌리기 가능

 

AWS Cloudformation 구성

  • Template ( 소스코드 )
    • 템플릿 : 스택 리소스 프로비저닝 및 구성을 위해 필요한 파일
    • JSON 또는 YAML 파일 형식으로 작성
    • Cloudformation 스택에서 프로비저닝할 리소스 설명함
  • Cloudformation ( 프로그램 )
    • Stack 생성하고 Stack에 대한 변경 사항을 확인 및 업데이트
    • Stack 생성 및 변경 중 에러 감지를 통한 롤백 지원
  • Stack ( 빌드 )
    • 스택이란
      • 하나의 단위로 관리할 수 있는 AWS 리소스 모음
      • 스택 생성, 수정, 삭제를 통해 리소스 모음의 생성, 수정, 삭제 가능
      • 모든 리소스는 Cloudformation 템플릿을 통해 정의
      • 스택을 삭제하면 관련 리소스 모두 삭제

AWS Cloudformation 작동방식

  • JSON or YAML 파일을 이용해 코드를 작성 가능
  • Cloudformation 템플릿을 로컬에 저장하거나 S3 버켓에 저장 가능
  • AWS 콘솔, CLI 또는 API Call을 통해 AWS Cloudformation을 실행하여 템플릿 코드 기반으로 스택 생성 가능
  • AWS 리소스에 대한 프로비저닝 및 구성 작업을 진행

API에 Access할 수 있는 방법 3가지

  • AWS 콘솔
  • AWS CLI
  • SDK
    • 소프트웨어 개발 툴 킷
    • ex) 파이썬을 쓸려면 관련 모듈을 다 다운 받아줘야 한다.

 

Cloudformation Template 구성사항

  • Parameters: 
    • 사용자가 직접 타이핑(동적) 하거나 선택옵션을 통해 선택
    • 생성 리소스 수량, 크기 설정
    • 변수를 실제 리소스 구성할때 적용한다.
    • Parameters: 
        KeyName: 
          Description: VPC and SN and EC2 TEST
          Type: AWS::EC2::KeyPair::KeyName
          ConstraintDescription: must be the name of an existing EC2 KeyPair.
  • Resources:
    • 지정된 속성값 ImageID & Instance Type 및 Keypair 파라미터 값에 대한 참조를 포함한다.
    • Resources:
        Type: AWS::EC2::Instance
        Properties:
          ImageId: ami 이미지 파일
          InstanceType: t2.micro
          KeyName: !Ref KeyName
          Tags:
            - Key: Name
              Value: Instance
  • Outputs:
    • 템플릿 실행 후 결과 값 표시 - IP 주소 등
    • Outputs:
        GAListenerARN:
          Description: 설명
          # GetAtt : 속성값을 모두 뽑아온다.
          Value: !GetAtt GAListener.ListenerArn

'클라우드 > DevOps' 카테고리의 다른 글

DevOps - 데브옵스란?  (0) 2021.10.19