Obsah
Standard pro nové aplikace Pirátů
Tento dokument není aktuální. Raději se zeptejte na Zulipu.
Piráti pracují s širokou škálou software, který byl psán a spravován dobrovolníky. V minulosti vznikl velký technologický dluh, který se postupně daří odstraňovat. Jako prevence podobných problémů v budoucnu slouží tento seznam základních požadavků pro dobrý softwarový projekt a jeho nasazení.
Tyto standardy by měl dodržovat každý, kdo chce nasazovat nové aplikace, ať už jde o dobrovolníka, dodavatelskou firmu či propagátora konkrétního existujícího software.
Pokud chcete vytvořit nějakou aplikaci, rozmyslete, jak splníte požadavky. S hotovým návrhem, nebo žádostí o pomoc, se můžete obrátit na Koordinátora technického odboru, případně na další členy TO (Martin Rejman, Jitka Novotná).
Fáze návrhu aplikace
- Zadání problému Konkrétní popis toho, k jakému účelu má aplikace sloužit, včetně příkladů.
- API Cílem je sdílení dat mezi aplikacemi - je třeba určit, která data se mají poskytovat, a to ve strojové podobě. Ideální forma aplikací může být tedy oddělený “data provider” a “end-user GUI” (modularita). současná api
- Opensource Preferovaná SW licence: MIT, Apache 2, LGPL, GPL, ve vyjimečných případech se dají vyuzít i nesvobodné licence, pokud bude mít Pirátská strana práva na software i k datům. Chceme omezit riziko vzniku závislosti na neudržovaných / proprietárních / licenčně nevhodných technologiích a produktech. Preferujeme použití rozšířeného opensource před psaním vlastních projektů.
- Technologie Při výběru technologií zohledňujeme, zda je vhodná, má budoucnost, máme na ni kapacity. Příklady: Operační systém: Linux, nejčastěji CentOS či Debian. Jazyky: Python, node.js, Ruby, php. Databáze: Postrgesql, mariaDB, případně lze použít elastic search.
- SSO Pracuje-li aplikace s uživateli, tak nesmí zakládat vlastní, ale použít přihlášení přes SSO (Single-Sign-On server běžící na adrese auth.pirati.cz).
- HW požadavky Definovat požadavky na výkonnost aplikace, škálování na počet uživatelů, souběžných činností, load balancing.
- Pirátský vizuál Aplikace by měly mít jednoté UI/UX odpovídající grafickému manuálu
- Intuitivnost Jednoduché intuitivní uživatelské rozhraní.
- Data Data ukládat do systémů, které jsou zálohované, tj. např. do databází. Variantou lokálního ukládání dat jsou bezstavové aplikace, které lze nasadit např. paralelně pro zvýšení výkonu.
- Zákonné požadavky Analýza ochrany osobních údajů/GDPR, případně dalších zákonných požadavků.
- Důvěryhodnost Ideální je mít v době, kdy představujete projekt, již nasazenou minimalistickou verzi. Nahradit to lze poukázáním na jiné již dokončené vaše projekty.
Fáze implementace aplikace
- Testy Unit testy v samotném kódu - zejména za účelem zabránění vzniku budoucích problémů při předávání vytvořené aplikace jinému vývojáři či správci. U některých projektů může unit testy nahradit skutečnost, že je software už široce rozšířený.
- Dokumentace Vysvětlení architektury projektu, složitějších myšlenek. Deployment dokumentace - závislosti, postup nasazení, a podobně. Ideálem je samopopisný kód s inline dokumentací v místech, kde je třeba (více informací je lépe). Snadno předatelný kód. V případě rozsáhlých projektů je nutné mít i administátorskou a uživatelskou dokumentaci.
- Event-hooks vstupní a výstupní události pro komunikaci mezi aplikacemi. Řeší případy, kdy se změní data v jiné aplikaci a ostatní aplikace se o tom musí dozvědět. Příkladem je single-logout v SSO Keycloak (tj. odhlášení uživatele na pokyn Centrální identity.
- Vizuál šablonování end-user UI pro případ změny designu aplikace
- Verzování Verzování zdrojového kódu, označování stabilních části pro případný roll-back. Continous integration.
Postup deploymentu & testování
- Kontejnery Pro nasazení preferujeme použítí technologie Docker.
- Napojení na stávající systémy.
- Testovaní Aplikaci budou testovat klíčoví uživatelé (AO, PO, …) a menší testovací skupinky. Je třeba provést bezpečnostní audit na nasazené verzi.
- Testování výkonnosti Ověření výkonnosti aplikace, škálování na počet uživatelů, souběžných činností.
- Prezentace Zapracování toho, jak se bude aplikace používat, do stávajících procesů strany. Příprava nových návodů pro procesy ve straně.
Fáze produkčního nasazení & údržby
- Deploy postup údržba navrženého deployment postupu
- Aktualizace Reagování na nové verze knihoven.
- Prezentace Nasazení návodů. Představení projektu cílové skupině.