Projdeme si postupnými kroky, jak jsme vytvářeli a jak používáme jednu z nejdůležitějších služeb v Mallgroup. Jaký jsme zvolili přístup při návrhu, co nám to přineslo za výhody a co naopak způsobilo za problémy. Podíváme se na nástroje a přístupy, které nám pomáhají k tomu, abychom nasazovali změny několikrát denně a nebáli se toho.
2. ÚVOD
CO JE PRODUCT API V MALLGROUP?
“microservice” poskytující data o produktech
Produktové listy, facetová navigace, detail produktu, suggester, ….
REST API
Elasticsearch data storage
9. INFRASTRUKTURA
ŠKÁLOVÁNÍ
Využíváme interní cloud OpenStack
Pro nový Product API node lze využít UI, kde naklikáme svoji instanci což je
neefektivní a pomalé
Snadnější a rychlejší cesta
OpenStack poskytuje Heat Orchestration Template (HOT)
Aktálně není řešeno automaticky (systém pozná zvýšenou zátež na CPU a sám
naškáluje), ale je nutný manuální zásah - command pro HOT
11. VLASTNOSTI, VÝHODY, NEVÝHODY
PRODUCT API JAKO “MICROSERVICE”
▸ Rychlé doručení změn pro business
▸ Škálovatelnost
▸ Jakákoliv ”core” změna je na rozhodnutí týmu
▸ Změna myšlení vývojářů
▸ Vyšší nároky na některé vývojáře
12. TROCHA HISTORIE
PRODUCT API VERZE 0.1
Cca 3 roky zpět rozhodutí vytvořit tuto službu
První verze byla vytvořena v Monolithu přístupem code-first
Rychle dodané MVP ve 3 vývojářích bez dokumentace API
Následovalo plno problémů
nikdo nevěděl jak to správně pouzívat
Dotazy
Nechuť API používat dalšími vývojáři
Pokrytí testy bylo minimální
13. TROCHA HISTORIE
PRODUCT API VERZE 1
Separace z monolithu
Zrychlení dodání změn pro business
Rychlejší nasazování
Pokrýváme více a více unit testy
Snížili jsme chybovost
Přidali “smoke” testy v Postmanu
15. SOUČASTNOST
DEVOPS KULTURA
Produkt jako služba
Celý tým je odpovědný za službu od A-Z
Držíme pohotovosti mimo pracovní dobu
Monitoring zdrojů - memory, zatížení CPU, keepalive info atp. nám zajišťuje
Sensu
Každý kdo drží daný týden pohotovost, dostává v případě problému SMS
např. memory warning nad 80%, critical nad 90%
18. API LIFECYCLE
LOGY A MONITORING
Logujeme téměř vše
Ukládáme logy na filesystém
Pomocí Filebeat posíláme do logstashe
v Kibaně zobrazujeme data
Monitoring pomocí Sensu a dashboard Uchiwa
Klasické sledování dashboardu v Kibaně