AWS automation Tool

2022. 6. 11. 17:20Cloud/AWS 기초

AWS를 운용하다보면 리소스들이 굉장히 많아지게 된다. 또한 이런 리소스들 버전 업데이트를 하며 대부분 변경되기 마련이다.

 

예를들어 하나의 vpc를 관리한다고 가정해 보자.

 

VPC의 보안, 스토리지(파일,블록,객체, 인스턴스(ec2, ec2내부의 OS 등), DB(DB와 인스턴스간 연결, 보안 등)등을 우리는 관리해야한다. 1~2개면 괜찮겠지만 100개, 1000개를 하나하나 관리해야한다면 굉장히 실수도 많이 생기고, 피로해질것이다. 버전제어도 힘들며, 감사 내역도 부족하게 된다. 확장하기가 굉장히 힘들며, 데이터 관리를 할 때 일관성이 없게 된다.

 

이른바 휴먼에러가 발생활 확율이 높아지는것이다. 그렇게 되면 지속적인 성장(조직내에 있는 다양한 아키텍쳐를 일관되게 배포, 관리, 업데이트 할 방법)을 에 굉장히 지장을 미치게 된다. 

 

이런 환경을 개선하기위해 자동화 라는개념이 나타났으며 AWS에서는 CloudFormation, System Manager, OpsWorks가 있따.

AWS CloudFormation

CloudFormation은 만드는 방식은 프로그레밍을 하는것과 굉장히 유사하다. 


프로그렘을 개발할때 코드를작성하고, 컴파일러를 하게되고, 실행파일이 만들어지게 된다.

 

이것과 마찬가지로 IaC라고 하는 코드형 인프라기술문서를 만들게 되고, CloudFormation으로 주게 되며, 아키텍쳐 스텍이 생성된다. 이 후 실행된다. 수정을 하기 위해서는 템플릿을 수정하고 다시 갱신하면 된다.


1. 하나의 탬플릿을 생성한다.
(-리소스를 이렇게 만들어라 라고 지정해 둔 문서-)
이때 지정된 공통 언어를 사용한다.

2. 이 템플릿을 CloudFormation으로 넘겨준다.

3. 이 후 cloudformation이 문법상의 오류가 없는지 등을 검토한 후 아무런 문제가 없다면 실행한다.

라는 방식을 통해 구축한다.

이때 템플릿은 JSON/YAML두가지의 방식으로 지원해주며, 소스코드로 취급이 되어 리포지드에 저장된다.

 

이렇게 만들어진 템플릿은 언제, 어떤 환경이든 공장에서 물건을 찍어내듯 환경을 만들어서 배포할 수 있게 된다. 그래서 개발자들의 환경을 동일하게 배포할 수 있다. 또한 개발을 하면서 수정되는 환경들을 템플릿에 적용하여, 최종 개발이 완성되면, 그것과 마찬가지로 최종 템플릿이 만들어지게 된다. 이 템플릿을 바탕으로 실제 환경을 구축할 수 도 있다.


템플릿 1개로 규모가 다른, 구조가 다른 인프라를 구축할 수 도 있다. 즉 항상 동일한 형태의 인프라가 아니라, 조건을 달게 된다면 다른 형태의 인프라를 만들 수 도 있게 된다.
각각의 계층별(자격 증명, 기본 네트워크, 공유, 백엔드, 프론트엔드)별로 템플릿을 만들어도 된다. 템플릿 1개로는 네트워크를 구축하고, 다른 1개는 버켓을 설정하고, 다른1개는 보안설정을 하는 등 이 가능하다.

인프라를 수정하기 위해서는 단순히 탬플릿을 수정하면된다. 물론 CloudFormation이 만든 인프라를 직접 수정해도 상관은 없지만, 이럴 경우 cloudformation이 알고있는 상태와 현 상태가 달라지기 때문에, 추후 작업을 할 때 문제가 발생할 수 도 있다. 이때는 드리프트 감지 라는 서비스를 사용해 어떤 서비스가 달라졌는지 확인할 수 도 있다.

 

1. 기존 스텍(인프라 환경)에서 변경할 내용을 모아서 변경 집합을 생성한다. 2. 이것을 검사해서, 3.확인 후 실행하면 된다.

 

AWS QuickStart

이런 템플릿을 아무것도 없는 상황에서 만들기란 쉽지않다. 그렇기에 하나의 템플릿을 제공해 주는데, AWS QuickStart라고 한다. 보안 및 고가용성 모범 사례를 바탕으로하여 생성하기에 AWS 의 모범 표준, 자동화된 표준 배포를 할 수 있다. 몇 번의 클릭으로 전체 아키텍쳐를 생성할 수 있으며, 주로 실험 및 간편한 구축에 적합하다.

이런 기능을 바탕으로 배포를 자동화 할 수 있다. 이때 플릿(관리해야하는 인스턴스 들의 묶음)을 수정할 수 있어야 한다. 인프라(리소스 자원, CPU, RAM, SG 등)은 CloudFormation으로 수정할 수 있다. 하지만 인스턴스 내부(app 등)은 cloudformation으로 하기에는 굉장히 불편하다. 그렇기에 AWS Systems Manager라는 서비스를 바탕으로 구축할 수 있다.System Manager는 구성관리 자동화 환경을 제공해주는 서비스이다. 즉 windows, Linux와 관련된 어떤 작업이던, 인스턴스, 실제 물리적인 서버 등을 대상으로도 사용할 수 있다.


주요 기능은 다음과 같다

명령 실행 : 커멘드를 실행
유지 관리 기간 : 지정된 시간에 지정된 작업이 실행되도록 함. 
패치 관리 : 버전 업데이트
상태 관리자 : 현 서버의 상태 모니터링
세션 관리자 : 베스쳔호스트, ssh tunneling등과 같은 서비스를 사용할때 관리자가 웹 브라우저를 사용해서 즉각적으로 인스턴스에 접근할 수 있음
인벤토리 : 어떤 데이터를 저장할 수 있는 공간, 컴퓨팅의 가시성을 제공해 주는 서비스


또한 인프라 및 배포 자동화를 위한 툴이 있는데, AWS OpsWorks라는 접두사를 붙인 서비스(stacks, for chef automate, for puppet enterprise)가 있다. CloudFormation을 통해서 VPC, S3, SG 등을 만든 후 시스템메니저나 OpsWorks를 통해서 할 수 있다.


인프라에 대해 어느정도 알고있지만, 조금 어렵다고 느낄때(대충은 알고있다-보통의 개발자들)에는 AWS Elastic Beanstalk라는 툴을 사용하면된다. 젝과 콩나무에서 나오는 그 콩나무를 상상하면되는데, 사용자가 특별히 무엇인가를 할 필요없이 스스로 성장하여 인프라를 알아서 프로비저닝, 운영을 해준다. 또한, 어떻게 만들어졌는지, 모니터링 환경 등을 완벽하게 제공해준다. 개발자는 서버, 운영체제 등을 체크만 하면되며 코드만 업로드 하게 되면 된다. 

'Cloud > AWS 기초' 카테고리의 다른 글

AWS Route 53  (0) 2022.06.13
AWS CloudFront.feat caching  (0) 2022.06.12
AWS ELB(Elastic Load Balancing)  (0) 2022.06.03
AWS VPN 환경  (0) 2022.06.02
AWS Security Group(SG)  (0) 2022.06.02