Psaní kódu aplikace starší než většina cloud řešení—řešení, které většinu aplikací, programátoři psát speciálně pro tyto dny.
pro zvládnutí této disonance se objevila 12faktorová metodika aplikace. 12 faktorů je přístup, který pomáhá programátorům psát moderní aplikace deklarativním způsobem pomocí jasných smluv nasazených prostřednictvím cloudu.
v tomto článku představím 12faktorovou metodiku aplikace a nabídnu shrnutí jejích principů na vysoké úrovni.
jaká je 12faktorová metodika aplikace?
v roce 2012 programátoři v Heroku debutovali o metodice aplikace 12-Factor. Tyto programátory byly vyvinuty a nasazeny stovky aplikací napsal tato metodika, na základě svých zkušeností vidí SaaS aplikací „v divočině“.
Tato skupina se domnívá, že metodika triangulace:
- Ideální postupy na podporu vývoj aplikace
- dynamics, které se vyskytují jako aplikace roste organicky
- vztah a spolupráci mezi codebase vývojáři
Jejich cíle jsou dva-krát:
- pomoci vyhnout Se software eroze náklady
- zvýšit povědomí o systémové problémy jsou pozorovány v moderní vývoj aplikací
skupina poukazuje na dva inspirační zdroje, Vzory Podnikové Aplikační Architektury a Refactoring, a to jak profesionální vývojář Martin Fowler.
a nyní představím každý z 12 faktorů.
Princip I. Codebase
„Jednoho codebase sledovány v revizí, mnoho nasadí“
základní kód by měl mít logickou verze kontrolní systém, který je snadné pochopit.
každé nasazení by mělo mít své vlastní úložiště kódu, které lze nasadit do více prostředí. Vyhněte se umístění více aplikací ve stejném úložišti. Díky tomu je řízení verzí téměř nemožné pochopit a verze se zamotají, což má za následek práci bez přidané hodnoty.
Princip II. Závislosti
„Výslovně prohlašuji a izolovat závislostí“
Tento princip tvrdí, že byste nikdy neměli spoléhat na implicitní existenci systémové balíčky. Místo toho“
- ujistěte se, že jsou k dispozici knihovny specifické pro aplikace
- ověřte, zda jsou k dispozici potřebné systémové knihovny, jako je curl nebo ImageMagick. (Neexistuje žádná záruka, že tyto existují na každém systému, kde by aplikace mohla běžet v budoucnu.)
celkově musí být 12faktorová aplikace sama o sobě. Aplikace by měla být dostatečně izolována, aby se zabránilo interakcím s konfliktními knihovnami nainstalovanými na hostitelském počítači.
podívejme se na příklad. V Pythonu můžete dosáhnout deklarace a izolace pomocí Pip a Virtualenv. Pro splnění tohoto principu musíte vždy používat deklaraci závislosti i izolace. Správa závislostí v rámci aplikace, nikoli z externího zdroje. Závislosti by měl být umístěn v úložišti v rámci aplikace
Zásada III. Config
„Store config v prostředí“
aplikace a jeho konfigurace by měly být zcela nezávislé. Dále je třeba se zcela vyhnout ukládání konfigurací neustále v kódu.
vaše konfigurace by měly mít samostatný soubor a neměly by být hostovány v úložišti kódu. Samostatný konfigurační soubor usnadňuje aktualizaci konfiguračních hodnot bez dotyku skutečné kódové základny, což eliminuje potřebu opětovného nasazení vašich aplikací při změně určitých konfiguračních hodnot.
pokud jsou konfigurace v prostředí, nikoli v aplikaci, jako proměnné, můžete je snadno přesunout do jiného prostředí, aniž byste se dotkli zdrojového kódu. Dvanáctifaktorové aplikace ukládají konfigurace jako proměnné, takže je“ nepravděpodobné, že by byly náhodně zkontrolovány do úložiště“. Další bonus: pak jsou vaše konfigurace nezávislé na jazyce a OS.
Princip IV. Doprovodné služby
„Léčit doprovodné služby jako připojené zdroje“
12-faktor aplikace, žádné služby, které nepodporují jádro aplikace musí být přístupný jako služba. Tyto základní služby mohou zahrnovat:
- databáze
- externí úložiště
- fronty zpráv
- atd.
lze je považovat za zdroj. Ty by měly být přístupné jako služba přes HTTP nebo podobný požadavek, pak je uvedeno v konfiguraci. Tímto způsobem lze zdroj služby změnit, aniž by to ovlivnilo základní kód aplikace.
například aplikace, která používá systém fronty zpráv, je nejlepší, pokud se může snadno změnit z RabbitMQ na ZeroMQ na ActiveMQ pouze změnou konfiguračních informací.
Princip V. Build, uvolnit, spustit
„Přísně samostatné sestavení a spuštění fáze“
12-faktor aplikace je striktní oddělení tří fází budování, uvolnění, a běží.
spusťte proces sestavení uložením aplikace do zdrojového řízení a poté vytvořte její závislosti. Oddělení konfiguračních informací znamená, že je můžete kombinovat s sestavením pro fázi vydání—a pak je připravena pro fázi spuštění. Je také důležité, aby každé vydání mělo jedinečné ID.
Princip VI. Procesů
„Spustit aplikaci jako jeden nebo více bez státní příslušnosti procesy“
Uložit všechna data, která je nutné přetrvávají v stateful doprovodné služby, jako jsou databáze. Myšlenka je taková, že proces je bez státní příslušnosti a nesdílí absolutně nic.
Zatímco mnoho vývojářů používá pro „sticky sessions“, ukládání informací v relaci očekával další žádost bude ze stejné služby v rozporu s touto metodikou.
princip VII. Port binding princip
„Export services via port binding“
12-factor aplikace musí být vždy nezávislé na dalších aplikacích. Každá funkce by měla být svým vlastním procesem – v plné izolaci.
v tradičním prostředí předpokládáme, že různé procesy zvládají různé funkce. Jako takový, je snadné dále předpokládat, že tyto funkce jsou k dispozici prostřednictvím webového protokolu, jako je HTTP, takže je pravděpodobné, že aplikace poběží za webovými servery, jako je Apache nebo Tomcat. To je však v rozporu s metodikou 12 faktorů.
místo toho přidejte knihovnu webového serveru nebo podobnou základní aplikaci. To znamená, že aplikace může čekat požadavky na definovaném portu, ať už je to HTTP nebo jiný protokol.
Princip VIII. Souběžnost
„Měřítko přes proces model“
pravda, 12-faktor aplikace je určena pro škálování. Vytvářejte své aplikace tak, aby škálování v cloudu bylo bezproblémové. Když vyvíjíte aplikaci tak, aby byla souběžná, můžete bez námahy roztočit nové instance do cloudu.
Chcete-li přidat větší kapacitu (spustit další procesy na dalších počítačích), vaše aplikace by měla být schopna přidat více instancí místo více paměti nebo CPU na místním počítači.
princip IX. Jednorázové použití
„Maximalizovat podrobnosti, s rychlé spuštění a půvabná vypnutí“
koncepce jednorázové procesy znamená, že aplikace může zemřít kdykoliv, ale to nebude mít vliv na uživatele—aplikace mohou být nahrazeny jinými aplikacemi, nebo to může začít hned znovu. Budování disponibility do vaší aplikace zajišťuje, že se aplikace elegantně vypne: měla by vyčistit všechny použité zdroje a hladce vypnout.
když je navržen tímto způsobem, aplikace se vrátí znovu rychle. Stejně tak při ukončení procesů by měly dokončit svůj aktuální požadavek, odmítnout jakýkoli příchozí požadavek a ukončit.
princip X. Dev/prod parita
„Udržujte vývoj, staging a výrobu co nejpodobnější“
aplikace nasazené do vývoje a výroby by měly mít paritu. V zásadě by mezi oběma nasazeními měl být jen nejmenší rozdíl.
obrovský rozdíl může vést k nezamýšleným problémům s kompatibilitou mezi dev a výrobním kódem. Při vytváření 12faktorové aplikace musí být podpůrné služby mezi dev a prod stejné; rozdíl zde může způsobit značné problémy.
Princip XI. Protokoly
„Léčit protokoly jako událost přenosů“
na Rozdíl od monolitické a tradiční aplikace, které ukládají informace v protokolu souboru, tento princip tvrdí, že byste měli stream protokoly na zvolené místo—ne jednoduše vyhodit je do souboru protokolu.
protokoly obvykle nejsou umístěny na stejném místě v cloudových prostředích po každém vypálení. Při spuštění nových procesů nebo selhání aplikace budou protokoly distribuovány do několika cloudových počítačů; nebudou sedět na jednom počítači nebo hostiteli.
vyřešte tento problém pojmenováním společného místa pro streamování protokolů. V některých případech můžete jednoduše přesměrovat Stdout do souboru. S větší pravděpodobností však budete chtít nasadit směrovač protokolu, jako je Fluentd, a uložit protokoly do Hadoop nebo konkrétní služby, jako je Splunk.
Princip XII. Admin procesů
„Spustit admin/úkoly správy, jako jednoho z procesů“
konečné 12-faktor aplikace principu navrhuje oddělující administrativní úkoly od zbytku aplikace. Tyto úkoly mohou zahrnovat migraci databáze nebo kontrolu záznamů.
přestože jsou administrátorské procesy oddělené, musíte je i nadále spouštět ve stejném prostředí a proti základnímu kódu a konfiguraci samotné aplikace. Odeslání kódu úkolů správce vedle aplikace zabraňuje driftu.
související čtení
- BMC DevOps Blog
- Agile vs Waterfall SDLCs: jaký je v tom rozdíl?
- Nasazení Potrubí (CI/CD) v softwarovém Inženýrství
- Co Je Extrémní Programování (XP)?
- jak & proč se stát softwarovou továrnou
- nejlepší konference pro programování & vývoj softwaru