Search

[AWS] App Config 사용 방법

PublishDate
2022/12/14
Category
AWS
Python
Feature Flag
Tag & Keyword
Feature Flag
Feature Toggle
CI/CD

Feature Flag

App Config는 AWS가 제공하는 Feature Flag 서비스이다.
Feature Toggle이라고 불리기도 하는 Feature Flag는 Code를 업데이트 하거나 재배포 하지 않고도 기능을 관리할 수 있다.
Application 배포 시점과 사용자에게 기능을 배포하는 시점을 분리해서 제공할 수 있다고도 표현한다.
단순히 기능을 On/Off 하는것 뿐 아니라 다음과 같은 작업도 할 수 있다.
Application에서 일부 기능을 먼저 Open 하는 등의 점진적 배포
특정 환경에 관리자가 원하는 기능을 제공 (e.g. 미국 사용자에게만 다른 UI 제공)
일부 사용자에게 실험적으로 기능을 테스트하고 낮은 Risk로 Feature의 영향도를 평가
특정 기능에 문제 발생시 즉시 비활성화 가능
가장 중요한 것은 이 모든 작업이 Application의 재배포 없이 가능하다는 것이다.
CI/CD 과정에서 소요되는 시간, Side Effect 등을 고려할 때 CI/CD Pipeline이 구축되어 있다고 하더라도 배포를 너무 잦은 빈도로 하는것이 좋지는 않다고 생각한다.
기능 하나를 추가하거나 빼는 간단한 테스트를 위해서 매번 CI/CD를 기다리지 않고 Feature Flag 적절히 활용할 수 있을 것 같다.
이제 App Config를 사용해보면서 Feature Flag를 찍먹해보자

App Config를 사용한 Feature Flag 실습

Prerequsite

실습 개요

실습 - 환경 구축

실습 - Feature Flag 테스트

결론 & 느낀점

리소스 삭제는 리소스 생성의 역순으로 진행한다. Application을 바로 삭제하고 싶어도 Configuration Profile의 버전을 수동으로 모두 지워야 삭제가 가능하다.
Code를 작성할 때 Feature Flag를 염두하고 SDK를 추가해서 코딩을 해야 한다는 단점이 있지만, 귀찮음보단 얻는 이점이 더욱 큰 기능이라고 생각한다.
App Config는 Unleash, LaunchDarkly와 같은 전문 서비스에 비해 아직 기능적으로 많이 부족한 것 같다. LaunchDarkly는 국가별, 사용기기별 기능 제어와 같은 세세한 설정도 가능하다고 한다.
단순히 Feature On/Off 기능만 제공하는 것이 아니라, 일부 대상에게만 Feature 제공, 일부 환경에만 특정 Feature 제공 등과 같이 기능에 대한 전반적인 관리를 Feature Flag에서 하도록 구성하면 좋지 않을까 싶다.
트래픽이 발생할 때 마다 Application이 AWS App Config와 통신해서 변경된 Deploy가 있는지 확인하고, 있으면 업데이트 하는 것 같은데 이 과정에서 Resource 낭비나 성능 저하가 없는지 확인해볼 필요가 있을 것 같다.