Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ahogy a DevOps-csapatok a funkciók folyamatos megvalósítására összpontosító Agilis módszertanra váltanak, egyre fontosabbá válik annak szabályozása, hogyan válnak elérhetővé a felhasználók számára. A funkciójelzők nagyszerű megoldást jelentenek a felhasználók új funkciókhoz való hozzáférésének korlátozására marketing vagy éles környezetben történő tesztelés céljából.
Az üzembe helyezés és az expozíció leválasztása
A funkciójelzőkkel a csapat kiválaszthatja, hogy egy adott funkció látható-e a felhasználói felületen, és/vagy meghívható-e a funkción belül. Az új funkciók a szokásos fejlesztési folyamat részeként hozhatók létre és helyezhetők üzembe anélkül, hogy ezek a funkciók széles körű hozzáférésre lennenek elérhetők. A funkciók üzembe helyezése kényelmesen leválasztva van a kitettségükről.
A jelzők futásidejű vezérlést biztosítanak az egyes felhasználók számára
A jelölők részletes vezérlést is biztosítanak egészen az egyes felhasználókig. Ha ideje engedélyezni egy funkciót, akár egy felhasználó, akár egy kis csoport, akár mindenki számára, a csapat egyszerűen módosíthatja a funkciójelzőt, hogy újra üzembe helyezés nélkül felvilágosítsa azt.
A funkciójelző hatóköre a funkció jellegétől és a célközönségtől függően változik. Bizonyos esetekben a funkciójelölők automatikusan engedélyezik a funkciót mindenki számára. Más esetekben a szolgáltatás felhasználónkénti alapon lesz engedélyezve. A Teams funkciójelzőkkel is engedélyezheti a felhasználók számára, hogy engedélyezhessenek egy funkciót, ha szeretnének. A funkciójelzők implementálásának nincs korlátja.
Korai visszajelzés és kísérletezés támogatása
A funkciójelzők kiválóan támogatják a korai kísérletezést. Egyes funkciók korai szakaszában lehetnek durva élek, amelyek csak a legkorábbi örökbefogadók számára lehetnek érdekesek. A nem teljesen kész funkciók szélesebb közönségre való leküldése elégedetlenséget okozhat. A folyamatban lévő funkció kezelésére hajlandó felhasználók visszajelzéseinek előnye azonban felbecsülhetetlen.
Gyorskapcsoló
Néha hasznos lehet kikapcsolni valamit. Tegyük fel például, hogy egy új funkció nem a tervezett módon működik, és vannak olyan mellékhatások, amelyek máshol okoznak problémákat. A funkciójelzők használatával gyorsan kikapcsolhatja az új funkciókat, így anélkül válthat vissza a megbízható működésre, hogy újra üzembe kellene helyeznie. Bár a funkciójelzőkre gyakran a felhasználói felület funkcióit tekintve gondolnak, az architektúra vagy az infrastruktúra változásaihoz is könnyen használhatók.
Standard szakaszok
A Microsoft egy szabványos bevezetési folyamatot használ a funkciójelzők bekapcsolásához. Két különböző fogalom létezik: a szintek az üzemelő példányokhoz, a fázisok pedig a funkciójelzőkhöz tartoznak. További információ a szintekről és a szakaszokról.
A szakaszok a nyilvánosságra hozatalról vagy az expozícióról szólnak. Az első lépés lehet például egy csapat fiókja és a tagok személyes fiókja. A felhasználók többsége nem lát semmi újat, mert az egyetlen helyjelző be van kapcsolva az első szakaszban. Így a csapat teljes mértékben használhatja és kísérletezhet vele. Miután a csapat kijelentkezik, a kiválasztott ügyfelek a funkciójelzők második szakaszán keresztül is dönthetnek.
Bejelentkezés
Célszerű lehetővé tenni, hogy a felhasználók lehetőség szerint bekapcsolják a funkciójelzőket. A csapat például közzétehet egy, a felhasználó beállításaihoz vagy beállításaihoz társított előnézeti panelt.
Jelzők használata telemetriával
A funkciójelzők lehetővé teszik a frissítések növekményes elérhetővé tételét. A csapatoknak azonban folyamatosan figyelnie kell a megfelelő metrikákat, hogy felmérjék a szélesebb körű expozícióra való felkészültséget. Ezeknek a metrikáknak tartalmazniuk kell a használati viselkedést, valamint a frissítéseknek a rendszer állapotára gyakorolt hatását. Fontos elkerülni a csapdát, hogy feltételezzük, minden rendben van, csak azért, mert úgy tűnik, hogy semmi rossz nem történik.
Példa egy funkciójelzőre
Tekintse meg az alábbi példát. A csapat itt hozzáadott néhány gombot a Cherry-pick és a Visszaállítás beállításhoz a lekéréses kérelem felhasználói felületén. Ezek funkciójelzőkkel lettek üzembe helyezve.
Funkciójelzők definiálása
Az első közzétett funkció a Visszaállítás gomb volt. A megoldás egy XML-fájllal definiálja az összes funkciójelzőt. Ebben az esetben szolgáltatásonként egy fájl található, amely ösztönzi a régi jelzők eltávolítását, hogy megakadályozza a szakasz hosszú élettartamát. A csapat törli a régi jelzőket, mert természetes motivációval szabályozható a fájl mérete.
<?xml version="1.0" encoding="utf-8"?>
<!--
In this group we should register Azure DevOps specific features and sets their states.
-->
<ServicingStepGroup name="AzureDevOpsFeatureAvailability" … >
<Steps>
<!-- Feature Availability -->
<ServicingStep name="Register features" stepPerformer="FeatureAvailability" … >
<StepData>
<!--specifying owner to allow implicit removal of features -->
<Features owner="AzureDevOps">
<!-- Begin TFVC/Git -->
<Feature name="SourceControl.Revert" description="Source control revert features" />
A közös kiszolgálói keretrendszerek az egész csapatban ösztönzik az újrafelhasználást és a méretgazdaságosságot. Ideális esetben a projektnek rendelkeznie kell infrastruktúrával, hogy a fejlesztő egyszerűen definiáljon egy jelölőt egy központi áruházban, és a többi infrastruktúrát kezelje.
Funkciójelzők ellenőrzése futásidőben
Az itt használt funkciójelző neve SourceControl.Revert. Itt látható a tényleges TypeScript az oldalról, amely bemutatja a szolgáltatás rendelkezésre állásának ellenőrzésére irányuló hívást.
private addRevertButton(): void {
if (FeatureAvailability.isFeatureEnabled(Flags.SourceControlRevert)) {
this._calloutButtons.unshift(
<button onClick={ () => Dialogs.revertPullRequest(
this.props.repositoryContext,
this.props.pullRequest.pullRequestContract(),
this.props.pullRequest.branchStatusContract().sourceBranchStatus,
this.props.pullRequest.branchStatusContract().targetBranchStatus)
}
>
{VCResources.PullRequest_Revert_Button}
</button>
);
}
}
A fenti példa a TypeScriptben való használatot szemlélteti, de a C# használatával is ugyanolyan könnyen elérhető. A kód ellenőrzi, hogy engedélyezve van-e a funkció, és ha igen, megjelenít egy gombot a funkció biztosításához. Ha a jelölő nincs engedélyezve, akkor a gomb ki lesz hagyva.
Funkciójelző szabályozása
A jó funkciójelző platform több módot is kínál annak kezelésére, hogy egy adott jelző be van-e állítva. A jelölőt általában használati forgatókönyvek vezérlik a PowerShell és a webes felületen keresztül. A PowerShell esetében mindössze annyit kell tennie, hogy a funkciójelző állapotát lekérheti és beállíthatja, valamint opcionális paramétereket is megadhat például adott felhasználói fiókazonosítókhoz, ha vannak ilyenek.
Funkciójelzők vezérlése webes felhasználói felületen keresztül
Az alábbi példa a csapat által a termékhez közzétett webes felhasználói felületet használja. Figyelje meg a SourceControl.Revert funkciójelzőjét. Itt két személyes fiók szerepel: hallux és buckh-westeur. Az állam a halluxra van beállítva, amely történetesen észak-középen van, és Nyugat-Európában a másik fiók számára van törölve.
A funkciójelző természete a funkciók megjelenési módját fogja vezérelni. Bizonyos esetekben az expozíció egy réteg- és fázismodellt követ. Másokban a felhasználók a konfigurációs felhasználói felületen, vagy akár a csapat e-mail-címén keresztül is dönthetnek a hozzáférésről.
A funkciójelzők szempontjai
A legtöbb funkciójelzőt visszavonhatja, ha egy szolgáltatás mindenki számára el lett adva. Ezen a ponton a csapat törölheti a jelölőre mutató összes hivatkozást a kódban és a konfigurációban. Célszerű egy funkciójelző áttekintését is belefoglalni, például az egyes futamok elején.
Ugyanakkor előfordulhat, hogy több funkciójelző is létezik, amelyek különböző okokból megmaradnak. Előfordulhat például, hogy a csapat meg szeretne tartani egy funkciójelzőt, amely az éles szolgáltatás teljes váltása után egy ideig valamilyen infrastrukturális elemet elágaztat. Ne feledje azonban, hogy ez a potenciális codepath a funkciójelző explicit törlése során a jövőben újraaktiválható lesz, ezért a lehetőség eltávolításáig tesztelni és karbantartani kell.
Funkciójelzők és elágaztatási stratégia
A funkciójelzők lehetővé teszik, hogy a fejlesztői csapatok hiányos funkciókat foglaljanak magukba main anélkül, hogy bárki mást érintenének. Mindaddig, amíg a codepath egy funkciójelző mögött van elkülönítve, általában biztonságos a kód összeállítása és közzététele anélkül, hogy a normál használatot befolyásoló mellékhatások ne befolyásolják. Ha azonban vannak olyan esetek, amikor egy szolgáltatás függőségeket igényel, például egy REST-végpont felfedésekor, a csapatoknak meg kell fontolniuk, hogy ezek a függőségek hogyan hozhatnak létre biztonsági vagy karbantartási munkát a szolgáltatás felfedése nélkül is.
A kockázat csökkentésére szolgáló funkciójelzők
Néha az új funkciók romboló vagy zavaró változásokat okozhatnak. Előfordulhat például, hogy a termék egy széles adatbázisséma hosszúra történő átalakításán megy keresztül. Ebben a forgatókönyvben a fejlesztőnek kis ideig létre kell hoznia egy szolgáltatáságat. Ezután elvégezik a destabilizálási módosításokat az ágon, és egy jelölő mögött tartják a funkciót. Népszerű eljárás, hogy a csapatok a módosításokat addig main egyesíthetik, amíg azok nem okoznak semmilyen kárt. Ez nem valósítható meg anélkül, hogy a befejezetlen funkció elrejthető lenne egy funkciójelző mögött.
A funkciójelzők segítenek a fő feladatokban
Ha a fejlesztés fázisában tárgyalt józan ész gyakorlatát követi, a munka main jó módszer a DevOps-ciklus meghúzására. Funkciójelzőkkel kombinálva a fejlesztők gyorsan egyesíthetik a funkciókat a felsőbb rétegben, és leküldhetik őket a tesztelési kesztyűn keresztül. A minőségi kód gyorsan közzétehető éles teszteléshez. Néhány futam után a fejlesztők felismerik a funkciójelzők előnyeit, és proaktív módon használják őket.
Hogyan döntse el, hogy használjon-e funkciójelzőt
A funkciócsapatok maguk dönthetik el, hogy szükségük van-e egy funkciójelzőre, vagy sem egy adott módosításhoz. Nem minden változáshoz van szükség egyre, ezért ez egy fejlesztő ítélethívása, amikor egy adott módosítást választanak. A korábban tárgyalt Visszaállítás funkció esetében fontos volt egy funkciójelző használata az expozíció szabályozásához. Ha lehetővé teszi a csapatok számára, hogy a funkciójukkal kapcsolatos legfontosabb döntéseket meghozhassák, az a hatékony DevOps-szervezetben az autonómia biztosításának része.
Build és vásárlás
Bár saját funkciójelző infrastruktúrát is létrehozhat, általában ajánlott egy olyan platformot bevezetni, mint a LaunchDarkly vagy a Split . A funkciójelző funkcióinak újraépítése helyett célszerű a funkciók kiépítésébe fektetni.
Következő lépések
További információ a funkciójelzők használatáról egy ASP.NET Core-alkalmazásban.