본문 바로가기
클라우드 서비스

[클라우드 서비스] Automation _20241206

by 황오독 2024. 12. 9.
더보기

* 실습 내용

# 7. 인프라 자동화

- 네트워크 계층 배포

- 네트워크 계층과 연계된 애플리케이션 계층 배포

- 배포된 스택의 리소스 업데이트

- 스택 삭제

 

* 자동화 도구 필요성

- 클라우드 환경에서 애플리케이션 구현에 필요한 인프라 환경 구성, 설정 및 관리 등을 좀 더 쉽고 빠르게 하기 위해서

- 매번 수작업을 통한 클라우드 인프라 환경 생성은 시간도 많이 걸리고, 오류 발생 위험도 높아지며, 효율성이 떨어진다.

 

* 인프라 자동화

코드형 인프라 자동화

- 인프라 사양을 담은 코드 형태의 템플릿을 생성하여, 클라우드 인프라 환경을 빠르게 배포하고 관리할 수 있는 자동화 도구

- 서비스를 빠르게 제공 및 업데이트 하고자 하는 DevOps 환경에서 널리 활용중이다.

일관성 동일한 인프라 환경을 쉽게 구성할 수 있고, 수동 구성 중에 자주 발생하는 오류나 구성 변경을 제거
효율성 반복 작업을 자동화하고 운영자 한 명이 동일한 코드를 사용하여 100대 또는 1,000대 시스템을 구축하고 관리할 수 있음
속도 템플릿 기바능로 시스템을 빠르게 구성하고 유지 보수 및 관리가 간소화되어 DevOps를 통해 신규 SW를 훨씬 더 신속하게 출시할 수 있음
위험 감소 다른 SW 코드 파일과 마찬가지로 구성 파일이 소스 통제를 받을 수 있도록 버전 제어를 지원

 

1. AWS CloudFormation

- 코드 기반으로 작성한 템플릿을 통해 AWS 리소스를 자동으로 생성하여, 리소스 프로비저닝 및 관리 시간을 줄이고, 애플리케이션에 더 많은 시간을 활용하도록 해주는 인프라 자동화 서비스

- 인프라 관련 리소스를 안전하고 반복 가능한 방식으로 프로비저닝하므로, 수작업을 통해 개별적으로 리소스를 생성하거나 구성할 필요가 없다.

- 작성된 템플릿을 재사용하여 일관되고 반복적으로 인프라를 복제할 수 있고, 템플릿 간의 차이점을 추적하여 변경사항을 관리한다.

 

(1) CloudFormation 작동 방식

https://www.whizlabs.com/blog/what-is-aws-cloudformation/

- 필요한 AWS 리소스를 템플릿 파일로 작성

- CloudFormation이 이를 분석하여 빠르게 리소스를 생성 (스택)

- 템플릿은 YAML, JSON을 사용하여 작성할 수 있으며, 작성된 템플릿을 로컬이나 S3 버킷에 저장한 후 파일 위치를 지정하여 스택 생성

https://www.techielass.com/aws-cloudformation-template-explained/

- Resources 섹션만 필수 섹션, 나머지는 모두 선택사항

- 애플리케이션이 프로덕션 환경에서도 설계 및 개발된 방식대로 작동하기 위해서는 프로덕션 환경과 개발 환경은 동일한 스택에서 구축해야 한다.

- 하나의 템플릿에서 조건문을 사용해 개발, 테스트 및 프로덕션이 크기 및 범위는 다르지만 나머지는 동일하게 구성할 수도 있다.

 

(2) 교차 스택과 중첩 스택

① 교차 스택

- 여러 개의 CloudFormation 스택이 공통된 리소스를 공유하거나 서로 참조하는 구조

- 네트워크 설정을 한 스택에서 정의하고, 다른 스택에서 이를 가져다 쓰는 방식

# 스택 A: 네트워크 설정 (VPC 생성 및 Export)
Outputs:
  MyVPCID:
    Value: !Ref VPC
    Export:
      Name: MyVPC

# 스택 B: 애플리케이션 서버 (VPC 가져오기)
Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      NetworkInterfaces:
        - SubnetId: !ImportValue MyVPC

 

② 중첩 스택

- CloudFormation 템플릿 안에 다른 템플릿을 포함하는 구조

- 큰 템플릿을 여러 개 작은 템플릿으로 쪼개어 관리하는 방식

- 최상위 : 전체 구성 관리 , 하위 : VPC 템플릿, 데이터베이스 템플릿 등

# 최상위 템플릿
Resources:
  VPCStack:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: https://s3.amazonaws.com/mybucket/vpc-template.yaml

  DBStack:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: https://s3.amazonaws.com/mybucket/db-template.yaml

 

(3) 변경세트로 스택 업데이트

- 배포된 스택의 리소스를 업데이트해야 하는 경우, 새 스택을 만들거나 이전 스택을 삭제할 필요 없이 수정 가능

- 수정된 템플릿으로 변경 세트(Change Sets)를 생성하면 CloudFormation이 새롭게 추가, 변경 또는 교체되는 리소스를 보여주면 알아서 어딜 바꾼건지 파악하고 변경해준다.

- 만약 스택을 삭제할 경우, 해당 스택과 스택을 통해 생성한 모든 리소스를 삭제한다.

 

(4) 구성 업데이트 및 관리

- 인프라 자동 생성 이후에도 구성 업데이트 및 지속적인 관리를 할 수 있게

* AWS Systems Manager

- 대규모 인스턴스의 원격관리, OS 패치 적용, 구성 관리 등을 수행하기 위한 관리형 서비스

- 시스템 구성을 정의 및 추적하고, 드리프트를 방지하고, EC2 및 온프레미스 구성의 SW 규정 준수를 유지한다.

- Amazon EC2 리소스와 온프레미스 리소스를 모두 관리할 수 있어 하이브리드 클라우드 관리 환경을 지원한다.

(온프레미스 환경은 SSM Agent 사전설치가 필요하다.)

Run Command - 서버에 로그인하지 않고, 대규모 인스턴스를 원격으로 관리할 수 있는 기능
- 수십 또는 수백 개의 인스턴스 집합에서 애플리케이션 업데이트 또는 Linux 셀 스크립트 및 Windows PowerShell 명령 실행과 같은 온디맨드 변경을 수행
패치 관리자 - Amazon EC2 그룹 또는 온프레미스 인스턴스 전체에서 자동으로 운영체제 및 소프트웨어 패치를 선택 및 배포하도록 지원
- 미리 설정된 시간에만 패치가 적용되도록 패치에 대한 유지 관리 기간(Maintance window)을 예약할 수 있음
상태 관리자 - 관리형 인스턴스를 정의된 상태로 유지(설치, 삭제)하는 프로세스를 자동화
- 서버 구성, 안티바이러스 정의, 방화벽 설정 등과 같은 구성 정보를 제어

 

 

* 애플리케이션 코드 작성 작동화

" 클라우드 환경에서 다양한 서비스와 연계하여 애플리케이션 개발을 해야 하는데 좀 더 쉽고 빠르게 할 수 있는 방법이 없을까?"

 

2. Amazon Q Developer

출처 : AWS

① 기능 탐색 및 솔루션 설계

② 자율 에이전트를 통한 대화형 작업수행

③ 코드 실시간 자동 생성 (주석 처리 한 것에 대하여 코드를 실시간으로 생성해줌)

④ 테스트 후 개선방안 제안

 

조옹ㄹㄹ라 똑똑하누

 

3. Cloud Architecture

* 아키텍처

- 비즈니스 요구사항을 만족하는 시스템을 구축하기 위해 필요한 전체 시스템에 대한 구조를 최적화하여 정의한 설계 문서

- 시스템을 구성하는 컴포넌트의 기능, 동작 원리 및 컴포넌트 간의 관계 등을 고려

- 일반적인 IT 시스템 아키텍처는 인프라, SW, 데이터, 솔루션 아키텍처 등이 있음

 

=> 비용 최적화 / 성능효율성 / 안정성 / 보안 / 운영 우수성을 반드시 고려하여 우수한 클라우드 아키텍처를 설계한다.

 

** 사용한 Tool : Cacoo