Zásady služeb Wikimedie
Tato stránka dokumentuje oficiální zásady rozvoje Wikimedie. Neexistuje žádný aktuální mechanismus pro provádění změn, protože proces RFC TechCom je zaniklý. |
Tento dokument se zabývá principy (např. aplikace musí být pozorovatelná a musí vykazovat vhodné metriky), nikoli implementačními pokyny.
Budou napsány praktické implementační pokyny, které podrobně popisují, jak mají být principy uvedené v tomto dokumentu aplikovány z technického hlediska (např. aplikace musí vystavit metriky RED z koncového bodu /metrics
ve formátu prometheus s přesnou konvencí pojmenování).
Důvodem rozdělení těchto dvou částí je to, že neočekáváme, že by se principy v průběhu času příliš změnily, ale očekáváme, že implementační pokyny se budou díky technickému vývoji měnit rychleji.
Cyklus vývoje a používání nové služby má různé aspekty a některé z nich je třeba co nejvíce standardizovat plošně, aby se složitost našeho ekosystému nestala neudržovatelnou. Obecně platí, že přijetí nemonolitické architektury má své náklady a pokud nejsou udržovány standardy týkající se toho, jak různé aplikace potřebují spolupracovat a jak jsou vyvíjeny.
Existuje několik aspektů vývoje služby, které je třeba vzít v úvahu:
- Zásady vývoje
- Požadavky na bezpečnost/ochranu soukromí
- Výrobní nasazení
V několika následujících částech analyzujeme požadavky, které musí nová služba splňovat v každé z těchto kategorií.
Politika rozvoje
Vše, co vyvíjíme, by mělo být bezplatné, otevřené spolupráci a samo o sobě užitečné. Pro novou službu:
- Vlastně něco udělejte
- Vytvářejte pouze v případě, že neexistuje žádný dobře vytvořený, dobře udržovaný, architektonicky kompatibilní software FLOSS, který poskytuje srovnatelné funkce, které lze v případě potřeby převzít a vylepšit/upravit.
- Vyhněte se zbytečnému duplikování funkcí nebo funkcí poskytovaných v jiných službách
- Je licencována podle licence schválené OSI
- Poskytuje konfigurační mechanismus, který nezahrnuje změnu distribuovaného kódu
- Použijte jazyk a sadu nástrojů, které byly schváleny společností TechCom
Zatímco některé z našich služeb budou užitečné pouze v kontextu WMF, v jiných případech je samostatná služba určena k distribuci pro obecné použití. V takovém případě musí mít tyto vlastnosti:
- Mějte zdokumentovaný proces instalace a odinstalace, který je v souladu s našimi implementačními pokyny
- Mějte zdokumentovaný proces aktualizace, který je v souladu s našimi implementačními pokyny
- Vytvořte verze pomocí semveru
- Uveďte verze MediaWiki, se kterými je kompatibilní
- Poskytněte mechanismus, pomocí kterého lze žádat o podporu (komunitní nebo jinou).
- Poskytněte mechanismus, pomocí kterého lze navrhovat opravy
- Poskytněte mechanismus, pomocí kterého jsou vydávána doporučení pro veřejnou bezpečnost
Zabezpečení a soukromí
Všechny funkce implementované jako samostatné služby musí mít následující vlastnosti:
- Minimalizujte sběr dat pro jakýkoli typ PII
- Dodržujte zásady ochrany osobních údajů/uchovávání dat společnosti WMF.
- Implementujte ovládací prvky ochrany osobních údajů, které jsou alespoň ekvivalentní těm, které má jakákoli služba volání. Pokud například ovládací prvky ochrany soukromí volající služby stanoví, že adresy IP nebudou uloženy déle než 90 dní, externí služba nemusí ukládat adresy IP déle než po tuto dobu.
- Mají zásady ochrany osobních údajů a postupy ochrany osobních údajů, které jsou kompatibilní s vlastnostmi WMF/Wikimedie
- Prošli bezpečnostní kontrolou
- Mají přidělené zdroje tak, aby byla možná rychlá reakce na jakýkoli bezpečnostní incident
Výrobní nasazení
Pokud je samostatná služba určena k použití v produkčním prostředí Wikimedie, měla by splňovat výše uvedené pokyny a navíc musí
- Být použitelná se standardními nástroji WMF (jak je uvedeno v implementačních pokynech).
- Mít vlastníka a plán průběžné údržby. Pokud vlastník služby chybí (protože tým je rozpuštěný/má jiné zaměření), musí se najít nový vlastník prostřednictvím procesu správy kódu
- Mít protokolování, které odpovídá standardům WMF – specifikovaným v pokynech pro implementaci služby
- Být schopná shromažďovat a vystavovat provozní metriky podle aktuálních standardů WMF specifikovaných v implementačních pokynech.
- Mít runbook pro provozní účely.
- Mít podporu více datových center aktivní-aktivní (nebo aktivní-pasivní) nasazení.
- Pro službu musí být definovány Ukazatele úrovně služeb a měly by být dohodnuty Cíle úrovně služby. Nesplnění uvedených cílů úrovně služeb BY MĚLO vést k akci, která službu vrátí zpět do provozu dohodnutého v Cílech úrovně služeb. Cíle úrovně služeb lze samozřejmě přehodnotit a změnit, ale pokud možno ne v důsledku porušení, ale spíše informovaného procesu.
- Mít připnuté/připnutelné závislosti, které není nutné stahovat za běhu a/nebo z nedůvěryhodného zdroje.
- Mít zálohy a plán obnovy/nouzový plán (pokud služba ukládá nějaká data).
- Mít uživatele nebo plán získání uživatele
Služba - Interakce se službou
Služby budou pravděpodobně vzájemně interagovat. Pokud tomu tak je, musí být přijata opatření, aby celý systém nebyl závislý na selhání jediné součásti. Rovněž je zapotřebí zvýšená pozorovatelnost toku požadavků. Každá nová služba, kterou je třeba nasadit do produkce, by tedy měla:
- Pokud nemůže získat přístup k jiné službě, plynule degradovat jeho funkčnost. Pokud to není možné, možná by nová služba měla být logicky svázána s tou druhou. Výjimka je výslovně určena pro MediaWiki API, vzhledem k tomu, že na jeho dostupnosti může záviset poměrně málo služeb, aby byly užitečné.
- Být schopna provádět požadavky na konkrétní název hostitele poskytnutý prostřednictvím konfigurace.
- Umět používat infrastrukturní middleware pro funkce komunikace mezi službami, včetně, ale bez omezení na, šifrování a přerušení okruhu. Alternativně by služba MĚLA tyto funkce implementovat interně.
- Přidat k požadavku příslušná trasovací záhlaví v souladu se standardy WMF specifikovanými v implementačních pokynech.
- Zaznamenat akce prostřednictvím zařízení pro protokolování výroby.
Meta
Tyto zásady byly stanoveny v březnu 2019 RFC T208524.