{"id":112416,"date":"2021-09-13T15:52:43","date_gmt":"2021-09-13T15:52:43","guid":{"rendered":"https:\/\/staging.wingify.com\/blog\/feature-toggles\/"},"modified":"2021-09-13T15:52:43","modified_gmt":"2021-09-13T15:52:43","slug":"feature-toggles","status":"publish","type":"post","link":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/","title":{"rendered":"Feature Toggles: Ein \u00dcberblick &#038; unsere Best Practices"},"content":{"rendered":"<p>Feature Toggles z\u00e4hlen zu den leistungsf\u00e4higsten Methoden, wenn es um die Unterst\u00fctzung von Continuous Integration und Continuous Delivery (CI\/CD) geht. Feature Toggles \u2013 auch Feature Flags genannt \u2013 sind eine Methode, mit der Features w\u00e4hrend der Laufzeit ge\u00e4ndert werden k\u00f6nnen, ohne dabei den Code zu \u00e4ndern.<\/p>\n<p>Entwickler k\u00f6nnen zum Erstellen von Features Toggles einen \u201eDecision Point\u201c coden, an dem das System ein bestimmtes Feature ausf\u00fchrt, abh\u00e4ngig davon, ob bestimmte Bedingungen erf\u00fcllt werden oder nicht. Mit anderen Worten, <strong>mit Feature Toggles k\u00f6nnen Sie kontextsensitive Software schnell und effizient ausliefern.<\/strong><\/p>\n<p>Feature Toggles haben viele Einsatzm\u00f6glichkeiten, von der Unterst\u00fctzung der agilen Entwicklung bis hin zu Markttests und zur Optimierung laufender Operationen. Hinter dieser F\u00e4higkeit steckt aber auch die Gefahr, dass Ihr Code unn\u00f6tig komplexer wird. Sie m\u00fcssen mit Feature Toggles richtig umgehen k\u00f6nnen, um das Beste aus ihnen herauszuholen.<\/p>\n<p>In diesem Artikel bieten wir Ihnen einen \u00dcberblick dar\u00fcber, was Feature Toggles bewirken und wie Sie sie in Ihren Entwicklungs- und Produktionsumgebungen implementieren k\u00f6nnen. Dar\u00fcber hinaus stellen wir Ihnen einige Best Practices vor, die wir zur Verwendung dieser Toggles empfehlen.<\/p>\n<p>[toc content=&#8220;.entry-content&#8220;]<\/p>\n<h2><\/h2>\n<h2><strong>Was genau ist ein Feature Toggle?<\/strong><\/h2>\n<p>Einfach gesagt ist ein Feature Toggle ein leistungsstarkes \u201eIf\u201c-Statement, ab dem w\u00e4hrend der Laufzeit mindestens einem oder zwei verschiedenen Codepfaden abh\u00e4ngig von einer oder mehreren Bedingungen gefolgt wird. Hier ein konkretes Beispiel:<\/p>\n<p style=\"padding-left: 80px;\"><span style=\"color: #808080;\"><em>normalFeature = {<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>&#8218;id&#8216;: 1,<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>&#8218;description&#8216;: u&#8217;basic service&#8216;,<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>&#8217;newstuff&#8216;: False<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>}<\/em><\/span><\/p>\n<p style=\"padding-left: 80px;\"><span style=\"color: #808080;\"><em>testFeature = {<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>&#8218;id&#8216;: 2,<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>&#8218;description&#8216;: u&#8217;much better service&#8216;,<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>&#8217;newstuff&#8216;: True<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>}<\/em><\/span><\/p>\n<p style=\"padding-left: 80px;\"><span style=\"color: #808080;\"><em>@app.route(&#8218;\/ourapp\/api\/v1.1\/storefront&#8216;, methods=[&#8218;GET&#8216;])<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>def get_tasks():<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>if internalTester == True:<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>return jsonify({&#8218;feature&#8216;: testFeature})<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>else:<\/em><\/span><br \/>\n<span style=\"color: #808080;\"><em>return jsonify({&#8218;feature&#8216;: normalFeature})<\/em><\/span><\/p>\n<p>Hier haben wir zwei verschiedene generische Features definiert: normalFeature und testFeature. W\u00e4hrend der Laufzeit pr\u00fcft die Applikation in der Konfiguration, ob das Feature von einem oder einer interne(n) Test-UserIn geladen wird. Wenn ja, l\u00e4dt die Applikation das Test-Feature, das sich in der Entwicklung befindet. Wenn nicht, sieht der oder die \u201enormale\u201c KundIn das aktuelle Feature.<\/p>\n<figure id=\"attachment_66784\" aria-describedby=\"caption-attachment-66784\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-66784 size-large\" src=\"https:\/\/static.wingify.com\/gcp\/uploads\/abtasty\/feature-toggles-testing-1024x876.png\" alt=\"Feature Toggles Testing\" width=\"800\" height=\"684\" \/><figcaption id=\"caption-attachment-66784\" class=\"wp-caption-text\"><span style=\"font-size: 12px;\">Beispiel eines Feature Toggle, das zwei Codepfade steuert (<a href=\"https:\/\/martinfowler.com\/articles\/feature-toggles.html\" target=\"_blank\" rel=\"noopener noreferrer\">Quelle<\/a>)<\/span><\/figcaption><\/figure>\n<p><strong>Feature Toggles k\u00f6nnen alles sein, ein einfaches \u201eIf\u201c-Statement oder komplexe Entscheidungsb\u00e4ume, die auf viele verschiedene Variablen einwirken.<\/strong> Um festzulegen, welche Richtung ein Toggle nehmen soll, k\u00f6nnen zahlreiche Bedingungen verwendet werden, u.\u00a0a.\u00a0Ergebnisse von Tauglichkeitstests aus anderen Features in der Codebase, eine Einstellung in der Feature Management Software oder eine Variable aus einer Konfig-Datei.<\/p>\n<h2><strong>Verschiedene Feature Toggles f\u00fcr verschiedene Aufgaben<\/strong><\/h2>\n<p>Gehen Sie mit Feature Toggles jeweils unterschiedlich um, je nachdem, wie Sie sie bereitstellen m\u00f6chten. Es kann n\u00fctzlich sein, Toggles in Kategorien nach zwei Aspekten zu unterteilen: wie lange Toggles in der Entwicklung sind bzw. live geschaltet bleiben und wie dynamisch ihre Funktion ist. Demzufolge k\u00f6nnen wir Feature Toggles in vier verschiedene Kategorien unterteilen:<\/p>\n<ul>\n<li>Release Toggles<\/li>\n<li>Experiment Toggles<\/li>\n<li>Ops Toggles<\/li>\n<li>Permission Toggles<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-66798 size-full\" src=\"https:\/\/static.wingify.com\/gcp\/uploads\/abtasty\/toggle-chart.png\" alt=\"Diagramm der Feature Toggles-Kategorien\" width=\"1024\" height=\"768\" \/><\/p>\n<p><span style=\"font-size: 12px;\">Ein Diagramm der vier Kategorien der Feature Toggles (<a href=\"https:\/\/martinfowler.com\/articles\/feature-toggles.html\" target=\"_blank\" rel=\"noopener noreferrer\">Quelle<\/a>)<\/span><\/p>\n<h3>Release Toggles<\/h3>\n<p>Diese Toggles unterst\u00fctzen Entwicklerteams, wenn sie neue Features schreiben. Statt einen Zweig zu erstellen, in dem das Team das neue Feature schreibt, generiert es ein Release Toggle in der Master Codebase, wobei der Code inaktiv bleibt, w\u00e4hrend an ihm gearbeitet wird. Die Entwickler k\u00f6nnen den Trunk Code nach wie vor in die Produktion geben, um ihre Auslieferungsziele zu erf\u00fcllen.<\/p>\n<p><strong>Release Toggles sollen in der Regel kein fester Bestandteil<\/strong><strong> Ihrer Codebase sein.<\/strong> Sobald das zugeh\u00f6rige Feature endg\u00fcltig ist, sollten die Toggles entfernt werden. In der Praxis bedeutet dies in der Regel, dass diese Toggles einen Lebenszyklus von einigen Tagen bis zu einigen Wochen durchlaufen und sich in puncto Langlebigkeit somit auf einer Skala im unteren Bereich befinden. Release Toggles sind auch nicht besonders dynamisch. Entweder steht das Feature zur Freigabe bereit oder nicht.<\/p>\n<p><strong>Beispiel f\u00fcr ein Release Toggle<\/strong><\/p>\n<p>Ein e-Commerce-Unternehmen entwickelt auf Anfrage eines hochkar\u00e4tigen Kunden eine neue Konfiguratorfunktion. Der Konfigurator \u00fcberwacht Artikel, die der Kunde bereits zus\u00e4tzlich ausgew\u00e4hlt hat, und schl\u00e4gt Artikel-Sets vor, um seine Bestellung abzurunden.<\/p>\n<p>Das Unternehmen m\u00f6chte dieses Feature im Endeffekt allen Kunden anbieten. Aber derzeit funktioniert der Konfigurator nur nach den Vorgaben dieses einen Kunden. Das Entwicklerteam dieses Konfigurators aktiviert f\u00fcr dieses neue Feature ein Release Toggle, das es inaktiv l\u00e4sst.<\/p>\n<h3>Experiment Toggles<\/h3>\n<p>Diese Toggles werden verwendet, um <a href=\"https:\/\/wingify.com\/de\/\" target=\"_blank\" rel=\"noopener noreferrer\">A\/B-Tests<\/a> oder multivariable Tests einfacher zu machen. Sie erstellen einen Toggle Point, hinter dem zwei oder mehrere Codepfade mit den zu testenden Features liegen. W\u00e4hrend der Laufzeit teilt das System \u2013 oder das Toggle selbst \u2013 Nutzer in verschiedene Kohorten auf, an denen diese Features getestet werden.<\/p>\n<p><strong>Durch die Verfolgung aggregierter Experience-Daten bei jeder Kohorte k\u00f6nnen Sie die Wirkung der verschiedenen Features vergleichen.<\/strong> Experiment Toggles sind eine beliebte Methode f\u00fcr die Optimierung von Marketing-Initiativen, <a href=\"https:\/\/www.smashingmagazine.com\/2014\/07\/roadmap-to-becoming-an-a-b-testing-expert\/\" target=\"_blank\" rel=\"noopener noreferrer\">User Experiences<\/a> und anderer Features f\u00fcr UserInnen.<\/p>\n<p>In der Regel sollten Experiment Toggles nur so lange existieren, bis keine Daten zum Feature-Testing mehr gesammelt werden m\u00fcssen. Der exakte Zeitrahmen h\u00e4ngt vom Traffic-Volumen bei diesem Feature ab, bel\u00e4uft sich aber in der Regel auf mehrere Wochen bis mehrere Monate. Diese Einschr\u00e4nkung bezieht sich eher auf den Test selbst als auf das Toggle. Der Nutzen der gesammelten Daten verliert sich im Laufe der Zeit, wenn andere Feature- und Code-Updates Vergleiche mit zuvor gesammelten Nutzerdaten entkr\u00e4ften.<\/p>\n<p><strong>Beispiel f\u00fcr ein Experiment Toggle<\/strong><\/p>\n<p>Unser e-Commerce-Unternehmen hat die Fehler in seinem neuen Konfigurator beseitigt. Aber es wird dar\u00fcber diskutiert, welcher der beiden Vorschlagsalgorithmen die beste Experience bietet. Man entschlie\u00dft sich f\u00fcr einen A\/B-Test, um Daten aus der realen Welt zu erhalten.<\/p>\n<p>Das Unternehmen f\u00fcgt ein Experiment Toggle zum Produktionskonfigurator mit zwei verschiedenen Vorschlagsalgorithmen dahinter hinzu. Das Toggle teilt die UserInnen in zwei Kohorten mit einem Modulo auf, wenn sie versuchen, den Konfigurator zu laden. Nach drei Wochen ist das Team der Meinung, endg\u00fcltige Daten zu haben, die zeigen, dass mehr UserInnen ihre Bestellungen mit dem Algorithmus B abschlie\u00dfen. Das e-Commerce-Unternehmen entfernt das Experiment Toggle und der Algorithmus B wird f\u00fcr alle UserInnen live geschaltet.<\/p>\n<figure id=\"attachment_66815\" aria-describedby=\"caption-attachment-66815\" style=\"width: 993px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-66815 size-full\" src=\"https:\/\/static.wingify.com\/gcp\/uploads\/abtasty\/AB-Testing-2.png\" alt=\"A\/B Testing\" width=\"993\" height=\"670\" \/><figcaption id=\"caption-attachment-66815\" class=\"wp-caption-text\"><span style=\"font-size: 12px;\">A\/B Test Beispiel (<a href=\"https:\/\/www.orderhive.com\/knowledge-center\/ab-testing\" target=\"_blank\" rel=\"noopener noreferrer\">Quelle<\/a>)<\/span><\/figcaption><\/figure>\n<h3>Ops Toggles<\/h3>\n<p>Ops Toggles werden zum Abschalten von Features verwendet \u2013 wie ein \u201eKill Switch\u201c \u2013 oder um die Performance der Features anzupassen. Wenn zum Beispiel bestimmte Bedingungen nicht erf\u00fcllt werden und etwa KPI-Ziele unter einem Schwellenwert liegen, schaltet das Toggle das betreffende Feature ab, bis sich die Bedingungen verbessern. Ops Toggles sind f\u00fcr die Programmierung neuer Features kurz nach dem Testing oder bei ressourcenintensiven Features n\u00fctzlich.<\/p>\n<p>Die Langlebigkeit von Ops Toggles h\u00e4ngt von den jeweiligen Anwendungsf\u00e4llen ab. Wenn Sie ein Ops Toggle zum Einstellen eines neuen Features kurz nach der Entwicklung verwenden, dann brauchen Sie das Toggle wahrscheinlich nur ein paar Monate. Ein Kill Switch-Toggle wird in der Regel jedoch als permanenter Bestandteil des Codes erstellt. <strong>Ops Toggles sind in der Regel genauso statisch oder dynamisch wie die Bedingungen, unter denen das kontrollierte Feature genutzt wird.<\/strong> Beispielsweise sind Ops Toggles tendenziell relativ statisch, wenn sie nur mit einer Leistungskennzahl verbunden sind.<\/p>\n<p><strong>Beispiel f\u00fcr ein Ops Toggle<\/strong><\/p>\n<p>Unser e-Commerce-Unternehmen bereitet sich auf eine Traffic-Spitze f\u00fcr den j\u00e4hrlichen Schlussverkauf vor. Das ist der erste Sale, bei dem der Konfigurator in der Produktion ist. W\u00e4hrend der Tests haben die Entwickler festgestellt, dass der vom User bevorzugte B-Algorithmus Systemressourcen stark beansprucht.<\/p>\n<p>Die Operators verlangten einen Kill Switch f\u00fcr den Konfigurator, bevor die Sales-Angebote live geschaltet wurden. Sie wollten nur ein einziges Toggle, auf das sie in der Release Management Software klicken mussten, falls die Performance nachlassen sollte. Und siehe da, am ersten Tag des Schlussverkaufs begann die Performance beim Konfigurator zu fallen. Und das Ops-Team konnte das Feature schnell abschalten, bevor es von zu vielen UserInnen wahrgenommen wurde.<\/p>\n<h3>Permission Toggles<\/h3>\n<p>Permission Toggles sollen langlebiger sein oder sogar ein fester Bestandteil in Ihrem Code. Sie werden als <strong>Methode verwendet, um einem bestimmten Teil von UserInnen Features anzuzeigen.<\/strong> Beispielsweise k\u00f6nnen Sie ein Permission Toggle verwenden, um ausschlie\u00dflich Premium UserInnen auf Ihrer Website Premium Inhalte anzubieten. Permission Toggles sind generell die dynamischsten Toggles unter den vier hier definierten Kategorien, da sie in der Regel f\u00fcr eine oder einen UserIn getriggert werden.<\/p>\n<p><strong>Beispiel f\u00fcr ein Permission Toggle<\/strong><\/p>\n<p>Das einfache Beispiel am Anfang dieses Artikels l\u00e4sst sich praktisch mit einem Permission Toggle vergleichen. Nach dem j\u00e4hrlichen Schlussverkauf ist unser e-Commerce-Unternehmen der Meinung, Algorithmus B sei zu ressourcenintensiv, um das Feature allen UserInnen anzuzeigen. Stattdessen entscheidet sich das Unternehmen, ein Premium Feature zu erstellen. Das Permission Toggle kann sich wie folgt darstellen:<\/p>\n<p style=\"padding-left: 80px;\"><em>normalFeature = {<\/em><br \/>\n<em>&#8218;id&#8216;: 1,<\/em><br \/>\n<em>&#8218;description&#8216;: u&#8217;basic service&#8216;,<\/em><br \/>\n<em>&#8218;configurator&#8216;: False<\/em><br \/>\n<em>}<\/em><\/p>\n<p style=\"padding-left: 80px;\"><em>premiumFeature = {<\/em><br \/>\n<em>&#8218;id&#8216;: 2,<\/em><br \/>\n<em>&#8218;description&#8216;: u&#8217;the better configurator&#8216;,<\/em><br \/>\n<em>&#8218;configurator&#8216;: True<\/em><br \/>\n<em>}<\/em><\/p>\n<p style=\"padding-left: 80px;\"><em>@app.route(&#8218;\/ourapp\/api\/v1.1\/storefront&#8216;, methods=[&#8218;GET&#8216;])<\/em><br \/>\n<em>def get_tasks():<\/em><br \/>\n<em>if premiumUser == True:<\/em><br \/>\n<em>return jsonify({&#8218;feature&#8216;: premiumFeature})<\/em><br \/>\n<em>else:<\/em><br \/>\n<em>return jsonify({&#8218;feature&#8216;: normalFeature})<\/em><\/p>\n<h2><strong>Feature Toggles vs. Feature Flags<\/strong><\/h2>\n<p>Eine kleine Randbemerkung: Es gibt einige Diskussionen \u00fcber den Begriff Feature Toggle verglichen zum Begriff Feature Flag. \u201eToggle\u201c trifft eher zu, wenn der Code bei mehreren Hauptzweigen des Codes ein- oder ausgeschaltet ist. \u201eFlag\u201c trifft eher zu, wenn auf einen Entscheidungspunkt multikonditionale oder eine gro\u00dfe Anzahl an Codepfaden folgen.<\/p>\n<h2><strong>Feature Toggles in Ihre Roadmap zur Unterst\u00fctzung agiler Workflows integrieren<\/strong><\/h2>\n<p>Mit Feature Toggles in Ihrem Entwicklungsprozess werden neuere <a href=\"https:\/\/www.infoworld.com\/article\/3561308\/5-ways-to-drive-agile-experimentation-using-feature-flags.html\" target=\"_blank\" rel=\"noopener noreferrer\">agile Ans\u00e4tze<\/a> unterst\u00fctzt. Sie k\u00f6nnen eine Software ver\u00f6ffentlichen, w\u00e4hrend noch Code Sprints f\u00fcr neue Features bearbeitet werden. Diese Features m\u00fcssen lediglich hinter Toggles verborgen werden, bis sie f\u00fcr die Ver\u00f6ffentlichung, Marketingtests oder den n\u00e4chsten Schritt im Entwicklungsprozess tauglich sind.<\/p>\n<p>In der Regel w\u00fcrden Sie die k\u00fcrzlich vom User oder von der Userin gew\u00fcnschten Features auf Code-Verzweigungen unter einem eher herk\u00f6mmlichen Wasserfallmodell schreiben. Diese Features w\u00fcrden im Anschluss einen langen Test- und QA-Prozess durchlaufen, bevor Ihr Team die Features wieder in den Trunk Code zur\u00fcckf\u00fchren kann. Mit Feature Toggles k\u00f6nnen Sie den gesamten Entwicklungs- und Testprozess direkt auf dem Trunk Code durchf\u00fchren.<\/p>\n<h2><strong>Unsere Best Practices f\u00fcr die Verwendung von Feature Toggles<\/strong><\/h2>\n<p>Wie bereits erw\u00e4hnt, stehen Feature Toggles f\u00fcr eine leistungsstarke und flexible Entwicklungsmethode. Wenn Sie Ihre Toggles nicht sorgf\u00e4ltig implementieren und managen, k\u00f6nnen sie schnell eine chaotische Codebase erhalten.<\/p>\n<p>Es wurden viele verschiedene Best Practices zum Coden von Feature Toggles\u00a0 vorgeschlagen, aber wir wollten Ihnen einige unserer eigenen Toggles anbieten. Sobald ein unsauberer Entscheidungspunkt in Ihre Codebase geschrieben wird, scheinen viele weitere zu folgen. Wenn diese Best Practices von Anfang an befolgt werden, k\u00f6nnen Sie solche Probleme in Schach halten.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-66827 size-large\" src=\"https:\/\/static.wingify.com\/gcp\/uploads\/abtasty\/code-5113374_1920-1024x683.jpg\" alt=\"Website Code\" width=\"800\" height=\"534\" \/><\/p>\n<h3>Verwenden Sie Feature Toggles, um langsam zur agilen Entwicklung zu wechseln<\/h3>\n<p>Wenn Ihr Team <a href=\"https:\/\/wingify.com\/feature-experimentation\/\" target=\"_blank\" rel=\"noopener noreferrer\">agile Entwicklungs- und Testmethoden<\/a> ausprobieren m\u00f6chte, ohne sich v\u00f6llig in eine neue Entwicklungsmethode st\u00fcrzen zu m\u00fcssen, dann sind Feature Toggles in Ihrer Roadmap ein ausgezeichnetes Mittel f\u00fcr den Anfang. Die Kosten f\u00fcr diese Versuche sind gering. So k\u00f6nnte zum Beispiel zun\u00e4chst nur ein Team ein Experiment Toggle f\u00fcr einen ersten Canary Release verwenden.<\/p>\n<p><strong>Wenn der Versuch gelingt, k\u00f6nnen Sie das Experiment Toggle durch ein Ops Toggle ersetzen, wenn das Feature in die Produktion geht.<\/strong> Dann weiten Sie die Nutzung des Toggles auf andere Teams oder Prozesse aus. F\u00fchren Sie dieses Toggle fr\u00fcher in die Entwicklungszyklen ein als Release Toggles. Dann sind Sie langsam aber sicher auf dem Weg zur v\u00f6llig agilen Entwicklung.<\/p>\n<h3>Verwenden Sie Toggles sowohl f\u00fcr interne als auch externe Features<\/h3>\n<p>Jetzt m\u00fcsste klar sein: Feature Toggles haben w\u00e4hrend des gesamten Entwicklungs- und Produktionslebenszyklus Ihrer Software Ihren Zweck. Schr\u00e4nken Sie die Toggle-Nutzung nicht auf Features ein, die nur von KundInnen gesehen werden. Sie k\u00f6nnen Release und Ops Toggles auch f\u00fcr Backend-Features verwenden. Die Toggles bieten DevOps Teams eine besonders granulare Stufe beim Kontroll- und Risikomanagement des Codes, was wichtig sein kann, wenn Backend-Features ge\u00e4ndert werden, die einen entscheidenden Einfluss darauf haben, wie Ihr System performt.<\/p>\n<h3>Lassen Sie die Toggle-Planung in Ihre Design-Phase einflie\u00dfen<\/h3>\n<p>Vom Toggle-Namen und den Konfigurationseinstellungen bis zum Entfernen der Toggles und der Zugangskontrolle \u2013 alles h\u00e4ngt davon ab, wie Sie neue Features gleich zu Beginn entwerfen. Bauen Sie diese Toggle-Planung in Ihren Designprozess ein und die n\u00e4chsten sechs Monate Ihres Feature Managements werden um einiges einfacher sein.<\/p>\n<h3>Verwenden Sie ein standardisiertes Toggle Namensschema<\/h3>\n<p>Viele Unternehmen verwenden einen Style Guide f\u00fcr Entwickler, der festlegt, wie sie Code schreiben und organisieren sollen, wie sie zum Beispiel Abst\u00e4nde, Reihenfolge und Klammern beim Naming anwenden. Wenn Sie Feature Toggles verwenden wollen, sollten Sie auch den Naming-Stil schon fr\u00fchzeitig im Einf\u00fchrungsprozess Ihrer Toggles standardisieren.<\/p>\n<p>Kurz und b\u00fcndig zu sein, ist beim Coden f\u00fcr andere Aspekte wichtig. Wenn es aber um Toggle-Namen geht, seien Sie ausf\u00fchrlich. Details bedeuten Klarheit. <strong>Ausf\u00fchrliche Toggle Namen helfen Entwicklern und Ops Teams au\u00dferhalb Ihres Kernteams zu verstehen, was sie pr\u00fcfen,<\/strong> wenn ihr einziger Bezug der Toggle Name ist, den Sie sechs Monate zuvor aus einer Laune heraus gew\u00e4hlt haben.<\/p>\n<p>Einige weitere Toggle-Namenskonventionen, die wir vorschlagen:<\/p>\n<ul>\n<li>Binden Sie den Namen des Teams oder Projekts ein.<\/li>\n<li>Binden Sie das Datum ein, an dem das Toggle erstellt wurde.<\/li>\n<li>Identifizieren Sie die Kategorie des Flags.<\/li>\n<li>Beschreiben Sie das tats\u00e4chliche Toggle-Verhalten.<\/li>\n<\/ul>\n<p>Hier ein Beispiel: <em>algteam_10-12-2021_Ops_configurator-killswitch<\/em><\/p>\n<p>Dieser Name bietet einige n\u00fctzliche Informationen, aus denen jeder oder jede in einem Team ableiten kann, worum es sich handelt, wenn ein Toggle in einer Fehlermeldung genannt wird. Sie wissen, wer das Toggle geschrieben hat, wie lange es in der Codebase war und was das Toggle bewirkt.<\/p>\n<h3>Unterschiedliche Toggles unterschiedlich handhaben<\/h3>\n<p>Es scheint selbstverst\u00e4ndlich, ist aber ein wichtiger Punkt, den es hervorzuheben gilt. Wie wir bereits oben erw\u00e4hnt haben, k\u00f6nnen Feature Toggles in vier allgemeine Kategorien unterteilt werden. Sie sollten die einzelnen Kategorien unterschiedlich handhaben.<\/p>\n<p>Denken Sie an den oben erw\u00e4hnten Konfigurator, als er die Entwicklungsphase, dann Markttests und anschlie\u00dfend den laufenden Betrieb durchlief. Der Konfiguratorcode befand sich die gesamte Zeit hinter einem dieser Features Toggles. Aber die Art und Weise, wie die Entwicklungs- und Produktteams mit diesem Toggle interagieren, muss in jedem Stadium ge\u00e4ndert werden.<\/p>\n<p>Zu Beginn der Entwicklung kann das Toggle einfach in der Versionskontrolle konfiguriert werden. W\u00e4hrend das e-Commerce-Unternehmen A\/B-Tests durchf\u00fchrt, kann das Toggle auf einer Feature Management-Plattform sein. Wenn das Ops-Team einen Kill Switch hinzuf\u00fcgt, kann es sich entscheiden, es in derselben Feature Management-Plattform, aber auf einem anderen Dashboard zu lassen.<\/p>\n<p><a href=\"https:\/\/static.wingify.com\/gcp\/uploads\/abtasty\/feature_management_feature_flag-1.svg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-66857 size-large\" role=\"img\" src=\"https:\/\/static.wingify.com\/gcp\/uploads\/abtasty\/feature_management_feature_flag-1.svg\" alt=\"Feature Management Plattform Dashboard\" width=\"1024\" height=\"1024\" \/><\/a><\/p>\n<p><span style=\"font-size: 12px;\">Wingify Flagship Dashboard (<a href=\"https:\/\/wingify.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a>)<\/span><\/p>\n<h3>Feature Toggle-Konfigurationen immer darlegen<\/h3>\n<p>Wie bei jedem anderen Codeobjekt auch, ist es besser, Feature Toggle-Konfigurationen als Metadaten zu dokumentieren, damit andere Entwickler, Tester und Produktionsteams ein Dokument in Papierform haben, dem sie folgen k\u00f6nnen, um genau zu verstehen, wie Ihr Feature Toggle in einer bestimmten Umgebung l\u00e4uft. Am besten, <strong>Sie speichern Ihre Toggle-Konfiguration in einem f\u00fcr Menschen lesbaren Format<\/strong>, damit auch andere au\u00dferhalb Ihres Teams verstehen, was ein Toggle bewirkt.<\/p>\n<p>Diese Best Practice ist f\u00fcr die Features n\u00fctzlich, bei denen l\u00e4ngerfristig Toggles verwendet werden sollen. Denken Sie wieder an unser Konfiguratorbeispiel. Ein v\u00f6llig neuer Product Operator, der versucht, einen pl\u00f6tzlichen, unerwarteten Performance-R\u00fcckgang zu verstehen, w\u00fcrde sehr dankbar f\u00fcr eine Datei sein, die f\u00fcr Menschen lesbar ist und ihm erkl\u00e4rt, dass der B-Algorithmus bei Tests ein Jahr zuvor pl\u00f6tzlich ressourcenintensiv wurde.<\/p>\n<h3>Behalten Sie die Haltekosten f\u00fcr Feature Toggles im Auge<\/h3>\n<p>Wenn Sie Feature Toggles zum ersten Mal benutzen, sollten Sie sich nicht hinrei\u00dfen lassen, alle auf einmal \u00fcberall im Code zu verwenden. Feature Toggles lassen sich zwar einfach erstellen, m\u00fcssen aber richtig gehandhabt und getestet werden, um einen wirklichen Nutzen zu ziehen. Setzen Sie nach und nach mehr Feature Toggles ein oder ziehen Sie die Integration einer Feature Management-Plattform in Ihre Entwicklungs- und Ihre Testumgebung in Betracht.<\/p>\n<p>Stellen Sie Feature Toggles strategisch bereit und halten Sie Ihren Toggle-Bestand so niedrig wie m\u00f6glich. Verwenden Sie sie, wenn es notwendig ist. Aber \u00fcberpr\u00fcfen Sie, ob Toggles die angemessene Methode f\u00fcr die L\u00f6sung eines bestimmten Problems sind.<\/p>\n<p>Lassen Sie keine alten Toggles in Ihrem Code. <strong>Streichen Sie die Toggles zusammen, sobald sie ausgedient haben.<\/strong> Je mehr inaktive Toggles im Code, desto gr\u00f6\u00dfer der Mehraufwand f\u00fcr Ihr Team, diese Toggles zu managen. Sie k\u00f6nnen Toggles entfernen, wenn Sie Code Cleanups auf die To-Do-Liste Ihrer Teams setzen oder diesen Prozess in Ihre Management-Plattform integrieren.<\/p>\n<figure id=\"attachment_66887\" aria-describedby=\"caption-attachment-66887\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-66887 size-large\" src=\"https:\/\/static.wingify.com\/gcp\/uploads\/abtasty\/employee-4604126_1920-1024x680.jpg\" alt=\"Developer von Features Toggles\" width=\"800\" height=\"531\" \/><figcaption id=\"caption-attachment-66887\" class=\"wp-caption-text\"><span style=\"font-size: 12px;\">Entwickler bei der Arbeit (<a href=\"https:\/\/www.pexels.com\/photo\/office-working-meeting-work-3184381\/\" target=\"_blank\" rel=\"noopener noreferrer\">Quelle<\/a>)<\/span><\/figcaption><\/figure>\n<h3>Halten Sie den Toggle Scope m\u00f6glichst klein<\/h3>\n<p>Aufgrund der Wirkung der Toggles neigt man dazu, gro\u00dfe Codeabschnitte von einer komplexen Toggle-Reihe zu steuern. Bleiben Sie \u201estandhaft\u201c und halten Sie den Toggle Scope bei jeder Aufgabe m\u00f6glichst klein.<\/p>\n<p>Sollte ein Toggle auf mehrere Features \u00fcbergreifen, kann es f\u00fcr den Rest des Teams zum Albtraum werden, Bugs zu beheben, die Wochen oder Monate zur\u00fcckliegen und sich jetzt auf die Arbeit des Teams auswirken.<\/p>\n<p>Nehmen wir noch einmal unser Konfiguratorbeispiel. Unser Dev-Team erstellt vier separate Widgets, die der oder die UserIn im Konfiguratortool benutzt. In diesem Szenario w\u00fcrden wir f\u00fcnf Toggles empfehlen: eins f\u00fcr den Konfigurator selbst und eins f\u00fcr jedes einzelne Widget. Coden Sie die Widget Toggles abh\u00e4ngig vom Konfigurator-Toggle. Wenn in diesem Framework eines der Widgets nicht richtig l\u00e4dt, werden die anderen dem oder der UserIn angezeigt.<\/p>\n<h2><\/h2>\n<h2><strong>Feature Toggles k\u00f6nnen den gesamten Entwicklungsprozess ver\u00e4ndern<\/strong><\/h2>\n<p>Feature Toggles sind f\u00fcr die Entwicklung, Tests und Steuerung von Code Features im Framework der Continuous Integration und Continuous Delivery eine wirkungsvolle Methode. Sie stehen f\u00fcr eine einfache Methode, mit der Ihr Team einen stabileren Code h\u00f6herer Qualit\u00e4t nach agilen Prinzipien ausliefern kann.<\/p>\n<p>In diesem Artikel haben wir erkl\u00e4rt, wie Feature Toggles funktionieren, welche Toggles Sie erstellen und wie Sie diese Toggles in Ihrem agilen Prozess verwenden \u2013 oder sie in einem Entwicklungsprozess ausprobieren k\u00f6nnen. Dar\u00fcber hinaus haben wir Ihnen einige unserer empfohlenen Best Practices vorgestellt, damit Ihr Unternehmen das Beste aus Feature Toggles herausholen kann.<\/p>\n<h3>Fangen Sie klein an, um im gr\u00f6\u00dferen Rahmen fortzufahren<\/h3>\n<p>Es gibt keinen Grund, nicht schon heute Feature Toggles zu nutzen. Fangen Sie klein an und nutzen Sie zunehmend mehr Features Toggles, wenn Ihr Team sich daran gew\u00f6hnt und verstanden hat, wie diese Toggles funktionieren. Wenn Sie gerade beginnen, ein vollkommen neues Feature zu coden, richten Sie ein Release Toggle im Trunk Code ein. So brauchen Sie keine Verzweigung. Wenn Sie mit Markttests beginnen, richten Sie ein Experiment Toggle f\u00fcr Split Testings ein.<\/p>\n<p>Wenn Ihr Team sich im Klaren ist, wie es Feature Toggles verwenden m\u00f6chte, ziehen Sie eventuell eine Feature Management-Plattform f\u00fcr eine optimierte Administration der Toggles in Betracht. Die Optimierung von Entwicklung und Testing war genau das, woran wir gedacht hatten, als wir Flagship, unsere Release- und Feature Management-Plattform, entwickelt haben.<\/p>\n<p>Mit Flagship hat Ihr Team das richtige Tool zur Hand, um Toggle Workflows und Kommunikation zu optimieren. Unabh\u00e4ngig von den Aufgaben oder dem Fokus eines Teams bringt Flagship, unser Feature Management-Tool, alle Voraussetzungen mit, um die richtigen Features auf richtige Weise bereitzustellen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Entdecken Sie unsere Best Practices rund um Feature Toggles und erfahren Sie, wie sie zur Unterst\u00fctzung Ihrer Continuous Integration und Continuous Delivery (CI\/CD) richtig implementiert werden.<\/p>\n","protected":false},"author":1437,"featured_media":115643,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"post_read_time":0,"footnotes":""},"categories":[11041],"tags":[],"feature":[],"industry-type":[],"product":[],"role":[],"region":[],"class_list":["post-112416","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-non-classe-de"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Feature Toggles: Ein \u00dcberblick &amp; unsere Best Practices - Wingify Blog<\/title>\n<meta name=\"description\" content=\"Entdecken Sie unsere Best Practices rund um Feature Toggles und erfahren Sie, wie sie zur Unterst\u00fctzung Ihrer Continuous Integration und Continuous Delivery (CI\/CD) richtig implementiert werden.\" \/>\n<meta name=\"robots\" content=\"noindex, nofollow\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Feature Toggles: Ein \u00dcberblick &amp; unsere Best Practices - Wingify Blog\" \/>\n<meta property=\"og:description\" content=\"Entdecken Sie unsere Best Practices rund um Feature Toggles und erfahren Sie, wie sie zur Unterst\u00fctzung Ihrer Continuous Integration und Continuous Delivery (CI\/CD) richtig implementiert werden.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wingify.com\/blog\/de\/feature-toggles\/\" \/>\n<meta property=\"og:site_name\" content=\"Wingify Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-13T15:52:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.wingify.com\/gcp\/uploads\/abtasty\/Feature-toogle_Facebook-1200x630-1.jpg\" \/>\n<meta name=\"author\" content=\"AB Tasty\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Wingify\" \/>\n<meta name=\"twitter:site\" content=\"@Wingify\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"AB Tasty\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/feature-toggles\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/feature-toggles\\\/\"},\"author\":{\"name\":\"AB Tasty\",\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/#\\\/schema\\\/person\\\/e50388c19f5a9b6fbe53e47ebd662ed3\"},\"headline\":\"Feature Toggles: Ein \u00dcberblick &#038; unsere Best Practices\",\"datePublished\":\"2021-09-13T15:52:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/feature-toggles\\\/\"},\"wordCount\":3192,\"image\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/feature-toggles\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/static.wingify.com\\\/gcp\\\/uploads\\\/sites\\\/3\\\/2026\\\/09\\\/Release-Management-3.png\",\"articleSection\":[\"Non class\u00e9\"],\"inLanguage\":\"de-DE\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/feature-toggles\\\/\",\"url\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/feature-toggles\\\/\",\"name\":\"Feature Toggles: Ein \u00dcberblick & unsere Best Practices - Wingify Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/feature-toggles\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/feature-toggles\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/static.wingify.com\\\/gcp\\\/uploads\\\/sites\\\/3\\\/2026\\\/09\\\/Release-Management-3.png\",\"datePublished\":\"2021-09-13T15:52:43+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/#\\\/schema\\\/person\\\/e50388c19f5a9b6fbe53e47ebd662ed3\"},\"description\":\"Entdecken Sie unsere Best Practices rund um Feature Toggles und erfahren Sie, wie sie zur Unterst\u00fctzung Ihrer Continuous Integration und Continuous Delivery (CI\\\/CD) richtig implementiert werden.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/feature-toggles\\\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/feature-toggles\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/feature-toggles\\\/#primaryimage\",\"url\":\"https:\\\/\\\/static.wingify.com\\\/gcp\\\/uploads\\\/sites\\\/3\\\/2026\\\/09\\\/Release-Management-3.png\",\"contentUrl\":\"https:\\\/\\\/static.wingify.com\\\/gcp\\\/uploads\\\/sites\\\/3\\\/2026\\\/09\\\/Release-Management-3.png\",\"width\":2400,\"height\":2332,\"caption\":\"Release Management 3\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/feature-toggles\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Non class\u00e9\",\"item\":\"https:\\\/\\\/wingify.com\\\/blog\\\/non-classe-de\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Feature Toggles: Ein \u00dcberblick &#038; unsere Best Practices\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/\",\"name\":\"Wingify Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de-DE\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/#\\\/schema\\\/person\\\/e50388c19f5a9b6fbe53e47ebd662ed3\",\"name\":\"AB Tasty\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7baf4082654d76c8e1c53a845a8592c7b280d97969e118b9a41a279e3d8da9e6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7baf4082654d76c8e1c53a845a8592c7b280d97969e118b9a41a279e3d8da9e6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7baf4082654d76c8e1c53a845a8592c7b280d97969e118b9a41a279e3d8da9e6?s=96&d=mm&r=g\",\"caption\":\"AB Tasty\"},\"url\":\"https:\\\/\\\/wingify.com\\\/blog\\\/de\\\/author\\\/abtasty\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Feature Toggles: Ein \u00dcberblick & unsere Best Practices - Wingify Blog","description":"Entdecken Sie unsere Best Practices rund um Feature Toggles und erfahren Sie, wie sie zur Unterst\u00fctzung Ihrer Continuous Integration und Continuous Delivery (CI\/CD) richtig implementiert werden.","robots":{"index":"noindex","follow":"nofollow"},"og_locale":"de_DE","og_type":"article","og_title":"Feature Toggles: Ein \u00dcberblick & unsere Best Practices - Wingify Blog","og_description":"Entdecken Sie unsere Best Practices rund um Feature Toggles und erfahren Sie, wie sie zur Unterst\u00fctzung Ihrer Continuous Integration und Continuous Delivery (CI\/CD) richtig implementiert werden.","og_url":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/","og_site_name":"Wingify Blog","article_published_time":"2021-09-13T15:52:43+00:00","og_image":[{"url":"https:\/\/static.wingify.com\/gcp\/uploads\/abtasty\/Feature-toogle_Facebook-1200x630-1.jpg","type":"","width":"","height":""}],"author":"AB Tasty","twitter_card":"summary_large_image","twitter_creator":"@Wingify","twitter_site":"@Wingify","twitter_misc":{"Verfasst von":"AB Tasty","Gesch\u00e4tzte Lesezeit":"15 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/#article","isPartOf":{"@id":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/"},"author":{"name":"AB Tasty","@id":"https:\/\/wingify.com\/blog\/de\/#\/schema\/person\/e50388c19f5a9b6fbe53e47ebd662ed3"},"headline":"Feature Toggles: Ein \u00dcberblick &#038; unsere Best Practices","datePublished":"2021-09-13T15:52:43+00:00","mainEntityOfPage":{"@id":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/"},"wordCount":3192,"image":{"@id":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/#primaryimage"},"thumbnailUrl":"https:\/\/static.wingify.com\/gcp\/uploads\/sites\/3\/2026\/09\/Release-Management-3.png","articleSection":["Non class\u00e9"],"inLanguage":"de-DE"},{"@type":"WebPage","@id":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/","url":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/","name":"Feature Toggles: Ein \u00dcberblick & unsere Best Practices - Wingify Blog","isPartOf":{"@id":"https:\/\/wingify.com\/blog\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/#primaryimage"},"image":{"@id":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/#primaryimage"},"thumbnailUrl":"https:\/\/static.wingify.com\/gcp\/uploads\/sites\/3\/2026\/09\/Release-Management-3.png","datePublished":"2021-09-13T15:52:43+00:00","author":{"@id":"https:\/\/wingify.com\/blog\/de\/#\/schema\/person\/e50388c19f5a9b6fbe53e47ebd662ed3"},"description":"Entdecken Sie unsere Best Practices rund um Feature Toggles und erfahren Sie, wie sie zur Unterst\u00fctzung Ihrer Continuous Integration und Continuous Delivery (CI\/CD) richtig implementiert werden.","breadcrumb":{"@id":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wingify.com\/blog\/de\/feature-toggles\/"]}]},{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/#primaryimage","url":"https:\/\/static.wingify.com\/gcp\/uploads\/sites\/3\/2026\/09\/Release-Management-3.png","contentUrl":"https:\/\/static.wingify.com\/gcp\/uploads\/sites\/3\/2026\/09\/Release-Management-3.png","width":2400,"height":2332,"caption":"Release Management 3"},{"@type":"BreadcrumbList","@id":"https:\/\/wingify.com\/blog\/de\/feature-toggles\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wingify.com\/blog\/de\/"},{"@type":"ListItem","position":2,"name":"Non class\u00e9","item":"https:\/\/wingify.com\/blog\/non-classe-de\/"},{"@type":"ListItem","position":3,"name":"Feature Toggles: Ein \u00dcberblick &#038; unsere Best Practices"}]},{"@type":"WebSite","@id":"https:\/\/wingify.com\/blog\/de\/#website","url":"https:\/\/wingify.com\/blog\/de\/","name":"Wingify Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wingify.com\/blog\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de-DE"},{"@type":"Person","@id":"https:\/\/wingify.com\/blog\/de\/#\/schema\/person\/e50388c19f5a9b6fbe53e47ebd662ed3","name":"AB Tasty","image":{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/secure.gravatar.com\/avatar\/7baf4082654d76c8e1c53a845a8592c7b280d97969e118b9a41a279e3d8da9e6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7baf4082654d76c8e1c53a845a8592c7b280d97969e118b9a41a279e3d8da9e6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7baf4082654d76c8e1c53a845a8592c7b280d97969e118b9a41a279e3d8da9e6?s=96&d=mm&r=g","caption":"AB Tasty"},"url":"https:\/\/wingify.com\/blog\/de\/author\/abtasty\/"}]}},"_links":{"self":[{"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/posts\/112416","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/users\/1437"}],"replies":[{"embeddable":true,"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=112416"}],"version-history":[{"count":0,"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/posts\/112416\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/media\/115643"}],"wp:attachment":[{"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=112416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=112416"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=112416"},{"taxonomy":"feature","embeddable":true,"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/feature?post=112416"},{"taxonomy":"industry-type","embeddable":true,"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/industry-type?post=112416"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/product?post=112416"},{"taxonomy":"role","embeddable":true,"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/role?post=112416"},{"taxonomy":"region","embeddable":true,"href":"https:\/\/wingify.com\/blog\/de\/wp-json\/wp\/v2\/region?post=112416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}