기능 플래그와 동적 구성은 소프트웨어 배포에서 가장 강력한 도구 중 하나로, 팀이 기능을 점진적으로 출시하고 프로덕션 환경에서 테스트하며 위험을 최소화할 수 있도록 합니다. 그러나 아무리 신중하게 계획을 해도 기능 릴리스는 잘못될 수 있습니다. 오류율이 급증하거나 레이턴시가 늘어나거나 예기치 않은 동작이 나타날 수 있기 때문에 팀은 신속하게 대응해야 합니다.
오늘 AWS AppConfig와 뉴렐릭 워크플로우 오토메이션 간의 새로운 통합이 발표되었습니다. 이 통합은 실시간 옵저버빌리티 데이터를 기반으로 자동화된 지능형 롤백을 지원하여 더욱 안전하게 기능 플래그를 배포할 수 있도록 해줍니다.
AWS 및 뉴렐릭
기능 플래그의 안전 간극
AWS AppConfig는 팀이 더 빠르고 안전하게 작업할 수 있도록 돕는 서비스입니다. 기능 플래그와 동적 구성을 사용하면 코드 배포 없이 프로덕션 환경에서 소프트웨어 동작을 조정할 수 있습니다. 기능 플래그는 코드 배포에서 릴리스를 분리하여, 소스 코드의 재 배포나 변경 없이 특정 기능 릴리스 방법을 제어할 수 있도록 합니다. 또한, AWS AppConfig의 킬 스위치는 예기치 않은 문제가 발생할 경우 즉각적인 롤백을 지원합니다. AWS AppConfig는 Amazon 내부에서 대규모로 사용되며, 제공되는 기능들은 AWS가 기능 플래그의 적절한 사용에 대해 어떻게 생각하는지를 반영합니다.
문제는 구성이나 기능 플래그 변경이 어떤 위험을 가져오는지 과소평가되는 경우입니다. 엔지니어가 “그냥 코드 한 줄 바꾸는 데 무슨 큰 문제가 있겠나”라고 생각하듯, 기능 플래그 변경도 얼핏 무해한 것처럼 보일 수 있습니다. 그리고 99.99%의 경우, 이러한 변경은 문제가 되지 않습니다. 그러나 때로는 이렇게 작은 변경이 대대적인 중단을 초래할 수 있습니다. 실제로 최근에 잘 알려진 많은 운영 중단 사례는 구성 변경으로 인해 발생했습니다. 예상치 못한 영향을 피하려면 자동화된 올바른 안전 가드레일을 갖추어야 합니다.
점진적인 배포와 모니터링은 핵심적인 안전 가드레일 중 하나입니다. AWS AppConfig의 필수 기능 중 하나는 점진적 배포를 사용해 기능 플래그를 안전하게 배포하는 것입니다. 몇 분, 몇 시간 동안 10%의 사용자에게 기능을 릴리스한 다음, 20%, 50%의 사용자에게 점진적으로 기능을 릴리스하고 각 단계에서 시스템 상태를 모니터링하는 것입니다. 이러한 방식은 일괄적인 릴리스에 비해 잠재적인 영향의 범위를 크게 줄여줍니다. 그러나 이러한 점진적 릴리스 동안에도 모니터링은 필수적입니다. AWS AppConfig는 강력한 점진적 배포 및 롤백 기능을 제공하고 뉴렐릭은 뛰어난 옵저버빌리티를 지원하지만, 자동화된 워크플로우에서 이 두 시스템을 연결하려면 기존에는 커스텀 코드와 인프라가 필요했습니다. 참고: AWS AppConfig는 이미 Amazon CloudWatch 알림에 대한 자동 롤백 기능을 갖추고 있었지만, 뉴렐릭 고객의 경우 파트너십 이전에는 수동 롤백이 필요했습니다.
점진적인 롤아웃 중에 뭔가가 잘못되었다면 어떻게 할까요?
기존에는 다음 작업이 필요했습니다.
- 모니터링 툴에서 저하된 지표에 대한 알림 수신
- 타이밍과 기능 플래그 배포의 상관 관계 분석
- AWS AppConfig에서 수동으로 롤백 트리거
- 롤백이 전파될 때까지 대기
좋은 툴과 명확한 런북이 있더라도 이러한 프로세스는 몇 분 또는 그 이상이 걸릴 수 있으며, 10분 동안의 다운타임은 1분 미만의 다운타임보다 운영과 평판에 미치는 영향이 훨씬 큽니다.
루프 닫기: 감지에서 자동 롤백까지
AWS AppConfig와 뉴렐릭 워크플로우 오토메이션 간의 새로운 통합은 이러한 수동 응답 주기를 없애줍니다. 작동 원리는 다음과 같습니다.
기능 플래그 또는 동적 구성 배포 중
AWS AppConfig의 점진적 배포 전략을 사용해 기능 플래그를 배포하는 경우, 뉴렐릭 워크플로우 오토메이션은 롤아웃 기간 동안 애플리케이션의 상태를 지속적으로 모니터링합니다. 워크플로우는 뉴렐릭의 텔레메트리를 사용해 정의한 커스텀 메트릭을 포함해 오류율, 레이턴시, 알림 심각도 등 설정된 알림 조건을 기준으로 애플리케이션 상태를 평가합니다.
문제가 감지된 경우
배포 중에 애플리케이션의 알림 조건이 트리거되어 기능 플래그가 문제를 일으켰음을 알게 되면, 뉴렐릭 워크플로우는 즉시 AWS SQS(Simple Queue Service) 대기열에 알림 메시지를 보냅니다.
결과 – 자동화된 안전한 배포
이전에는 수동 감지, 상호 연관 및 대응이 필요했던 작업이 이제 몇 초 만에 자동으로 수행됩니다. 대부분의 사용자들이 영향을 받기 전에 기능 플래그가 롤백되며, 팀은 발생한 상황과 그 이유에 대한 완벽한 감사 추적 정보를 얻을 수 있습니다.
아키텍처: 통합의 작동 방식
이 통합은 간단하고 안전한 아키텍처를 사용합니다.
- AWS AppConfig가 점진적 배포 전략(예: 2시간 동안 선형 20%)을 사용하여 기능 플래그를 배포합니다.
- 뉴렐릭 워크플로우 오토메이션은 배포 기간 동안 정의된 알림 조건을 기준으로 애플리케이션의 상태를 지속적으로 평가합니다. 알림 조건이 충족되면(성능 저하) 워크플로우가 자동으로 트리거됩니다. 이러한 모니터링은 뉴렐릭의 통합 텔레메트리 플랫폼을 사용하여 애플리케이션 상태, 인프라 메트릭, 사용자 경험 데이터 등 시스템에 대한 완전한 컨텍스트를 제공합니다.
- 워크플로우의 조건부 로직이 애플리케이션이 양호한 상태로 유지되는지 또는 성능 저하 상태에 들어갔는지를 평가합니다.
- AWS SQS가 상태가 저하된 경우 워크플로우에서 알림 메시지를 수신합니다.
- AWS Lambda는 SQS 대기열에서 메시지를 확인하고 메시지가 있는 경우 롤백을 트리거하도록 AWS AppConfig에 알립니다. (배포 중 15초마다 AppConfig에 의해 호출)
- AWS AppConfig가 롤백을 실행하여 기능 플래그를 즉시 이전 상태로 되돌립니다.
인증은 AWS IAM 역할을 사용하여 안전하게 처리되며, 필요한 작업만 할 수 있도록 적절한 권한이 부여됩니다.
AWS AppConfig 및 뉴렐릭 워크플로우 오토메이션 다이어그램
사용 사례: 이커머스
이커머스 플랫폼에 새로운 결제 흐름을 위한 기능 플래그를 릴리스하는 시나리오를 예로 들 수 있습니다. AWS AppConfig를 사용해 트래픽의 5%부터 시작해 2시간에 걸쳐 점진적으로 기능 플래그를 롤아웃합니다. 이 시간 동안 주요 메트릭을 모니터링하여 결과가 예상과 일치하는지, 부정적인 영향이 발생하지 않는지 확인합니다.
통합을 사용하지 않는 경우: 롤아웃 45분(트래픽 20%) 시점에서 오류율이 0.1%에서 2.5%로 급증합니다. 10분이 흐른 후에 누군가 슬랙에서 이러한 사실을 알아차립니다. 5분 동안 기능 플래그와 관련이 있는지 조사하고 확인합니다. AWS AppConfig 배포를 찾고 롤백을 트리거하는 데 2분이 더 소요됩니다. 총 17분 동안 지속된 오류는 20%의 고객에게 영향을 미칩니다. 이로 인해 매출 또는 평판에도 상당한 영향이 갑니다.
통합을 사용하는 경우: 롤아웃 45분 시점에서 오류율이 0.1%에서 2.5%로 급증합니다. 워크플로우가 1분 이내에 저하된 상태를 감지하고 SQS에 알림이 전송되어 AWS AppConfig가 자동으로 롤백을 시작합니다. 오류 발생 후 2분 미만이 경과하여 대부분의 고객들은 아무런 문제도 경험하지 않습니다.
단축된 15분의 시간이 수익 보호, 고객 신뢰 및 엔지니어링 팀의 성과에 큰 차이를 만들어 줍니다.
기능 플래그 너머의 더 큰 그림 보기
이 통합은 옵저버빌리티에서 조치로 이어지는 루프를 닫을 때 무엇이 가능해지는지를 보여줍니다. AWS AppConfig의 기능 플래그는 한 가지 사용 사례일 뿐입니다. 뉴렐릭 워크플로우 오토메이션은 증가하는 통합 에코시스템을 지원합니다.
- 클라우드 공급업체: AWS(EC2, ECS, Lambda, SQS 등)
- 인시던트 관리: PagerDuty, Jira
- 커뮤니케이션: Slack
- 커스텀: 모든 HTTP API
완전한 옵저버빌리티 컨텍스트로 모니터링하고, 지능적으로 문제를 감지하며, 자동으로 문제 해결을 트리거하는 통합은 인프라 자동 확장, 실패한 서비스 재시작, 카오스 실험 트리거 등 수많은 운영 시나리오에 적용될 수 있습니다.
이러한 파트너십은 시작일 뿐입니다. 뉴렐릭은 AWS 서비스를 뉴렐릭의 지능형 옵저버빌리티 플랫폼과 통합하여 양사의 고객들이 변화하는 환경에 지능적으로 대응할 수 있는 안정적이고 탄력적인 시스템을 보다 쉽게 구축할 수 있도록 지원하는 방법을 계속 모색하고 있습니다.
이 블로그에 표현된 견해는 저자의 견해이며 반드시 New Relic의 견해를 반영하는 것은 아닙니다. 저자가 제공하는 모든 솔루션은 환경에 따라 다르며 New Relic에서 제공하는 상용 솔루션이나 지원의 일부가 아닙니다. 이 블로그 게시물과 관련된 질문 및 지원이 필요한 경우 Explorers Hub(discuss.newrelic.com)에서만 참여하십시오. 이 블로그에는 타사 사이트의 콘텐츠에 대한 링크가 포함될 수 있습니다. 이러한 링크를 제공함으로써 New Relic은 해당 사이트에서 사용할 수 있는 정보, 보기 또는 제품을 채택, 보증, 승인 또는 보증하지 않습니다.