* 실습 내용
# 7. 인프라 자동화
- 네트워크 계층 배포
- 네트워크 계층과 연계된 애플리케이션 계층 배포
- 배포된 스택의 리소스 업데이트
- 스택 삭제
* 자동화 도구 필요성
- 클라우드 환경에서 애플리케이션 구현에 필요한 인프라 환경 구성, 설정 및 관리 등을 좀 더 쉽고 빠르게 하기 위해서
- 매번 수작업을 통한 클라우드 인프라 환경 생성은 시간도 많이 걸리고, 오류 발생 위험도 높아지며, 효율성이 떨어진다.
* 인프라 자동화
- 인프라 사양을 담은 코드 형태의 템플릿을 생성하여, 클라우드 인프라 환경을 빠르게 배포하고 관리할 수 있는 자동화 도구
- 서비스를 빠르게 제공 및 업데이트 하고자 하는 DevOps 환경에서 널리 활용중이다.
일관성 | 동일한 인프라 환경을 쉽게 구성할 수 있고, 수동 구성 중에 자주 발생하는 오류나 구성 변경을 제거 |
효율성 | 반복 작업을 자동화하고 운영자 한 명이 동일한 코드를 사용하여 100대 또는 1,000대 시스템을 구축하고 관리할 수 있음 |
속도 | 템플릿 기바능로 시스템을 빠르게 구성하고 유지 보수 및 관리가 간소화되어 DevOps를 통해 신규 SW를 훨씬 더 신속하게 출시할 수 있음 |
위험 감소 | 다른 SW 코드 파일과 마찬가지로 구성 파일이 소스 통제를 받을 수 있도록 버전 제어를 지원 |
1. AWS CloudFormation
- 코드 기반으로 작성한 템플릿을 통해 AWS 리소스를 자동으로 생성하여, 리소스 프로비저닝 및 관리 시간을 줄이고, 애플리케이션에 더 많은 시간을 활용하도록 해주는 인프라 자동화 서비스
- 인프라 관련 리소스를 안전하고 반복 가능한 방식으로 프로비저닝하므로, 수작업을 통해 개별적으로 리소스를 생성하거나 구성할 필요가 없다.
- 작성된 템플릿을 재사용하여 일관되고 반복적으로 인프라를 복제할 수 있고, 템플릿 간의 차이점을 추적하여 변경사항을 관리한다.
(1) CloudFormation 작동 방식
- 필요한 AWS 리소스를 템플릿 파일로 작성
- CloudFormation이 이를 분석하여 빠르게 리소스를 생성 (스택)
- 템플릿은 YAML, JSON을 사용하여 작성할 수 있으며, 작성된 템플릿을 로컬이나 S3 버킷에 저장한 후 파일 위치를 지정하여 스택 생성
- 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
① 기능 탐색 및 솔루션 설계
② 자율 에이전트를 통한 대화형 작업수행
③ 코드 실시간 자동 생성 (주석 처리 한 것에 대하여 코드를 실시간으로 생성해줌)
④ 테스트 후 개선방안 제안
조옹ㄹㄹ라 똑똑하누
3. Cloud Architecture
* 아키텍처
- 비즈니스 요구사항을 만족하는 시스템을 구축하기 위해 필요한 전체 시스템에 대한 구조를 최적화하여 정의한 설계 문서
- 시스템을 구성하는 컴포넌트의 기능, 동작 원리 및 컴포넌트 간의 관계 등을 고려
- 일반적인 IT 시스템 아키텍처는 인프라, SW, 데이터, 솔루션 아키텍처 등이 있음
=> 비용 최적화 / 성능효율성 / 안정성 / 보안 / 운영 우수성을 반드시 고려하여 우수한 클라우드 아키텍처를 설계한다.
** 사용한 Tool : Cacoo
'클라우드 서비스' 카테고리의 다른 글
[클라우드 서비스] Serverless _ 20241205 (2) | 2024.12.09 |
---|---|
[클라우드 서비스] Loosely Coupled Arch. _ 20241205 (0) | 2024.12.08 |
[클라우드 서비스] Elasticity & HA _ 20241205 (2) | 2024.12.08 |
[클라우드 서비스] Microservices_20241205 (1) | 2024.12.08 |
[클라우드 서비스] Database Service _ 20241204 (2) | 2024.12.06 |