Staging prostředí: k čemu je a jak v něm mít přehled
Staging prostředí je kopie produkce, kde ověříte vydání před nasazením. Ukážeme, jak se liší od testovacího prostředí a jak ho nastavit.
Shrnutí a kontext
„Na stagingu to fungovalo“ je věta, kterou každý tým řekne aspoň jednou, obvykle hned po nasazení na produkci. Staging prostředí má přesně tomuhle zabránit: je to poslední zastávka, kde vydání ověříte v podmínkách co nejbližších produkci. Níže najdete, k čemu staging je, jak se liší od ostatních prostředí, jak ho nastavit a jak mít přehled, která verze kde běží.
1. Co je staging prostředí
Staging prostředí je kopie produkce, na které se vydání ověří těsně před nasazením. Má stejnou infrastrukturu, konfiguraci a verze služeb jako produkce, jen bez skutečných uživatelů. Co projde na stagingu, má velkou šanci projít i na produkci.
Čím víc se staging od produkce liší, tím méně toho ověří. Jiná verze databáze, chybějící fronta zpráv nebo jiné nastavení proxy jsou typické důvody, proč se chyba ukáže až na produkci. Principy shrnuje kapitola Dev/prod parity z metodiky Twelve-Factor App.
2. Staging, produkce a testovací prostředí: jaký je rozdíl
Většina týmů pracuje se třemi až čtyřmi prostředími. Názvy se mezi firmami liší, role ale bývají stejné.
| Prostředí | K čemu slouží | Kdo ho používá | Data |
|---|---|---|---|
| Vývojové (dev) | Vývoj a první pokusy | Vývojáři | Testovací, klidně smyšlená |
| Testovací (test, QA) | Testování funkcí během vývoje | Testeři, vývojáři | Testovací |
| Staging | Ověření hotového vydání před nasazením, často i akceptace zákazníkem | Testeři, zákazník, produktový vlastník | Anonymizovaná kopie produkce |
| Produkce (prod) | Provoz pro skutečné uživatele | Uživatelé | Skutečná |
3. Jak staging nastavit, aby k něčemu byl
Staging, který se od produkce liší, dává falešný pocit jistoty. Tyhle body rozdíl drží co nejmenší a zároveň chrání skutečné uživatele.
4. Staging v CI/CD pipeline
Ve většině týmů se na staging nasazuje automaticky a na produkci až po schválení. GitHub na to má prostředí s pravidly ochrany: nasazení na produkci počká, dokud ho neschválí určený člověk. Podobně fungují prostředí v GitLabu i Azure DevOps.
- 1
Sestavení
Po sloučení do hlavní větve pipeline aplikaci sestaví, spustí testy a sestavení označí číslem verze.
- 2
Nasazení na staging
Stejné sestavení se automaticky nasadí na staging. Pipeline zapíše, která verze na stagingu běží.
- 3
Ověření a akceptace
Tester nebo zákazník vydání na stagingu projde. Výsledek potvrdí schválením v pipeline.
- 4
Nasazení na produkci
Po schválení se totéž sestavení nasadí na produkci, bez nového sestavení.
5. Přehled o staging prostředích u více zákazníků
Jedno staging prostředí se dá uhlídat snadno. Pokud ale aplikaci provozujete pro více zákazníků a každý má vlastní staging i produkci, je potřeba mít přehled, na jaké adrese které prostředí běží a jaká verze je na něm nasazená. Podpora pak u nahlášené chyby nejdřív ověřuje, jestli jde o staging nebo produkci a o jakou verzi.
V AboutTheApp zapíšete ke každému zákazníkovi jeho prostředí s nasazenou verzí, URL a umístěním a zůstává i historie nasazení. Dashboard umí vyfiltrovat zastaralé instalace a zákazník vidí stav svých prostředí na své About page v záložce Prostředí a verze. Odkazy, které patří jen ke stagingu, třeba administrace nebo testovací účty, připojíte jen k danému prostředí a označíte jako privátní. Nasazení může zapisovat přímo CI/CD pipeline přes POST /integrations/installations, s názvem prostředí a verzí.
Název prostředí je v AboutTheApp volný text. Když jeden zákazník má „staging“, druhý „stage“ a třetí „UAT“, přehled se rozpadne. Domluvte si jednotné názvy, třeba production, staging a test, a používejte je i v CI/CD.
Časté otázky
Jaký je rozdíl mezi stagingem a produkcí?
Staging je kopie produkce bez skutečných uživatelů a dat. Slouží k ověření vydání před nasazením. Produkce je prostředí, které používají skuteční uživatelé.
Je staging totéž co UAT?
Často ano. UAT (akceptační testování uživatelem) je fáze, ve které zákazník vydání schvaluje, a mnoho týmů na ni používá právě staging. Větší projekty mívají UAT jako samostatné prostředí mezi testovacím prostředím a stagingem.
Může staging používat produkční data?
Jen anonymizovanou kopii. Skutečné osobní údaje na stagingu znamenají stejné povinnosti jako na produkci, jenže staging bývá hůř zabezpečený a přístup k němu má víc lidí.
Potřebuje každá aplikace staging prostředí?
Nepotřebuje. Malé aplikace si často vystačí s náhledovým nasazením pro každý pull request, které nabízí třeba Vercel nebo Netlify. Staging se vyplatí, jakmile aplikaci používají zákazníci, kteří vydání před nasazením schvalují, nebo když nasazení na produkci něco stojí.
Jak zjistím, která verze běží na stagingu?
Nejspolehlivěji z aplikace samotné, pokud verzi ukazuje v záhlaví nebo na obrazovce O aplikaci. Pro přehled přes všechna prostředí a zákazníky potřebujete jedno místo, kam CI/CD každé nasazení zapíše. V AboutTheApp to je přehled nasazení u každého zákazníka.
Ve zkratce
Staging má smysl, když se co nejméně liší od produkce, nasazuje se na něj stejné sestavení a všichni vědí, kde je a jaká verze na něm běží.
Chcete mít přehled o všech prostředích?
Založte si zdarma aplikaci v AboutTheApp a zapište ke každému zákazníkovi jeho prostředí, verze a adresy.