aboutsummaryrefslogtreecommitdiff
path: root/locale/pt
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--locale/pt/LC_MESSAGES/_slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides.po408
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 ""