Laravel Pennant는 메모리 내 배열 드라이버와 영구 데이터베이스 드라이버의 두 가지 주요 드라이버를 지원하는 유연한 스토리지 시스템을 사용하여 기능 플래그 값을 저장하고 검색합니다.
스토리지 메커니즘 :
- 배열 드라이버 :이 드라이버는 메모리 내 배열에 고정 된 기능 플래그 값을 저장합니다. 빠르지 만 일시적이므로 저장된 기능 플래그 값은 현재 요청 수명주기 동안 만 존재하며 나중에 손실됩니다. 이것은 지속성이 필요하지 않은 단순 또는 임시 사용 사례에 유용합니다.
- 데이터베이스 드라이버 (기본값) : Pennant는 관계형 데이터베이스, 특히 Pennant의 마이그레이션을 실행하여 생성 된 '기능'테이블에서 기능 플래그 값을 지속 할 수 있습니다. 이 드라이버는 해결 된 기능 플래그 값을 지속적으로 저장하므로 여러 요청 및 서버에서 값을 공유 할 수 있습니다. 여러 서버 또는 서버리스 환경에서 실행되는 응용 프로그램에 이상적입니다. 데이터베이스 드라이버는 단일 요청 중에 인 메모리 캐시를 사용하여 동일한 기능 플래그에 대한 반복 데이터베이스 쿼리를 피하여 성능을 향상시킵니다 [1] [2] [5].
기능 플래그가 정의되고 해결되는 방법 :
- 기능 플래그는 로직이 포함 된 클로저를 사용하여 기능이 활성화되어 있는지 여부를 결정합니다. 이러한 클로즈는 인증 된 사용자와 같은 매개 변수를 허용하여 범위를 가진 기능 플래그를 허용 할 수 있습니다 (예 : 관리자 사용자에게만 기능을 활성화).
- 피처 플래그가 먼저 주어진 범위 (예 : 사용자)를 확인하면 Pennant는 기능의 값을 해결하기 위해 폐쇄를 실행합니다. 이 해결 된 값은 구성된 스토리지 드라이버 (배열 또는 데이터베이스)에 저장됩니다.
- 동일한 기능 및 범위에 대한 후속 확인에서 Pennant는 성능을 최적화하는 스토리지 드라이버에서 저장된 값을 검색하여 성능을 최적화합니다 [2] [3].
기능 플래그 값 검색 :
-`feature :: active ( 'feature-name')와 같은 메소드를 사용하여 단일 기능 플래그의 값을 검색 할 수 있습니다.
intection (boolean)) 또는`feature :: value ( 'feaction-name')```값 ( 'feaction-name')`를 확인하십시오.
-Pennant는 또한`feature :: values ([ 'feaction1', 'feaction2'])와 같은 여러 기능 플래그 값을 한 번에 검색하는 메소드를 제공합니다.
- 기능 클래스를 동적으로 발견하고 등록하여 모든 기능 플래그를 검색 할 때 포함 될 수 있습니다 [1] [2].
요약:
Laravel Pennant는 사용자 정의 로직 클로저를 실행하여 기능 플래그 값을 해결 한 다음 이러한 해결 된 값을 임시 내부 배열에 또는 데이터베이스 테이블에 지속적으로 저장합니다. 이 스토리지 메커니즘을 사용하면 Pennant는 재 계산없이 후속 요청에서 기능 플래그 상태를 효율적으로 검색하여 사용자 당 범위의 플래그를 포함하여 간단하고 복잡한 사용 사례를 지원합니다. 기본 및 권장 접근법은 특히 멀티 서버 또는 프로덕션 환경에서 영구 스토리지에 데이터베이스 드라이버를 사용하는 반면 어레이 드라이버는 과도 또는 테스트 시나리오에 적합합니다 [1] [2] [5].
인용 :
[1] https://laravel.com/docs/11.x/pennant
[2] https://www.honeybadger.io/blog/a-guide-to-feature-flags-laravel/
[3] https://www.reddit.com/r/laravel/comments/10yto7q/laravel_pennant_simple_and_lightweight_feature/
[4] https://redberry.international/laravel-pennant-feature-flagging-made-easy/
[5] https://wpwebinfotech.com/blog/laravel-pennant-guide/
[6] https://dev.to/saurabh-dhariwal/how-to-manage-feature-flags-with-laravel-pennant-in-2024-1phb
[7] https://stackoverflow.com/questions/77751003/laravel-pennant-store-against-session-for-a-b-testing
[8] https://laracasts.com/series/whats-new-me-laravel-10/episodes/5