diff options
Diffstat (limited to 'locale/pt/LC_MESSAGES/_slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides.po')
-rw-r--r-- | locale/pt/LC_MESSAGES/_slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides.po | 408 |
1 files changed, 408 insertions, 0 deletions
diff --git a/locale/pt/LC_MESSAGES/_slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides.po b/locale/pt/LC_MESSAGES/_slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides.po new file mode 100644 index 0000000..6bb199e --- /dev/null +++ b/locale/pt/LC_MESSAGES/_slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides.po @@ -0,0 +1,408 @@ +# +msgid "" +msgstr "" + +msgid "" +"title: Rollout, feature flag, experiment, operational toggle\n" +"date: 2020-10-19\n" +"layout: slides\n" +"lang: en\n" +"ref: rollout-feature-flag-experiment-operational-toggle" +msgstr "" + +msgid "Rollout, feature flag, experiment, operational toggle" +msgstr "" + +msgid "Different use cases for **backend**, **frontend** and **mobile**" +msgstr "" + +msgid "" +"\"Feature flags\" tend to come up when talking about **continuous " +"deployment**" +msgstr "" + +msgid "???" +msgstr "" + +msgid "I'm using \"quotes\" because I'm mixing up different meanings of \"rollout\"" +msgstr "" + +msgid "CI" +msgstr "" + +msgid "continuous integration" +msgstr "" + +msgid "CD" +msgstr "" + +msgid "continuous delivery" +msgstr "" + +msgid "**continuous deployment**" +msgstr "" + +msgid "Background: build vocabulary, why are feature flags related to CD" +msgstr "" + +msgid "CI solves: manual integration of long-lived branches" +msgstr "" + +msgid "CD solves: automation of deployment process" +msgstr "" + +msgid "CD solves: releases as frequent as possible" +msgstr "" + +msgid "That's where the \"GoCD\" name comes from" +msgstr "" + +msgid "Types:" +msgstr "" + +msgid "rollout" +msgstr "" + +msgid "feature flag" +msgstr "" + +msgid "experiment" +msgstr "" + +msgid "operational toggle" +msgstr "" + +msgid "For *rolling out* a new version of software" +msgstr "" + +msgid "**Short-lived** using **percentages**" +msgstr "" + +msgid "" +"a [new deployment of " +"k8s](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#creating-" +"a-deployment)" +msgstr "" + +msgid "" +"new [APK released to the Play " +"Store](https://support.google.com/googleplay/android-" +"developer/answer/6346149?hl=en)" +msgstr "" + +msgid "Relevant as long as the new code is deployed" +msgstr "" + +msgid "For turning a feature *on* or *off*" +msgstr "" + +msgid "" +"**Medium-lived** using **allow list**, **A/B test**, **percentage**, **app " +"version**, *etc*." +msgstr "" + +msgid "`:new-chargeback-flow`" +msgstr "" + +msgid "`:new-debit-card-activation-screen`" +msgstr "" + +msgid "Relevant as long as the new code is being developed" +msgstr "" + +msgid "For analyzing behaviour" +msgstr "" + +msgid "**Medium-lived** using **allow list** and **A/B test**" +msgstr "" + +msgid "`:debit-withdrawal-test`" +msgstr "" + +msgid "For disabling features in `#crash`-like situations" +msgstr "" + +msgid "**Long-lived** using **percentage**" +msgstr "" + +msgid "`:bank-barcode-payment`" +msgstr "" + +msgid "`:savings-bank-barcode-query-provider`" +msgstr "" + +msgid "Lives for as long as the code is in production." +msgstr "" + +msgid "It feels like a system-level circuit breaker." +msgstr "" + +msgid "We now know about the types" +msgstr "" + +msgid "" +"But they have different relevance for **backend**, **frontend** and " +"**mobile**" +msgstr "" + +msgid "backend" +msgstr "" + +msgid "**rollout**: k8s blue/green, canary and `common-rollout`" +msgstr "" + +msgid "**feature flag**: `common-rollout` and datasets" +msgstr "" + +msgid "**experiment**: `common-xp`" +msgstr "" + +msgid "**operational toggle**: `common-rollout`" +msgstr "" + +msgid "" +"This is a bit why common-rollout isn't called *common-feature-flag*: it was " +"initially designed with backend usage of mostly *rollouts* in mind, and just" +" a bit *feature flags*." +msgstr "" + +msgid "" +"Avoid using configuration for doing operational toggles: it is less dynamic," +" so it defeats the purpose." +msgstr "" + +msgid "frontend" +msgstr "" + +msgid "**rollout**: CDN and page refreshes" +msgstr "" + +msgid "" +"**feature flag**: percentages and maybe IPs (no `:customer/id` on the " +"website)" +msgstr "" + +msgid "**experiment**: via dynamic backend control" +msgstr "" + +msgid "**operational toggle**: via dynamic backend control" +msgstr "" + +msgid "mobile" +msgstr "" + +msgid "**rollout**: app stores" +msgstr "" + +msgid "**feature flag**: via dynamic backend control" +msgstr "" + +msgid "Key differentiator is" +msgstr "" + +msgid "How much **control** we have over the **environment**" +msgstr "" + +msgid "**backend**" +msgstr "" + +msgid "Full control" +msgstr "" + +msgid "🎉" +msgstr "" + +msgid "Can edit, update and even delete rollouts as desired." +msgstr "" + +msgid "Mix and match at will!" +msgstr "" + +msgid "**frontend**" +msgstr "" + +msgid "Partial control" +msgstr "" + +msgid "When choose when to make a new version available" +msgstr "" + +msgid "" +"We can control when a new version is available, partially when someone will " +"upgrade it." +msgstr "" + +msgid "But it is easy to fallback to \"reload the page and try again\"." +msgstr "" + +msgid "**mobile**" +msgstr "" + +msgid "Very limited control" +msgstr "" + +msgid "app stores can restrict updates (worse for iOS)" +msgstr "" + +msgid "customers still have to download new versions" +msgstr "" + +msgid "Costs" +msgstr "" + +msgid "more complex code" +msgstr "" + +msgid "compatibility with old app versions" +msgstr "" + +msgid "nesting is exponential" +msgstr "" + +msgid "Benefits" +msgstr "" + +msgid "dynamicity" +msgstr "" + +msgid "Best practices" +msgstr "" + +msgid "Dynamic content > feature flag" +msgstr "" + +msgid "Always true for **mobile**, almost always for **frontend**" +msgstr "" + +msgid "Use `:include-list` for named groups" +msgstr "" + +msgid "Always true for **backend**, **frontend** and **mobile**" +msgstr "" + +msgid "{% raw %}" +msgstr "" + +msgid "" +"{:rules\n" +" #{{:type :include-list\n" +" :content {:filename \"debit-team-members.txt\"}}}}\n" +msgstr "" + +msgid "{% endraw %}" +msgstr "" + +msgid "Always use `:app-version`" +msgstr "" + +msgid "only for **mobile**" +msgstr "" + +msgid "" +"{:rules\n" +" #{{:type :app-version\n" +" :content {:min-version #{{:platform :android\n" +" :code 1000000}\n" +" {:platform :ios\n" +" :code 2000000}}}}}}\n" +msgstr "" + +msgid "Extend `common-rollout` if required" +msgstr "" + +msgid "That's how `:include-list`, `:app-version`, *etc.* were born" +msgstr "" + +msgid "Beware of many nested feature flags" +msgstr "" + +msgid "True for **backend**, **frontend** and **mobile**" +msgstr "" + +msgid "Exponential growth of combinations" +msgstr "" + +msgid "Don't delete app-facing feature flags" +msgstr "" + +msgid "True for **mobile**" +msgstr "" + +msgid "This could break old app versions, only do this intentionally" +msgstr "" + +msgid "" +"We don't have (yet) a strategy for dealing with LTS of the app, and we just " +"say: \"we'll support every app version out there\"." +msgstr "" + +msgid "Include a feature flag on the whiteboarding phase" +msgstr "" + +msgid "Include deleting/retiring the feature flag at the end" +msgstr "" + +msgid "Avoid renaming a feature flag" +msgstr "" + +msgid "Use `:app-version` with `:min-version` instead" +msgstr "" + +msgid "And most importantly..." +msgstr "" + +msgid "***Always*** rely on a feature flag on the app" +msgstr "" + +msgid "Never do a hot fix, avoid expedited releases at all costs" +msgstr "" + +msgid "" +"The app is where we have less control, so the feature flag is how we get " +"some of that control back." +msgstr "" + +msgid "This doesn't mean you'll need 1 feature flag per PR" +msgstr "" + +msgid "" +"There's not such thing as: \"This is such a small thing, it doesn't need a " +"feature flag\"" +msgstr "" + +msgid "" +"You should ask yourself: \"It this crashes the app, am I OK with waiting for" +" the next release train?\"" +msgstr "" + +msgid "Thank you!" +msgstr "" + +msgid "References:" +msgstr "" + +msgid "these slides: [{{ site.tld }}/slides.html]({% link slides.md %})" +msgstr "" + +msgid "" +"[prose version of this presentation]({% link _articles/2020-10-19-feature-" +"flags-differences-between-backend-frontend-and-mobile.md %})" +msgstr "" + +msgid "" +"\"[Feature Toggles (aka Feature " +"Flags)](https://martinfowler.com/articles/feature-toggles.html)\", by Pete " +"Hodgson" +msgstr "" + +msgid "" +"\"[Continuous integration vs. continuous delivery vs. continuous " +"deployment](https://www.atlassian.com/continuous-" +"delivery/principles/continuous-integration-vs-delivery-vs-deployment)\", by " +"Sten Pittet" +msgstr "" + +msgid "" +"[Accelerate](https://itrevolution.com/book/accelerate/), by N. Forsgren, J. " +"Humble and G. Kim" +msgstr "" |