How to Use Channels for Feature Flags and A/B Testing
Capgo의 채널 시스템은 사용자를 구분하고 기능 접근을 제어하는 유연한 방법을 제공합니다. Capgo에는 내장된 계획 관리 또는 A/B 테스트 기능이 없지만, 채널 할당을 관리하여 이러한 기능을 implement할 수 있습니다.
Understanding Channels
Capgo의 채널은 다음과 같은 기능을 제공합니다.
- 특정 사용자 그룹에 다른 기능을 제공
- A/B 테스트를 위해 사용자를 다른 채널에 할당
- 새로운 기능을 점진적으로 출시
- 베타 테스트 프로그램을 생성
Channel Assignment Methods
1. 백엔드 할당 (권장)
이 방법은 보안이 더 높습니다. 다음을 포함합니다.
- 업데이터에서 디바이스 ID를 가져옵니다.
- __CAPGO_KEEP_0__ __CAPGO_KEEP_1__을 백엔드에 전송합니다.
- Capgo API을 호출하여 장치 assign하기 위해 백엔드가 Capgo API을 호출합니다.
백엔드 구현 방법은 다음과 같습니다.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Get device ID
const getDeviceId = async () => {
const { deviceId } = await CapacitorUpdater.getDeviceId()
return deviceId
}
// Send device ID to your backend
const assignToChannel = async (channel: string) => {
const deviceId = await getDeviceId()
// Your backend will call Capgo API to assign the device
await yourBackend.assignDeviceToChannel(deviceId, channel)
}
백엔드 구현
백엔드에 다음을 수행해야 합니다.
- API 키를 Capgo 대시보드에서 가져옵니다.
- Capgo API을 호출하여 장치를 채널에 assign합니다.
API 키를 얻으려면 다음을 수행하세요.
- Capgo 대시보드에 로그인하세요.
- API 설정 > API 키로 이동하세요.
- '새 키 생성' 버튼을 클릭하세요.
- __CAPGO_KEEP_0__ 키를 선택하세요.
all__CAPGO_KEEP_0__를 관리하는 장치 및 채널을 관리하는 모드입니다. - __CAPGO_KEEP_0__에서 생성된 키를 안전하게 백엔드 환경 변수에 저장하세요.
- 키는 32자리 16진수 문자열입니다.
- 클라이언트 측 code에서 노출되지 않도록 비밀 키입니다.
Node.js 예제입니다.
import axios from 'axios'
const CAPGO_API_KEY = 'your_api_key'
const CAPGO_API_URL = 'https://api.capgo.app'
async function assignDeviceToChannel(deviceId: string, channel: string) {
try {
const response = await axios.post(
`${CAPGO_API_URL}/device`,
{
app_id: 'YOUR_APP_ID',
device_id: deviceId,
channel: channel
},
{
headers: {
'authorization': CAPGO_API_KEY,
'Content-Type': 'application/json'
}
}
)
return response.data
} catch (error) {
console.error('Failed to assign device to channel:', error)
throw error
}
}
백엔드도 다음을 수행해야 합니다.
- 사용자의 권한을 검증하세요.
- 채널 할당 기록을 모두 로깅하세요.
- 할당 실패 시 재시도 로직을 구현하세요.
- 2. 자체 할당(보안이 낮음)
이 방법은 장치가 직접 채널에 할당할 수 있지만 테스트에 유용하지만 프로덕션에 적합하지 않습니다.
__CAPGO_KEEP_0__는 Node.js 예제입니다.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Assign device to channel
const assignToChannel = async (channel: string) => {
await CapacitorUpdater.setChannel(channel)
}
// Get current channel
const getCurrentChannel = async () => {
const { channel } = await CapacitorUpdater.getChannel()
return channel
}
Capgo 설정에서 이 기능을 활성화해야 사용자가 채널에 자체 할당할 수 있습니다.
- Capgo 대시보드의 채널 섹션으로 이동하세요.
- 관리하고 싶은 채널 이름을 클릭하세요.
- 채널 설정에서 '기기 자체 연관 허용'을 활성화하세요.
- 변경 사항을 저장하세요.
이 설정이 거짓인 경우, 이 채널을 호출하는 모든 시도는 실패합니다. setChannel 기능 플래그 구현
채널을 통해 기능 접근을 제어하세요.
A/B 테스트 구현
const isFeatureEnabled = async (feature: string) => {
// Example: Check if user is in beta channel
const channel = await getCurrentChannel()
return channel === 'beta'
}
A/B 테스트를 위해 사용자를 다른 채널에 할당하세요.
최적화 방법론입니다.
const assignToABTest = async (userId: string) => {
// Use consistent hashing to assign users
const hash = await hashUserId(userId)
const variant = hash % 2 === 0 ? 'variant-a' : 'variant-b'
await assignToChannel(variant)
return variant
}
__CAPGO_KEEP_0__
- Use Backend Assignment: 프로덕션 환경에서 항상 백엔드 assignment 방법을 사용하세요
- Consistent Assignment: 사용자 ID나 다른 안정적인 식별자로 일관적인 채널 assignment을 사용하세요
- Monitoring: 각 채널의 기능 사용률과 성능 지표를 추적하세요
- Gradual Rollouts: 작은 사용자 세그먼트부터 시작하여 점진적으로 확장하세요
- Clear Documentation: 채널 전략과 목적을 문서화하세요
Conclusion
By leveraging Capgo’s 채널 시스템, 앱 경험을 개인화하고 A/B 테스트를 수행할 수 있습니다. 프로덕션 환경에서 항상 보다 안전하고 제어할 수 있는 백엔드 assignment 방법을 선호하세요.
__CAPGO_KEEP_0__에 대한 채널 관리에 대한 자세한 내용은 __CAPGO_KEEP_1__ 문서를 참조하십시오..
__CAPGO_KEEP_0__에서 기능 플래그 및 A/B 테스트를 위한 채널 사용 방법을 계속 진행하십시오.
__CAPGO_KEEP_0__를 사용하고 있다면 __CAPGO_KEEP_0__에서 기능 플래그 및 A/B 테스트를 위한 채널 사용 방법을 참조하십시오. __CAPGO_KEEP_0__를 계획하고 단계별 롤아웃을 위해 연결하세요. __CAPGO_KEEP_2__ __CAPGO_KEEP_2__에서 채널 라우팅과 단계별 롤아웃에 대한 구현 세부 정보를 참조하십시오. __CAPGO_KEEP_2__에서 채널 라우팅과 단계별 롤아웃에 대한 구현 세부 정보를 참조하십시오. __CAPGO_KEEP_2__에서 채널 라우팅과 단계별 롤아웃에 대한 구현 세부 정보를 참조하십시오. __CAPGO_KEEP_2__ __CAPGO_KEEP_2__ Beta Testing Solution Beta Testing 솔루션의 제품 워크플로우에 대해, 그리고 Version Targeting Solution Version Targeting 솔루션의 제품 워크플로우에 대해.