AWS 기술 블로그
Amazon Q Developer를 사용하여 애플리케이션 복원력을 향상시키는 방법
이 게시글은 AWS DevOps & Developer Productivity Blog에 게시된 “How to enhance your application resiliency using Amazon Q Developer by Dr. Rahul Sharad Gaikwad” 글을 번역및 편집 하였습니다.
“Everything fails, all the time(모든 것은 실패한다, 항상).” – Werner Vogels, Amazon.com CTO
오늘날의 디지털 환경에서 복원력(Resiliency)을 고려한 애플리케이션 설계는 매우 중요합니다. 복원력은 애플리케이션이 장애를 매끄럽게 처리하고, 변화하는 조건에 적응하며, 중단으로부터 신속하게 복구하는 능력입니다. 애플리케이션 아키텍처에 복원력을 통합함으로써 다운타임을 최소화하고, 장애의 영향을 완화하며, 최종 사용자를 위한 지속적인 가용성과 성능을 보장할 수 있습니다.
Amazon Q Developer는 소프트웨어 개발 수명 주기(SDLC)를 위한 생성형 AI 기반 어시스턴트로, 복원력 있는 아키텍처를 설계하고 애플리케이션 가용성을 향상시키는 데 도움을 줍니다. 다음과 같은 주요 복원력 사례들을 통해 모범 사례를 추천하고, 코드를 분석하며, 잠재적인 장애 지점을 식별하여 애플리케이션 아키텍처를 강화하고 시스템 가용성을 높이는 전문적인 동료 역할을 합니다.
- 복원력 있는 설계 패턴 추천: 분산 시스템, 마이크로서비스, 서버리스 아키텍처와 같은 맞춤형 설계 패턴에 접근할 수 있습니다. Amazon Q는 다중화, 강력한 장애 조치, Circuit breaker 등을 통해 환경의 복원력을 높이는 추천 방식을 제공합니다.
- 재해 복구 계획: Amazon Q는 효율적인 백업, 체계적인 복원, 전략적 데이터 복제 및 원활한 장애 조치를 포함한 포괄적인 재해 복구(DR)에 대한 전문 지침을 제공하여 최소한의 영향으로 중단으로부터 빠르게 복구할 수 있도록 합니다.
- 맞춤형 복원력 테스트 프레임워크: 네트워크 성능 저하 및 인프라 중단과 같은 다양한 장애 시나리오를 시뮬레이션하는 사용자 정의 템플릿을 만듭니다. 이는 시스템 전반에 걸친 철저한 복원력 검증을 간소화합니다.
- 장애 모드 평가: Amazon Q를 사용하여 인프라 취약점을 식별하고 그 영향을 평가하는 포괄적인 장애 모드 및 영향 분석(FMEA)을 수행합니다. Amazon Q는 이러한 문제를 심각도별로 순위를 매겨 가장 중요한 위험을 우선시하고 해결하여 프로덕션 환경을 보호할 수 있도록 합니다.
다음 섹션에서는 Amazon Q가 기본 애플리케이션 아키텍처의 복원력을 어떻게 개선하는지 보여드리겠습니다.
선행 조건
Amazon Q를 시작하려면 다음이 필요합니다.
- AWS 계정
- AWS Builder ID 또는 조직에서 관리하는 AWS IAM Identity Center 로그인
- Visual Studio Code 또는 지원되는 IDE
- Amazon Q Developer 설정 및 채팅 방법
애플리케이션 개요
아래 그림과 같이 단일 가용 영역(AZ)에서 실행되는 3계층 웹 애플리케이션이 있습니다. 이 아키텍처는 단일 AZ에 두 개의 Amazon Elastic Compute Cloud(Amazon EC2) 노드가 있는 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터에서 호스팅되는 애플리케이션 계층과 단일 AZ 구성으로 배포된 Amazon Relational Database Service(Amazon RDS) 인스턴스를 사용하는 데이터 계층으로 구성되어 있습니다. 이 아키텍처는 제 기능을 하지만 여러 제한 사항이 있습니다. 단일 장애 지점(SPoF)이 존재하고 내결함성이 없는 제한된 애플리케이션 가용성을 제공합니다. 데이터베이스 앞에 캐싱 계층이 없기 때문에 응답 시간이 길어질 수 있습니다. 또한 자동 확장 기능이 없어 리소스 경합이 발생할 수 있습니다.
기본 애플리케이션
애플리케이션의 복원력 강화
Amazon Q가 기본 애플리케이션 아키텍처에서 시스템 가용성을 향상시키는 복원력 모범 사례를 어떻게 통합하는지 살펴보겠습니다.
탄력적인 아키텍쳐 설계 권장 사항
초기 아키텍처는 단일 장애 지점(SPoF)과 다중화 부족으로 인해 안정성, 성능 및 확장성에 어려움을 겪었습니다. 이를 해결하기 위해 기존 애플리케이션 설계와 그 문제점을 자연어 프롬프트를 사용하여 Amazon Q에 설명하고 복원력 권장 사항을 요청했습니다.
아키텍처 설계 개선을 위한 프롬프트
단일 AZ에서 두 개의 EC2 노드가 있는 EKS 클러스터 내에서 실행되는 애플리케이션을 수동으로 설정했습니다. 내 애플리케이션은 고가용성과 확장성이 없습니다. 단일 AZ인 RDS 데이터베이스와 통신하지만, 데이터베이스에서 응답 시간이 깁니다. 이러한 모든 문제를 해결할 수 있도록 각 계층에서 이 애플리케이션 아키텍처를 재설계하기 위한 권장 사항만 제공해 주세요.
Amazon Q가 제공하는 복원력 있는 아키텍처 권장 사항
Amazon Q는 제공된 컨텍스트를 분석하고 고가용성을 위한 다중 AZ 배포 도입, 탄력성을 위한 자동 확장 그룹(Autoscaling Group) 추가, 성능 향상을 위한 캐싱 계층 통합과 같은 개선 사항을 제안했습니다. 이러한 맞춤형 권장 사항은 아키텍처를 더 복원력 있고 확장 가능하게 재설계하는 데 도움이 되어 초기 아키텍처의 단점을 직접적으로 해결했습니다.
재해 복구(DR) 권장 사항을 통해 아키텍처 개선
복원력을 더욱 향상시키기 위해 Amazon Q에 재해 복구(DR) 권장 사항을 요청했습니다. AWS Well-Architected Framework에 부합하는 지침을 요청했으며, 이는 이전에 개선된 아키텍처 설계를 기반으로 했습니다.
재해 복구(DR) 및 RTO/RPO 기반 아키텍처에 대한 권장 사항 프롬프트
위에서 개선된 AWS 아키텍처 설계를 기반으로 AWS Well Architected Framework에 따른 재해 복구(DR) 권장 사항을 공유해 주세요
선택적으로, 추가 컨텍스트와 함께 아래와 같은 자세한 프롬프트를 사용할 수 있습니다.
두 개의 EC2 노드와 단일 AZ RDS 데이터베이스가 있는 EKS 클러스터에서 실행 중인 애플리케이션을 재설계하기 위한 권장 사항을 제공해 주세요. 데이터베이스 지연 시간이 높고, 가용성이 낮으며, 확장성 문제를 해결해야 합니다. 프레젠테이션 계층, 애플리케이션 계층, 데이터 계층을 포함한 모든 아키텍처 계층에 걸쳐 성능, 복원력, 확장성을 향상시키기 위한 개선 사항을 제안해 주세요. 또한 복원력, 데이터 보호, 복구에 중점을 둔 AWS Well-Architected Framework에 부합하는 DR 전략을 추천해 주세요.
AWS Well-Architected Framework를 사용하여 비즈니스 요구 사항에 맞게 권장 사항을 맞춤으로 제공하는 Amazon Q
Amazon Q는 상세한 DR 전략을 제공했습니다. 여기에는 다중 리전 구성, 백업 및 복원 절차, 특정 복구 시간 목표(RTO) 및 복구 지점 목표(RPO) 요구 사항을 충족하기 위한 모범 사례가 포함되었습니다.
RTO 및 RPO 요구사항을 기반으로 DR 전략 수립
더 깊이 들어가서, 애플리케이션의 RTO 요구 사항 2시간과 RPO 요구 사항 30분을 충족하는 특정 재해 복구 전략을 요청해 보았습니다.
RTO/RPO 값에 기반한 DR 전략을 위한 프롬프트
RTO가 2시간 미만이고 RPO가 30분 미만인 경우 어떤 DR 전략을 사용해야 할까요?
Amazon Q가 추천하는 재해 복구 전략
Amazon Q는 파일럿 라이트(Pilot light) 방식을 권장하며, 지정된 재해 복구 목표를 달성하는 데 필요한 설정과 구성 요소에 대해 상세히 설명했습니다.
복원력 테스트 워크플로우를 정의하고, 주요 지표와 도구 식별
애플리케이션 아키텍처에 복원력 모범 사례를 통합함에 따라, 애플리케이션의 복원력 요구 사항이 충족되는지 확인하기 위해 복원력 테스트 워크플로를 구현하는 것이 중요합니다. 이를 위해 엔드 투 엔드 복원력 테스트 프로세스 워크플로를 정의하는 지침을 요청했습니다. 또한 아키텍처에 관련된 각 AWS 서비스의 복원력을 테스트하는 데 필요한 주요 지표와 도구를 식별하고자 합니다.
복원력 테스트 워크플로 정의를 위한 프롬프트
엔드 투 엔드 복원력 테스트 프로세스 워크플로를 정의해 주세요. 또한, 개선된 아키텍처 설계에 포함된 각 AWS 서비스의 복원력을 테스트하는 데 사용해야 할 주요 지표와 도구를 식별해 주세요.
Amazon Q가 제공하는 복원력 테스트 모범 사례 및 도구
Amazon Q는 복원력 테스트 실험을 정의하고 테스트를 위한 환경을 준비하는 단계별 접근 방식을 제공합니다.
장애 모드 평가를 통한 복원력 테스트 우선순위화
장애 모드 및 영향 분석(FMEA)은 복원력 테스트를 설계하는 데 추가적인 도움을 줄 수 있습니다. 이는 프로세스나 시스템에서 잠재적인 장애를 식별하고, 그 영향도를 평가하며, 중요한 문제에 우선순위를 부여하는 사전 예방적 방법입니다. FMEA는 하드웨어, 소프트웨어, 인적 요소, 외부 이벤트 전반에 걸쳐 장애 모드를 평가하여 팀이 예방, 감지 및 완화를 위한 전략을 개발할 수 있게 하여 궁극적으로 시스템 복원력을 향상시킵니다.
Amazon Q를 활용하여 구성 요소, 원인, 영향 및 각각의 위험 우선순위 번호(RPN)를 포함하는 포괄적인 FMEA 보고서를 요청했습니다. RPN은 심각도(Severity), 발생 빈도(Occurrence), 감지 가능성(Detection)이라는 세 가지 핵심 요소를 곱하여 계산됩니다. 이 수치는 조직이 어떤 위험을 먼저 해결해야 하는지 이해하고 우선순위를 정하는 데 도움이 됩니다.
FMEA 템플릿 설계 및 점수 계산를 위한 프롬프트
RTO/RPO 값을 염두에 두고 개선된 아키텍처 설계에 대한 점수가 포함된 표 형식의 FMEA를 작성하고 실행 단계도 함께 제공해 주세요.
체계적인 위험 평가 및 FMEA 보고서를 지원하는 Amazon Q
Amazon Q는 이전에 정의된 RTO 및 RPO 요구 사항을 지능적으로 통합하여 중요한 장애 시나리오를 식별하고 각 잠재적 사고에 대한 RPN을 계산했습니다.
강화된 아키텍처 구현을 통한 복원력 BP
원래 아키텍처의 단일 장애 지점(SPoF), 제한된 확장성, 자동화된 복구 부재와 같은 주요 문제점을 식별한 후, Amazon Q를 활용하여 아키텍처를 분석하고 복원력을 높이기 위한 맞춤형 권장 사항을 적용했습니다. Amazon Q에 요구 사항과 과제를 설명함으로써 AWS 모범 사례와 서비스 구성에 대한 실행 가능한 가이드를 받았고, 이를 구현하여 인프라를 높은 복원력과 가용성을 갖춘 구성으로 변환했습니다.
복원력 있는 애플리케이션 아키텍처
원래의 애플리케이션 계층은 자동 확장 없이 단일 가용 영역에서 실행되어 잠재적인 다운타임과 성능 병목 현상을 초래했습니다. Amazon Q는 Amazon EKS 워커 노드를 여러 가용 영역에 분산시키고 트래픽 패턴에 따라 노드 용량을 동적으로 조정하는 클러스터 오토스케일러(Cluster Autoscaler)를 활성화할 것을 권장했습니다. 또한 Amazon EKS 내에서 수평적 파드 자동 확장(HPA)을 구현하여 CPU 사용률 및 사용자 지정 메트릭에 따라 애플리케이션 리소스를 자동으로 확장하도록 제안했습니다. 이러한 권장 사항에 따라 세 개의 가용 영역에 걸쳐 Amazon EKS 워커 노드를 배포하고, 클러스터 오토스케일러(Cluster Autoscaler) 와 수평적 파드 자동 확장(HPA)을 구성하였으며, 수신 트래픽을 지능적으로 분산시키기 위해 Application Load Balancer를 통합했습니다. 이러한 변경으로 확장성, 내결함성 및 성능이 크게 향상되었습니다.
데이터 계층은 처음에 단일 인스턴스 Amazon RDS 배포에 의존했으며, 이는 다운타임 위험과 제한된 읽기 성능을 초래했습니다. 검토 후, Amazon Q는 자동 장애 조치를 가능하게 하고 가용성을 향상시키기 위해 다중 AZ에 Amazon RDS를 구성할 것을 권고했습니다. 또한 읽기 중심 워크로드를 분산하고 성능을 향상시키기 위해 읽기 전용 복제본(Read Replica)을 배포할 것을 권장했습니다. 더 나아가 Amazon Q는 데이터베이스 부하를 줄이고 데이터 접근 속도를 높이기 위해 다중 AZ에 Amazon ElastiCache for Redis를 추가할 것을 제안했습니다. 이러한 권장 사항을 통합한 결과, 장애 조치 시나리오를 처리하고 읽기 작업을 효율적으로 확장할 수 있는 더 복원력 있고 성능이 좋은 데이터 계층이 구현되었습니다.
프레젠테이션 계층은 최적화된 콘텐츠 전송 메커니즘과 포괄적인 보안 제어가 부족했습니다. Amazon Q는 정적 콘텐츠 전송을 가속화하고 애플리케이션 서버의 부하를 줄이기 위해 콘텐츠 전송 네트워크로 Amazon CloudFront를 통합할 것을 권장했습니다. 또한 일반적인 웹 공격으로부터 보호하기 위해 AWS WAF를 배포할 것을 제안했습니다. 운영 가시성을 개선하기 위해 Amazon Q는 Amazon CloudWatch를 사용한 포괄적인 모니터링의 중요성을 강조하며, 로그, 메트릭 및 Trace를 결합하여 신속한 문제 감지 및 해결을 가능하게 했습니다. 이러한 권장 사항을 구현함으로써 프레젠테이션 계층의 성능과 보안성 모두 향상되었습니다.
결론
Amazon Q Developer는 개발 여정 전반에 걸쳐 전문가 동료 역할을 함으로써 팀이 복원력 있는 애플리케이션을 구축하는 방식을 지원합니다. 이 도구의 가이드는 오늘날의 까다로운 디지털 환경에서 중요한 요소인 복원력, 확장성 및 가용성 면에서 뛰어난 시스템을 만드는 데 도움을 줍니다. Amazon Q는 실용적이고 단계별 구현 지침을 제공함으로써 이론적인 조언을 능가했습니다. 위에서 보았듯이, Amazon Q의 전문성은 기본 아키텍처를 견고하고 장애에 강한 시스템으로 변환할 수 있습니다. 다중 AZ 구성, 탄력적 확장, 전략적 캐싱, 사전 복원력 테스트와 같은 권장 사항은 심각한 중단 상황에서도 성능과 가용성을 유지하는 애플리케이션을 만듭니다.
예상치 못한 이슈에 대비하여 애플리케이션을 강화할 준비가 되셨나요? Amazon Q의 기능을 활용하여 어떤 상황에서도 고객에게 안정적인 서비스를 제공할 수 있는 복원력 있는 인프라를 만드세요. 오늘 AWS 인프라의 잠재력을 최대한 활용하고 고객에게 끊김 없는 서비스를 제공하세요. Amazon Q에 대해 자세히 알아보려면 문서를 참조하세요.