Encar- Backend Engineer
Feature Toggles (= Feature Flags)
소스 코드 상 특정 기능의 분기 설정을 유지 및 관리
런타임 시간 동안 특정 기능의 활성 및 비활성
테스트를 통한 점진적 릴리스 방법
New Feature -> Feature Toggle -> ON : 사용자에게 제공
OFF : 사용자에게 제공 X
'설정 값'의 관리
Local Store (properties, xml, yml 등)
-> 설정 값 변경 시 매번 배포 필요 (static)
Database
-> 설정 값 조회 시 매번 DB에 대한 조회 발생 (성능, 부하 이슈)
Remote Store
-> 여러 서버들의 설정 값을 하나의 원격 저장소에서 통합 관리
-> 설정 값 변경 시 배포 없이 빠르게 적용 가능 (dynamic)
-> 장애 발생 시 전체 장애로 이어질 수 있음 (H/A 구성 필수)
Consul
DNS 기반 서비스 디스커버리를 위해 2014년 출시된 소프트웨어이며 '분산 키-값 저장소', 세그멘테이션, 구성을 제공한다.
등록된 서비스와 노드들은 http 인터페이스나 dns 인터페이스를 사용하여 조회할 수 있다.
Clients -> Order System -> Feature Toggle (Consul) -> ON : New Java API
OFF : PL-SQL
레거시인 PL-SQL과 새로 만든 서버인 New Java API 서버가 있어.
그런데 새로 만든 서버가 갑자기 장애가 생겨.
그러면 Toggle OFF를 해서 거의 실시간에 가깝게 사용차의 요청을 레거시인 PL-SQL로 보낼 수 있는거야.
그 사이에 New Java API를 fix하고 Toggle ON을 하면 실시간/동적으로 New Java API 서버로 다시 요청을 흘려 보낼 수 있다.
이러한 과정을 거치면서, 테스트를 거치면서, 점진적으로 서비스를 배포할 수 있다.
Consul + Spring 상에서 구축
경험 공유
이 경우 추천:
- 레거시 개선, 중요 로직 수정 등 부담되는 작업의 점진적 배포
- 미완성 특정 기능의 빠른 적용 및 롤백
- 간단한 설정 정보 관리 (toggle, ratio, timeout, retry, ...)
- Consul 운영 시 H/A 구성, UI 비활성, 접속 제한
신기술 적용시 '인내와 끈기'는 필수!
안정성이 뛰어나고 Key/Value Store, Service Discovery, Service Mesh등을 지원하는 'Consul'을 개인적으로 추천!
'IaC > Terraform' 카테고리의 다른 글
멀티리전 & 멀티스테이지 인프라를 위한 모노레포 구축하기 (2022.04 HashiTalk) (0) | 2022.04.28 |
---|---|
Cloud Adoption Framework and Terraform by MS Azure Lead Architect (2022.04 HashiTalk) (0) | 2022.04.28 |
당근페이 SRE 엔지니어 - Terraform 웨비나 (2022.04 HashiTalk) (0) | 2022.04.28 |
최근댓글