외부 클라이언트 서버를 교체할 때, 혹시 모를 상황에 대비해 롤백 해야하는 경우, 서버는 어떤 롤백 시나리오를 준비할 수 있을까요? 상황은 여기서 출발했습니다. 오픈 소스 기능 플래그 관리 툴 Unleash 를 사용해보았습니다.
기능 플래그는 애플리케이션에서 특정 기능을 제어하거나 활성화/비활성화할 수 있는 방법을 제공하며, 지속적 배포(CD) 및 점진적 릴리즈에 유용합니다. 오픈소스 기반이기 때문에 무료이고, 다양한 기본 전략이 있고 커스텀하게 전략을 세울 수도 있습니다. 사용자 세그먼트를 이용해 만 14세 이상의 유저에게는 A 기능을 만 20세 유저에게는 B 기능을 이용하도록 경우에 컨트롤할 수 있습니다. A/B 테스트를 간단하게 해볼 수 있습니다. 시간 기반 릴리즈를 통해 특정 시간 동안만 기능을 활성화할 수 있습니다. 야식이 고픈 출출한 시각에 최적화된 광고를 노출할 수도 있을 것 같습니다. 이런 저런 전략 중, 퍼센트 기반 릴리즈에 눈길이 갔습니다. 사용자 그룹의 일부만 새로운 기능을 사용할 수 있도록 설정하는 제어법입니다.
로컬에서 간단한 테스트를 해보기로 했습니다. 먼저 공식 홈페이지에 들어가서 튜토리얼을 찾았습니다. I got it.
해당 레포지토리에 있는 docker compose 파일을 찾아 local 에서 띄워보는 것이 시작입니다. 이게 귀찮다면 free trial 을 신청하는 것도 방법입니다. 저는 나름 의미가 있다고 생각하고 일단 킵 고잉해보겠습니다.
도커에 띄워졌습니다. http://localhost:4242 로 접속하라고 하니, 한번 해보겠습니다.
디폴트 로그인 계정은 아래와 같습니다. 이상한걸로 하면 안됩니다. 그냥 하라는 대로 하는 게 좋습니다.
- username: admin
- password: unleash4all
유령계정이지만 제 어드민으로 피쳐 플래그를 만들 수 있는 단계까지 왔습니다. 이제 플래깅을 해야하는데요.. 어떤 플래깅이 있는지 잘 모르신다면 여기를 한번 들어가서 천천히 살펴보세요.
저는 일단 아주 베이직하게 트라이해보는 것에 중점을 두겠습니다.
로컬이기 때문에 잘못만들면 지우면되고, 뭐 맘에 안들면 수정하면 됩니다. 대강대강 눌러보다보면 오른쪽에 API Command 로 피쳐토글을 확인할 수 있습니다. 저는 Release toggle 로 생성하겠습니다.
피쳐토글을 만들었다면 이제 SDK 를 연결해야합니다. 이 과정은 애플리케이션이 Unleash 서버에 접근하여 설정한 피처 토글(feature toggle)을 가져오고, 이를 기반으로 애플리케이션 내부에서 기능의 활성화 여부를 결정하도록 만드는 작업을 뜻합니다.
긍까..애플리케이션과 Unleash 서버를 통합하는 단계라고 할 수 있습니다. Unleash 관리 UI에서 설정한 토글 상태와 전략을 애플리케이션에서 실시간으로 사용할 수 있습니다. Connect SDK 를 눌러보겠습니다.
사용하는 Sdk 를 선택합니다. 전 java 를 선택하겠습니다.
환경은 develop 도 가능한데, 로컬이니까 바로 프로덕션으로 때리겠습니다.
API Key 가 생성되었습니다 ㅎㅎㅎ
아주 친절하게 dependencies 와 UnleashConfig 코드까지 제공해줍니다. 이거 거의 거저먹기입니다. 이것만 있으면 사실 되거든요..
끝난 걸까요...? 잘 모르겠지만 UI 가 카프카 컬러와 비슷하다는 생각을 했습니다.
뭔가 더 세밀한 설정을 하고 싶다면 전략을 추가해주면됩니다. flexibleRelease 가 가능해보였습니다. 점진적 배포에 대한 퍼센테이징도 가능해보입니다. 실시간으로 늘려나갈 수 있겠네요.
해당 토글의 상태는 초기상태 입니다. 흠 뭔가 테스트가 될지 아리까리합니다. 일단 localhost 로 POST 해당 토글 요청해보겠습니다.
header 에 Authorization 도 세팅을 해줘야하나보네요.. 잘 만들었네.. 이건 또 어디서 구하지. 뒤져보았습니다.
계정 정보에서 API tokens 을 구할 수 있었습니다.
헤더에 담아 보내면 응답이 발생합니다...! 거의 다 온 것 같습니다.
근데 토글의 라이프 사이클은 변하지 않습니다. 왜 일까요??? 이 상태에 대해서 저는 자세히 알아보기로 했습니다. 2편에서 직접 토글을 이용한 컨트롤 테스트와 함께 해보겠습니다 화이팅
'테스트 쉽게하기' 카테고리의 다른 글
Embedded Redis vs. macOS Sonoma (0) | 2024.12.06 |
---|---|
Airflow 로컬에서 동작시켜보기 튜토리얼 1 (0) | 2024.12.04 |
Unleash 로컬에서 동작시켜보기 튜토리얼 2 (0) | 2024.12.03 |
Redis 로컬 테스트 하는 두 가지 방법 : testContainers (3) | 2024.12.01 |