AWS Well-Architected Best Practices Ⅰ: 운영 우수성

vinca·2023년 12월 4일
0

Introduction

본 실습 과정은 AWS Training and Certification을 바탕으로 작성되었습니다.


사례

사례 분석

AnyCompany라는 회사가 Solution Acrhitecture인 당신에게 솔루션을 요청했다.
AnyCompany는 기존 사내 자체 데이터 센터로 서버를 운영중에 있다가, 시대의 흐름에 맞춰 클라우드 서비스로(AWS)로 마이그레이션 한 상황이다.
이 때, AnyCompany 회사의 아키텍쳐를 분석하고, [1]과제인 운영 우수성 원칙을 적용해 보자.

개선 사항

5개의 개선사항에 대해서 이를 적용해보자.

  1. 대부분의 운영 작업이 수동으로 수행됩니다.
  2. 제품 카탈로그 애플리케이션에 고가용성 아키텍처가 필요합니다.
  3. 보안이 최우선 순위입니다.
  4. 회사는 성능을 희생하기를 원치않습니다.
  5. 비용이 중요합니다.

이러한 개선사항을 적용하기 위해서는 다음과 같은 과정이 필요로 하다.

적용 방안

  • Amazon EC2 인스턴스에 사용자 지정 태그를 추가합니다.
  • 특정 Amazon EC2 인스턴스를 위한 AWS Resource Group을 생성합니다.
  • Amazon EC2 인스턴스를 구성하기 위해 AWS Systems Manager를 사용합니다.
  • AWS Systems Manager를사용하여 Amazon CloudWatch 에이전트를 설치하고 시작합니다.
  • Amazon CloudWatch에서 Amazon EC2 인스턴스에 대한 사용자 지정 지표 및 로그 그룹을 검증합니다.

실습

인스턴스 태그 지정

먼저 EC2 인스턴스에 태그를 지정해보자.

태그는 고객이 정의한 키와 선택 값의 구성되는 레이블로, 태그를 사용하면 보다 쉽게 리소스를 검색/관리 할 수 있다.

인스턴스를 체크하고 태그 관리에 들어가서 새로운 태그를 추가할 수 있다.

Add new tag를 통해서 각 2개씩의 태그를 지정해준다.
Product-CatalogEnvironment-Production 를 지정해서 추가해준다.

동일한 내용을 반복하여 web 및 db 인스턴스 모두에 이러한 태그들을 추가해준다.

리소스 그룹 생성

리소스 그룹은 동일한 AWS 리전 내 "태그 기반"으로 일치하는 AWS 리소스 모음이다.

리소스 그룹을 통해서 대량의 작업을 동시에 수행하도록할 수 있다.
(새로운 소프트웨어 설치, 보안 업데이트, 버전 업그레이드 등)

본 실습에서는 리소스 그룹을 통해서 새로운 소프트웨어를 설치하는 과정을 수행해보자.

Resource types에서 AWS::EC2::Instance 를 선택하고, Tags에서 각 EC2 인스턴스에 추가에 주었던 태그들을 그대로 다시 입력해 주도록 하자.

Product-CatalogEnvironment-Production 를 입력하고 Add를 눌러 추가해 주도록 한다.

이후 Preview group resources를 누르게 되면 아래 리소스 그룹으로 포함 될 EC2 인스턴스들이 나오게 된다.

Amazon EC2 인스턴스를 위한 Systems Manager

AWS Systems Manager Agent(SSM Agent)는 Amazon EC2 인스턴스, 온프레미스 서버 또는 가상 머신(VM)에 설치 및 구성할 수 있는 Amazon 소프트웨어이다.

이러한 SSM Agent은 AWS 애플리케이션을 관리할 수 있는 사용자 통합 인터페이스를 제공하며, AWS에서 인프라를 확인하고 제어하는데 사용된다.

따라서, EC2인스턴스에 이를 설치해 주어야하나, 기본적으로 SSM Agent는 다음 Amazon Machine Image(AMI)에 사전 설치되어 있으므로 설치가 필요없다.

  • Amazon Linux
  • Amazon Linux 2 (현재 실습의 AMI)
  • Amazon Linux 2 ECS 최적화 기반 AMI
  • Ubuntu Server 16.04, 18.04 및 20.04

AMAZON EC2 인스턴스 프로파일 검토

AWS Systems Manager Agent(SSM Agent)은 기본적으로는 EC2에 접근하여 EC2 인스턴스를 제어할 권한이 없다.

따라서 필요한 역할을 만들어 이러한 EC2 인스턴스를 제어할 수 있도록 한다.

AMAZON EC2 인스턴스 역할 부여

IMA 역할을 생성 했다면, 이러한 IAM 역할을 이제 EC2인스턴스에 부여해 주어야한다.

다음과 같은 과정을 통해 IAM 역할을 두 인스턴스 모두에 적용시켜 주도록 하자.

역할의 부여가 완료되었으면, 해당 역할이 적용되도록 인스턴스를 재시작 시켜준다.

Systems Manager에서 Amazon EC2 인스턴스 확인

이제 이러한 시스템 매니저를 통해서 제어할 권한을 받았고, 실제로 EC2 인스턴스를 관리할 수 있게 되었는지 확인해보자.

AWS Systems Manager > Node Management > Inventory 탭으로 이동해준다.

Corresponding managed instances에서 관리되고 있는 인스턴스를 확인해보면 다음과 같이 잘 관리되고 있는 것을 확인할 수 있다.

🧐 SSM으로 뭘할 수 있는데?
SSM을 사용하여 EC2 인스턴스에 명령을 전송하고 실행할 수 있습니다. 예를 들어, 인스턴스에서 특정 스크립트 실행, 로그 파일 확인, 설정 변경 등을 실행할 수 있습니다. 또한 시스템 관리 작업 자동화나 패치등을 수행할 수 있습니다.

SSM 에이전트를 사용하여 Amazon CloudWatch 에이전트 설치

CloudWatch 에이전트는 Amazon EC2 인스턴스에 대한 활동을 모니터링하여 로그 및 지표를 수집하는 도구이다.

이 실습에서 CloudWatch 에이전트는 AWS Systems Manager(SSM)Run Command를 사용하여 Amazon EC2 인스턴스에 설치해 볼 것이다.

Run Command?
Run Command를 사용하면 원격으로 Amazon EC2 인스턴스에 대한 작업을 수행할 수 있다. 이 도구는 단일 명령으로 많은 인스턴스의 구성을 관리할 수 있어 대규모 시스템에서 특히 유용하게 쓸 수 있다.

먼저 AWS Systems Manager > Node Management > Run Command 로 이동해준다.


이제 Command documentAWS-ConfigureAWSPackage 를 선택하여 CloudWatch 에이전트를 EC2에 설치하는 명령을 수행해 보자.

📝 Command document란?
Run Command 작업을 정의해둔 문서로, 실행할 명령이나 스크립트를 포함함된다. 이러한 Command document를 사용하여 Run Command를 실행하면, 해당 명령이 지정된 대상 리소스(예: EC2 인스턴스)에서 실행되어 원격으로 작업이 수행된다.

커맨드 파라미터로는 AmazonCloudWatchAgent를 작성하여 클라우드 워치 서비스가 EC2에서 설치될 수 있도록 하자.

이러한 AWS SSM을 통해 CloudWatch를 설치할 인스턴스는 어떻게 결정할까?
Target selection으로는 태그 기반, 인스턴스 직접 지정, 리소스 그룹으로 지정 3가지 방법이 있다.

여기서는 리소스 그룹(sg-wa) 방법을 통해서 web 및 db 인스턴스를 선택해 주자.

Amazon CloudWatch 에이전트 시작

Systems Manager Run Command 기능을 사용하여 EC2에 설치된 CloudWatch 에이전트를 시작해 보도록 하자.

다시 AWS Systems Manager > Node Management > Run Command 로 이동해준다.

Command document 검색 상자에 AmazonCloudWatch-ManageAgent 를 입력하고 Enter를 누른다.

추가적인 구성 설정을 하기 위해서 Optional Configuration Source를 SSM으로 지정하고, Optional Configuration Location을 wa-cw-config-file-httpd-mariadb로 지정한다.

이는 AWS Systems Manager의 기능인 Parameter Store에 저장된 구성 파일인 wa-cw-config-file-httpd-mariadb를 프로비저닝 한다.

💾 wa-cw-config-file-httpd-mariadb 파일
wa-cw-config-file-httpd-mariadb의 내용은 다음과 같다.
AmazonCloudWatch에서 몇초마다, 어떤 로그를 수집하고 분석할 지를 설정한다.

※ 리소스 그룹은 동일하게 지정하면 된다.

🎉 결과

SSM을 통한 <EC2에 CloudWatch를 배포하는 명령><배포된 CloudWatch의 세부사항을 구성하고 동작하도록 하는 명령>을 성공적으로 완료했다.

CloudWatch 확인 및 검증

CloudWatch가 실제로 이제 EC2 인스턴스에서 잘 작동하는지 확인해보도록 하자.

Metrics> All metrics

한 인스턴스에 대해서 Device, fstype, path로 많은 지표들이 나눠진 것을 확인할 수 있다.

이는 디스크와 파일 시스템 관련 메트릭으로, 특정 디바이스, 파일 시스템 유형, 경로 등을 나타낸다. 이러한 정보는 각 디스크 공간 사용량 및 파일 시스템 상태를 모니터링하는 데 사용된다.

DB에 추가

애플리케이션 웹 페이지를 사용하여 다음과 같이 데이터베이스의 새 항목을 업데이트해보자.

추가가 완료되었으면, CloudWatch로 돌아가 로그를 분석해보자.
Logs > Log groups에서 확인이 가능하다.

실제로 DB에 날려진 쿼리의 로그 및 웹 페이지에 접속한 로그가 남아있는 것을 확인할 수 있다.

보는 김에 DB와 WEB의 부하 또한 살펴보았다.


profile
붉은 배 오색 딱다구리 개발자 🦃Cloud & DevOps

0개의 댓글