Na Budějovickém ČTVRTKONu jsme prezentovali, jak používáme v praxi SPOT INSTANCES servery na AWS a pracujeme na vyšší spolehlivosti celého systému při zachování ekonomického rozumu.
1. ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑AWS spot instances‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
Aneb jak jsme z jednoho serveru udělali 9
pak 5
a navíc ušetřili.
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑ ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
Dalibor Jaroš
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑ ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
2. Obsah
Počáteční stav ‑ struktura aplikace
Monitoring
Docker pryč
První škálování jedné části a první problémy
První větší SI fail ‑ max bid price
Druhá vlna škálování
Odbočka ‑ handy využití RDS pro přepočet obřích dat
Další využití na státním hackathonu
Zkušenosti z provozu a ekonomika
Kam dál?
3. AWS slovníček
Instance ‑ jeden virtuální server
Typ instance r4.2xlarge, m3.medium apod.
Tři typy instance:
on‑demand (nejdražší)
reserved (rozum)
spot instance (hazard )
https://www.ec2instances.info
AWS spot instances, Dalibor Jaroš 3
4. Počáteční stav ‑ struktura aplikace
Jedna on‑demand instance ‑ c4.2xlarge (0,4 USD/hod.)
Vše v dockeru
PHP, MYSQL, NGINX, REDIS, ELK‑stack
Aplikace jako pseudo‑micro‑service
App, tracker, billing, answers, mail‑queue, proxy servers
Škálování vcelmi rychlé ‑ docker
Ovlivňování výkonu mezi aplikacemi, problém s náhodným loadem
Problém s diskem ‑ magnet vs. SSD, IOPS
AWS spot instances, Dalibor Jaroš 4
6. Monitoring
ELK stack
PROMETHEUS + Grafana, MUNIN ‑> Datadog
mnohem lepší warningy, kompozity
horší dostupnost na mobilu
webhooks ‑> slack + SMS (lambda)
platí se za server!!! (a sakra bacha na docker ‑ v ceně je jen pár containerů)
92 USD / month ‑> 15 USD / month
AWS spot instances, Dalibor Jaroš 6
7. Docker pryč
Proč? ‑> neznalost, druhá vrstva virtualizace
Problémy na produkci (minoritní)
Sehnat experta byl nadliský úkol, do kterého se mi ani nechtělo
Náhlá impotence ‑> blokace root disku pro write, docker nenastartoval
Memory issues
Někdy se prostě nenastartovaly nějaké containery
Výhody
!výkon!
rychlost škálování workerů
Na produkci vydržel cca 5 měsíců
AWS spot instances, Dalibor Jaroš 7
8. První škálování jedné části a první problémy ‑ 04/2017
Přepis install/deploy z capistrano do ansible (APP)
vznik projektu orchestration
load balancer, využití devtestu jako horké zálohy
stěhování z CIRCLE CI do Gitlabu
první problém s IP ‑ limit AWS, ansible, dynamický inventář
AWS spot instances, Dalibor Jaroš 8
9. První větší SI fail ‑ max bid price
!nespoléhat se na max bid price!
nutnost dělat AMIčka
diverzifikace do různých zón
AWS spot instances, Dalibor Jaroš 9
11. Druhá vlna škálování ‑ 11/2017
TRACKER
výkonostní workeři
problém se sdíleným EBS diskem
alternativa EFS, jenže 3x dražší
benchmark testy
MONGO
MYSQL
APACHE + NGINX + lightweight PHP skript
Cassandra
AWS spot instances, Dalibor Jaroš 11
12. Benchmark testy ‑ GET
test
počet uložených
záznamů
čas na get ‑
ms
dva servery apache, 10 geetter, 60 saver 43748 + 43712 50
dva servery apache save, nginx read, 10 getter, 60
saver
55556 + 55434 45
2xmysql 2x200000 5,3
2xmysql batched 10 2x200000 2,5
2xmysql batched 100 2x200000 0,9
2xmysql batched 1000 2x200000 0,09
AWS spot instances, Dalibor Jaroš 12
13. Benchmark testy ‑ SAVE
test počet uložených záznamů čas na save ‑ ms
2xmysql 2x114654 6,11
2xmysql, batch 2 2x1600 4
2xmysql, batch 10 2x32840 3,53
AWS spot instances, Dalibor Jaroš 13
14. Odbočka ‑ handy využití RDS pro přepočet větších dat
problém s tagama a historií rozložení pozic
cca 2 roky problém
miliony řádku v DTB
je třeba přepočítat 2 roky zpět na cca 40tis. projektech
snapshot z noci ‑> nová instance
šílená MYSQL query
jednoduchý worker
týden přepočtu ‑> výsledná tabulka, copy na hlavní RDS a UPDATE (10 minut)
kill instance
AWS spot instances, Dalibor Jaroš 14
16. Další využití RDS na státním hackathonu
potřeba sdílené MYSQL pro POWERBI na cca 4 hodiny
natažení finálních dat z MYSQL ‑> POWERBI
kill instance
dnes už bych dělal přes spot (ansible mysql server, případně docker ‑> je to mnohem
jednodušší)
AWS spot instances, Dalibor Jaroš 16
17. Zkušenosti z provozu a ekonomika
neuvěřitelná volnost, know‑how
bez omezení na platformu (mimo monitoringu a lambdy vše vlastní řešení), snížení výdajů,
více než trojnásobný výkon
AWS spot instances, Dalibor Jaroš 17
18. Kam dál?
dynamické škálování podle provozu (AWS cli)
problém se zastaralým AMI ‑> skripty na tvorbu vlastních aktuálních AMI
RDS škálování
RABBIT škálování
AWS spot instances, Dalibor Jaroš 18