Files
nexus/sreweekly/articles/347/06-argo-rollouts-at-scale-bringing-automated-rollbacks-to-2-100-services.html
2026-09-12 17:23:01 +08:00

1 line
197 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en-GB" dir="ltr" translate="no" data-testid="v2"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=5"/><link rel="icon" href="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/media/favicon.4c6ebc6f.svg" type="image/svg+xml"/><link rel="shortcut icon" type="image/png" href="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/media/favicon.87a9df8c.png"/><title>Argo Rollouts at scale: Bringing Automated Rollbacks to 2,100+ services at Monzo</title><link rel="icon" href="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/media/favicon.87a9df8c.png" sizes="any"/><link rel="icon" href="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/media/favicon.4c6ebc6f.svg" type="image/svg+xml"/><meta name="theme-color" content="#112231"/><meta property="og:site_name" content="Monzo"/><meta property="og:type" content="website"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="format-detection" content="telephone=no"/><meta property="og:title" content="Argo Rollouts at scale: Bringing Automated Rollbacks to 2,100+ services at Monzo"/><meta property="og:description" content=""/><meta property="og:locale" content="en_GB"/><meta property="og:url" content="https://monzo.com/blog/2022/11/02/argo-rollouts-at-scale"/><meta property="og:image" content="https://images.ctfassets.net/ro61k101ee59/4s4myNEBCsdZrP7lIGBnsA/c1b056542af37431abf760a84f28fc95/How_it_works.png"/><meta property="twitter:url" content="https://monzo.com/blog/2022/11/02/argo-rollouts-at-scale"/><meta property="twitter:card" content="summary_large_image"/><meta property="twitter:site" content="@monzo"/><meta property="twitter:description" content=""/><meta property="twitter:site_name" content="Monzo"/><meta property="twitter:image" content="https://images.ctfassets.net/ro61k101ee59/4s4myNEBCsdZrP7lIGBnsA/c1b056542af37431abf760a84f28fc95/How_it_works.png"/><meta name="robots" content="follow,index"/><link rel="manifest" href="/manifest.json"/><link rel="canonical" href="https://monzo.com/blog/2022/11/02/argo-rollouts-at-scale" data-testid="canonical"/><meta name="description" content=""/><meta name="next-head-count" content="27"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="format-detection" content="telephone=no"/><meta name="theme-color" content="#112231"/><link rel="manifest" href="/manifest.json"/><link rel="stylesheet" href="/static/css/base.css"/><link nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" rel="preload" href="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/css/5ef8c2a18ce733da.css" as="style" crossorigin="anonymous"/><link nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" rel="stylesheet" href="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/css/5ef8c2a18ce733da.css" crossorigin="anonymous" data-n-g=""/><link nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" rel="preload" href="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/css/c0ea6062c7f54fcb.css" as="style" crossorigin="anonymous"/><link nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" rel="stylesheet" href="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/css/c0ea6062c7f54fcb.css" crossorigin="anonymous" data-n-p=""/><link nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" rel="preload" href="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/css/86d58df8530430e5.css" as="style" crossorigin="anonymous"/><link nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" rel="stylesheet" href="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/css/86d58df8530430e5.css" crossorigin="anonymous" data-n-p=""/><link nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" rel="preload" href="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/css/fd2a19260c1d7fcc.css" as="style" crossorigin="anonymous"/><link nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" rel="stylesheet" href="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/css/fd2a19260c1d7fcc.css" crossorigin="anonymous" data-n-p=""/><noscript data-n-css="eb3dd99935b60e65a03d8a93dc48ad3b2cbd"></noscript><script defer="" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" crossorigin="anonymous" nomodule="" src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/webpack-2457cc2fd54fbccb.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/framework-978a6051e6d0c57a.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/main-ed1933926a63d538.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/pages/_app-f6d77626e707dbbe.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/abe7ba4e-5b531d2653ca92d5.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/1395-e61510f04ddd5aaa.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/3955-28640e9867e07b0d.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/7014-88967f02c888abee.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/8402-6ac04c5461706c66.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/3456-5f62d1d06d97e774.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/2305-3b30f0e4f44c85a2.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/6800-3372244e42c17bdc.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/1508-085178230f6e05d2.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/33-8d6940bfed98ea2b.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/6288-03ba2f911e193453.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/8283-af849499565df4e6.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/7055-7e9c575a2ac068d7.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/632-cc6126dce12be11f.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/chunks/pages/blog/%5B...dynamic%5D-bb77c1cf1993c7c4.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/-IOrrmBQcEdnuWfJPIoxS/_buildManifest.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script><script src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/-IOrrmBQcEdnuWfJPIoxS/_ssgManifest.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd" defer="" crossorigin="anonymous"></script></head><body data-whatpersist="false" class=""><div id="__next"><header class="HeaderVariant_sticky__PakDB"><div class="HeaderVariant_header__M43dc"><a class="HeaderVariant_skipToContent__gKtbS" href="#mainContent" data-monzoanalytics-action-id="link_clicked" data-monzoanalytics-action-parameters="link_text=Skip to Content&amp;url=#mainContent&amp;currentUrl=/blog/2022/11/02/argo-rollouts-at-scale">Skip to Content</a><div class="HeaderVariant_headerContainer__yB1yF"><div class="HeaderVariant_headerLogoContainer__k3fGL"><a class="Button_button__ceqVx Button_none__26XPj Button_center__nHk65 HeaderVariant_logoLink___LBJB" data-monzoanalytics-no-tracking="true" target="_self" rel="" aria-label="Monzo Bank Homepage" tabindex="0" href="/"><span aria-hidden="true"><span class="Button_text__5HT7_"><div class="HeaderVariant_logoImageContainer__HlZzw"><svg xmlns="http://www.w3.org/2000/svg" width="138" height="24" viewBox="0 0 138 24" fill="none"><path d="M0.0789831 23.3769V0.626117H6.24562V3.66757C7.66062 1.33063 9.73947 0.196533 12.5345 0.196533C15.3296 0.196533 17.4434 1.38218 18.9457 3.8394C21.3565 1.34782 23.2082 0.196533 26.0906 0.196533C31.2965 0.196533 34.2313 3.08334 34.2313 8.37581V23.3769H27.593V11.0564C27.593 7.87749 26.9117 6.43409 24.3612 6.43409C21.8107 6.43409 20.3957 7.99778 20.3957 11.0564V23.3769H13.7224V11.0564C13.7224 7.87749 13.0412 6.43409 10.4906 6.43409C7.94014 6.43409 6.52513 7.99778 6.52513 11.0564V23.3769H0.0615234H0.0789831Z" fill="currentColor"></path><path d="M42.0932 3.59852C44.4166 1.31313 47.4737 0.0415649 50.6182 0.0415649C53.9723 0.0415649 56.8547 1.19285 59.1956 3.34077C61.6587 5.62616 62.9864 8.77071 62.9864 11.8465C62.9864 15.2832 61.816 18.1185 59.4926 20.4038C57.1167 22.7408 54.1994 23.9608 50.7056 23.9608C47.2117 23.9608 44.3293 22.7751 41.9709 20.3179C39.7349 18.0325 38.5645 15.1114 38.5645 11.9324C38.5645 8.75353 39.8048 5.83236 42.0932 3.58134V3.59852ZM50.7405 17.6201C53.7627 17.6201 56.2084 15.1286 56.2084 12.0355C56.2084 8.94254 53.7452 6.39941 50.7405 6.39941C47.7358 6.39941 45.2726 8.89099 45.2726 12.0355C45.2726 15.1801 47.7707 17.6201 50.7405 17.6201Z" fill="currentColor"></path><path d="M67.3008 23.3768V0.625995H73.7644L73.6771 3.66745C75.0921 1.38206 77.2582 0.196411 80.3153 0.196411C85.1019 0.196411 88.194 3.16913 88.194 8.37569V23.3768H81.3985V11.0563C81.3985 7.87737 80.7171 6.43397 78.0793 6.43397C75.4414 6.43397 73.9915 7.99765 73.9915 11.0563V23.3768H67.3183H67.3008Z" fill="currentColor"></path><path d="M117.053 3.59852C119.377 1.31313 122.434 0.0415649 125.578 0.0415649C128.932 0.0415649 131.815 1.19285 134.156 3.34077C136.619 5.62616 137.946 8.77071 137.946 11.8465C137.946 15.2832 136.776 18.1185 134.453 20.4038C132.077 22.7408 129.159 23.9608 125.666 23.9608C122.172 23.9608 119.289 22.7751 116.931 20.3179C114.695 18.0325 113.524 15.1114 113.524 11.9324C113.524 8.75353 114.765 5.83236 117.053 3.58134V3.59852ZM125.7 17.6201C128.723 17.6201 131.168 15.1286 131.168 12.0355C131.168 8.94254 128.705 6.39941 125.7 6.39941C122.696 6.39941 120.233 8.89099 120.233 12.0355C120.233 15.1801 122.731 17.6201 125.7 17.6201Z" fill="currentColor"></path><path d="M93.1387 23.3768V18.6342L102.659 6.51993H93.1387V0.626038H110.328V6.00443L101.926 17.4829H110.503V23.3768H93.1561H93.1387Z" fill="currentColor"></path></svg></div></span></span></a></div><div class="HeaderVariant_headerNavigationContainer__1NPta"><nav aria-label="Main" data-orientation="vertical" dir="ltr" data-testid="" class="Navigation_navigation__MiBte" data-toplevel-id="" data-subitem-id=""><div aria-hidden="true" class="NavigationSEORenderer_navigationSEORenderer__udHb5" data-testid="seo-navigation-renderer"><ul><li data-testid="seo-navigation-renderer-top-level-item"><span>Personal</span><ul><li data-testid="seo-navigation-renderer-landmark"><span>Current accounts</span><p>It all starts with our personal current account</p><ul><li data-testid="seo-navigation-renderer-landmark-link"><a href="/current-account/personal" data-monzoanalytics-no-tracking="true">Personal account</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/current-account/joint-account" data-monzoanalytics-no-tracking="true">Joint account</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/current-account/under-16s" data-monzoanalytics-no-tracking="true">Under 16s account</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/current-account/16-17" data-monzoanalytics-no-tracking="true">16-17s account</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/current-account" data-monzoanalytics-no-tracking="true">See all current accounts</a></li></ul></li><li data-testid="seo-navigation-renderer-landmark"><span>Plans</span><p>Upgrade your personal account from £3 a month</p><ul><li data-testid="seo-navigation-renderer-landmark-link"><a href="/current-account/plans" data-monzoanalytics-no-tracking="true">Compare plans</a></li></ul></li><li data-testid="seo-navigation-renderer-landmark"><span>Why Monzo?</span><p>Bank on an award-winning app</p><ul><li data-testid="seo-navigation-renderer-landmark-link"><a href="/features/pots" data-monzoanalytics-no-tracking="true">Organise with Pots</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/features/cashback" data-monzoanalytics-no-tracking="true">Earn cashback</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/features/travel" data-monzoanalytics-no-tracking="true">Travel without fees</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/features/monzo-split" data-monzoanalytics-no-tracking="true">Spend with friends</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/features/monzo-payday" data-monzoanalytics-no-tracking="true">Get paid into Monzo</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/security" data-monzoanalytics-no-tracking="true">Protect your money</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/features/see-your-mortgage" data-monzoanalytics-no-tracking="true">Connect your mortgage</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/features/payments" data-monzoanalytics-no-tracking="true">Pay and get paid</a></li></ul></li><li data-testid="seo-navigation-renderer-landmark"><span>Savings and ISAs</span><p>Put your money to work with flexible ways to save.</p><ul><li data-testid="seo-navigation-renderer-landmark-link"><a href="/savings-isas/instant-access" data-monzoanalytics-no-tracking="true">Instant Access</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/savings-isas/select-access" data-monzoanalytics-no-tracking="true">Select Access</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/savings-isas/cash-isas" data-monzoanalytics-no-tracking="true">Cash ISAs</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/savings-isas/under-16s-instant-access" data-monzoanalytics-no-tracking="true">Under 16s Savings</a></li><li data-testid="seo-navigation-renderer-landmark-link"><a href="/savings-isas" data-monzoanalytics-no-tracking="true">See all savings and ISAs</a></li></ul></li><li data-testid="seo-navigation-renderer-top-level-item"><span>Investments and pensions</span><ul><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/investments">Investments</a></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/pensions">Pensions</a></li></ul></li><li data-testid="seo-navigation-renderer-top-level-item"><span>Credit cards and loans</span><ul><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/flex">Flex Purchase credit card</a></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/flex-build">Flex Build credit card</a></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/loans">Loans</a></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/overdrafts">Overdrafts</a></li></ul></li><li data-testid="seo-navigation-renderer-top-level-item"><span>Insurance</span><ul><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/home-insurance">Home insurance</a></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/contents-insurance">Contents insurance</a></li></ul></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/mobile">Mobile plans</a></li><li data-testid="seo-navigation-renderer-top-level-item"><span>Help and support</span><ul><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/help">Help centre</a></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/security">Security at Monzo</a></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/fraud">Staying safe from fraud</a></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/money-worries">Support with money worries</a></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/switch">Switching to Monzo</a></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/help/monzo-plus">Plus help</a></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/help/monzo-premium">Premium help</a></li></ul></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/refer-a-friend">Refer a friend</a></li><li data-testid="seo-navigation-renderer-basic-link"><a data-monzoanalytics-no-tracking="true" href="/switch">Switch to Monzo</a></li></ul></li><li data-testid="seo-navigation-renderer-top-level-item"><span>Business</span><ul></ul></li></ul></div><div style="position:relative"><ul data-orientation="vertical" class="NavigationTopLevelItems_navigationTopLevelItemsList__fJhlK" dir="ltr"><li class="NavigationTopLevelItems_navigationTopLevelItem__bhgjl NavigationTopLevelItems_isMobileVisible__J__pz"><button data-monzoanalytics-action-id="link_clicked" data-monzoanalytics-action-parameters="link_type=navigation top level item&amp;link_text=Open Personal navigation&amp;link_location=header - Level 1&amp;currentUrl=/blog/2022/11/02/argo-rollouts-at-scale" id="radix-:Raar6:-trigger-personal" data-state="closed" aria-expanded="false" aria-controls="radix-:Raar6:-content-personal" class="NavigationTopLevelItems_navigationTopLevelItemTrigger__hezLF" aria-label="Open Personal navigation" data-radix-collection-item=""><div class="NavigationTopLevelItems_navigationTopLevelItemButton__sN1xB NavigationTopLevelItems_currentlySelected__TmMf_"><div class="NavigationTopLevelItems_navigationTopLevelItemButtonIcon__i8mOW"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 20 20" data-testid="personal-icon"><path fill="currentColor" fill-rule="evenodd" d="M10.5 10.833c3.606 0 6.544 2.149 6.663 4.832l.003.168c0 .92-.746 1.667-1.666 1.667h-10c-.92 0-1.667-.746-1.667-1.667 0-2.761 2.985-5 6.667-5Zm0-8.333a3.333 3.333 0 1 1 0 6.667 3.333 3.333 0 0 1 0-6.667Z" clip-rule="evenodd"></path></svg></div><span class="NavigationTopLevelItems_navigationTopLevelItemButtonContent__ACT5e">Personal</span><div class="NavigationTopLevelItems_navigationTopLevelItemButtonIcon__i8mOW"><svg width="1em" height="1em" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M15.88 9.29006L12 13.1701L8.11998 9.29006C7.72998 8.90006 7.09998 8.90006 6.70998 9.29006C6.31998 9.68006 6.31998 10.3101 6.70998 10.7001L11.3 15.2901C11.69 15.6801 12.32 15.6801 12.71 15.2901L17.3 10.7001C17.69 10.3101 17.69 9.68006 17.3 9.29006C16.91 8.91006 16.27 8.90006 15.88 9.29006Z" fill="currentColor"></path></svg></div></div></button><div class="NavigationTopLevelItems_navigationTopLevelToggleContainer__ag2Yv" role="button" tabindex="0" aria-label="Toggle Personal navigation menu"><div class="MobileNavigationToggle_mobileNavigationToggle__4Z_F_"><div class="MobileNavigationToggle_mobileNavigationToggleContent__sUo9Z"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M4 18h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1Zm0-5h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1ZM3 7c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1Z"></path></svg></div></div></div></li><li><a class="NavigationTopLevelItems_navigationTopLevelItemButton__sN1xB" data-monzoanalytics-action-id="link_clicked" data-monzoanalytics-action-parameters="link_text=Business&amp;link_location=header - Level 1&amp;link_type=navigation&amp;url=/business-banking&amp;currentUrl=/blog/2022/11/02/argo-rollouts-at-scale" href="/business-banking"><div class="NavigationTopLevelItems_navigationTopLevelItemButtonIcon__i8mOW"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 20 20" data-testid="business-icon"><path fill="currentColor" fill-rule="evenodd" d="M10.834 1.667a2.5 2.5 0 0 1 2.495 2.353l.005.147V5h.833v12.5H5.834V5h.833v-.833A2.5 2.5 0 0 1 9.02 1.67l.147-.004h1.667ZM4.167 5v12.5h-.833c-.92 0-1.667-.746-1.667-1.667V6.667c0-.92.746-1.667 1.667-1.667h.833Zm11.667 0h.833c.92 0 1.667.746 1.667 1.667v9.166c0 .92-.747 1.667-1.667 1.667h-.833V5Zm-5-1.667H9.167a.834.834 0 0 0-.828.737l-.005.097V5h3.333v-.833a.833.833 0 0 0-.833-.834Z" clip-rule="evenodd"></path></svg></div><span class="NavigationTopLevelItems_navigationTopLevelItemButtonContent__ACT5e">Business</span></a></li></ul></div><div class="HeaderVariant_headerNavigationExtras__fnwGF"></div></nav></div><div class="HeaderVariant_mobilePrimaryCTAExperiment__gNqIQ"></div></div></div></header><main id="mainContent" class="Main_main__qK_Jw Main_secondary__AtY_D"><section class="BlogPostHero_BlogPostHero__zHlZw Section_section__bJela Section_alignItemsCenter__uAtDJ stack"><div class="Section_contentContainer__nIHcH"><div class="BlogPostHero_metadata__IlL_3"><time dateTime="7 November 2022" class="BlogPostHero_date__MLwY1"><span class="VisuallyHidden_root__K5ziU">Published on: </span>7 November 2022</time><a class="Button_button__ceqVx Button_primary__Rsc_A Button_center__nHk65" data-monzoanalytics-no-tracking="true" target="_self" href="/blog/topic/technology" rel="noopener noreferrer external"><span class="Button_text__5HT7_"><span class="VisuallyHidden_root__K5ziU">Published in: </span>Technology</span></a></div><div class="Block_block__umVpK Block_transparent__bO8GO Block_textCenter__ZMvZ5 Block_horizontalCenter__r3X72 Block_verticalMiddle__hz7OB Block_paddingHorizontalMedium__Yebwe Block_paddingVerticalMedium___sqTU Block_marginHorizontalAuto__iPHYU Block_marginVerticalNone__5PS5J"><div class="Block_contentContainer__zHay8"><h1 class="Title_title__ofmsr Title_primary__c1rix text-heading-1 Title_center__EKShs marginBottom marginTop" id="argo-rollouts-at-scale-bringing-automated-rollbacks-to-2100-services-at-monzo">Argo Rollouts at scale: Bringing Automated Rollbacks to 2,100+ services at Monzo</h1></div></div></div></section><div class="Section_container__hQZq_ Section_section__bJela Section_secondary__Yb8E4 stack Section_paddingtoplarge__e7z4X Section_paddingbottommedium__iiG8G"><div class="Section_contentContainer__nIHcH"><div class="___dynamic__articleContainer__ZfTwO"><article class="_prose_prose__aeteD"><aside class="BlogPostDisclaimer_BlogPostDisclaimer__GLNKM" data-testid="disclaimer"><div class="Text_text__CSJ_O Text_marginBottom___UK4L"><p>This blog post was accurate when we published it – head to<!-- --> <a class="Button_button__ceqVx Button_link__8caFw Button_inline__TsyTr Button_padWithSpaces__PFrni Button_center__nHk65" data-monzoanalytics-no-tracking="true" target="_self" href="https://monzo.com" rel="noopener noreferrer external"><span class="Button_text__5HT7_">monzo.com</span></a> <!-- -->or your Monzo app for the most up to date information.</p></div></aside><div class="Text_text__CSJ_O"><p>🗣️ This blog post is a complement to a talk we gave at ArgoCon2022. You can <a href="https://www.youtube.com/watch?v=Vl5siKnYymY" data-monzoanalytics-action-id="link_clicked" data-monzoanalytics-action-parameters="link_type=inline&amp;link_location=Text inline&amp;link_text=watch the recording&amp;url=https://www.youtube.com/watch&amp;currentUrl=/blog/2022/11/02/argo-rollouts-at-scale"><u>watch the recording</u></a> of the talk for more information.</p></div><div class="Text_text__CSJ_O"><p>We’ve massively invested in the microservices philosophy and ship small and often. We have over 2,100 services and <a href="https://monzo.com/blog/2022/05/16/how-we-deploy-to-production-over-100-times-a-day" data-monzoanalytics-action-id="link_clicked" data-monzoanalytics-action-parameters="link_type=inline&amp;link_location=Text inline&amp;link_text=deploy over 100 times per day&amp;url=https://monzo.com/blog/2022/05/16/how-we-deploy-to-production-over-100-times-a-day&amp;currentUrl=/blog/2022/11/02/argo-rollouts-at-scale"><u>deploy over 100 times per day</u></a>. In fact, we deployed to production more than 27,000 times 2021 🚀</p></div><div class="Text_text__CSJ_O"><p>We have great tooling and a fast deployment pipeline, yet our deployment strategy was still trailing some of the modern best practices. We were too reliant on testing, alerting, and human discipline and we wanted to raise the bar.</p></div><div class="Text_text__CSJ_O"><p>We introduced automated rollbacks to our platform using Argo Rollouts and made it the default deployment strategy for all our services. This helps us roll out changes safely and catch a wide class of problems related to deploying new code before they have much impact. This means customers will see fewer issues and our engineers will spend less time worrying about deployments and more time delivering value.</p></div><div class="Text_text__CSJ_O"><p>In this post, we’ll focus on how we implemented and rolled it out (pun intended!) to all of our services!</p></div><h1 class="Title_title__ofmsr Title_primary__c1rix text-heading-2 Title_left__V4Q3q" id="we-didnt-want-engineers-to-babysit-deployments">We didn’t want engineers to babysit deployments</h1><div class="Text_text__CSJ_O"><p>At Monzo, engineers trigger deployments by running a CLI command. We realised that although we do have a lot of mechanisms to catch bad changes at multiple levels, we relied on alerts being routed to engineers to react to potentially bad deployments. This was less than optimal because:</p></div><ul class="List_List__d5Gvb List_light__uu_Tn List_margin__M1ON_"><li><div class="Text_text__CSJ_O"><p>Humans notoriously miss stuff all the time; discipline is not a good alternative to automation</p></div></li><li><div class="Text_text__CSJ_O"><p>It was time consuming and added some cognitive load to the act of deploying, which was the very thing we wanted to make as frictionless as possible</p></div></li><li><div class="Text_text__CSJ_O"><p>Rollouts were &quot;all or nothing&quot;: provided pods start, a bad release could be rolled out to all pods before an engineer would be alerted</p></div></li></ul><div class="Text_text__CSJ_O"><p>Longer term we would like to eliminate manually-triggered deployments and instead trigger all deployments from merges to our main git branch (also known as “GitOps”). We believe automated rollbacks are a requirement for moving to a GitOps deployment model because the deployment flow is more asynchronous, which makes it even less appropriate for engineers to babysit deployments.</p></div><h1 class="Title_title__ofmsr Title_primary__c1rix text-heading-2 Title_left__V4Q3q" id="what-we-needed">What we needed</h1><div class="Text_text__CSJ_O"><p>Ultimately we needed a system to detect bad deployments and automatically roll back. Alongside this, we had some important additional requirements.</p></div><div class="Text_text__CSJ_O"><p><strong>We wanted the new system to be as transparent as possible to engineers.</strong> At Monzo we pride ourselves on our simple and opinionated tooling. We provide tools for managing deployments that are specialised to our services and operate at a higher level of abstraction than the backing systems, such as Kubernetes. We wanted to preserve this with automated rollbacks, so whichever technology we picked had to be flexible enough to integrate deeply with our existing tooling (e.g. our command line tools for managing deployments, and Slack).</p></div><div class="Text_text__CSJ_O"><p><strong>We wanted the automated rollback system to be based on Prometheus metrics. </strong>Our engineers are already familiar with Prometheus metrics and alerts, so we wanted automated rollbacks to be configured in a similar way. We have a number of generic alerts that apply to all services, so we could get significant coverage with low effort by configuring rollback rules to trigger on the same thresholds as our generic alerts. We also wanted to enable engineers to configure their own service-specific rollback rules in the future.</p></div><div class="Text_text__CSJ_O"><p><strong>We wanted a system that allowed us to easily add new deployment strategies in the future.</strong> Our initial release would just deliver automated rollbacks, but we wanted a system that could easily be extended to support progressive rollouts in the future. i.e. where we could automatically roll out a change to increasing subsets of traffic, all protected by automated rollback if errors were detected.</p></div><h1 class="Title_title__ofmsr Title_primary__c1rix text-heading-2 Title_left__V4Q3q" id="how-we-implemented-automated-rollback-using-argo-rollouts">How we implemented automated rollback using Argo Rollouts</h1><div class="Text_text__CSJ_O"><p>We weren’t fundamentally opposed to building support for this into our existing custom deployment system, but we decided to pick <a href="https://argoproj.github.io/argo-rollouts/" data-monzoanalytics-action-id="link_clicked" data-monzoanalytics-action-parameters="link_type=inline&amp;link_location=Text inline&amp;link_text=Argo Rollouts&amp;url=https://argoproj.github.io/argo-rollouts/&amp;currentUrl=/blog/2022/11/02/argo-rollouts-at-scale"><u>Argo Rollouts</u></a> because it satisfied all of our requirements and is becoming increasingly widely adopted within the Kubernetes community.</p></div><div class="Text_text__CSJ_O"><p>Argo Rollouts is a <a href="https://kubernetes.io/docs/concepts/architecture/controller/" data-monzoanalytics-action-id="link_clicked" data-monzoanalytics-action-parameters="link_type=inline&amp;link_location=Text inline&amp;link_text=Kubernetes controller&amp;url=https://kubernetes.io/docs/concepts/architecture/controller/&amp;currentUrl=/blog/2022/11/02/argo-rollouts-at-scale"><u>Kubernetes controller</u></a> that supports multiple - highly configurable - deployment strategies including full progressive rollouts. Despite this flexibility, we initially just wanted a basic canary deployment strategy that quickly rolled out all pods, followed by an analysis of metrics and potential automated rollback. This approach allowed us to deliver the user-facing changes incrementally.</p></div><div class="Text_text__CSJ_O"><p>The new deployment flow with Argo Rollouts looks like this:</p></div><div class="Block_block__umVpK Block_widthFull__Hgffj Block_transparent__bO8GO Block_textLeft__VQYuP Block_horizontalCenter__r3X72 Block_verticalMiddle__hz7OB Block_paddingHorizontalNone___78ZF Block_paddingVerticalNone__iiqDU Block_marginHorizontalNone__zWCSZ Block_marginVerticalMedium__bfxCr"><div class="Block_contentContainer__zHay8"><picture><source type="image/avif" srcSet="https://images.ctfassets.net/ro61k101ee59/3BNLVXrJ19xkR3bIHL8EEj/285fcad24ded9a3295309348ff4c2117/Cursor_and_Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png?w=2400&amp;q=75&amp;fm=avif"/><source type="image/webp" srcSet="https://images.ctfassets.net/ro61k101ee59/3BNLVXrJ19xkR3bIHL8EEj/285fcad24ded9a3295309348ff4c2117/Cursor_and_Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png?w=2400&amp;q=75&amp;fm=webp"/><img src="https://images.ctfassets.net/ro61k101ee59/3BNLVXrJ19xkR3bIHL8EEj/285fcad24ded9a3295309348ff4c2117/Cursor_and_Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png?w=2400&amp;q=75" alt="This flowchart describes the deployment flow for Argo Rollouts" width="2050" loading="lazy"/></picture></div></div><div class="Text_text__CSJ_O"><p>Argo Rollouts has built-in support for Prometheus metrics when it performs an analysis on a deployment. We configured a global set of rules that would trigger rollbacks based on the same metrics and thresholds we use for our generic alerts. Currently these are things like</p></div><ul class="List_List__d5Gvb List_light__uu_Tn List_margin__M1ON_"><li><div class="Text_text__CSJ_O"><p>The total RPC error rate is &gt;20 %</p></div></li><li><div class="Text_text__CSJ_O"><p>Any panics / crashes</p></div></li><li><div class="Text_text__CSJ_O"><p>Large spikes in database errors</p></div></li></ul><div class="Text_text__CSJ_O"><p>We needed to be able to differentiate new and old pods in a deployment in the Prometheus queries. We achieved this by tagging the pods and metrics with a phase label using Argo Rollouts’ <a href="https://argoproj.github.io/argo-rollouts/features/ephemeral-metadata/" data-monzoanalytics-action-id="link_clicked" data-monzoanalytics-action-parameters="link_type=inline&amp;link_location=Text inline&amp;link_text=Ephemeral Metadata&amp;url=https://argoproj.github.io/argo-rollouts/features/ephemeral-metadata/&amp;currentUrl=/blog/2022/11/02/argo-rollouts-at-scale"><u>Ephemeral Metadata</u></a> feature.</p></div><div class="Text_text__CSJ_O"><p>Engineers now trigger deployments from the command line in much the same way as before. The biggest change to user experience is the shift away from a synchronous deployment process. Whereas previously the CLI tooling would block until a deployment is complete, it could now take &gt;5 minutes for all of the analyses to run. We needed to rethink how we notified engineers of results.</p></div><div class="Text_text__CSJ_O"><p>We chose to use Slack to surface these notifications and we used the Argo Rollouts <a href="https://argoproj.github.io/argo-rollouts/features/notifications/" data-monzoanalytics-action-id="link_clicked" data-monzoanalytics-action-parameters="link_type=inline&amp;link_location=Text inline&amp;link_text=Notifications&amp;url=https://argoproj.github.io/argo-rollouts/features/notifications/&amp;currentUrl=/blog/2022/11/02/argo-rollouts-at-scale"><u>Notifications</u></a> feature for this. Specifically, we use the generic webhook integration to forward notifications to a custom service, which enriches them and forwards them to Slack.</p></div><div class="Text_text__CSJ_O"><p>The notifications looked like this:</p></div><div class="Block_block__umVpK Block_widthFull__Hgffj Block_transparent__bO8GO Block_textLeft__VQYuP Block_horizontalCenter__r3X72 Block_verticalMiddle__hz7OB Block_paddingHorizontalNone___78ZF Block_paddingVerticalNone__iiqDU Block_marginHorizontalNone__zWCSZ Block_marginVerticalMedium__bfxCr"><div class="Block_contentContainer__zHay8"><picture><source type="image/avif" srcSet="https://images.ctfassets.net/ro61k101ee59/1MieEhe1uRiE5huSXEh0rF/5be1fb55bc74aa9596564115fc01ccc8/Screenshot_2022-09-16_at_16.26.02.png?w=2400&amp;q=75&amp;fm=avif"/><source type="image/webp" srcSet="https://images.ctfassets.net/ro61k101ee59/1MieEhe1uRiE5huSXEh0rF/5be1fb55bc74aa9596564115fc01ccc8/Screenshot_2022-09-16_at_16.26.02.png?w=2400&amp;q=75&amp;fm=webp"/><img src="https://images.ctfassets.net/ro61k101ee59/1MieEhe1uRiE5huSXEh0rF/5be1fb55bc74aa9596564115fc01ccc8/Screenshot_2022-09-16_at_16.26.02.png?w=2400&amp;q=75" alt="Diagram showing the deployment started Slack message and two kinds of followup message: a successful case and a failure case." width="1932" loading="lazy"/></picture></div></div><div class="Text_text__CSJ_O"><p>Installing and configuring the system was relatively straightforward. The big challenge was the migration!</p></div><div class="Text_text__CSJ_O"><p>Getting to a proof of concept stage was quick; migrating all 2000+ microservices was not. Each service required a new Kubernetes resource (a <a href="https://argoproj.github.io/argo-rollouts/concepts/#rollout" data-monzoanalytics-action-id="link_clicked" data-monzoanalytics-action-parameters="link_type=inline&amp;link_location=Text inline&amp;link_text=Rollout&amp;url=https://argoproj.github.io/argo-rollouts/concepts/#rollout&amp;currentUrl=/blog/2022/11/02/argo-rollouts-at-scale"><u>Rollout</u></a>), and this wasn’t something we felt comfortable doing as a single one-off process. What if we hit scaling limits of Argo Rollouts once we hit a certain number of Rollout objects? We needed to be more cautious. We needed</p></div><ul class="List_List__d5Gvb List_light__uu_Tn List_margin__M1ON_"><li><div class="Text_text__CSJ_O"><p>a process to gradually and automatically migrate services</p></div></li><li><div class="Text_text__CSJ_O"><p>a process to revert a migration for a given service if required</p></div></li><li><div class="Text_text__CSJ_O"><p>support in our existing tooling for both migrated and un-migrated services</p></div></li></ul><div class="Text_text__CSJ_O"><p>So we built a new migrator service to migrate services in batches every day during the migration period, first in our staging environment and then at a slower cadence in production. All of our services have a “tier” which defines its criticality - we used this information to migrate the least critical services first.</p></div><div class="Text_text__CSJ_O"><p>Engineers enqueued services to migrate, and a regular cron job then triggered the actual migration. By using a queue to drive this, we could take advantage of retries, and could also reuse the same pipeline to revert migrations if we needed to.</p></div><div class="Block_block__umVpK Block_widthFull__Hgffj Block_transparent__bO8GO Block_textLeft__VQYuP Block_horizontalCenter__r3X72 Block_verticalMiddle__hz7OB Block_paddingHorizontalNone___78ZF Block_paddingVerticalNone__iiqDU Block_marginHorizontalNone__zWCSZ Block_marginVerticalMedium__bfxCr"><div class="Block_contentContainer__zHay8"><picture><source type="image/avif" srcSet="https://images.ctfassets.net/ro61k101ee59/4JUlCWOLMPShOMt7iuFsXO/9f4ba4082fe0e9a6dd6b2ae9c59d5827/Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png?w=2400&amp;q=75&amp;fm=avif"/><source type="image/webp" srcSet="https://images.ctfassets.net/ro61k101ee59/4JUlCWOLMPShOMt7iuFsXO/9f4ba4082fe0e9a6dd6b2ae9c59d5827/Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png?w=2400&amp;q=75&amp;fm=webp"/><img src="https://images.ctfassets.net/ro61k101ee59/4JUlCWOLMPShOMt7iuFsXO/9f4ba4082fe0e9a6dd6b2ae9c59d5827/Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png?w=2400&amp;q=75" alt="A description of the Migrator Pattern we use at Monzo. A cron triggers a Migrator Service and we use a queue to gradually roll it out" width="2028" loading="lazy"/></picture></div></div><div class="Text_text__CSJ_O"><p>We’ve successfully used this migrator pattern for a number of migrations at Monzo.</p></div><div class="Text_text__CSJ_O"><p>Normally Argo Rollouts requires Rollout objects to be used instead of vanilla Kubernetes Deployments. This makes migration (and reverting a migration) tricky because it’s destructive: you have to <em>replace</em> one resource with another. Luckily we could avoid this problem by making use of <a href="https://argoproj.github.io/argo-rollouts/migrating/#reference-deployment-from-rollout" data-monzoanalytics-action-id="link_clicked" data-monzoanalytics-action-parameters="link_type=inline&amp;link_location=Text inline&amp;link_text=an Argo Rollouts feature specifically for migrations&amp;url=https://argoproj.github.io/argo-rollouts/migrating/#reference-deployment-from-rollout&amp;currentUrl=/blog/2022/11/02/argo-rollouts-at-scale"><u>an Argo Rollouts feature specifically for migrations</u></a> which lets you <em>add</em> a Rollout resource that references an already existing Deployment.</p></div><div class="Text_text__CSJ_O"><p>The actual migration process for a single service looks like this:</p></div><div class="Block_block__umVpK Block_widthFull__Hgffj Block_transparent__bO8GO Block_textLeft__VQYuP Block_horizontalCenter__r3X72 Block_verticalMiddle__hz7OB Block_paddingHorizontalNone___78ZF Block_paddingVerticalNone__iiqDU Block_marginHorizontalNone__zWCSZ Block_marginVerticalMedium__bfxCr"><div class="Block_contentContainer__zHay8"><picture><source type="image/avif" srcSet="https://images.ctfassets.net/ro61k101ee59/4UTavMgRLlvOGC2X34TuyO/45dc0c8c3cad6cb788deb8d63926e877/Cursor_and_Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png?w=2400&amp;q=75&amp;fm=avif"/><source type="image/webp" srcSet="https://images.ctfassets.net/ro61k101ee59/4UTavMgRLlvOGC2X34TuyO/45dc0c8c3cad6cb788deb8d63926e877/Cursor_and_Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png?w=2400&amp;q=75&amp;fm=webp"/><img src="https://images.ctfassets.net/ro61k101ee59/4UTavMgRLlvOGC2X34TuyO/45dc0c8c3cad6cb788deb8d63926e877/Cursor_and_Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png?w=2400&amp;q=75" alt="Migration process flowchart which outlines the steps required to create a rollout, scale it out, make sure we don&#x27;t have any K8s deployments left, point the HPA to target the rollout object" width="2046" loading="lazy"/></picture></div></div><div class="Text_text__CSJ_O"><p>We used this process to migrate all services in our staging environments followed by production without any downtime.</p></div><h1 class="Title_title__ofmsr Title_primary__c1rix text-heading-2 Title_left__V4Q3q" id="lessons-learned">Lessons learned</h1><div class="Text_text__CSJ_O"><p><strong>Don’t underestimate </strong><strong><em>migrating</em></strong><strong> a large number of services and </strong><strong><em>integrating with existing tooling</em></strong><strong>.</strong> It’s easy to introduce a proof of concept automated rollback system, but integrating with existing tooling is really tricky and there are lots of edge cases. For us, migration and tooling work was &gt;90% of the effort.</p></div><div class="Text_text__CSJ_O"><p><strong>Heavily automate the migration process, and migrate as quickly as possible.</strong> We initially wrote a script for migrating services, but quickly realised that for 2k+ services, the throughput, resiliency and visibility were not sufficient. When you’re performing the same lengthy process &gt;1000 times, something like the migrator service we described above makes it a lot less painful. Another option is to decentralise the migration: e.g. provide service owners with the script and let them do the migration. We advise avoiding this if possible. We’ve tried this for other migrations and they have stalled indefinitely.</p></div><div class="Text_text__CSJ_O"><p><strong>Decouple UX changes from the introduction of a new internal system.</strong> We were tempted to support full progressive rollouts from the outset because Argo Rollouts supports it. But as we dug into the project we realised this would be a relatively disruptive change to developer’s workflows. In hindsight we could have reduced risk by initially introducing Argo Rollouts with no change to deployment behaviour by simulating the vanilla Kubernetes deployment strategy. Then we could have introduced Automated Rollback as a subsequent project.</p></div><div class="Text_text__CSJ_O"><p><strong>Expect issues with less mature third party systems.</strong> Argo Rollouts is less mature than Kubernetes, for example. As a clue, the resources have “alpha” in the name! We found a few bugs and limitations because of this. You need to be aware that by selecting a less mature system you’re taking on more responsibility and will likely have to contribute back to the project. This isn’t necessarily a bad thing with open source systems.</p></div><h1 class="Title_title__ofmsr Title_primary__c1rix text-heading-2 Title_left__V4Q3q" id="whats-next">What’s next</h1><div class="Text_text__CSJ_O"><p>Since landing this project, it has saved us from a number of bad deployments to production and there&#x27;s been good feedback from engineers that it&#x27;s a transparent but useful safety net.</p></div><div class="Text_text__CSJ_O"><p>Now that we have the foundations in place, we can start exploring more advanced rollout strategies: we’re particularly excited by full progressive rollouts, where a change is gradually rolled out to pods while analysis is run. We’d also like to provide a way for teams to configure their own rollback rules.</p></div><div class="Text_text__CSJ_O"><p>Ultimately our vision is to move to a GitOps model for deployments, and automated rollbacks is a step in this direction.</p></div><div class="___dynamic__authorsWrapper__ZVy68"><aside class="Author_Author__B0UIJ"><picture><source type="image/avif" srcSet="https://images.ctfassets.net/ro61k101ee59/22ciOtUAAtxcsBONQZqDWr/76a897856ec2ad5feed8bcff71dc8d58/will-sewell-resized.jpeg?w=300&amp;q=75&amp;fm=avif"/><source type="image/webp" srcSet="https://images.ctfassets.net/ro61k101ee59/22ciOtUAAtxcsBONQZqDWr/76a897856ec2ad5feed8bcff71dc8d58/will-sewell-resized.jpeg?w=300&amp;q=75&amp;fm=webp"/><img src="https://images.ctfassets.net/ro61k101ee59/22ciOtUAAtxcsBONQZqDWr/76a897856ec2ad5feed8bcff71dc8d58/will-sewell-resized.jpeg?w=300&amp;q=75" alt="Will is a Backend Engineer at Monzo" width="150" loading="lazy"/></picture><div><h2 class="Title_title__ofmsr Title_primary__c1rix text-heading-4 Title_left__V4Q3q marginBottom" id="will-sewell">Will Sewell</h2><div class="Text_text__CSJ_O Text_marginBottom___UK4L"><p>Backend Engineer</p></div><div class="Text_text__CSJ_O"><p><a class="Button_button__ceqVx Button_link__8caFw Button_inline__TsyTr Button_padWithSpaces__PFrni Button_center__nHk65" data-monzoanalytics-no-tracking="true" target="_self" href="/blog/author/will-sewell" rel="noopener noreferrer external"><span class="Button_text__5HT7_">Read more from Will</span></a></p></div></div></aside><aside class="Author_Author__B0UIJ"><picture><source type="image/avif" srcSet="https://images.ctfassets.net/ro61k101ee59/7EqrEKDDPYq4Z0JUcEzoMH/023c7588128a30e10e619b49a2081dff/JosephPallamidessi.jpg?w=300&amp;q=75&amp;fm=avif"/><source type="image/webp" srcSet="https://images.ctfassets.net/ro61k101ee59/7EqrEKDDPYq4Z0JUcEzoMH/023c7588128a30e10e619b49a2081dff/JosephPallamidessi.jpg?w=300&amp;q=75&amp;fm=webp"/><img src="https://images.ctfassets.net/ro61k101ee59/7EqrEKDDPYq4Z0JUcEzoMH/023c7588128a30e10e619b49a2081dff/JosephPallamidessi.jpg?w=300&amp;q=75" alt="Picture of Joseph Pallamidessi" width="150" loading="lazy"/></picture><div><h2 class="Title_title__ofmsr Title_primary__c1rix text-heading-4 Title_left__V4Q3q marginBottom" id="-joseph-pallamidessi"> Joseph Pallamidessi</h2><div class="Text_text__CSJ_O Text_marginBottom___UK4L"><p>Backend Engineer</p></div><div class="Text_text__CSJ_O"><p><a class="Button_button__ceqVx Button_link__8caFw Button_inline__TsyTr Button_padWithSpaces__PFrni Button_center__nHk65" data-monzoanalytics-no-tracking="true" target="_self" href="/blog/author/joseph-pallamidessi" rel="noopener noreferrer external"><span class="Button_text__5HT7_">Read more from </span></a></p></div></div></aside></div></article><aside class="SocialWidgets_SocialWidgets__g6Zf0 SocialWidgets_floating__D4FWX"><a class="Button_button__ceqVx Button_link__8caFw Button_center__nHk65 Button_hasIcon__bBm7S SocialWidgets_socialButton__F8TWm" data-monzoanalytics-no-tracking="true" target="_blank" href="http://www.facebook.com/sharer/sharer.php?lang=en&amp;u=https://monzo.com/blog/2022/11/02/argo-rollouts-at-scale" rel="noopener noreferrer external" aria-label="Share the article on Facebook"><span aria-hidden="true"><span class="Button_iconWrapper__A1sER"><img class="undefined Icon_icon__qTI5m Icon_forceLightMode__FW6x7 Icon_large__yyrlR Icon_image__YFizv" src="/images/social-logos/dark/facebook.svg" aria-hidden="true" alt="" loading="lazy"/></span></span></a><a class="Button_button__ceqVx Button_link__8caFw Button_center__nHk65 Button_hasIcon__bBm7S SocialWidgets_socialButton__F8TWm" data-monzoanalytics-no-tracking="true" target="_blank" href="mailto:?&amp;subject=Check%20out%20this%20blog%20post:https://monzo.com/blog/2022/11/02/argo-rollouts-at-scale&amp;body=https://monzo.com/blog/2022/11/02/argo-rollouts-at-scale" rel="noopener noreferrer external" aria-label="Share the article via email"><span aria-hidden="true"><span class="Button_iconWrapper__A1sER"><img class="undefined Icon_icon__qTI5m Icon_large__yyrlR" src="/images/icons/dark/email.svg" aria-hidden="true" alt="" loading="lazy"/></span></span></a><a class="Button_button__ceqVx Button_link__8caFw Button_center__nHk65 Button_hasIcon__bBm7S SocialWidgets_socialButton__F8TWm" data-monzoanalytics-no-tracking="true" target="_blank" href="https://www.linkedin.com/shareArticle?mini=true&amp;url=https://monzo.com/blog/2022/11/02/argo-rollouts-at-scale&amp;source=Monzo" rel="noopener noreferrer external" aria-label="Share the article on LinkedIn"><span aria-hidden="true"><span class="Button_iconWrapper__A1sER"><img class="undefined Icon_icon__qTI5m Icon_forceLightMode__FW6x7 Icon_large__yyrlR Icon_image__YFizv" src="/images/social-logos/dark/linkedin.svg" aria-hidden="true" alt="" loading="lazy"/></span></span></a></aside></div></div></div></main><section class="BasicSectionContainer_basicSectionContainer__c9eBG BasicSectionContainer_bgColor__RX0NM BasicSectionContainer_noBottomPadding__aY9CG BasicSectionContainer_fullWidthOnMobile__2O2mj"><div class="BasicSectionContainer_basicSectionContainerContent__kFgj_ BasicSectionContainer_fullWidthOnMobile__2O2mj"><footer class="Footer_footer__BdQyf"><span class="VisuallyHidden_root__K5ziU"><h2>Site information and links</h2></span><div class="Footer_navLinksContainer__OcoF_"><div class="FooterNavLinkGroup_footerNavLinkGroup__c_6Nj"><h3 class="FooterNavLinkGroup_title__JvBYI">Products</h3><nav aria-label="products navigation"><ul><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/current-account"><span class="Button_text__5HT7_">Current accounts</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/business-banking"><span class="Button_text__5HT7_">Business accounts</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/savings-isas/instant-access"><span class="Button_text__5HT7_">Savings</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/flex"><span class="Button_text__5HT7_">Credit cards</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/loans"><span class="Button_text__5HT7_">Loans</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/investments"><span class="Button_text__5HT7_">Investments</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/pensions"><span class="Button_text__5HT7_">Pensions</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/home-insurance"><span class="Button_text__5HT7_">Home Insurance</span></a></li></ul></nav></div><div class="FooterNavLinkGroup_footerNavLinkGroup__c_6Nj"><h3 class="FooterNavLinkGroup_title__JvBYI">Company</h3><nav aria-label="company navigation"><ul><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/careers"><span class="Button_text__5HT7_">Careers</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/press"><span class="Button_text__5HT7_">Press</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/blog"><span class="Button_text__5HT7_">Blog</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/book-of-money"><span class="Button_text__5HT7_">The Book of Money</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/investor-information"><span class="Button_text__5HT7_">Investor information</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/helping-everyone-belong-at-monzo"><span class="Button_text__5HT7_">Helping everyone belong</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/modern-slavery-statements"><span class="Button_text__5HT7_">Modern slavery statement</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/protecting-the-environment"><span class="Button_text__5HT7_">Sustainability</span></a></li></ul></nav></div><div class="FooterNavLinkGroup_footerNavLinkGroup__c_6Nj"><h3 class="FooterNavLinkGroup_title__JvBYI">Using Monzo</h3><nav aria-label="using monzo navigation"><ul><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" href="https://web.monzo.com" rel="noopener noreferrer external"><span class="Button_text__5HT7_">Web app login</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/accessibility"><span class="Button_text__5HT7_">Accessibility</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/supporting-customers"><span class="Button_text__5HT7_">Additional support</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/supporting-customers/life-events"><span class="Button_text__5HT7_">Life events</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" href="/legal/terms-and-conditions" rel="noopener noreferrer external"><span class="Button_text__5HT7_">Terms and Conditions</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/information-about-current-account-services"><span class="Button_text__5HT7_">Information about our current account services</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/learn/money-tomorrow"><span class="Button_text__5HT7_">Savings hub</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/loans/personal-loan-calculator"><span class="Button_text__5HT7_">Personal loan calculator</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/currency-converter"><span class="Button_text__5HT7_">Currency Converter</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/features/1p-saving-challenge"><span class="Button_text__5HT7_">1p Savings Challenge</span></a></li></ul></nav></div><div class="FooterNavLinkGroup_footerNavLinkGroup__c_6Nj"><h3 class="FooterNavLinkGroup_title__JvBYI">Help and security</h3><nav aria-label="help and security navigation"><ul><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/help"><span class="Button_text__5HT7_">Help centre</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/faq"><span class="Button_text__5HT7_">FAQs</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/fraud"><span class="Button_text__5HT7_">Fraud protection</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/security"><span class="Button_text__5HT7_">Security at Monzo</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/money-worries"><span class="Button_text__5HT7_">Money worries</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" href="/legal/fscs-information" rel="noopener noreferrer external"><span class="Button_text__5HT7_">FSCS information</span></a></li></ul></nav></div><div class="FooterNavLinkGroup_footerNavLinkGroup__c_6Nj"><h3 class="FooterNavLinkGroup_title__JvBYI">Site and app information</h3><nav aria-label="site and app information navigation"><ul><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" href="/legal/privacy-notice" rel="noopener noreferrer external"><span class="Button_text__5HT7_">Privacy notice</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" href="/legal/cookie-notice" rel="noopener noreferrer external"><span class="Button_text__5HT7_">Cookie notice</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" href="/legal/browser-support-policy" rel="noopener noreferrer external"><span class="Button_text__5HT7_">Browser support policy</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" href="/legal/mobile-operating-system-support-policy" rel="noopener noreferrer external"><span class="Button_text__5HT7_">Mobile operating system support policy</span></a></li><li><a class="Button_button__ceqVx Button_forceDarkMode__35W_z Button_link__8caFw Button_left__HTDVZ FooterNavLinkGroup_linkBtn__VII8V" data-monzoanalytics-no-tracking="true" target="_self" rel="" href="/service-information"><span class="Button_text__5HT7_">App performance</span></a></li></ul></nav></div></div><div class="Footer_localeContainer__T95ei"><nav aria-label="Choose a country/region. The current selection is United Kingdom" id="locale-button"><button aria-expanded="false" class="LocaleButton_button__gGHeR LocaleButton_darkButton__ermxp" data-monzoanalytics-no-tracking="true" type="button"><span class="LocaleButton_localeButton__Bnn7V"><span class="LocaleButton_localeButton__flag__3UTpO">🇬🇧</span><span>United Kingdom<!-- --> | <!-- -->English</span></span></button></nav></div><div class="Footer_logoContainer__8vGDY"><a data-monzoanalytics-action-id="link_clicked" data-monzoanalytics-action-parameters="link_location=footer&amp;link_text=Monzo Bank&amp;link_type=navigation&amp;url=/&amp;currentUrl=/blog/2022/11/02/argo-rollouts-at-scale" href="/"><svg class="Footer_logo__o21gC" width="1452" height="253" viewBox="0 0 1452 253" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Monzo Bank Logo"><path d="M0.832448 246.432V6.60055H65.7161V38.6625C80.6045 14.0273 102.478 2.07202 131.887 2.07202C161.296 2.07202 183.536 14.5708 199.344 40.474C224.709 14.2085 244.192 2.07202 274.52 2.07202C329.295 2.07202 360.174 32.5037 360.174 88.2952V246.432H290.328V116.553C290.328 83.0421 283.159 67.8263 256.323 67.8263C229.488 67.8263 214.6 84.3101 214.6 116.553V246.432H144.385V116.553C144.385 83.0421 137.217 67.8263 110.381 67.8263C83.5455 67.8263 68.6571 84.3101 68.6571 116.553V246.432H0.648743H0.832448Z" fill="#FF4F40"></path><path d="M442.896 37.9345C467.342 13.8427 499.508 0.438232 532.593 0.438232C567.884 0.438232 598.212 12.5747 622.842 35.2173C648.759 59.3091 662.728 92.458 662.728 124.882C662.728 161.11 650.413 190.999 625.967 215.091C600.969 239.726 570.273 252.587 533.512 252.587C496.751 252.587 466.423 240.088 441.609 214.185C418.082 190.093 405.767 159.299 405.767 125.788C405.767 92.2768 418.817 61.4828 442.896 37.7533V37.9345ZM533.88 185.746C565.678 185.746 591.411 159.48 591.411 126.875C591.411 94.2694 565.494 67.4605 533.88 67.4605C502.265 67.4605 476.348 93.7259 476.348 126.875C476.348 160.024 502.633 185.746 533.88 185.746Z" fill="#FF4F40"></path><path d="M708.122 246.43V6.59884H776.131L775.212 38.6608C790.1 14.569 812.892 2.07031 845.058 2.07031C895.421 2.07031 927.955 33.4077 927.955 88.2935V246.43H856.454V116.552C856.454 83.0404 849.286 67.8246 821.531 67.8246C793.776 67.8246 778.52 84.3084 778.52 116.552V246.43H708.306H708.122Z" fill="#FF4F40"></path><path d="M1231.6 37.9345C1256.05 13.8427 1288.22 0.438232 1321.3 0.438232C1356.59 0.438232 1386.92 12.5747 1411.55 35.2173C1437.47 59.3091 1451.44 92.458 1451.44 124.882C1451.44 161.11 1439.12 190.999 1414.67 215.091C1389.68 239.726 1358.98 252.587 1322.22 252.587C1285.46 252.587 1255.13 240.088 1230.32 214.185C1206.79 190.093 1194.47 159.299 1194.47 125.788C1194.47 92.2768 1207.52 61.4828 1231.6 37.7533V37.9345ZM1322.59 185.746C1354.39 185.746 1380.12 159.48 1380.12 126.875C1380.12 94.2694 1354.2 67.4605 1322.59 67.4605C1290.97 67.4605 1265.06 93.7259 1265.06 126.875C1265.06 160.024 1291.34 185.746 1322.59 185.746Z" fill="#FF4F40"></path><path d="M979.983 246.43V196.435L1080.16 68.7308H979.983V6.59937H1160.85V63.2966L1072.44 184.299H1162.69V246.43H980.167H979.983Z" fill="#FF4F40"></path><title>Monzo Logo</title></svg></a></div><div class="Footer_legalTextContainer__U0YPg"><div class="Text_text__CSJ_O Text_forceDarkMode__G2s7d Text_marginBottom___UK4L Footer_legalText__ib6uK"><p><br/><small>Monzo Bank Limited is a company registered in England and Wales (No.09446231). Monzo Bank Limited is authorised by the Prudential Regulation Authority and regulated by the Financial Conduct Authority and the Prudential Regulation Authority. Our financial Services Register number is 730427. Our address is Broadwalk House, 5 Appold St, London EC2A 2AG.</small></p></div></div><div class="Footer_socialsContainer__MOmX8"><a class="Button_button__ceqVx Button_link__8caFw Button_center__nHk65 Button_hasIcon__bBm7S" data-monzoanalytics-no-tracking="true" target="_blank" href="https://www.instagram.com/monzo" rel="noopener noreferrer external" aria-label="Instagram"><span aria-hidden="true"><span class="Button_iconWrapper__A1sER"><img class="undefined Icon_icon__qTI5m Icon_transparent__zbDVa Icon_xlarge__Mbxvh Icon_image__YFizv" src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/media/instagram.1bbdc4ed.svg" aria-hidden="true" alt="" loading="lazy"/></span></span></a><a class="Button_button__ceqVx Button_link__8caFw Button_center__nHk65 Button_hasIcon__bBm7S" data-monzoanalytics-no-tracking="true" target="_blank" href="https://www.facebook.com/monzobank" rel="noopener noreferrer external" aria-label="Facebook"><span aria-hidden="true"><span class="Button_iconWrapper__A1sER"><img class="undefined Icon_icon__qTI5m Icon_transparent__zbDVa Icon_xlarge__Mbxvh Icon_image__YFizv" src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/media/facebook.94997288.svg" aria-hidden="true" alt="" loading="lazy"/></span></span></a><a class="Button_button__ceqVx Button_link__8caFw Button_center__nHk65 Button_hasIcon__bBm7S" data-monzoanalytics-no-tracking="true" target="_blank" href="https://www.linkedin.com/company/monzo-bank" rel="noopener noreferrer external" aria-label="Linkedin"><span aria-hidden="true"><span class="Button_iconWrapper__A1sER"><img class="undefined Icon_icon__qTI5m Icon_transparent__zbDVa Icon_xlarge__Mbxvh Icon_image__YFizv" src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/media/linkedin.9fc87684.svg" aria-hidden="true" alt="" loading="lazy"/></span></span></a><a class="Button_button__ceqVx Button_link__8caFw Button_center__nHk65 Button_hasIcon__bBm7S" data-monzoanalytics-no-tracking="true" target="_blank" href="https://www.youtube.com/monzobank" rel="noopener noreferrer external" aria-label="Youtube"><span aria-hidden="true"><span class="Button_iconWrapper__A1sER"><img class="undefined Icon_icon__qTI5m Icon_transparent__zbDVa Icon_xlarge__Mbxvh Icon_image__YFizv" src="https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736/_next/static/media/youtube.8039ba10.svg" aria-hidden="true" alt="" loading="lazy"/></span></span></a></div><div class="Footer_appStoresContainer__sm4mV"><a data-monzoanalytics-no-tracking="true" class="AppStoreButton_appStoreButton__xXkuw AppStoreButton_medium__JobEX" href="https://apps.apple.com/app/monzo-mobile-banking/id1052238659"><img alt="Download on the App Store" loading="lazy" src="https://images.ctfassets.net/ro61k101ee59/44xU3iWkCju0mgyNK5LSY6/c85239d299e9a9533ecbe144c4d83741/app-store-v2.svg"/></a><a data-monzoanalytics-no-tracking="true" class="AppStoreButton_appStoreButton__xXkuw AppStoreButton_medium__JobEX" href="https://play.google.com/store/apps/details/Monzo_Bank_Mobile_Banking?id=co.uk.getmondo"><img alt="Get it on Google Play" loading="lazy" src="https://images.ctfassets.net/ro61k101ee59/1dUNY6U6unZBTZ6GjU0kHd/28f5e9cbcf9729074c0f8f36d97845c8/google-play-v2.svg"/></a></div></footer></div></section><div class="monzo-com-design-system" data-nosnippet="true" data-testid="cookie-controls"><dialog class="Dialog_Dialog__tJ9Sz Dialog_Dialog--hasBackdrop__dLZB4 Dialog_Dialog--large__pb9NO Dialog_Dialog--positionBottom___GQwj" aria-labelledby="cookie-banner-title"><div class="Dialog_Dialog__content__OF8Nm Dialog_Dialog__focusTarget__f5_BC" tabindex="0"><div class="CookieBanner_CookieBanner__Content__6bcno"><h2 id="cookie-banner-title" class="CookieBanner_CookieBanner__Title__KAthS">Can we use optional cookies?</h2><p style="color:var(--semantic-content-secondary)">We’re not talking about the crunchy, tasty kind. These cookies help us keep our website safe, give you a better experience and show more relevant ads. You can learn more about <a href="/legal/cookie-notice" target="_blank" rel="noopener noreferrer">our cookie policy</a>.</p><div class="CookieBanner_CookieBanner__Controls__MCAJj"><button aria-disabled="false" class="Button_Button__7VWsG Button_Button--primary__wwzbg Button_Button--medium__hxBko Button Button--primary Button--medium" type="button"><b class="Button_Button__content__mwBf1" aria-hidden="false">Accept all</b></button><button aria-disabled="false" class="Button_Button__7VWsG Button_Button--primary__wwzbg Button_Button--medium__hxBko Button Button--primary Button--medium" type="button"><b class="Button_Button__content__mwBf1" aria-hidden="false">Reject all</b></button><button aria-disabled="false" class="Button_Button__7VWsG Button_Button--secondary__tL6g5 Button_Button--medium__hxBko Button Button--secondary Button--medium" type="button"><b class="Button_Button__content__mwBf1" aria-hidden="false">Customise</b></button></div></div></div></dialog><dialog class="Dialog_Dialog__tJ9Sz Dialog_Dialog--hasBackdrop__dLZB4 Dialog_Dialog--medium__Rx4YW Dialog_Dialog--positionCenter__oMKwC" data-nosnippet="true" aria-labelledby="cookie-dialog-title"><header class="Dialog_Dialog__headerRow__xytC0"><div class="Dialog_Dialog__headerCol__3o6f2 Dialog_Dialog__focusTarget__f5_BC"></div><div class="Dialog_Dialog__btnCol__y55QD"><button aria-label="Close" aria-busy="false" aria-disabled="false" class="IconButton_IconButton__2Fva_ IconButton_IconButton--default__Svw4m IconButton_IconButton--small__OvgbK" type="button"><span class="IconButton_IconButton__content__5JrNv" aria-hidden="false"><svg class="BaseIcon_BaseIcon__Ses7V" width="20" height="20" viewBox="0 0 24 24" fill="none" role="graphics-symbol" aria-hidden="true"><path d="M12 13.4142L7.46446 17.9498C7.26411 18.1501 7.02841 18.2503 6.75735 18.2503C6.4863 18.2503 6.25059 18.1501 6.05025 17.9498C5.8499 17.7494 5.74973 17.5137 5.74973 17.2427C5.74973 16.9716 5.8499 16.7359 6.05025 16.5356L10.5858 12L6.05025 7.46449C5.8499 7.26414 5.74973 7.02844 5.74973 6.75738C5.74973 6.48633 5.8499 6.25062 6.05025 6.05028C6.25059 5.84993 6.4863 5.74976 6.75735 5.74976C7.02841 5.74976 7.26411 5.84993 7.46446 6.05028L12 10.5858L16.5355 6.05028C16.7359 5.84993 16.9716 5.74976 17.2426 5.74976C17.5137 5.74976 17.7494 5.84993 17.9497 6.05028C18.1501 6.25062 18.2503 6.48633 18.2503 6.75738C18.2503 7.02844 18.1501 7.26414 17.9497 7.46449L13.4142 12L17.9497 16.5356C18.1501 16.7359 18.2503 16.9716 18.2503 17.2427C18.2503 17.5137 18.1501 17.7494 17.9497 17.9498C17.7494 18.1501 17.5137 18.2503 17.2426 18.2503C16.9716 18.2503 16.7359 18.1501 16.5355 17.9498L12 13.4142Z" fill="currentColor"></path></svg></span></button></div></header><div class="Dialog_Dialog__content__OF8Nm Dialog_Dialog__focusTarget__f5_BC" tabindex="0"><div class="CookieDialog_CookieDialog__72vSN"><div class="CookieDialog_CookieDialog__CopyContent__DbqpO"><h2 id="cookie-dialog-title" class="text-heading-5">Adjust your cookie preferences</h2><p>We use 4 types of cookie. You can choose which cookies you’re happy for us to use. For more detail, and a list of the cookies we use, see the <a href="/legal/cookie-notice" target="_blank" rel="noopener noreferrer">Monzo cookie policy</a>.</p></div></div></div></dialog></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{"preview":false,"head":{"title":null,"locale":"en-GB","rootUrl":"https://monzo.com","slug":"/blog/2022/11/02/argo-rollouts-at-scale","description":"","ogImage":"//images.ctfassets.net/ro61k101ee59/4s4myNEBCsdZrP7lIGBnsA/c1b056542af37431abf760a84f28fc95/How_it_works.png"},"pageTheme":"default","sections":[{"content":[{"data":{},"marks":[],"nodeType":"text","value":"🗣️ This blog post is a complement to a talk we gave at ArgoCon2022. You can "},{"content":[{"data":{},"marks":[{"type":"underline"}],"nodeType":"text","value":"watch the recording"}],"data":{"uri":"https://www.youtube.com/watch?v=Vl5siKnYymY"},"nodeType":"hyperlink"},{"data":{},"marks":[],"nodeType":"text","value":" of the talk for more information."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"We’ve massively invested in the microservices philosophy and ship small and often. We have over 2,100 services and "},{"content":[{"data":{},"marks":[{"type":"underline"}],"nodeType":"text","value":"deploy over 100 times per day"}],"data":{"uri":"https://monzo.com/blog/2022/05/16/how-we-deploy-to-production-over-100-times-a-day"},"nodeType":"hyperlink"},{"data":{},"marks":[],"nodeType":"text","value":". In fact, we deployed to production more than 27,000 times 2021 🚀"}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"We have great tooling and a fast deployment pipeline, yet our deployment strategy was still trailing some of the modern best practices. We were too reliant on testing, alerting, and human discipline and we wanted to raise the bar."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"We introduced automated rollbacks to our platform using Argo Rollouts and made it the default deployment strategy for all our services. This helps us roll out changes safely and catch a wide class of problems related to deploying new code before they have much impact. This means customers will see fewer issues and our engineers will spend less time worrying about deployments and more time delivering value."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"In this post, we’ll focus on how we implemented and rolled it out (pun intended!) to all of our services!"}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"We didn’t want engineers to babysit deployments"}],"data":{},"nodeType":"heading-1"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"At Monzo, engineers trigger deployments by running a CLI command. We realised that although we do have a lot of mechanisms to catch bad changes at multiple levels, we relied on alerts being routed to engineers to react to potentially bad deployments. This was less than optimal because:"}],"data":{},"nodeType":"paragraph"},{"content":[{"content":[{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Humans notoriously miss stuff all the time; discipline is not a good alternative to automation"}],"data":{},"nodeType":"paragraph"}],"data":{},"nodeType":"list-item"},{"content":[{"content":[{"data":{},"marks":[],"nodeType":"text","value":"It was time consuming and added some cognitive load to the act of deploying, which was the very thing we wanted to make as frictionless as possible"}],"data":{},"nodeType":"paragraph"}],"data":{},"nodeType":"list-item"},{"content":[{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Rollouts were \"all or nothing\": provided pods start, a bad release could be rolled out to all pods before an engineer would be alerted"}],"data":{},"nodeType":"paragraph"}],"data":{},"nodeType":"list-item"}],"data":{},"nodeType":"unordered-list"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Longer term we would like to eliminate manually-triggered deployments and instead trigger all deployments from merges to our main git branch (also known as “GitOps”). We believe automated rollbacks are a requirement for moving to a GitOps deployment model because the deployment flow is more asynchronous, which makes it even less appropriate for engineers to babysit deployments."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"What we needed"}],"data":{},"nodeType":"heading-1"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Ultimately we needed a system to detect bad deployments and automatically roll back. Alongside this, we had some important additional requirements."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[{"type":"bold"}],"nodeType":"text","value":"We wanted the new system to be as transparent as possible to engineers."},{"data":{},"marks":[],"nodeType":"text","value":" At Monzo we pride ourselves on our simple and opinionated tooling. We provide tools for managing deployments that are specialised to our services and operate at a higher level of abstraction than the backing systems, such as Kubernetes. We wanted to preserve this with automated rollbacks, so whichever technology we picked had to be flexible enough to integrate deeply with our existing tooling (e.g. our command line tools for managing deployments, and Slack)."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[{"type":"bold"}],"nodeType":"text","value":"We wanted the automated rollback system to be based on Prometheus metrics. "},{"data":{},"marks":[],"nodeType":"text","value":"Our engineers are already familiar with Prometheus metrics and alerts, so we wanted automated rollbacks to be configured in a similar way. We have a number of generic alerts that apply to all services, so we could get significant coverage with low effort by configuring rollback rules to trigger on the same thresholds as our generic alerts. We also wanted to enable engineers to configure their own service-specific rollback rules in the future."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[{"type":"bold"}],"nodeType":"text","value":"We wanted a system that allowed us to easily add new deployment strategies in the future."},{"data":{},"marks":[],"nodeType":"text","value":" Our initial release would just deliver automated rollbacks, but we wanted a system that could easily be extended to support progressive rollouts in the future. i.e. where we could automatically roll out a change to increasing subsets of traffic, all protected by automated rollback if errors were detected."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"How we implemented automated rollback using Argo Rollouts"}],"data":{},"nodeType":"heading-1"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"We weren’t fundamentally opposed to building support for this into our existing custom deployment system, but we decided to pick "},{"content":[{"data":{},"marks":[{"type":"underline"}],"nodeType":"text","value":"Argo Rollouts"}],"data":{"uri":"https://argoproj.github.io/argo-rollouts/"},"nodeType":"hyperlink"},{"data":{},"marks":[],"nodeType":"text","value":" because it satisfied all of our requirements and is becoming increasingly widely adopted within the Kubernetes community."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Argo Rollouts is a "},{"content":[{"data":{},"marks":[{"type":"underline"}],"nodeType":"text","value":"Kubernetes controller"}],"data":{"uri":"https://kubernetes.io/docs/concepts/architecture/controller/"},"nodeType":"hyperlink"},{"data":{},"marks":[],"nodeType":"text","value":" that supports multiple - highly configurable - deployment strategies including full progressive rollouts. Despite this flexibility, we initially just wanted a basic canary deployment strategy that quickly rolled out all pods, followed by an analysis of metrics and potential automated rollback. This approach allowed us to deliver the user-facing changes incrementally."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"The new deployment flow with Argo Rollouts looks like this:"}],"data":{},"nodeType":"paragraph"},{"content":[],"data":{"target":{"fields":{"description":"This flowchart describes the deployment flow for Argo Rollouts","file":{"contentType":"image/png","details":{"image":{"height":874,"width":2050},"size":145097},"fileName":"Cursor_and_Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png","url":"//images.ctfassets.net/ro61k101ee59/3BNLVXrJ19xkR3bIHL8EEj/285fcad24ded9a3295309348ff4c2117/Cursor_and_Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png"},"title":"New deployment flow with Argo Rollouts"},"metadata":{"concepts":[],"tags":[]},"sys":{"createdAt":"2022-11-02T15:16:46.930Z","environment":{"sys":{"id":"master","linkType":"Environment","type":"Link"}},"id":"3BNLVXrJ19xkR3bIHL8EEj","locale":"en","publishedVersion":6,"revision":1,"space":{"sys":{"id":"ro61k101ee59","linkType":"Space","type":"Link"}},"type":"Asset","updatedAt":"2022-11-02T15:16:46.930Z"}}},"nodeType":"embedded-asset-block"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Argo Rollouts has built-in support for Prometheus metrics when it performs an analysis on a deployment. We configured a global set of rules that would trigger rollbacks based on the same metrics and thresholds we use for our generic alerts. Currently these are things like"}],"data":{},"nodeType":"paragraph"},{"content":[{"content":[{"content":[{"data":{},"marks":[],"nodeType":"text","value":"The total RPC error rate is \u003e20 %"}],"data":{},"nodeType":"paragraph"}],"data":{},"nodeType":"list-item"},{"content":[{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Any panics / crashes"}],"data":{},"nodeType":"paragraph"}],"data":{},"nodeType":"list-item"},{"content":[{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Large spikes in database errors"}],"data":{},"nodeType":"paragraph"}],"data":{},"nodeType":"list-item"}],"data":{},"nodeType":"unordered-list"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"We needed to be able to differentiate new and old pods in a deployment in the Prometheus queries. We achieved this by tagging the pods and metrics with a phase label using Argo Rollouts’ "},{"content":[{"data":{},"marks":[{"type":"underline"}],"nodeType":"text","value":"Ephemeral Metadata"}],"data":{"uri":"https://argoproj.github.io/argo-rollouts/features/ephemeral-metadata/"},"nodeType":"hyperlink"},{"data":{},"marks":[],"nodeType":"text","value":" feature."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Engineers now trigger deployments from the command line in much the same way as before. The biggest change to user experience is the shift away from a synchronous deployment process. Whereas previously the CLI tooling would block until a deployment is complete, it could now take \u003e5 minutes for all of the analyses to run. We needed to rethink how we notified engineers of results."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"We chose to use Slack to surface these notifications and we used the Argo Rollouts "},{"content":[{"data":{},"marks":[{"type":"underline"}],"nodeType":"text","value":"Notifications"}],"data":{"uri":"https://argoproj.github.io/argo-rollouts/features/notifications/"},"nodeType":"hyperlink"},{"data":{},"marks":[],"nodeType":"text","value":" feature for this. Specifically, we use the generic webhook integration to forward notifications to a custom service, which enriches them and forwards them to Slack."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"The notifications looked like this:"}],"data":{},"nodeType":"paragraph"},{"content":[],"data":{"target":{"fields":{"description":"Diagram showing the deployment started Slack message and two kinds of followup message: a successful case and a failure case.","file":{"contentType":"image/png","details":{"image":{"height":933,"width":1932},"size":766202},"fileName":"Screenshot 2022-09-16 at 16.26.02.png","url":"//images.ctfassets.net/ro61k101ee59/1MieEhe1uRiE5huSXEh0rF/5be1fb55bc74aa9596564115fc01ccc8/Screenshot_2022-09-16_at_16.26.02.png"},"title":"Argo Rollouts: Slack UX"},"metadata":{"concepts":[],"tags":[]},"sys":{"createdAt":"2022-10-12T10:27:48.091Z","environment":{"sys":{"id":"master","linkType":"Environment","type":"Link"}},"id":"1MieEhe1uRiE5huSXEh0rF","locale":"en","publishedVersion":5,"revision":1,"space":{"sys":{"id":"ro61k101ee59","linkType":"Space","type":"Link"}},"type":"Asset","updatedAt":"2022-10-12T10:27:48.091Z"}}},"nodeType":"embedded-asset-block"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Installing and configuring the system was relatively straightforward. The big challenge was the migration!"}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Getting to a proof of concept stage was quick; migrating all 2000+ microservices was not. Each service required a new Kubernetes resource (a "},{"content":[{"data":{},"marks":[{"type":"underline"}],"nodeType":"text","value":"Rollout"}],"data":{"uri":"https://argoproj.github.io/argo-rollouts/concepts/#rollout"},"nodeType":"hyperlink"},{"data":{},"marks":[],"nodeType":"text","value":"), and this wasn’t something we felt comfortable doing as a single one-off process. What if we hit scaling limits of Argo Rollouts once we hit a certain number of Rollout objects? We needed to be more cautious. We needed"}],"data":{},"nodeType":"paragraph"},{"content":[{"content":[{"content":[{"data":{},"marks":[],"nodeType":"text","value":"a process to gradually and automatically migrate services"}],"data":{},"nodeType":"paragraph"}],"data":{},"nodeType":"list-item"},{"content":[{"content":[{"data":{},"marks":[],"nodeType":"text","value":"a process to revert a migration for a given service if required"}],"data":{},"nodeType":"paragraph"}],"data":{},"nodeType":"list-item"},{"content":[{"content":[{"data":{},"marks":[],"nodeType":"text","value":"support in our existing tooling for both migrated and un-migrated services"}],"data":{},"nodeType":"paragraph"}],"data":{},"nodeType":"list-item"}],"data":{},"nodeType":"unordered-list"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"So we built a new migrator service to migrate services in batches every day during the migration period, first in our staging environment and then at a slower cadence in production. All of our services have a “tier” which defines its criticality - we used this information to migrate the least critical services first."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Engineers enqueued services to migrate, and a regular cron job then triggered the actual migration. By using a queue to drive this, we could take advantage of retries, and could also reuse the same pipeline to revert migrations if we needed to."}],"data":{},"nodeType":"paragraph"},{"content":[],"data":{"target":{"fields":{"description":"A description of the Migrator Pattern we use at Monzo. A cron triggers a Migrator Service and we use a queue to gradually roll it out","file":{"contentType":"image/png","details":{"image":{"height":1162,"width":2028},"size":551912},"fileName":"Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png","url":"//images.ctfassets.net/ro61k101ee59/4JUlCWOLMPShOMt7iuFsXO/9f4ba4082fe0e9a6dd6b2ae9c59d5827/Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png"},"title":"Migrator Pattern"},"metadata":{"concepts":[],"tags":[]},"sys":{"createdAt":"2022-11-02T15:22:30.426Z","environment":{"sys":{"id":"master","linkType":"Environment","type":"Link"}},"id":"4JUlCWOLMPShOMt7iuFsXO","locale":"en","publishedVersion":9,"revision":1,"space":{"sys":{"id":"ro61k101ee59","linkType":"Space","type":"Link"}},"type":"Asset","updatedAt":"2022-11-02T15:22:30.426Z"}}},"nodeType":"embedded-asset-block"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"We’ve successfully used this migrator pattern for a number of migrations at Monzo."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Normally Argo Rollouts requires Rollout objects to be used instead of vanilla Kubernetes Deployments. This makes migration (and reverting a migration) tricky because it’s destructive: you have to "},{"data":{},"marks":[{"type":"italic"}],"nodeType":"text","value":"replace"},{"data":{},"marks":[],"nodeType":"text","value":" one resource with another. Luckily we could avoid this problem by making use of "},{"content":[{"data":{},"marks":[{"type":"underline"}],"nodeType":"text","value":"an Argo Rollouts feature specifically for migrations"}],"data":{"uri":"https://argoproj.github.io/argo-rollouts/migrating/#reference-deployment-from-rollout"},"nodeType":"hyperlink"},{"data":{},"marks":[],"nodeType":"text","value":" which lets you "},{"data":{},"marks":[{"type":"italic"}],"nodeType":"text","value":"add"},{"data":{},"marks":[],"nodeType":"text","value":" a Rollout resource that references an already existing Deployment."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"The actual migration process for a single service looks like this:"}],"data":{},"nodeType":"paragraph"},{"content":[],"data":{"target":{"fields":{"description":"Migration process flowchart which outlines the steps required to create a rollout, scale it out, make sure we don't have any K8s deployments left, point the HPA to target the rollout object","file":{"contentType":"image/png","details":{"image":{"height":572,"width":2046},"size":180200},"fileName":"Cursor_and_Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png","url":"//images.ctfassets.net/ro61k101ee59/4UTavMgRLlvOGC2X34TuyO/45dc0c8c3cad6cb788deb8d63926e877/Cursor_and_Argo_Rollouts_at_scale__Bringing_Automated_Rollbacks_to_2_100__services_at_Monzo_-_Google_Docs.png"},"title":"Migration process"},"metadata":{"concepts":[],"tags":[]},"sys":{"createdAt":"2022-11-02T15:25:09.347Z","environment":{"sys":{"id":"master","linkType":"Environment","type":"Link"}},"id":"4UTavMgRLlvOGC2X34TuyO","locale":"en","publishedVersion":12,"revision":1,"space":{"sys":{"id":"ro61k101ee59","linkType":"Space","type":"Link"}},"type":"Asset","updatedAt":"2022-11-02T15:25:09.347Z"}}},"nodeType":"embedded-asset-block"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"We used this process to migrate all services in our staging environments followed by production without any downtime."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Lessons learned"}],"data":{},"nodeType":"heading-1"},{"content":[{"data":{},"marks":[{"type":"bold"}],"nodeType":"text","value":"Don’t underestimate "},{"data":{},"marks":[{"type":"italic"},{"type":"bold"}],"nodeType":"text","value":"migrating"},{"data":{},"marks":[{"type":"bold"}],"nodeType":"text","value":" a large number of services and "},{"data":{},"marks":[{"type":"italic"},{"type":"bold"}],"nodeType":"text","value":"integrating with existing tooling"},{"data":{},"marks":[{"type":"bold"}],"nodeType":"text","value":"."},{"data":{},"marks":[],"nodeType":"text","value":" It’s easy to introduce a proof of concept automated rollback system, but integrating with existing tooling is really tricky and there are lots of edge cases. For us, migration and tooling work was \u003e90% of the effort."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[{"type":"bold"}],"nodeType":"text","value":"Heavily automate the migration process, and migrate as quickly as possible."},{"data":{},"marks":[],"nodeType":"text","value":" We initially wrote a script for migrating services, but quickly realised that for 2k+ services, the throughput, resiliency and visibility were not sufficient. When you’re performing the same lengthy process \u003e1000 times, something like the migrator service we described above makes it a lot less painful. Another option is to decentralise the migration: e.g. provide service owners with the script and let them do the migration. We advise avoiding this if possible. We’ve tried this for other migrations and they have stalled indefinitely."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[{"type":"bold"}],"nodeType":"text","value":"Decouple UX changes from the introduction of a new internal system."},{"data":{},"marks":[],"nodeType":"text","value":" We were tempted to support full progressive rollouts from the outset because Argo Rollouts supports it. But as we dug into the project we realised this would be a relatively disruptive change to developer’s workflows. In hindsight we could have reduced risk by initially introducing Argo Rollouts with no change to deployment behaviour by simulating the vanilla Kubernetes deployment strategy. Then we could have introduced Automated Rollback as a subsequent project."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[{"type":"bold"}],"nodeType":"text","value":"Expect issues with less mature third party systems."},{"data":{},"marks":[],"nodeType":"text","value":" Argo Rollouts is less mature than Kubernetes, for example. As a clue, the resources have “alpha” in the name! We found a few bugs and limitations because of this. You need to be aware that by selecting a less mature system you’re taking on more responsibility and will likely have to contribute back to the project. This isn’t necessarily a bad thing with open source systems."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"What’s next"}],"data":{},"nodeType":"heading-1"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Since landing this project, it has saved us from a number of bad deployments to production and there's been good feedback from engineers that it's a transparent but useful safety net."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Now that we have the foundations in place, we can start exploring more advanced rollout strategies: we’re particularly excited by full progressive rollouts, where a change is gradually rolled out to pods while analysis is run. We’d also like to provide a way for teams to configure their own rollback rules."}],"data":{},"nodeType":"paragraph"},{"content":[{"data":{},"marks":[],"nodeType":"text","value":"Ultimately our vision is to move to a GitOps model for deployments, and automated rollbacks is a step in this direction."}],"data":{},"nodeType":"paragraph"}],"componentProps":{},"blogData":{"blogTitle":"Argo Rollouts at scale: Bringing Automated Rollbacks to 2,100+ services at Monzo","blogStartDate":"2022-11-07T00:00+00:00","blogCategories":[{"fields":{"categoryName":"Technology"},"metadata":{"concepts":[],"tags":[]},"sys":{"contentType":{"sys":{"id":"blogCategory","linkType":"ContentType","type":"Link"}},"createdAt":"2019-06-12T12:46:58.450Z","environment":{"sys":{"id":"master","linkType":"Environment","type":"Link"}},"id":"GL1Thz0Mk7TgQckzZd7Xc","locale":"en","publishedVersion":8,"revision":3,"space":{"sys":{"id":"ro61k101ee59","linkType":"Space","type":"Link"}},"type":"Entry","updatedAt":"2024-06-27T15:48:53.493Z"}}],"blogAuthors":[{"fields":{"jobTitle":"Backend Engineer","name":"Will Sewell","profilePicture":{"fields":{"description":"Will is a Backend Engineer at Monzo","file":{"contentType":"image/jpeg","details":{"image":{"height":152,"width":152},"size":10871},"fileName":"will-sewell-resized.jpeg","url":"//images.ctfassets.net/ro61k101ee59/22ciOtUAAtxcsBONQZqDWr/76a897856ec2ad5feed8bcff71dc8d58/will-sewell-resized.jpeg"},"title":"Will Sewell"},"metadata":{"concepts":[],"tags":[]},"sys":{"createdAt":"2022-05-15T12:51:27.574Z","environment":{"sys":{"id":"master","linkType":"Environment","type":"Link"}},"id":"22ciOtUAAtxcsBONQZqDWr","locale":"en","publishedVersion":5,"revision":1,"space":{"sys":{"id":"ro61k101ee59","linkType":"Space","type":"Link"}},"type":"Asset","updatedAt":"2022-05-15T12:51:27.574Z"}}},"metadata":{"concepts":[],"tags":[]},"sys":{"contentType":{"sys":{"id":"author","linkType":"ContentType","type":"Link"}},"createdAt":"2022-05-15T12:51:36.976Z","environment":{"sys":{"id":"master","linkType":"Environment","type":"Link"}},"id":"7m2u1kbYpyu0zbctcHJMhB","locale":"en","publishedVersion":4,"revision":1,"space":{"sys":{"id":"ro61k101ee59","linkType":"Space","type":"Link"}},"type":"Entry","updatedAt":"2022-05-15T12:51:36.976Z"}},{"fields":{"jobTitle":"Backend Engineer","name":" Joseph Pallamidessi","profilePicture":{"fields":{"description":"Picture of Joseph Pallamidessi","file":{"contentType":"image/jpeg","details":{"image":{"height":152,"width":152},"size":11655},"fileName":"JosephPallamidessi.jpg","url":"//images.ctfassets.net/ro61k101ee59/7EqrEKDDPYq4Z0JUcEzoMH/023c7588128a30e10e619b49a2081dff/JosephPallamidessi.jpg"},"title":"Joseph Pallamidessi"},"metadata":{"concepts":[],"tags":[]},"sys":{"createdAt":"2022-10-12T10:48:22.363Z","environment":{"sys":{"id":"master","linkType":"Environment","type":"Link"}},"id":"7EqrEKDDPYq4Z0JUcEzoMH","locale":"en","publishedVersion":5,"revision":1,"space":{"sys":{"id":"ro61k101ee59","linkType":"Space","type":"Link"}},"type":"Asset","updatedAt":"2022-10-12T10:48:22.363Z"}}},"metadata":{"concepts":[],"tags":[]},"sys":{"contentType":{"sys":{"id":"author","linkType":"ContentType","type":"Link"}},"createdAt":"2022-10-12T10:48:27.129Z","environment":{"sys":{"id":"master","linkType":"Environment","type":"Link"}},"id":"5KwlQofQhk9yDvk3isIKW5","locale":"en","publishedVersion":5,"revision":1,"space":{"sys":{"id":"ro61k101ee59","linkType":"Space","type":"Link"}},"type":"Entry","updatedAt":"2022-10-12T10:48:27.129Z"}}]},"nextLocale":"gb","locale":{"language":{"flag":"🇬🇧","name":"English","regionName":"United Kingdom","i18nName":"","languageCode":"en","contentfulLocaleCode":"en","localeCode":"en-GB","features":{"legal":true,"careers":true,"signUp":true,"marketing":true}},"region":{"alpha2":"GB","alpha3":"GBR","defaultLanguageCode":"en","shortName":"UK","name":"United Kingdom","flag":"🇬🇧","languages":[{"flag":"🇬🇧","name":"English","regionName":"United Kingdom","i18nName":"","languageCode":"en","contentfulLocaleCode":"en","localeCode":"en-GB","features":{"legal":true,"careers":true,"signUp":true,"marketing":true}}]}},"anonID":"anon_d24e61ad-433c-4c74-b718-eeba2375c4fe","experiments":[],"dynamicText":{"nav":"Sign up","cta":"Open an account for free"},"copy":{"app-store-button.app-store.label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Download on the App Store"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Download on the App Store"},"source":"TMS"}}},"app-store-button.play-store.label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Get it on Google Play"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Get it on Google Play"},"source":"TMS"}}},"app_monzo_com.article.table_of_contents":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Table of Contents"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Table of Contents"},"source":"TMS"}}},"app_monzo_com.layout_minimal.footer.legal_disclosure":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Monzo Bank Limited is a company registered in England and Wales (No. 09446231). Monzo Bank Ltd is authorised by the Prudential Regulation Authority (PRA) and regulated by the Financial Conduct Authority and the Prudential Regulation Authority. Our Financial Services Register number is 730427."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Monzo is a financial technology company; not a bank. Banking services are provided by Lead Bank, Member FDIC. The Monzo Personal and Joint Debit Card is issued by Lead Bank, Member FDIC, pursuant to licensing by Mastercard International Inc. See Lead Bank Terms and Lead Bank Cardholder Agreement for more details. Funds held in the Monzo deposit accounts are held with Lead Bank, Member FDIC, and are eligible for up to $250,000 in pass-through insurance in the event Lead Bank fails and if specific deposit insurance requirements are met and your card is registered. FDIC insurance does not protect funds in the event of Monzo's failure or from the risk of theft or fraud. See FDIC Prepaid Cards and Deposit Insurance Coverage. © 2025 Monzo, Inc. All rights reserved."},"source":"TMS"}}},"app_monzo_com.layout_minimal.footer.privacy_notice_link":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"https://monzo.com/legal/privacy-notice/"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"https://webviews.monzo.com/usa/privacy-notice"},"source":"TMS"}}},"app_monzo_com.layout_minimal.footer.privacy_notice_text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Privacy Notice"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Privacy Notice"},"source":"TMS"}}},"app_monzo_com.layout_minimal.footer.terms_link":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"https://monzo.com/legal/terms-and-conditions/"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"https://webviews.monzo.com/usa/lead-bank-terms-of-service"},"source":"TMS"}}},"app_monzo_com.layout_minimal.footer.terms_text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Terms and Conditions"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Lead Bank Terms"},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.category-advertising-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Advertising cookies"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Advertising cookies"},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.category-advertising-summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"What’s worse than ads? Irrelevant ads. We follow your trail of virtual cookie crumbs to show you more interesting ads and marketing."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"What’s worse than ads? Irrelevant ads. We follow your trail of virtual cookie crumbs to show you more interesting ads and marketing."},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.category-analytics-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Analytics cookies"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Analytics cookies"},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.category-analytics-summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"The science-y sounding cookie that’s interested in what you do on our website. Where you came from, what pages you visit and for how long."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"The science-y sounding cookie that’s interested in what you do on our website. Where you came from, what pages you visit and for how long."},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.category-functional-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Functional cookies"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Functional cookies"},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.category-functional-summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"These cookies allow optional features to work, but don't track you or your behaviour."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"These cookies allow optional features to work, but don't track you or your behaviour."},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.category-marketing-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Marketing cookies"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Marketing cookies"},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.category-marketing-summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"The curious cookie that gets to know you better. By knowing your preferences on the site, we can enhance your journey to make things more relevant to you."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"The curious cookie that gets to know you better. By knowing your preferences on the site, we can enhance your journey to make things more relevant to you."},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.category-required-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Required cookies"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Required cookies"},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.category-required-summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"This trusty cookie is a must for our website to work and keep you safe and secure. Need we say more?"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"This trusty cookie is a must for our website to work and keep you safe and secure. Need we say more?"},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.column-cookie":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Cookie"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Cookie"},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.column-expires":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Expires"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Expires"},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.column-used-to":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Used to"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Used to"},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.description":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"A full list of the cookies we use across Monzo’s websites."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"A full list of the cookies we use across Monzo’s websites."},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.empty":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Our cookie list is being updated. In the meantime, you can manage your cookie preferences on our \u003clink\u003ecookie notice\u003c/link\u003e page."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Our cookie list is being updated. In the meantime, you can manage your cookie preferences on our \u003clink\u003ecookie notice\u003c/link\u003e page."},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.hero-title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Cookie List"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Cookie List"},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.intro":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"These are the cookies we use across Monzo’s websites. To choose which ones we can use, visit our \u003clink\u003ecookie notice\u003c/link\u003e."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"These are the cookies we use across Monzo’s websites. To choose which ones we can use, visit our \u003clink\u003ecookie notice\u003c/link\u003e."},"source":"TMS"}}},"app_monzo_com.legal.cookie-list.page-title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Cookie List"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Cookie List"},"source":"TMS"}}},"app_monzo_com.legal.past_versions":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Past versions"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Past versions"},"source":"TMS"}}},"app_monzo_com.legal.version":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Version {{ label }}"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Version {{ label }}"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.autoselect_error_one":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You need a personal account to have a joint or an Under 16s account"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You need a personal account to have a joint or an Under 16s account"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.autoselect_error_two":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"so we can confirm who you are. Once you have it, you don't have to use it if you don't want to."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"so we can confirm who you are. Once you have it, you don't have to use it if you don't want to."},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.blurb":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You can choose more than one:"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You can choose more than one:"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.business_account_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Business"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Business"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.child_account_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Under 16s (for 6–15 year olds)"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Under 16s (for 6–15 year olds)"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.company_type_error":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Choose the option that best describes your business"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Choose the option that best describes your business"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.error":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"There was an unknown error submitting your details. Try again later."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"There was an unknown error submitting your details. Try again later."},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.idle_submit":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Get on the waitlist"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Get on the waitlist"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.joint_account_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Joint"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Joint"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.legend":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Preferred bank account(s)"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Preferred bank account(s)"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.loading_submit":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Joining the waitlist"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Joining the waitlist"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.other_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Other"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Other"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.personal_account_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Personal"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Personal"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.private_company_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"I'm a limited company"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"I'm a limited company"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.sole_trader_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"I'm a sole trader"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"I'm a sole trader"},"source":"TMS"}}},"app_monzo_com.waitlist.account_form.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Which accounts are you after?"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Which accounts are you after?"},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.error_generic":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"There was an unknown error submitting your details. Try again later."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"There was an unknown error submitting your details. Try again later."},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.error_missing_code":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"This link is missing its code. Please use the original link."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"This link is missing its code. Please use the original link."},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.form_blurb":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Be one of the first to try Monzo in Spain and earn €25 when you first pay with your card. [Ts\u0026Cs and eligibility criteria apply.]({{ terms_url }})"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Be one of the first to try Monzo in Spain and earn €25 when you first pay with your card. [Ts\u0026Cs and eligibility criteria apply.]({{ terms_url }})"},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.form_blurb_smallprint":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Only the first 250 people to sign through this page can skip the queue. The €25 is limited to the first 10,000 people to spend on their card."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Only the first 250 people to sign through this page can skip the queue. The €25 is limited to the first 10,000 people to spend on their card."},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.form_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You've been invited to the early access waitlist for Monzo in Spain 🇪🇸"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You've been invited to the early access waitlist for Monzo in Spain 🇪🇸"},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.language_en":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"English"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"English"},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.language_es":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Español"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Español"},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.meta_description":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Be one of the first to try Monzo in Spain and earn €25 when you first pay with your card."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Be one of the first to try Monzo in Spain and earn €25 when you first pay with your card."},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.og_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You've been invited to the early access waitlist for Monzo in Spain"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You've been invited to the early access waitlist for Monzo in Spain"},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.page_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Join the Monzo Spain waitlist"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Join the Monzo Spain waitlist"},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.success_message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"An email's on its way.\u003cbr\u003eOpen it up and secure\u003cbr\u003ea spot."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"An email's on its way.\u003cbr\u003eOpen it up and secure\u003cbr\u003ea spot."},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.terms":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Your data will be processed as part of our [privacy notice]({{ privacy_notice_url }}). By signing up to our waitlist you're giving us permission to contact you about products and services in your location, and how you can be involved."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Your data will be processed as part of our [privacy notice]({{ privacy_notice_url }}). By signing up to our waitlist you're giving us permission to contact you about products and services in your location, and how you can be involved."},"source":"TMS"}}},"app_monzo_com.waitlist.affiliates.terms_consent":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"By registering your interest, you are giving us permission to contact you about our products and services developing in your country and send information about how you can help shape them."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"By registering your interest, you are giving us permission to contact you about our products and services developing in your country and send information about how you can help shape them."},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.action_subtitle":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Or head to the app store and\u003cbr /\u003e search for \\u2018Monzo\\u2019."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Or head to the app store and\u003cbr /\u003e search for \\u2018Monzo\\u2019."},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.action_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Scan to download the Monzo app"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Scan to download the Monzo app"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.big_text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"It's happening"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"It's happening"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.carousel_four_subtitle":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Up to \\u20AC100,000 by the Deposit Guarantee Scheme,"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Up to \\u20AC100,000 by the Deposit Guarantee Scheme,"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.carousel_four_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Eligible deposits are protected"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Eligible deposits are protected"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.carousel_one_subtitle":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Changing the way they feel about money"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Changing the way they feel about money"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.carousel_one_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"{{ number_of_customers }} million customers in the UK"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"{{ number_of_customers }} million customers in the UK"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.carousel_three_subtitle":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Authorised by the Central Bank of Ireland."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Authorised by the Central Bank of Ireland."},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.carousel_three_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Monzo is a regulated Bank"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Monzo is a regulated Bank"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.carousel_two_subtitle":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"67% of people join through word of mouth."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"67% of people join through word of mouth."},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.carousel_two_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Customers love us"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Customers love us"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.download_button":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Download the app"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Download the app"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.download_details":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Download the Monzo app to find out your position and generally just take a look around."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Download the Monzo app to find out your position and generally just take a look around."},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.error_message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Something went wrong. Please try again later."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Something went wrong. Please try again later."},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.expired_header":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"It's been a while, can we try again?"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"It's been a while, can we try again?"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.expired_message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You signed up to the waitlist a some time ago, and this email confirmation link has gone stale. We've sent you a new one to your email inbox. \u003cbr /\u003e \u003cbr /\u003e Go confirm your email whilst it's fresh to help keep your new account secure, the link will expire in 2 weeks."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You signed up to the waitlist a some time ago, and this email confirmation link has gone stale. We've sent you a new one to your email inbox. \u003cbr /\u003e \u003cbr /\u003e Go confirm your email whilst it's fresh to help keep your new account secure, the link will expire in 2 weeks."},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.loading":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Confirming your email address"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Confirming your email address"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.next_step_one":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Download app"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Download app"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.next_step_three":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Find out your position"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Find out your position"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.next_step_two":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Tap \\u2018I\\u2019m new to Monzo\\u2019 on the first screen"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Tap \\u2018I\\u2019m new to Monzo\\u2019 on the first screen"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.next_steps_subtitle":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Head over to the app to unlock exclusive perks and content to get you set up with Monzo."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Head over to the app to unlock exclusive perks and content to get you set up with Monzo."},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.next_steps_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"What's Next"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"What's Next"},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.second_line_text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Your name's officially on the list."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Your name's officially on the list."},"source":"TMS"}}},"app_monzo_com.waitlist.confirm_page.unlaunched_message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"We love that you love Monzo!\u003cbr /\u003eYou'll be the first to know when we arrive."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"We love that you love Monzo!\u003cbr /\u003eYou'll be the first to know when we arrive."},"source":"TMS"}}},"app_monzo_com.waitlist.download_page.button_text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Open the app"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Open the app"},"source":"TMS"}}},"app_monzo_com.waitlist.download_page.desktop_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You'll need your phone for that"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You'll need your phone for that"},"source":"TMS"}}},"app_monzo_com.waitlist.download_page.mobile_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You'll need the app for that"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You'll need the app for that"},"source":"TMS"}}},"app_monzo_com.waitlist.download_page.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Download the Monzo app"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Download the Monzo app"},"source":"TMS"}}},"app_monzo_com.waitlist.form_error.existing_user_button":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Go to help article"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Go to help article"},"source":"TMS"}}},"app_monzo_com.waitlist.form_error.existing_user_header":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"It looks like you already have an account"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"It looks like you already have an account"},"source":"TMS"}}},"app_monzo_com.waitlist.form_error.existing_user_message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Unfortunately, you can only have a Monzo account in one country at a time, and you'll need to close your existing account first. \u003cbr /\u003e \u003cbr /\u003e Once you've closed your existing account, you can sign up to the waitlist again."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Unfortunately, you can only have a Monzo account in one country at a time, and you'll need to close your existing account first. \u003cbr /\u003e \u003cbr /\u003e Once you've closed your existing account, you can sign up to the waitlist again."},"source":"TMS"}}},"app_monzo_com.waitlist.info_form.email_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Email address"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Email address"},"source":"TMS"}}},"app_monzo_com.waitlist.info_form.invalid_email_message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You must enter a valid email address"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You must enter a valid email address"},"source":"TMS"}}},"app_monzo_com.waitlist.info_form.legend":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Personal information"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Personal information"},"source":"TMS"}}},"app_monzo_com.waitlist.info_form.submit":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Continue"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Continue"},"source":"TMS"}}},"app_monzo_com.waitlist.info_form.terms":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"We secure your data in line with our [privacy notice](/ie/legal/privacy-notice/).\u003cbr\u003e\u003cbr\u003e\nBy registering your interest, you are giving us permission to contact you about our products and services developing in your country and send information about how you can help shape them."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"We secure your data in line with our [privacy notice](/ie/legal/privacy-notice/).\u003cbr\u003e\u003cbr\u003e\nBy registering your interest, you are giving us permission to contact you about our products and services developing in your country and send information about how you can help shape them."},"source":"TMS"}}},"app_monzo_com.waitlist.launched.account_form.success_message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"An email's on its way.\u003cbr\u003eOpen it up and secure\u003cbr\u003ea spot."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"An email's on its way.\u003cbr\u003eOpen it up and secure\u003cbr\u003ea spot."},"source":"TMS"}}},"app_monzo_com.waitlist.launched.info_form.blurb":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Be one of the first people to have Monzo in {{ region_name }} and help us shape the experience together."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Be one of the first people to have Monzo in {{ region_name }} and help us shape the experience together."},"source":"TMS"}}},"app_monzo_com.waitlist.launched.info_form.blurb_referral":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Be one of the first to try Monzo in Spain. Join the waitlist, refer friends to move up the queue, and earn rewards if you're among the first customers to start spending."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Be one of the first to try Monzo in Spain. Join the waitlist, refer friends to move up the queue, and earn rewards if you're among the first customers to start spending."},"source":"TMS"}}},"app_monzo_com.waitlist.launched.info_form.offer":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Get €25 when you’re one of the first 10,000 to pay with your new Monzo card on a personal account.\u003cbr\u003e\u003cbr\u003eGet another €50 if you’re one of the first 1,000 businesses or sole traders to spend on your business banking card.\u003cbr\u003e\u003cbr\u003e[Offer Terms.]({{ promo_terms_url }})"},"source":"TMS"}}},"app_monzo_com.waitlist.launched.info_form.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Get your name on the list {{ region_flag }}"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Get your name on the list {{ region_flag }}"},"source":"TMS"}}},"app_monzo_com.waitlist.launched.info_form.title_referral":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Someone referred you to the early access waitlist for Monzo in {{ region_name }} {{ region_flag }}"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Someone referred you to the early access waitlist for Monzo in {{ region_name }} {{ region_flag }}"},"source":"TMS"}}},"app_monzo_com.waitlist.leave_page.success_blurb":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"We won't contact you about Monzo waitlist anymore."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"We won't contact you about Monzo waitlist anymore."},"source":"TMS"}}},"app_monzo_com.waitlist.leave_page.success_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You've been removed from the waitlist"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You've been removed from the waitlist"},"source":"TMS"}}},"app_monzo_com.waitlist.leave_page.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Leave the {{ region_name }} waitlist"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Leave the {{ region_name }} waitlist"},"source":"TMS"}}},"app_monzo_com.waitlist.page_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Join the {{ region_name }} waitlist"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Join the {{ region_name }} waitlist"},"source":"TMS"}}},"app_monzo_com.waitlist.referral_error.button":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Join waitlist without referral"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Join waitlist without referral"},"source":"TMS"}}},"app_monzo_com.waitlist.referral_error.message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"It could be an issue with the link or the person who sent it to you. Ask them to resend it so you can try again. \u003cbr /\u003e\u003cbr /\u003eYou can join the waitlist without their referral but neither of you will get bumped up the list."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"It could be an issue with the link or the person who sent it to you. Ask them to resend it so you can try again. \u003cbr /\u003e\u003cbr /\u003eYou can join the waitlist without their referral but neither of you will get bumped up the list."},"source":"TMS"}}},"app_monzo_com.waitlist.referral_error.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Ah, we have a problem"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Ah, we have a problem"},"source":"TMS"}}},"app_monzo_com.waitlist.regulatory_text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Monzo Bank Europe Designated Activity Company, trading as Monzo, is regulated by the Central Bank of Ireland. Monzo Bank Europe Designated Activity Company is a private company limited by shares registered in Ireland (registration no. 770591). Registered office: Unit 1 - Floor 4, One Central Plaza Dame Street Dublin 2 D02 K7K5, Ireland."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Monzo Bank Europe Designated Activity Company, trading as Monzo, is regulated by the Central Bank of Ireland. Monzo Bank Europe Designated Activity Company is a private company limited by shares registered in Ireland (registration no. 770591). Registered office: Unit 1 - Floor 4, One Central Plaza Dame Street Dublin 2 D02 K7K5, Ireland."},"source":"TMS"}}},"app_monzo_com.waitlist.risk_rating.description":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"This number is indicative of the risk of the product, 1/6 being indicative of lower risk and 6/6 of higher risk."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"This number is indicative of the risk of the product, 1/6 being indicative of lower risk and 6/6 of higher risk."},"source":"TMS"}}},"app_monzo_com.waitlist.risk_rating.disclaimer":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Monzo is a member of the Irish Deposit Guarantee Scheme. For money deposits the maximum guaranteed amount is 100,000 euros per account holder and entity."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Monzo is a member of the Irish Deposit Guarantee Scheme. For money deposits the maximum guaranteed amount is 100,000 euros per account holder and entity."},"source":"TMS"}}},"app_monzo_com.waitlist.risk_rating.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Risk indicator for all Monzo accounts"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Risk indicator for all Monzo accounts"},"source":"TMS"}}},"ayuda.article.feedback.no":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"No"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"No"},"source":"TMS"}}},"ayuda.article.feedback.question":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Was this article helpful?"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Was this article helpful?"},"source":"TMS"}}},"ayuda.article.feedback.thanks":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Thank you for your feedback!"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Thank you for your feedback!"},"source":"TMS"}}},"ayuda.article.feedback.yes":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Yes"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Yes"},"source":"TMS"}}},"ayuda.article.related.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Related articles"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Related articles"},"source":"TMS"}}},"ayuda.article.seo.title.prefix":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Monzo Help"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Monzo Help"},"source":"TMS"}}},"ayuda.breadcrumb.home":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Help "},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Help "},"source":"TMS"}}},"ayuda.category.empty":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Sorry, we don't have any articles for this category."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Sorry, we don't have any articles for this category."},"source":"TMS"}}},"ayuda.category.mobile.nav.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Help articles"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Help articles"},"source":"TMS"}}},"ayuda.contact.get.in.touch":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Get in touch with us in app"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Get in touch with us in app"},"source":"TMS"}}},"ayuda.contact.phone.disclaimer":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"The number above is only for customer support queries and we won't be able to help with other questions. We're free to call, but if you're calling from abroad, please be aware that you may be charged by your phone provider."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"The number above is only for customer support queries and we won't be able to help with other questions. We're free to call, but if you're calling from abroad, please be aware that you may be charged by your phone provider."},"source":"TMS"}}},"ayuda.contact.ps17.link":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"PS17/26"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"PS17/26"},"source":"TMS"}}},"ayuda.contact.ps17.middle":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"a document from the Financial Conduct Authority, see"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"a document from the Financial Conduct Authority, see"},"source":"TMS"}}},"ayuda.contact.ps17.prefix":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"If you're looking for our"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"If you're looking for our"},"source":"TMS"}}},"ayuda.contact.ps17.services.link":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Information about our Personal Current Account Services"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Information about our Personal Current Account Services"},"source":"TMS"}}},"ayuda.contact.psd.link":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"European Commission's frequently asked questions"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"European Commission's frequently asked questions"},"source":"TMS"}}},"ayuda.contact.psd.prefix":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"If you're looking for information about the Payment Services Directive, see the"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"If you're looking for information about the Payment Services Directive, see the"},"source":"TMS"}}},"ayuda.contact.rights.link":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"leaflet published by the European Commission"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"leaflet published by the European Commission"},"source":"TMS"}}},"ayuda.contact.rights.prefix":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"If you're looking for information on your rights when making payments in Europe, you can find it in this"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"If you're looking for information on your rights when making payments in Europe, you can find it in this"},"source":"TMS"}}},"ayuda.contact.table.account.type":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Account Type"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Account Type"},"source":"TMS"}}},"ayuda.contact.table.current.account":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Current Account"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Current Account"},"source":"TMS"}}},"ayuda.contact.table.from.abroad":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"From abroad"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"From abroad"},"source":"TMS"}}},"ayuda.contact.table.from.local":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"From the UK"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"From the US"},"source":"TMS"}}},"ayuda.emergency.cta":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Protect your account"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Protect your account"},"source":"TMS"}}},"ayuda.emergency.description":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Check your balance and freeze your card"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Check your balance and freeze your card"},"source":"TMS"}}},"ayuda.emergency.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Lost card or phone"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Lost card or phone"},"source":"TMS"}}},"ayuda.home.hero.alt":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"a group of speech bubbles with random icons, surrounded by stars."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"a group of speech bubbles with random icons, surrounded by stars."},"source":"TMS"}}},"ayuda.home.hero.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"How can we help you today?"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"How can we help you today?"},"source":"TMS"}}},"ayuda.home.seo.description":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"The home for everything you need to know about using Monzo."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"The home for everything you need to know about using Monzo."},"source":"TMS"}}},"checklist-email-submission.email.invalid":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Enter a valid email address"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Enter a valid email address"},"source":"TMS"}}},"consent-management.category-advertising.label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Advertising cookies"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Advertising cookies"},"source":"TMS"}}},"consent-management.category-advertising.summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"What’s worse than ads? Irrelevant ads. We follow your trail of virtual cookie crumbs to show you more interesting ads and marketing."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"What’s worse than ads? Irrelevant ads. We follow your trail of virtual cookie crumbs to show you more interesting ads and marketing."},"source":"TMS"}}},"consent-management.category-analytics.label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Analytics cookies"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Analytics cookies"},"source":"TMS"}}},"consent-management.category-analytics.summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"The science-y sounding cookie that’s interested in what you do on our website. Where you came from, what pages you visit and for how long."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"The science-y sounding cookie that’s interested in what you do on our website. Where you came from, what pages you visit and for how long."},"source":"TMS"}}},"consent-management.category-functionality.label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Functional cookies"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Functional cookies"},"source":"TMS"}}},"consent-management.category-functionality.summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"These cookies allow optional features to work, but don't track you or your behaviour."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"These cookies allow optional features to work, but don't track you or your behaviour."},"source":"TMS"}}},"consent-management.category-marketing.label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Marketing cookies"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Marketing cookies"},"source":"TMS"}}},"consent-management.category-marketing.summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"The curious cookie that gets to know you better. By knowing your preferences on the site, we can enhance your journey to make things more relevant to you."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"The curious cookie that gets to know you better. By knowing your preferences on the site, we can enhance your journey to make things more relevant to you."},"source":"TMS"}}},"consent-management.category-required.label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Required cookies"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Required cookies"},"source":"TMS"}}},"consent-management.category-required.summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"This trusty cookie is a must for our website to work and keep you safe and secure. Need we say more?"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"This trusty cookie is a must for our website to work and keep you safe and secure. Need we say more?"},"source":"TMS"}}},"consent-management.cookie-banner.allow-all":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Accept all"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Accept all"},"source":"TMS"}}},"consent-management.cookie-banner.cookie-notice-url":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"/legal/cookie-notice"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"/legal/cookie-notice"},"source":"TMS"}}},"consent-management.cookie-banner.customise":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Customise"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Customise"},"source":"TMS"}}},"consent-management.cookie-banner.reject-all":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Reject all"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Reject all"},"source":"TMS"}}},"consent-management.cookie-banner.summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"We’re not talking about the crunchy, tasty kind. These cookies help us keep our website safe, give you a better experience and show more relevant ads. You can learn more about \u003cLink\u003eour cookie policy\u003c/Link\u003e."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"We’re not talking about the crunchy, tasty kind. These cookies help us keep our website safe, give you a better experience and show more relevant ads. You can learn more about \u003cLink\u003eour cookie policy\u003c/Link\u003e."},"source":"TMS"}}},"consent-management.cookie-banner.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Can we use optional cookies?"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Can we use optional cookies?"},"source":"TMS"}}},"consent-management.cookie-dialog.cookie-notice-url":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"/legal/cookie-notice"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"/legal/cookie-notice"},"source":"TMS"}}},"consent-management.cookie-dialog.summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"We use 4 types of cookie. You can choose which cookies you’re happy for us to use. For more detail, and a list of the cookies we use, see the \u003cLink\u003eMonzo cookie policy\u003c/Link\u003e."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"We use 4 types of cookie. You can choose which cookies you’re happy for us to use. For more detail, and a list of the cookies we use, see the \u003cLink\u003eMonzo cookie policy\u003c/Link\u003e."},"source":"TMS"}}},"consent-management.cookie-dialog.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Adjust your cookie preferences"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Adjust your cookie preferences"},"source":"TMS"}}},"consent-management.cookie-form.save-preferences":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Save preferences"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Save preferences"},"source":"TMS"}}},"copy.human_date.at":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"{{day}} at {{time}}"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"{{day}} at {{time}}"},"source":"TMS"}}},"copy.human_date.days_from_now":{"localized_messages":{"en-GB":{"type":"PLURAL_FORMS","plural_forms":{"one":{"content":"{{count}} day from now"},"other":"{{count}} days from now","plural_type":""},"source":"TMS"},"en-US":{"type":"PLURAL_FORMS","plural_forms":{"one":{"content":"{{count}} day from now"},"other":"{{count}} days from now","plural_type":""},"source":"TMS"}}},"copy.human_date.today":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Today"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Today"},"source":"TMS"}}},"copy.human_date.tomorrow":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Tomorrow"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Tomorrow"},"source":"TMS"}}},"copy.human_date.yesterday":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Yesterday"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Yesterday"},"source":"TMS"}}},"copy.human_time_interval.days":{"localized_messages":{"en-GB":{"type":"PLURAL_FORMS","plural_forms":{"one":{"content":"{{count}} day"},"other":"{{count}} days","plural_type":""},"source":"TMS"},"en-US":{"type":"PLURAL_FORMS","plural_forms":{"one":{"content":"{{count}} day"},"other":"{{count}} days","plural_type":""},"source":"TMS"}}},"copy.human_time_interval.hours":{"localized_messages":{"en-GB":{"type":"PLURAL_FORMS","plural_forms":{"one":{"content":"{{count}} hour"},"other":"{{count}} hours","plural_type":""},"source":"TMS"},"en-US":{"type":"PLURAL_FORMS","plural_forms":{"one":{"content":"{{count}} hour"},"other":"{{count}} hours","plural_type":""},"source":"TMS"}}},"copy.human_time_interval.minutes":{"localized_messages":{"en-GB":{"type":"PLURAL_FORMS","plural_forms":{"one":{"content":"{{count}} minute"},"other":"{{count}} minutes","plural_type":""},"source":"TMS"},"en-US":{"type":"PLURAL_FORMS","plural_forms":{"one":{"content":"{{count}} minute"},"other":"{{count}} minutes","plural_type":""},"source":"TMS"}}},"copy.human_time_interval.seconds":{"localized_messages":{"en-GB":{"type":"PLURAL_FORMS","plural_forms":{"one":{"content":"{{count}} second"},"other":"{{count}} seconds","plural_type":""},"source":"TMS"},"en-US":{"type":"PLURAL_FORMS","plural_forms":{"one":{"content":"{{count}} second"},"other":"{{count}} seconds","plural_type":""},"source":"TMS"}}},"copy.human_time_interval.weeks":{"localized_messages":{"en-GB":{"type":"PLURAL_FORMS","plural_forms":{"one":{"content":"{{count}} week"},"other":"{{count}} weeks","plural_type":""},"source":"TMS"},"en-US":{"type":"PLURAL_FORMS","plural_forms":{"one":{"content":"{{count}} week"},"other":"{{count}} weeks","plural_type":""},"source":"TMS"}}},"cta-section.es.subtitle":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Join over {{ customerCount }} personal and business customers in the UK already banking with Monzo."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Join over {{ customerCount }} personal and business customers in the UK already banking with Monzo."},"source":"TMS"}}},"cta-section.es.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Get early access"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Get early access"},"source":"TMS"}}},"error-page.homepage-button.text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Visit the homepage"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Visit the homepage"},"source":"TMS"}}},"error-page.not-found.message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Sorry, we can't find the page you're looking for"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Sorry, we can't find the page you're looking for"},"source":"TMS"}}},"error-page.not-found.seo-description":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Page not found"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Page not found"},"source":"TMS"}}},"error-page.server-error.message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Sorry, we can't find the page you're looking for"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Sorry, we can't find the page you're looking for"},"source":"TMS"}}},"error-page.server-error.seo-description":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Something went wrong"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Something went wrong"},"source":"TMS"}}},"legal.download_as_pdf.default":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Download as PDF"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Download as PDF"},"source":"TMS"}}},"legal.meta_description.default":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Monzo are building a smart bank on your smartphone and we need your help to create the bank of the future."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Monzo are building a smart bank on your smartphone and we need your help to create the bank of the future."},"source":"TMS"}}},"legal.og_description.default":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Monzo are building a smart bank on your smartphone and we need your help to create the bank of the future."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Monzo are building a smart bank on your smartphone and we need your help to create the bank of the future."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.announcement.empty":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Enter your monthly take-home target to see your estimate."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Enter your monthly take-home target to see your estimate."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.announcement.summary":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You'd need to invoice {{ invoice }} a month to take home {{ takeHome }}. Monthly cuota {{ cuota }}, income tax {{ tax }}."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You'd need to invoice {{ invoice }} a month to take home {{ takeHome }}. Monthly cuota {{ cuota }}, income tax {{ tax }}."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.breakdown.a_month":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"{{ amount }} a month"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"{{ amount }} a month"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.breakdown.after_tarifa_plana":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"After 12 months tarifa plana"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"After 12 months tarifa plana"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.breakdown.approx_a_month":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"approx. {{ amount }} a month"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"approx. {{ amount }} a month"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.breakdown.been_autonomo_before":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Been autónomo before?"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Been autónomo before?"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.breakdown.est_income_tax":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Estimated income tax"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Estimated income tax"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.breakdown.est_monthly_cuota":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Estimated monthly cuota"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Estimated monthly cuota"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.breakdown.filed_quarterly":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"(Filed quarterly)"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"(Filed quarterly)"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.breakdown.how_tarifa_plana_works":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"How tarifa plana works"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"How tarifa plana works"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.breakdown.how_we_estimated_tax":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"How we estimated your tax"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"How we estimated your tax"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.breakdown.tarifa_plana_reduction":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"(Tarifa plana reduction)"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"(Tarifa plana reduction)"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.breakdown.toggle":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"What affects your take home"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"What affects your take home"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.breakdown.where_cuota_goes":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Where your cuota goes"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Where your cuota goes"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.cliff.after_tp_invoice":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"After tarifa plana, you'd need to invoice"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"After tarifa plana, you'd need to invoice"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.cliff.save_per_month":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Save \u003cstrong\u003e{{ amount }}\u003c/strong\u003e a month in cuota for your first year"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Save \u003cstrong\u003e{{ amount }}\u003c/strong\u003e a month in cuota for your first year"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.after_tarifa_plana":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"After 12 months tarifa plana"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"After 12 months tarifa plana"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.approx_a_month":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"approx. {{ amount }} a month"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"approx. {{ amount }} a month"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.aria_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Contribution level"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Contribution level"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.cuota_for_year":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Estimated monthly cuota for a year"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Estimated monthly cuota for a year"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.description_balanced":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Reasonable cover without stretching your budget now."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Reasonable cover without stretching your budget now."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.description_more_cover":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Higher cuota. More cover for sick pay, pension and other benefits."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Higher cuota. More cover for sick pay, pension and other benefits."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.description_pay_less":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Lower cuota. Less cover for sick pay, pension and other benefits."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Lower cuota. Less cover for sick pay, pension and other benefits."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.help":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Your cuota goes into Social Security. It covers your pension, sick pay, and parental leave — amongst other things."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Your cuota goes into Social Security. It covers your pension, sick pay, and parental leave — amongst other things."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.option_balanced":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"General cover"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"General cover"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.option_more_cover":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"More cover"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"More cover"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.option_pay_less":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Basic cover"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Basic cover"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.tarifa_plana_tag":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"(Tarifa plana)"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"(Tarifa plana)"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Select your contribution"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Select your contribution"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.contribution.where_cuota_goes":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Where your cuota goes"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Where your cuota goes"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.estimate.add_details":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Add details to see estimate"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Add details to see estimate"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.estimate.cuota_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Cuota {{ amount }}"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Cuota {{ amount }}"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.estimate.excluding_iva":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"excluding IVA."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"excluding IVA."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.estimate.for_first_12_months":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"for your first 12 months."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"for your first 12 months."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.estimate.illustrative_disclaimer":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"This is just an estimate to give you an idea."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"This is just an estimate to give you an idea."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.estimate.take_home_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Take home {{ amount }}"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Take home {{ amount }}"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.estimate.tax_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Tax {{ amount }}"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Tax {{ amount }}"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.estimate.youd_need_to_invoice":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You'd need to invoice"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You'd need to invoice"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.income.field_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Monthly take-home target in euros"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Monthly take-home target in euros"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.income.help":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Type an exact amount or drag the slider to explore."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Type an exact amount or drag the slider to explore."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.income.slider_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Monthly take-home target slider"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Monthly take-home target slider"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.income.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"How much do you want to bring home each month?"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"How much do you want to bring home each month?"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.income.validation_range":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Enter an amount between {{ min }} and {{ max }}"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Enter an amount between {{ min }} and {{ max }}"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.close":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Close"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Close"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.how_tarifa_plana.body_1":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Based on your answers, you may qualify for tarifa plana, reducing your cuota to \u003cstrong\u003earound 88,64 € a month\u003c/strong\u003e in your first year. That’s an €80 baseline plus 0,9% MEI on the minimum contribution base."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Based on your answers, you may qualify for tarifa plana, reducing your cuota to \u003cstrong\u003earound 88,64 € a month\u003c/strong\u003e in your first year. That’s an €80 baseline plus 0,9% MEI on the minimum contribution base."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.how_tarifa_plana.body_2":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"To keep it, you'll need to stay registered and keep your Social Security payments up to date."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"To keep it, you'll need to stay registered and keep your Social Security payments up to date."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.how_tarifa_plana.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"How tarifa plana works"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"How tarifa plana works"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.how_tax_estimate.body_1":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"This is an approximate figure to help you plan. Spanish IRPF (Impuesto sobre la Renta de las Personas Físicas) is progressive, and we apply the national rates based on your estimated yearly profit. Everyone gets a tax-free personal allowance around {{ allowance }} a year for a single person with no dependents. We take that off before working out what you owe, which is why an estimate below it can show {{ zero }}."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"This is an approximate figure to help you plan. Spanish IRPF (Impuesto sobre la Renta de las Personas Físicas) is progressive, and we apply the national rates based on your estimated yearly profit. Everyone gets a tax-free personal allowance around {{ allowance }} a year for a single person with no dependents. We take that off before working out what you owe, which is why an estimate below it can show {{ zero }}."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.how_tax_estimate.body_2":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"We work from your net profit: what you invoice, minus expenses. We've assumed the standard 7% deduction Hacienda allows without receipts, capped at {{ cap }} a year. If you've got more business expenses to claim (like office rent, tools, professional services, or travel) your real tax bill will be lower than this."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"We work from your net profit: what you invoice, minus expenses. We've assumed the standard 7% deduction Hacienda allows without receipts, capped at {{ cap }} a year. If you've got more business expenses to claim (like office rent, tools, professional services, or travel) your real tax bill will be lower than this."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.how_tax_estimate.body_3":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"This is general guidance. For the exact figure, check with your gestor when you file."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"This is general guidance. For the exact figure, check with your gestor when you file."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.how_tax_estimate.body_4":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"This is general guidance. Your gestor will give you the precise figure when you file."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"This is general guidance. Your gestor will give you the precise figure when you file."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.how_tax_estimate.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"How we estimated your tax"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"How we estimated your tax"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.where_cuota_goes.body_1":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"We estimated this from your projected income and the contribution level you chose."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"We estimated this from your projected income and the contribution level you chose."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.where_cuota_goes.cese_desc":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Unemployment insurance."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Unemployment insurance."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.where_cuota_goes.cese_term":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Cese de actividad (approx. 0,9%)"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Cese de actividad (approx. 0,9%)"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.where_cuota_goes.common_desc":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Includes: Pension, disability pension, temporary disability/sick pay, caregiver leave."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Includes: Pension, disability pension, temporary disability/sick pay, caregiver leave."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.where_cuota_goes.common_term":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Contingencias comunes (approx. 28,3%)"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Contingencias comunes (approx. 28,3%)"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.where_cuota_goes.formacion_term":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Formación profesional (approx. 0,1%)"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Formación profesional (approx. 0,1%)"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.where_cuota_goes.mei_term":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Mecanismo de Equidad Intergeneracional — MEI (approx. 0,9%)"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Mecanismo de Equidad Intergeneracional — MEI (approx. 0,9%)"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.where_cuota_goes.professional_desc":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Workplace accidents and illnesses."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Workplace accidents and illnesses."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.where_cuota_goes.professional_term":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Contingencias profesionales (approx. 1,3%)"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Contingencias profesionales (approx. 1,3%)"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.where_cuota_goes.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Where your cuota goes"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Where your cuota goes"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.why_first_time.body_1":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"New autónomos may qualify for the \u003cstrong\u003etarifa plana\u003c/strong\u003e, which reduces the \u003cstrong\u003ecuota\u003c/strong\u003e payment for the first year."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"New autónomos may qualify for the \u003cstrong\u003etarifa plana\u003c/strong\u003e, which reduces the \u003cstrong\u003ecuota\u003c/strong\u003e payment for the first year."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.why_first_time.body_2":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"\u003cstrong\u003eCuota\u003c/strong\u003e is your monthly autónomo contribution to Social Security. See more information about your cuota in the 'Select your contribution' section below."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"\u003cstrong\u003eCuota\u003c/strong\u003e is your monthly autónomo contribution to Social Security. See more information about your cuota in the 'Select your contribution' section below."},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.modal.why_first_time.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Why we are asking this"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Why we are asking this"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.status.label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Your autónomo status"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Your autónomo status"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.status.option_currently":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"I'm currently autónomo, past tarifa plana"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"I'm currently autónomo, past tarifa plana"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.status.option_currently_in_tp":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"I'm currently autónomo, on tarifa plana"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"I'm currently autónomo, on tarifa plana"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.status.option_no":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"I'm a first-time autónomo"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"I'm a first-time autónomo"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.status.option_stopped_over_2y":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"I stopped being autónomo over 2 years ago"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"I stopped being autónomo over 2 years ago"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.status.option_stopped_within_2y":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"I stopped being autónomo within the last 2 years"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"I stopped being autónomo within the last 2 years"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.status.short_currently":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Currently autónomo, past tarifa plana"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Currently autónomo, past tarifa plana"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.status.short_currently_in_tp":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Currently autónomo, on tarifa plana"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Currently autónomo, on tarifa plana"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.status.short_no":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"No, it's my first time"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"No, it's my first time"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.status.short_stopped_over_2y":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Yes, over 2 years ago"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Yes, over 2 years ago"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.status.short_stopped_within_2y":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Yes, in the last 2 years"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Yes, in the last 2 years"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.status.why_asking":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Why we're asking"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Why we're asking"},"source":"TMS"}}},"lib_monzo_com_core.autonomo_calculator.sticky.aria_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"See the full estimate"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"See the full estimate"},"source":"TMS"}}},"lib_monzo_com_core.ecb_rates.currency_selector.ecb_currencies_group":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"European Central Bank currencies"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"European Central Bank currencies"},"source":"TMS"}}},"lib_monzo_com_core.ecb_rates.currency_selector.label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Please choose a currency to see our exchange rate."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Please choose a currency to see our exchange rate."},"source":"TMS"}}},"lib_monzo_com_core.ecb_rates.currency_selector.other_currencies_group":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Other currencies"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Other currencies"},"source":"TMS"}}},"lib_monzo_com_core.ecb_rates.loading":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Loading..."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Loading..."},"source":"TMS"}}},"lib_monzo_com_core.ecb_rates.rate_details.date_updated":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Date updated:"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Date updated:"},"source":"TMS"}}},"lib_monzo_com_core.ecb_rates.rate_details.ecb_rate_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"European Central Bank rate"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"European Central Bank rate"},"source":"TMS"}}},"lib_monzo_com_core.ecb_rates.rate_details.mastercard_rate_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Mastercard Rate"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Mastercard Rate"},"source":"TMS"}}},"lib_monzo_com_core.ecb_rates.rate_details.monzo_markup_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Monzo mark-up \u003cbr /\u003e over Mastercard rate"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Monzo mark-up \u003cbr /\u003e over Mastercard rate"},"source":"TMS"}}},"lib_monzo_com_core.ecb_rates.rate_details.total_markup_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Total mark-up \u003cbr /\u003e over European Central Bank rate"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Total mark-up \u003cbr /\u003e over European Central Bank rate"},"source":"TMS"}}},"lib_monzo_com_core.youtube_video.container_aria_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"YouTube video"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"YouTube video"},"source":"TMS"}}},"lib_monzo_com_core.youtube_video.cookies_dialog.action":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Update preferences"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Update preferences"},"source":"TMS"}}},"lib_monzo_com_core.youtube_video.cookies_dialog.message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"To play this video, we need your consent to use \u003cb\u003eAdvertising\u003c/b\u003e and \u003cb\u003eAnalytics\u003c/b\u003e cookies."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"To play this video, we need your consent to use \u003cb\u003eAdvertising\u003c/b\u003e and \u003cb\u003eAnalytics\u003c/b\u003e cookies."},"source":"TMS"}}},"lib_monzo_com_core.youtube_video.cookies_dialog.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Update cookie preferences"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Update cookie preferences"},"source":"TMS"}}},"lib_monzo_com_core.youtube_video.error_dialog.message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"We're working to get things back up. Please reload the page or try again in a little while."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"We're working to get things back up. Please reload the page or try again in a little while."},"source":"TMS"}}},"lib_monzo_com_core.youtube_video.error_dialog.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Video is temporarily unavailable"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Video is temporarily unavailable"},"source":"TMS"}}},"lib_monzo_com_core.youtube_video.player_aria_label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"YouTube video. Navigate inside the frame to find the video player then press Space to play."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"YouTube video. Navigate inside the frame to find the video player then press Space to play."},"source":"TMS"}}},"lib_monzo_com_core.youtube_video.player_aria_label_with_title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"YouTube video. Video title: {{ videoName }}. Navigate inside the frame to find the video player then press Space to play."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"YouTube video. Video title: {{ videoName }}. Navigate inside the frame to find the video player then press Space to play."},"source":"TMS"}}},"locale-banner.actions.confirm":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Confirm Selected Country"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Confirm Selected Country"},"source":"TMS"}}},"locale-banner.actions.dismiss":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Dismiss Country Select"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Dismiss Country Select"},"source":"TMS"}}},"locale-banner.aside.aria-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Confirm where you live"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Confirm where you live"},"source":"TMS"}}},"locale-banner.content.message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You're on the \u003cflag\u003e{{flag}}\u003c/flag\u003e \u003cstrong\u003e{{pageRegion}}\u003c/strong\u003e website."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You're on the \u003cflag\u003e{{flag}}\u003c/flag\u003e \u003cstrong\u003e{{pageRegion}}\u003c/strong\u003e website."},"source":"TMS"}}},"locale-banner.form.region-details":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Confirm Selected Country (page will navigate after selecting a country)"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Confirm Selected Country (page will navigate after selecting a country)"},"source":"TMS"}}},"locale-banner.form.region-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Region"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Region"},"source":"TMS"}}},"locale-banner.form.switch-to":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Switch to {{regionName}}"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Switch to {{regionName}}"},"source":"TMS"}}},"locale-button.nav.aria-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Choose a country/region. The current selection is {{regionName}}"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Choose a country/region. The current selection is {{regionName}}"},"source":"TMS"}}},"locale-modal.actions.cancel":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Cancel"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Cancel"},"source":"TMS"}}},"locale-modal.actions.dismiss":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Dismiss Country Select"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Dismiss Country Select"},"source":"TMS"}}},"locale-modal.actions.save":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Save"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Save"},"source":"TMS"}}},"locale-modal.content.description":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"We offer tailored accounts depending on your country of residence."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"We offer tailored accounts depending on your country of residence."},"source":"TMS"}}},"locale-modal.content.heading":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Confirm where you live"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Confirm where you live"},"source":"TMS"}}},"locale-modal.form.language-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Available languages"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Available languages"},"source":"TMS"}}},"locale-modal.form.region-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Region"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Region"},"source":"TMS"}}},"navigation.back-button.text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Back"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Back"},"source":"TMS"}}},"navigation.close-button.aria-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Close navigation"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Close navigation"},"source":"TMS"}}},"navigation.new-pill.text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"New"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"New"},"source":"TMS"}}},"navigation.top-level-item.open-text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Open {{section}} navigation"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Open {{section}} navigation"},"source":"TMS"}}},"navigation.top-level-item.toggle-aria-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Toggle {{section}} navigation menu"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Toggle {{section}} navigation menu"},"source":"TMS"}}},"payment-card-fan.aria-label.card-options":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Card options. Use arrow keys to navigate"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Card options. Use arrow keys to navigate"},"source":"TMS"}}},"payment-card-fan.aria-label.next-card":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"next card"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"next card"},"source":"TMS"}}},"payment-card-fan.aria-label.previous-card":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"previous card"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"previous card"},"source":"TMS"}}},"site-header.logo.analytics-text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Monzo Bank Homepage"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Monzo Bank Homepage"},"source":"TMS"}}},"site-header.logo.aria-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Monzo Bank Homepage"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Monzo Bank Homepage"},"source":"TMS"}}},"site-header.primary-cta.aria-label":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Open a Monzo account"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Open a Monzo account"},"source":"TMS"}}},"site-header.skip-to-content.analytics-text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Skip to Content"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Skip to Content"},"source":"TMS"}}},"site-header.skip-to-content.text":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Skip to Content"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Skip to Content"},"source":"TMS"}}},"unsubscribe.error.invalid-params.description":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"We're very sorry, but something went wrong and we weren't able to unsubscribe you from our emails."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"We're very sorry, but something went wrong and we weren't able to unsubscribe you from our emails."},"source":"TMS"}}},"unsubscribe.error.invalid-params.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"It didn't work!"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"It didn't work!"},"source":"TMS"}}},"unsubscribe.error.support-message":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Please get in touch with support and we'll help you out. You can reach us at \u003cemail_link\u003ehelp@monzo.com\u003c/email_link\u003e."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Please get in touch with support and we'll help you out. You can reach us at \u003cemail_link\u003ehelp@monzo.com\u003c/email_link\u003e."},"source":"TMS"}}},"unsubscribe.legacy-link.description":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"To update your email preferences, open the Monzo app and go to your settings, or select 'unsubscribe' on a more recent email from us."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"To update your email preferences, open the Monzo app and go to your settings, or select 'unsubscribe' on a more recent email from us."},"source":"TMS"}}},"unsubscribe.legacy-link.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"This link's no longer active"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"This link's no longer active"},"source":"TMS"}}},"unsubscribe.loading.description":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"We're unsubscribing you right now..."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"We're unsubscribing you right now..."},"source":"TMS"}}},"unsubscribe.loading.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Unsubscribing"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Unsubscribing"},"source":"TMS"}}},"unsubscribe.page.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"Unsubscribe"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"Unsubscribe"},"source":"TMS"}}},"unsubscribe.success.description":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"We've unsubscribed you. We'll stop sending you emails, except for specific service messages related to your account."},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"We've unsubscribed you. We'll stop sending you emails, except for specific service messages related to your account."},"source":"TMS"}}},"unsubscribe.success.title":{"localized_messages":{"en-GB":{"type":"SIMPLE","simple":{"content":"You're unsubscribed!"},"source":"TMS"},"en-US":{"type":"SIMPLE","simple":{"content":"You're unsubscribed!"},"source":"TMS"}}}},"featureGates":{"ca_daxenabled":true}},"__N_SSP":true},"page":"/blog/[...dynamic]","query":{"dynamic":["2022","11","02","argo-rollouts-at-scale"]},"buildId":"-IOrrmBQcEdnuWfJPIoxS","assetPrefix":"https://static-assets.monzo.com/monzo-com/a0e2d265d520a8340bc3e5250a208b6a3241e736","runtimeConfig":{"apiFqdn":"internal-api.monzo.com","publicApiFqdn":"api.monzo.com","publicClientId":"oauth2client_0000ATbSRBo8E4Es6Ss3k6","publicClientSecret":"mnzpub.eQUHgQ9y9tbER/x0k0LRW9KOoVkOnb4dMwCxLQxC8AoLPwGdDXlQ7EODWlgmgq+r9j+vCurgzX1Ya0m7uVCTMQ==","test_apiFqdn":"api.s101.nonprod-ffs.io","sentryProject":"monzo-com-web","sentryOrg":"monzo","sentryDSN":"https://06894583d63658ed47fe4e9943f497fa@o23827.ingest.sentry.io/4505743602483200","environment":"production","cookieDomain":".monzo.com","localeCookieDomain":".monzo.com","authRedirectOrigin":"https://auth.monzo.com/","gitCommit":"a0e2d265d520a8340bc3e5250a208b6a3241e736"},"isFallback":false,"isExperimentalCompile":false,"gssp":true,"appGip":true,"locale":"gb","locales":["gb","us","ie","en-be","en-bg","en-cy","en-cz","en-dk","en-ee","en-es","es","en-fi","en-fr","en-hr","en-hu","en-is","en-it","en-li","en-lt","en-lv","en-mt","en-nl","en-pl","en-pt","en-ro","en-se","en-si","en-sk"],"defaultLocale":"gb","scriptLoader":[]}</script></body><script src="https://internal-api.monzo.com/static/util.js" nonce="eb3dd99935b60e65a03d8a93dc48ad3b2cbd"></script></html></body></html>