기능 전환
Feature toggle이 문서에는 자작 출처에 대한 과도한 또는 부적절한 언급이 포함되어 있을 수 있습니다.(2022년 5월 (이를을 학습합니다) |
소프트웨어 개발의 기능 전환은 소스 코드에서 여러 기능 브랜치를 유지하는 대신 사용할 수 있습니다.코드내의 조건은, 런타임중에 기능을 유효 또는 무효로 합니다.신속한 변화를 위한 설정에서는 일부 또는 모든 사용자에 대해 온 디맨드로 기능을 켜는 데 전환 기능이 사용됩니다.따라서 기능 토글을 사용하면 자주 릴리스할 수 있습니다.카나리 롤아웃 및 A/B 테스트와 같은 고급 롤아웃 전략은 [1][2]다루기 쉽습니다.
새로운 릴리스가 계속 실가동 환경에 도입되지 않는 경우에도 기능 토글에 의해 연속 전달이 지원됩니다.이 기능은 완료되기 전에 메인브런치에 통합됩니다.버전이 테스트 환경에 배포되면 토글을 통해 기능을 켜고 테스트할 수 있습니다.소프트웨어 통합 주기가 짧아지고 운영 환경에 바로 사용할 수 있는 버전을 [3]제공할 수 있습니다.
이 기술의 세 번째 용도는 개발자가 미완성 기능을 가진 제품의 버전을 출시할 수 있도록 하는 것이다.이러한 미완료 기능은 숨김(태깅)되어 사용자 인터페이스에 표시되지 않습니다.기능을 생산적인 브랜치 간에 통합하기 위한 노력이 적기 때문에 많은 소규모 증분 버전의 소프트웨어를 [4]사용할 수 있습니다.
기능 토글은 기능 스위치, 기능 플래그, 기능 게이트, 기능 플리퍼 또는 조건부 기능이라고도 합니다.
실행
기능 토글은 기본적으로 조건문 내에서 사용되는 변수입니다.따라서 이러한 조건문 내부의 블록은 기능 토글 값에 따라 'on 또는 off' 토글할 수 있습니다.이를 통해 개발자는 소프트웨어의 흐름을 제어하고 도입 준비가 되지 않은 기능을 우회할 수 있습니다.런타임 변수 뒤에 있는 코드 블록은 일반적으로 여전히 존재하며 조건부로 실행될 수 있으며, 때로는 동일한 애플리케이션 수명 주기 내에 실행될 수 있습니다. 프리프로세서 지시어나 주석 아웃 뒤에 있는 코드 블록은 실행할 수 없습니다.기능 플래그 접근법에서는 이러한 방법 중 하나를 사용하여 개발의 다른 단계에서 코드 경로를 분리할 수 있습니다.
기능 토글의 주된 용도는 출시 전 마지막 순간에 소프트웨어 변경을 Marge할 때 발생할 수 있는 경합을 회피하는 것입니다.단, 이로 인해 토글 채무가 발생할 수 있습니다.토글 채무는 기능을 영구적으로 켜고 오버헤드를 발생시킨 후 소프트웨어에 있는 데드코드로 인해 발생합니다.코드의 이 부분은 코드의 다른 부분을 방해하지 않도록 신중하게 삭제해야 합니다.
기능 토글에는 크게 두 가지 유형이 있습니다.하나는 릴리스 전환으로, 개발자는 제품의 동작에 따라 제품을 출시하기 전에 유지 또는 삭제하기로 결정합니다.다른 하나는 비즈니스 전환으로, 이전 코드와 비교하여 다른 용도를 충족하기 때문에 유지됩니다.
기능 토글은 다음 [1]시나리오에서 사용할 수 있습니다.
- 응용 프로그램에 새 기능 추가.
- 응용 프로그램의 기존 기능 강화.
- 기능을 숨기거나 비활성화합니다.
- 인터페이스의 확장
기능 토글은 다음과 [5]같이 저장할 수 있습니다.
- 데이터베이스 내의 행 엔트리.
- 컨피규레이션파일 속성
- 외부 기능 플래그 서비스의 엔트리.
기능 그룹
기능 그룹은 함께 동작하는 기능 토글로 구성됩니다.이를 통해 개발자는 일련의 관련 [6]토글을 쉽게 관리할 수 있습니다.
카나리 릴리즈
카나리 릴리스(또는 카나리 론칭 또는 카나리 전개)를 사용하면 개발자는 소수의 사용자에 의해 기능을 증분 테스트할 수 있습니다.기능 플래그를 사용하면 카나리아 부팅을 할 수 있으며 지리적 위치 또는 사용자 [7]속성에 의한 타겟팅이 가능합니다.기능의 성능이 만족스럽지 않은 경우 부작용 [8]없이 롤백할 수 있습니다.
Martin Fowler는 기능 전환은 "기능을 실제 가동에 투입할 때 마지막 선택이 되어야 한다"고 말합니다.대신, 기능을 작은 부분으로 분할하여 각 기능을 구현하고 다른 [2]문제를 일으키지 않고 출시된 제품에 안전하게 도입하는 것이 가장 좋습니다.
Feature-Toggling은 [10]Flickr,[9][11] Disqus,[12] Etsy[13], Reddit, Gmail 및 [14]Netflix를 포함한 많은 대형 웹사이트와 구글 크롬 카나리아와 같은 소프트웨어에서 사용됩니다.
「 」를 참조해 주세요.
| 무료 사전인 Wiktionary를 찾아봅니다. |
레퍼런스
- ^ a b "ALM Rangers - Software Development with Feature Toggles". msdn.microsoft.com.
- ^ a b Martin Fowler 29 October 2010 (2010-10-29). "FeatureToggle". Martinfowler.com. Retrieved 2013-09-27.
- ^ GitHub가 Feature Flags를 활용하여 빠르고 안전하게 출하하는 방법, infoq, 2021-05-09.
- ^ Programming JavaScript Applications. Archived from the original on 2016-09-15. Retrieved 2016-09-14.
- ^ Echagüe, Pato (2014). Managing Feature Flags. O'Reilly Media. ISBN 9781492028598.
- ^ Elliot, Eric (2018). Programming JavaScript Applications. O'Reilly Media.
- ^ "Canary Testing - Using Blue-Green Deployments and Feature Flags". unlaunch.io. 26 February 2021. Retrieved 14 August 2021.
- ^ "Canary launches – how and why to canary release". launchdarkly.com. 7 April 2015. Retrieved 9 January 2017.
- ^ Harmes, Ross. "Flipping Out - code.flickr.com". flickr.net. Retrieved 9 January 2017.
- ^ dcramer (July 9, 2010). "Partial Deployment with Feature Switches". Archived from the original on 2013-11-05. Retrieved 2013-10-10.
- ^ "How does Etsy manage development and operations?". codeascraft.com. 4 February 2011. Retrieved 9 January 2017.
- ^ "reddit/reddit". github.com. Retrieved 9 January 2017.
- ^ "Developing Gmail's new look". googleblog.com. Retrieved 9 January 2017.
- ^ "Preparing the Netflix API for Deployment". netflix.com. Retrieved 9 January 2017.