기능 플래그: 무엇을, 왜?

기능 플래그란 무엇입니까?



기능 플래그는 새로운 기능 또는 코드 변경 사항이 롤아웃되는 방식을 제어하는 ​​방법입니다. 다양한 시나리오에서 사용됩니다.

점진적 롤아웃



엔지니어링 팀이 특정 규모에 도달하면 배포 중에 버그가 드러날 가능성이 매우 높아져 거의 모든 사용자가 사이트 또는 애플리케이션에 장애를 일으켜 롤백 및 사후 분석이 필요합니다. 매일 10~100명의 엔지니어가 코드를 확인한다고 상상해 보세요. 전체 릴리스를 롤백해야 하는 특정 코드 변경으로 인해 롤백이 시작되는 것은 시간 문제입니다.

이 문제를 해결하는 한 가지 방법은 비즈니스 논리에서 다음과 같은 작업을 수행하여 코드 변경의 폭발 반경을 제어하는 ​​것입니다.

if is_on('NEW_FEATURE'):
  # new logic
else:
  # existing logic


여기에서 가장 큰 장점은 새로운 논리가 실행될 사용자의 비율을 제어할 수 있고 시간이 지남에 따라 이를 높일 수 있다는 것입니다. 일반적으로 0%로 시작하여 롤아웃을 늘리고 관련 대시보드를 확인하여 변경의 영향을 모니터링합니다. 새로운 예외, 성능 저하 또는 오류 증가를 관찰하는 순간 기능을 끄고 평소와 같이 비즈니스를 계속합니다. 기능 플래그 시스템이 없으면 변경 사항을 롤백해야 합니다. 카나리아를 사용하여 영향을 최소화할 수 있지만 많은 제어 권한이 없습니다. 롤아웃되는 많은 코드 변경 사항이 있을 수 있으며 때로는 어떤 변경 사항이 무엇을 초래했는지 알기 어렵습니다.

게이팅 기능



사용자, 회사, 위치 등과 관련된 일부 속성을 기반으로 기능을 활성화 또는 비활성화하는 것은 매우 일반적입니다. 예를 들어 새로운 기능이 선택된 베타 테스트 사용자, 내부 사용자 또는 기타 ID 집합에 롤아웃됩니다. 포함/제외할 기능별로 사용자에 대한 속성을 추가하는 대신 매핑이 동적이고 즉시 업데이트할 수 있는 기능 플래그 시스템(즉, 새로운 베타 테스트 사용자)에 위임할 수 있습니다.

킬 스위치



긴급 상황의 경우 사이트 전체가 중단되는 것보다 사용자 환경이 저하되는 것이 더 나을 수 있습니다. 따라서 백엔드의 부하를 줄이기 위해 특정 기능을 끄는 것이 유용합니다. 예를 들어 데이터베이스가 오버로드되는 시나리오를 상상해 보십시오. 로드는 특정 기능(예: 검색)과 연결된 최적화되지 않은 쿼리에서 발생합니다. 전체 웹 사이트를 사용할 수 없게 만드는 대신 문제를 해결하기 위해 일시적으로 검색을 끄는 것이 좋습니다. 검색 기능 코드가 기능 플래그에 의해 제어된다고 가정하면 쉽게 수행할 수 있습니다. 사실, 속도를 낮출 수도 있고 반드시 즉시 끌 필요는 없습니다.

직접 해보십시오



TryingFeatureGuards은 무료이며 신용 카드가 필요하지 않습니다. 자세한 내용을 알고 싶으시면 당사documentation도 확인하십시오.
기능 플래그를 사용하기 시작하면 절대 뒤돌아보지 않을 것입니다. 아래 의견에서 귀하의 생각을 배우고 싶습니다.

좋은 웹페이지 즐겨찾기