1. 배경
이전 기사 [안정성: MTTR 단축 탐색]에 이어 일부 온라인 문제 비상 계획에서 롤백 솔루션을 채택하는 것을 보았는데, 코드와 관련된 대부분의 시나리오에서는 기술 전환이 온라인 문제의 출혈을 신속하게 멈추는 가장 좋은 방법입니다. . 예를 들어 주문 이행 플랫폼 그룹의 Promise는 주문을 위한 골든 링크 역할을 합니다. 온라인 문제가 있는 경우 일반적인 롤백 방법은 5~10분 이상(500개 이상의 시스템)이 소요되며 롤백이 문제를 악화시키는 경우 제대로 작동하지 않습니다.그러나 스위칭 기술을 사용하는 것은 몇 초 정도입니다 . 동시에 Promise의 기능 스위치 기술은 일일 반복 요구 사항을 처리하고 안정성을 보장하는 데에도 중요한 역할을 합니다. 변경 범위가 크고 영향이 큰 요구 사항의 경우 일반적으로 온라인 상태가 된 후 최악의 시나리오가 무엇인지 묻습니다. 비상 계획은 무엇입니까? 스위치를 가져왔나요? . 물론 스위치에도 비용이 발생합니다.다음으로 이 기사에서는 고주파 릴리스가 지원하는 기능 스위치 기술의 이론과 실제를 결합한 세부 사항을 공유하겠습니다.
2. 기능스위치란 무엇인가요?
함수 스위치는 실제로 코드의 구성 항목을 동적으로 관리하는 데 도움이 되는 경량 동적 구성 프레임워크입니다(코드의 논리적 방향에 동적으로 개입할 수 있다는 점을 이해하면 됩니다). 기능 스위치를 사용하면 필요에 따라 앱의 일부 기능을 켜거나 끌 수 있습니다. 이 방법은 일반적으로 블랙리스트 및 화이트리스트 설정, 비즈니스 기능 다운그레이드, 트래픽 차단, 주요 프로모션 중 로그 수준 동적으로 조정 등의 시나리오에 적합합니다.
从代码的角度来讲,每个开关的本质就是一个"if......else"条件语句块。
3. 스위치 사용
고주파 릴리스 및 출시의 경우 스위칭 기술은 합리적인 기술적 수단이며 두 가지 새로운 용도가 부여되었습니다.
4. 스위치 비용
스위칭 기술을 사용하면 비용도 발생합니다.
5. 스위치 관리
스위치가 가져오는 이익을 극대화하고 비용을 최소화하기 위해서는 스위치를 체계적으로 관리해야 하며, 다음과 같은 원칙을 최대한 준수해야 합니다.
6. 보안: 기능 스위치에는 승인된 사용자만 스위치 상태를 수정하고 구성할 수 있도록 적절한 보안 조치가 있어야 합니다. 또한 기능 스위치는 무단 액세스 및 공격을 방지해야 합니다. DUCC 권한 관리, XBP 승인 관리 등이 있습니다.
즉, 지속적인 전달에 기능 스위치 기술을 사용하는 원칙은 시스템이 다양한 환경과 요구 사항에서 안정적이고 효율적으로 유지될 수 있도록 유연성, 신뢰성, 보안, 표준화, 자동화, 추적성 및 확장성을 포괄적으로 반영해야 합니다.
6. 일반적인 애플리케이션 시나리오
스위치는 해제 스위치, 작동 및 유지 관리 스위치, A/B 실험 스위치, 권한 스위치로 구분할 수 있습니다. 구체적인 적용 시나리오는 다음과 같습니다.
capactiySwitch.enable=true
kaPromiseSwitch.whiteList=010***,011***,012***
jitSwitch.storeId=1-1,1-2,1-3,1-4,****
log4j.logger=info
commonSwith.fence=true
commonSwith.percent=10
7. 전환 연습
7.1 다중 스위치
예를 들어, 여러 시나리오에서 MQ를 보낼 때 현재 멀티플렉싱 스위치를 사용하여 MQ를 비동기식으로 보낼지 아니면 동기식으로 보낼지 구성할 수 있습니다. 주제별로 스위치를 구성하는 대신 동일한 장면을 공통 스위치로 설정하세요. 다만, 범용 스위치는 절연성이 좋지 않아 구성 검증을 수행하지 않을 경우 다른 스위치 기능에 영향을 미칠 수 있다는 점에 유의해야 한다.
jmqUtil.asyncTopics=topic1,topic2,topic3,topic4,....
예를 들어 다운스트림 JSF 타사 인터페이스에 대한 종속성이 많은 경우 재사용 가능한 스위치를 설계하여 다운그레이드해야 하는지 여부를 결정해야 합니다.
7.2 특정 시간에 적용되는 스위치
스위치 특성: 스위치는 여러 속성 값으로 구성할 수 있으며 해당 값은 지정된 시간에 따라 적용됩니다.
사용 시나리오: 예를 들어 창고 용량 승인, 이전 사업에서는 해당 버전에서 0점 전환이 적용되어야 했고, R&D에서는 이를 0점으로 구성해야 했는데, 이렇게 오랫동안 구성하면 R&D 효율성이 떨어집니다. 낮을 것이며 DUC 스위치도 시간에 맞춰 포인트별로 수정해야 합니다. 따라서 유효시간과 유효값을 미리 설정할 수 있는 스위치로 설계되었습니다. 예를 들어, 다음은 생산능력 승인을 위한 ducc 스위치인데 EffectiveTime은 유효일자를 나타내고, version은 해당 유효버전을 나타낸다.
[
{
"effectiveTime": "2023-03-09 12:00",
"version": "76"
},
{
"effectiveTime": "2023-04-20 12:00",
"version": "77"
},
{
"effectiveTime": "2023-05-14 00:00",
"version": "78"
}
]
8. 요약
전반적으로 기능 토글은 기술 팀이 보다 효율적으로 작업하는 동시에 사용자 경험을 개선하고 새로운 기능 출시 위험을 줄이는 데 도움이 될 수 있습니다.
참고:
Continuous Delivery 2.0 비즈니스가 주도하는 DevOps의 본질
벌금 200위안 및 100만 위안 이상 압수 You Yuxi: 고품질 중국어 문서의 중요성 Musk의 하드 코어 마이그레이션 서버 JDK 21용 Solon, 가상 스레드는 놀랍습니다! ! ! TCP 혼잡 제어로 인터넷 Flutter를 절약한 OpenHarmony 출시 Linux 커널 LTS 기간이 6년에서 2년으로 복원 Go 1.22에서 for 루프 변수 오류 수정 Svelte가 "새 휠" 구축 - Google이 창립 25주년을 기념함저자: JD Logistics Feng Zhiwen
출처: JD Cloud 개발자 커뮤니티 Ziyuanqishuo Tech 재인쇄 시 출처를 명시해 주세요.