AWS 운영 효율화
클라우드 서비스에서 애플리케이션을 원활하고 안정적으로 운영하기 위해서 워크로드, 비즈니스 목표, 조직 규정, 요구사항 수행과 관련된 업무 등을 자동화하는 것이 좋다. 이러한 업무들을 자동화하기 위해서 사용자는 인프라 리소스와 운영 업무를 코드화해야 한다. 코드화된 자동화 업무는 자동으로 인한 작업 소비 시간을 줄여주고 인간의 수기로 인한 작업 오류를 방지하여 신속하고 정확하게 업무를 처리할 수 있다. 그리고 자동화 업무에 대해 로그를 남겨 작업 후 수행된 작업 내용을 확인할 수 있고 시간이 지남에 따라 코드 변경 이력도 쉽게 확인할 수 있다. 또 사용자가 AWS 운영에 조금만 익숙해진다면 처리해야 할 상황이 변해도 간단한 코드 변경과 테스트로 자동화 작업을 좀 더 효율적으로 만들 수 있다. 이런 효율적인 운영을 위해서 AWS는 다양한 서비스를 지원한다.
CloudFormation
Cloud Formation은 템플릿을 이용하여 코드 자체로 인프라를 배고, 설정하고 문서화하는 서비스이다. Cloud Formation은 하나의 템플릿으로 다수의 동일한 실행환경을 구현할 수 있다. 다시 말해 애플리케이션의 개발용 스택과 상용화 스택같이 서로 다른 2개의 스택을 하나의 템플릿으로 정의할 수 있고 이런 방식은 서로 다른 두 스택의 실행환경 유사성을 높여준다. Cloud Formation의 또 다른 장점으로는 다른 코드 리소스처럼 Version Controlled Repository에 저장할 수 있다는 것이다. 템플릿으로 정의된 리소스는 스택을 구성하고 스택 생성 시에는 유일한 이름을 부여해야 한다. 앞서 말했듯이 Cloud Formation은 하나의 스택에 AWS의 모든 인프라를 정의할 필요는 없다. 여러 개의 스택에 나눠서 AWS의 인프라를 정의할 수 있고, 이 여러 개의 스택은 라이프사이클과 관리 권한에 따라 조직화하는 것이 좋다. 예시로 VPC, Internet Gateway, 라우터 테이블, 서브넷 등 네트워크 인프라를 정의할 수 있다. 이때 혹은 사용자 편의에 따라 Network라는 유일한 이름으로 스택을 생성하고 이는 웹 기반 애플리케이션으로 사용할 수 있다. 또 유사하게 개발환경 인프라를 정의한다고 가정하면 Delver op이라는 유일한 이름을 정의하고 템플릿, Auto Scaling, ABL, 인스턴스 프로필, 보안그룹보안 그룹, IAM Role 등 런타임 환경을 정의할 수도 있다. 이렇게 하여 사용자마다 각자의 스택을 관리하면 된다. 이러한 AWS 환경에서 작업을 진행하다 보면 관련 하나의 리소스에 대해 다수의 스택 사용 시 하나의 스택에서 다른 스택으로 값을 전달할 경우가 있다. 이런 경우에는 중첩 스택 구현이나 스택 아웃풋 값을 익스포트 하면 된다. 중첩 스택이란 CloudFormation 스택에 템플릿을 이용하여 새로운 스택을 추가하는 것이다. 이때 중첩 스택을 생성한 스택을 부모 스택이라고 한다. 중첩 스택 템플릿의 Outputs 섹션에서 부모 스택에 전달할 값을 정의할 수 있고, 부모 스택 템플릿은 이 값을 참조하여 인프라 생성 작업을 수행할 수 있다. 스택 아웃풋 값 익스포트는 외부에 스택 정보를 공유해야 할 경우 Output 섹션, Export 필드에서 스택 아웃풋 값을 익스포트 할 수 있다. 익스포트 후에 Region 내 동일 계정에 있는 템플릿은 Import Value라는 함수를 사용하여 해당 값을 도입 할 수 있다. 그리고 스택에서 리소스의 설정을 변경이 필요한 경우가 생기는데 이 경우에는 소스 템플릿에서 Resources 섹션의 설정을 변경하고 다이렉트로 업데이트를 실행하거나 체인지 세트를 생성해준다. 다이렉트로 업데이트는 말 그대로 업데이트할 템플릿을 업로드하면 된다. 이때 변경에 필요한 파라미터를 입력해주고 업로드하면 CloudForamtion은 변경 내용에 대해서만 실시간으로 반영해준다. 체인지 세트는 변경 내용을 실제 적용하기 전에 Cloud Formation에서 변경 내용이 어떻게 적용되는지 확인할 수 있어 확인해 본 후 실제로 적용할지를 결정하면 된다. 변경된 템플릿을 반영하고 체인지 세트를 생성하면 Cloud Formation은 모든 리소스의 추가, 삭제, 변경 명세를 제공되는데 사용자는 여기서 변경 사항을 바로 적용할 수도 있고, 반대로 체인지 세트를 삭제하여 변경 사항을 적용하지 않을 수도 있다. 사용자는 다수의 템플릿을 활용하여 여러 개의 체인지 세트로 변경 내용이 어떻게 적용되는지 확인해보고 이들 중 가장 적합한 체인지 세트를 확인하여 적용하면 된다. 이렇게 하면 여러 개의 스택을 실제로 생성하지 않고 다양한 환경설정 명세를 비교해 볼 수 있어 사용자에게 편리함을 제공한다. Cloud Formation은 리소스를 업데이트하는 3가지 방식이 있는데 Update with No Interruption, Date with Some Interruption, Replacement이다. Update with NO interruption 방식은 중단 없이 리소스 업데이트가 진행되고 물리적 ID는 변경되지 않는다. Update with Some Interruption 방식은 리소스 업데이트 시 일시적으로 중단이 발생할 수 있고 마찬가지로 물리적 ID는 변경되지 않는다. 마지막으로 Replacement 방식은 Cloud Formation이 새로운 물리적 ID를 지닌 새 리소스를 생성한다. 그리고 이와 동시에 기존의 원본 리소스는 삭제한다. 이러한 방식을 이용하여 리소스를 업데이트할 수 있는데 이 와중에 특정 리소스에 대해 업데이트되는 것을 막으려면 스택 정책을 생성해주면 된다. AWS CLI를 통해 스택 정책을 생성해주면 사용자가 원하는 특정 리소스에 대해서는 업데이트를 막아줄 수 있다. 단 생성한 스택 정책은 삭제할 수 없으니 생성 시 주의가 필요하다.
'AWS 공부' 카테고리의 다른 글
AWS 배포 환경설정 (0) | 2022.06.16 |
---|---|
AWS 배포 - CodeCommit, CodeDeploy (0) | 2022.06.15 |
비용 효율화 - E2C 예약 인스턴스, EC2 스팟 인스턴스 (0) | 2022.06.13 |
AWS 비용 관리 2 (0) | 2022.06.12 |
AWS 비용 관리 (0) | 2022.06.11 |
댓글