αα½ααααΈ! ααααααααααααα»αααΊ Vadim Madison αααα»αααΉαααΆαααΆαα’αα·αααααααααααα·ααΈ Avito System Platform α ααΆααααΌαααΆααααα·ααΆαα αααΎαααΆαααααα’αααΈαααααααααΎααα αααα»ααααα»αα αα»ααααα»αααααΆααααααΌαααΈααααΆαααααααα monolithic αα ααΆ microservices αα½αα ααΆααααααα αΎαααΎααααΈα αααααααααΈαααααααααΎαααΆαααααΆααααααΌαα αααααΆαα ααΆααααααααααααααΎαααΎααααΈααα½αααΆαα’αααααααααααα αααΎααααα»αααΈααααΆααααααααΆαααΌα αα·αααΆαααΆααααα½αααΎαααΈααΆααααααααα αααα»ααα½αααα ααααααα PaaS αα½αααΎααα ααΈααα αααααααααΎαααααΎα±ααααΆααααα½ααααα»αααΆαααΆαααααααΆα αα·αααΆαααααααααΆααααααΎαααααΆααΈααααΌαα αα½αα α»α - α’αΆαααααα αα·ααααα’αααΈαααΆααα’ααααααααα»ααααααα’αααΈααΆααααααααααΌαααΆαα’αα»αααααααΆααααααααα αααα»α Avito ααααα ααΆααααααΆαααααααααΎαα’αα·αααααααα·ααΆααααααΎαα
(α αΎααα α α»ααααα ααααα’αααααααα αααα»αααΉααα·ααΆαα’αααΈα±ααΆαααΎααααΈα αΌααα½ααα·ααααΆααΆααΆααααααααΈααααααΈα’αααααααΆααααααααααΆααααααααααΈααααΌααααΆαααα Chris Richardson)α
αααααααααΎαααΆαααααααΆααΈααααΌ
Avito ααΊααΆααα αααααα αΆααααααΆααααααΆααααα½ααααα»ααα·ααααα α αΎαααΆαααααΆαααΆαα·αααααααααααΈααΆα 15 ααΆαααααΌαααΆαααααα»ααααα ααΎααΆαααα»ααα½αααααα αααααααΆααααααααααααΎαααα½αααααααΎα αααΎαααΆα 20 αααα»ααα½ααα·ααΆααΈα αα αα α»αααααααααααΎαααΆαααααΆααΈααααΌααΆα αααΎαααα
ααΎαβααΆαβαα·αβαααα»αβααΆααααβααααΆααααααααβααΈααααΌβααααΆβααΆα
αααΎαβααααΆαβααβα αΎαα αααααα·αααααΆαα - αα ααΆααΈααααααΎααα
αααα»ααααα’α·α
ααααΌαα‘αΎα ααΎααα·αααΆααααααΎαααααααααα’αααΌαααα’αΆα αα½αααΎαα’αα·αααα αα·αααΎαααααΎαααΆαααααΆααΈααααΌααΆαααΌααααΌααΆααααααα αα½αααααααΆαααααααααΌααααααααααΆααααααααΎαα αα ααααααααα ααΎαααααΎαααΆαααΆαα αααα αα·αα’ααααΎαα’αααα’αα·ααααααα±αααααααααΆαααΆαα½ααα½αααα ααΆααααααααΆααααΆααα ααααααααΆαααα·α (ααααΆαααααααααααααααΆαααααααααααα»α) αααααΆααααΈαααααΆααααΆααααααΉαααΆααααα»αααααααααΆααααΆααααααΆαααααα»αααΆαααΆααααΌαααΆαααααα αΆαααα αααα»α monolith α ααααααααα αααα»αααααΆααααΆαααΆαααααααααα αΆαααΈα’αααΈαααα’αααα’αα·ααααααααααΎαα·ααΈαα½αα¬αααααααααααααααααααΆααααααΆαα α αΎααααααΏααααα αΆαααΈααααααααααααα·ααααα
α₯α‘αΌαααααα αααα»αα§αααααααααΎααααΆαα PaaS CLI ααααΆααααααααΈαα½αααααΌαααΆααααααΎαααΆαα½αααΉαααΆααααααααΆαα½α α αΎαααΌαααααΆααα·ααααααααααΈααααΌαααΆαααααααααΆαα½αααΉαααΈαααααααααα α αΎαααΆαααααααΆααα ααΆααααααΆααααΆαα
ααΎααααΎααΌα ααααα ααΎααααΈααααααααΎαα»ααααααα "ααΆααααα ααααΈααααΌααααΆαααα"
ααΆαα½αααΉαααααΆαααααααα monolithic αααααΆααααΆααααααααααααΆαααΆααααΆααααααΆαααααΆααααααΌααα αααα»αααα·αααα’αααα’αα·ααααααααααΌαααΆααααααα±αααααααααα’αααΈααααααα»αααΎαα‘αΎαααΆαα½αα’ααααα·αααΆααααααα½αααα αα αααααααΎααΆαααΎααααΆααααααααααααΈ ααα·ααααααΆαααααααα’αΆαααααααΎααααΆαα αα·ααα αααααα αΎαα
ααΎαααΈααα ααΎααααΈα±ααααααΆααααααααααΈααααΌααααΆααααααΆαααααα·αααααΆα ααααΎαααΆαααΆα αααΎαα αΆαααΆα αααααΌααααααΎαα‘αΎα ααΌα ααΆα
β’ ααΆαααΆααααΎ;
β’ ααααΎαα»αααΆαααΆα (Jaeger);
β’ ααΆααααααΌααααα»αααα α»α (Sentry);
β’ ααααΆαααΆα ααΆα ααααΉαααα·ααΆαααααΈ Kubernetes (ααααΎαααΆαααααααΈαααααΉαααα·ααΆααα);
β’ αααααααααααααΆαα / ααααααΈααααα (α’αααα’αΆα
ααααΎ Hystrix);
β’ ααΆααααααααααααΆααααααΆααααααΆ (ααΎαααααΎ Netramesh);
β’ ααΆααααα½ααα·αα·ααα (Grafana);
β’ ααΆααα½αααααα»αααααΆ (TeamCity);
β’ ααΆαααααΆαααααα αα·αααΆαααΌαααααΉα (Slack, email);
β’ ααΆαααΆαααΆαααΆααα·α
αα
; (ααΈαααΆ)
β’ ααΆααααα
αα―αααΆαα
ααΎααααΈααΆααΆααΆαααααααααα·αααΆαααααααΆααα»α αα·αααααααΆ αα·ααα ααααΆαααααα·αααααΆαααΌα αααααΆααααΎααΆαααααααΆα ααΎαααΆααα·αα‘αΎααα·αα’αααΈααΆααααα αααααΆααααααΈααααΌαα αααα»α Avito α
αααααααααΎααααααααααααααΆααααααΈααααΌ
αααα½αααΆααααααααΎααααΈα’αα»αααα "ααααααααΆααααα" ααααα½αααααα½ααααα»αα ααααααααΆααΈααααΌ Avito ααΆα αααΎαα
- ααΆααααα ααα αααααΆαα ααΆααααααααααΆαααααΆαα;
- Platform as a Service (PaaS) concept;
- αααα½ααα·αα·αααα’αααΈααααααααΆααααααΎαα‘αΎαααΆαα½αααααΆααΈααααΌα
αααααΆααα’ααΌααΈαααα ααΆαααααααααα½αααΆαααΈαααααΆααα αααααΈααααΌααα ααΆαα
A. ααααΌα - ααααΆααααααΆααααα ααααΌαααΎαααΆααααα Istio ααα»ααααααΆααΆαααααααααΆαααΆααΆααααΎααααΆααααααΆαα
αααΎαααα αααααΆααααααααααααααααααΆααααα·ααΆαααααααΎαα ααΌα
αααααα·αααααααΆααααααααα
αααα»ααααα»αααααΆαααααααα Alexander Lukyanchenko ααΆααααααΎααααααααααΆαααααΆαααααα½αααααααΆαα -
α. ααααα - Kubernetes α ααΎαααΆαααααααΆα αα·αααααΎαααΆαααααΆααααααΈααααΌαα
ααΎααΆα
C. ααΆα - ααααααα ααΎααα·αααααΎααα α¬ααααα»ααΌα
ααΆ OpenStack αα ααα»ααααααΉαααα’ααααΆαααααα»αααΎααα ααααα
αααααΆααααΆααα’ααααααΌαααΆααααα αΌαααααΆααα PaaS α α αΎααααα·ααΆααα, αα αααα»αααα, ααΆαααΈαααααα
I. αααΆαααΈαααααΎααααααααααααΆααααα§αααααααααΎααααΆαα CLI α ααΆααΊααΆααΆαααααα½αα’αααα’αα·αααααααααααΎαααααΆααααααΈααααΌαααα»ααα·ααΈααααΉαααααΌα αα·ααααααΆααα·αααααααΉααααααα’αααααααΆα
II. α’ααααααααΌααα½α ααΆαα½αααΉαααΆααααααααααα§αααααααΆααα’ααααΆααααααααΆαααααααααααααΌαα α
III. ααΆααααα»α. ααααΆααααΆαα½αα’ααααααααααααααααααααααααααΆαααααααααααααααααααα·αααααΆαααααααααΆαααααΆαααα ααΌαα’ααα»αα αααααααααααααααααα αα·αααααα·α αα ααΆααααα½αααααΌαααΆαααααΆαααααα αααααΆαααααΆαααααΆααααΆααααααα αααα ααα·α αα ααΆααα αααα»α Jira α ααΎαααααΎα§αααααααΆααααα»αα α ααΆ Atlas αααααΆααααΏααααα
ααΆαα’αα»ααααααααΆααααααΈααααΌαα αααα»α Avito ααααααΌαααΆαα’αα»αααααααααααΆααααααααΆααααααα½ααααααααα½αααΆααααααααααααΎαα½αααΆαα ααααΆααααΆαααΈαα½ααααααΆαα’αα·αααααα αα·αααΆαα ααααααΆαα
ααΎβαααααβα’αα·ααααααβααααΆβααααΆαβααΌα βαααααααΆαβααααΎαααΆαβαααΆαβααΌα βααααα ?
ααΆααΌαα αααααααααΆααααααΆααααααΎαααααΆααααααααΆαααΌα ααΎααα ααΌα αααα
CLI-push β ααΆααα½ααααα αΌαααΆαααααααααΆαα β αα»ααα β ααΆαααααααΆα β ααΆαααααΎααααααα·ααααα·αααα·α β ααΆαααααΎααααα Canary β Squeeze Test β Production β Maintenance α
α αΌαααΎαααααααΆααααΆαααΆααα·αααααΆαααα αααα»αααααΆαααααα
CLI-αααα»α
β’ ααΆααααααΎαααααΆααΈααααΌ.
ααΎαααΆαααααΌα’ααααααααααΆααΌαααΎααααΈααααααα’αααα’αα·αααααααααααααΌαααΈααααααααΎααααΆααααααΈααααΌα ααααα½ααααα
αΌαααΆααααΆααααααααα
ααααΈααααΆααααα’α·ααα
αααα»α Confluence α ααα»αααααααααααΆαααααΆαααααΆααααααΌαα αΎαααααΌαααΆααααααααααααα ααααααααΊααΆαααα αΆααααααΆαααα
α‘αΎααα
ααΎαααααΌαααααΆαααααΎααααΎαα ααΆααααΌαα
αααΆααααα
αααΎαααΎααααΈααΎαααααΎαααΆαααααΆααααααΈααααΌ α αΎααααα αΆαα
ααααΎαα‘αΎαααΆααΉαααΆαααααα»αα’αα‘α»αααααααααΎαααααααΆα
αα ααΈαααα αα ααΎαααΆαααΆααααα§αααααααααΎααααΆαα CLI ααααΆαααααα½ααααααααΎααααααααααααα·ααααααα αΆαααΆααΌαααααΆααα ααααααααΎαααααΆααααααΈααααΌα ααΆααα·ααα ααΆαααα½αααΆααααα»α git ααααΌαα αααααΆα’αααΈαααααΆαααααΎα
- αααααΎαααααΆαααααα½αααΆαααααΌ β αα½αααα αΆααααα α αααα»ααααα "α’ααααααα½αααΆα" α ααΎαααΆαααααΌαααααΆααααΆααΆααααααααααα·ααΈααααΆααααα αααα»ααααααααΆαααααααααα Avito: PHP, Golang αα·α Python α
- ααΆααααααααΆαα½ααααα»αααααααα½αααΆαααααααΆαααα·ααΆααΆααααααΆααααΆαα’αα·αααααααααα»αααααααα ααΎαααΆαααΈαααΆααααΆαααα½α - Minikube ααααΌαααΆαααΎαααααΎαααΆα ααΆααΆα Helm ααααΌαααΆααααααΎα αα·αα αΆααααααΎααααααααααααααααα·αα αααα»α kubernetes αααα»ααααααα
- ααααΆααααΌαααααΆααα·αααααααααααααΌαααΆαα α’αααα’αα·αααααααα·αα αΆαααΆα αααΉαααΈ IP ααΆαα αΌα αα·αααΆααααααααΆααααΎααααΈααα½αααΆαααΆαα αΌαααααΎααΌαααααΆααα·αααααααααααΆααααααΌαααΆα - αα·αααΆαα αααα»ααααα»α αα ααααΆααααΆα α¬αα αααα»αααα·ααααααααααα ααΆαααααα ααα ααΌαααααΆααα·ααααααααααΌαααΆαααΆααα±ααααααΎααααΆααααααΆαααααα»αααΆαααααααα ααΆαααααααααααα’ααα±αα ααααααα α»α αα·ααααααΆααα»αααααΆαα
- ααΆα’αα»ααααααΆααα½αααααα»αααααΆααααΆααα α αΌααα·ααΆαααΆα’αααα’αα·ααααααααΆαααα’αααΈαα½ααα αααα»αααααΆααααααΈααααΌααΆαααα IDE ααααααΆααα α§αααααααααΎααααΆααααΎαααΎαααΆαααααΆααααααΌααα αααα»αααααααααα―αααΆα α αΎαααα’ααααΎαα½αααΆ αααααΎααααααα·ααΈα‘αΎααα·α (αααααΆαα Golang) α αΎαα αΆααααααΎαα‘αΎααα·αα αααααΆαα PHP ααΎαααααΆαααααααααΌααααα αααα»αααΌα α αΎαααΆαααααααααΆααααααΌαααΆαααα½α "αααααααααααααααα·"α
- αααααΎαααΆαααααΎαααααααααααααααααα·α αα αααα»ααααα»ααααααααααΆαααα, ααα»αααααα·αααΆαααααααααααΆααααΆαααααΎααααΆααα
β’ ααΆαααΆαααααααΆαααααΆααααααααΆαααΌα .
ααΆαααΆαααααααΆαααααΆααΈααααΌ ααααΆααααΆαα·α αα ααΆααα·α αα½α αααααΆααααΎαα ααΆαααααααααααααΌαααΆαααΆαααΆαα
I. Dockerfile α
II. ααααααα
ααΆααααααααα
III. ααααΌαααΆα Helm ααααααα½αααΆαα·ααΆα αα·ααα½ααααα
αΌαα
- ααΆααΆαααααααα½αα―α;
- ααααΌ;
- αααααααΆααααΆααααααα·αααΈααα·ααΆααΆαααααααααααΆα
ααΎαααΆαααααΆαααΊα αΆααα ααααΈααΆαααααΎαααΆα Kubernetes manifests α‘αΎααα·α ααΌα ααααα₯α‘αΌαααααα½αααΆααααΌαααΆααααααΎααααααααααααααααα·α ααα»ααααααααΆαααααα»α αα½αααααΆαααααα½αααΆαααΆαααααααΆααααααααα·ααααααα α αΆααααΈααααααααα ααΎαααΆα Dockerfile α αΎαα’αααα’αα·αααααααααααααΆααααααααΆααααΌααααα»αα―αααΆα app.toml ααααΈαααα½αα
ααΆα / α αΆαα αΎααα αααα»α app.toml αααα½αααΆαα·αααΆαα’αααΈααααΌαααααΎαααααΆαααα½αααΆααΈααα ααΎααααααΆαααααααα αα·αα ααα½αα αααΆααα ααααααααααΆαααααααααααΌαααΎαα‘αΎα (αα ααΎαααΆαααΈααα dev ααΎααααΆααααΆα ααΆαααα·α) αα·ααααα αΆαααΈααΆαα’αΆαααααααααααΆα ααΌαααααααααΆααααα ααααααΆαα = "ααΌα " αα αααα»ααααα»α [αααΆαααΈα] α αααααΊααΆαααααααααααααΉαααααΌαααΆααααα αααα ααααΆααααααΆαααα Kubernetes α
αααααΆαααα αααααα’ααααΎααΆαααααα ααααΌαααΆα Helm α αΆαααΆα αααΆααα’ααααααΌαααΆααααααΎααααααααααααααααα· α αΎαααΆααααααΆαααα ααΌαααααΆααα·ααααααααααΌαααΆααααααΎαα
β’ αα»ααααΆαααΌαααααΆαα ααΆααααα½ααα·αα·αααααααααααααααααααααααα·αααα
ααααΌαααΆαααΆαααΆαα
- ααΎααΆα Dockerfile αα?
- ααΎααΆα app.toml;
- ααΆαα―αααΆααα?
- ααΎβααΆαβα’αΆαααααβαα
βαααα»αβααααΆαα?
- ααΆααΎα
αααΆααααΌαααααΉαααααΌαααΆααααααα
αααα
ααα»α
α
α»ααααααα ααα
αΆααααααΆαααααααα½αα―ααααααααΆααΎααα·ααααα½αααΆαααααααΌααααα½ααα·αα·αααα
β’ ααΆααααα
αα―αααΆαα
αα
ααααΆαααααααΆααααα αΆα ααΆα αΆααααΌα
ααΆααΆααααααααααα»α ααα»αααααα
αααααΆαα½αααααΆααα ααΆααααΆαααααααααΆαα½α "ααΆααΏααααααΌαααΆαααααααα
α
αα" ααααα ααΌα
ααααα αΎαααΆαααΆαααααααΆααααΆαααααααααα
αααα»ααααααααααΆαααααα
ααΆα
αΆαααΆα
ααααααΆαα―αααΆααααααΆααααααΆααΈααααΌααΈαα½ααα ααΆαα½ααααα
αΌααααα»αααΌα
ααΆααααααα
I. ααΆααα·αααααΆααααααα’αααΈααααΆαααα. ααΆαααααααααααΈαααΈααααααα’αααΈα’αααΈαααααΆααααΎ αα·αα ααα»α’αααΈααΆαααΆααΆααααΌαααΆαα
II. αααααααΆααααααΆααααΆαααααΆαααααααα. ααΆααΆααΏαααααΆαααααααααααα‘ααααΎαααΆαααΆααα αα ααΆααΆααααα½αααα α§ααΆα αααααΆααΎα’ααααααα»αααααΎ Redis αααααΆααααααΆαααααααΆαα α¬ααΆααααΆαααααα»ααα·ααααααααααΆαααα αααα»αααααααΆααααΆααα αα αααα»α Avito αααααΆαααααααα αααααΊααΆαααααααΆαααα ααΆαα Confluenceα
III. ααααα ααα. ααααα»αααααααααααΈααααΈααΈααΆαα αΆααααααΎαααααΆαααα αα·αααΆααααα»αααααΆαααααΆααααααααΆαααΆα
IV. αααα½ααααα½αααΉαααΆαααααααΆαααααααααααΆααΆααΆαααα’αααα»αααΆααααααΎαααΎααααα αΆααααα·ααααα½αααΆαααΆαααααα’αααα’αΆα αα½αααααααα αααααααΎααΆαααΆαα½αααααΆααααα
V. ααΆααα·αααααΆα’αααΈα ααα»α αααα αααααααΆαα API. ααααα·αααΎααααΆαααααα’ααααα·αααΆααααααΆαααα·ααα αα αα αααα·ααααααααΆααααααΈααααΌααααααΆααΆααααααΉαααααα’αααααΉαα αααΆαααααΆαααααααΆααααΆα α₯α‘αΌααααααΎαααααΎ Swagger αα·ααααααααααΆαααααααΎαα α ααΆαααααααααααΆααααΏααααα
VI. ααααΆα. α¬αααααΆαααααΆααααααααα αΆαααΈααα·ααα αα»αααΆα α¬ααΆααααα αααα ααΆαααααααααααααααα»αα αα»ααααααααΆααααααΆαααααα·αααα·α αα½ααααα½αα’αααα±αααααααΆααααΆαααΆαααα αα ααΆα§ααΆα ααα ααΆααΎα’ααααααα»αααΆαααα»αααΆαααααα ααΆααΈααααα’αααααΆααα±ααααααΎαααΆααααααΆααα’αααααΆαα’αΆααΈαααααααΌα ααααΆααΆαααΈαα½ααααααΆα ααα»αα
VII. ααα αΆαα α¬ααα αΆααααααΆαααα. αααα»αααααΈααΆαα αααΎα ααΆα’αΆα ααααααααααααααααααααα·αααααααΎ PaaS ααα»ααααααΎααααΈαα»ααααα·ααΆα ααΎααααααΌαα±ααα’αααα’αα·αααααααααααΆαααα½αααΆαααααα
ααΆα α»αααααα ααΆααΆααΆαα’αα»ααααααα’αααα»αααΆααααα½ααα·αα·αααα―αααΆα αααααααααααΉαααΆααα·αα·αααααΎαααΌαα
αααΆα αααααααααα
- αααα»ααααα αααααΆααα
- ααΆααααααΎαααααααα αααα»α TeamCity α
- ααΆαααααααα·αααα·α
- αααααααααα αΆααααααΆααααα ααΆααααααααΆαααααΌαααΆαααα ααΈααα - ααΆααααααΆααααααα αα·αααααααααααααα·αααααα·α αα½α αααα»αααΈ PaaS α αααααααΆααααααααααααααααααα·αααααααααΆααααα ααααααααααΆααααααααΌαααΆαααααααααααΆααααΆαααΆαααααα αααα»αα’αα·αααααααααααααα α¬α§ααΆα αααααααα·αααΎα’αααα’αα·ααααααααααΆαααααααα
- ααΆαα α»ααααααααααΆαααααα α’αΆααααΆα (ααΎαβααΆαααΎ)α ααΆαα½αααΉαααα αΆαα αα·αααΆαα’αΆαααααααΆααα’ααααααααΆα
- αααα»ααα·αα·αααααΎαααΆαααααΎα αααΆααααα»αα ααΎααα·αα·αααααΎαααΆααΎαα½αααΆααΆαα½αα’αΆα ααΆααααααααααΆααα¬α’ααα α§ααΆα ααα αα αααα»ααα½ααααα»αα αααααα½αααΆ ααΆααΆαααααΆααααααΌα α¬α’αααΈααααααααααα α‘αΎααααα’αΆα αααααααΆαααααααΆαααααααααΆααααα·αααααααααΆαααααααααααααααΆααααααΆααααα αααααΆααααααΆαααααΎα αααΆααααα»ααα·αααααΌαααΆαα’αα»αααααα ααα»ααααααααΌαααΆαααΆαααα αααα»αααΆαααΆααα½α - PaaS ααααΌαααααααααααααΆαααααα αΆααααααΆαααααα ααααααααΆααΆααα»ααααα·ααΆααααα»αααΆαααααΎααααΆααααΆα
αα»α
ααααΆααααΆααααααΆααααΊααααΆααααααα ααα αααα»ααααααΆαααααααΆαα
- ααΆααααΆααααααα·ααΈα ααααα ααΆαααααα αα»ααΆα - αα αααα»αααΌαααΆα Docker α
- ααΆααααααΎαααααΌαααΆα Helm αααααΆααααααΆαααααααα½αααΆ αα·αααααΆαααΆαααααααα αα½αααΆαααααααΆααααΌαααααΆααα·αααααα αα·αααααΆαααααααΆααα αα½αααΆααααΌαααΆααααααΎααααααααααααααααα·ααααααΆαααΆαααααααα ααΆαααααααα app.toml αααααααΌαααΆααααααΎααα ααααΆααααΆα CLI-push α
- ααΆααααααΎααααα»ααααααααΆααα’ααααααααααααααΎααααΈααΎαα ααα (αα αααα αΆαααΆα α) α
- αααα»αααααΎαααΆαααΆαααααΎαααααα―αααΆ αα·αααΆαααααΆααΆααααααααααααααααΌα. ααααα·αααΎααΆααααααααααααααααααΌαααΊααΆαααΆαααααα·ααααααΆααααααΆαα αααααααααΆααααΆααααααΉααα·ααααααα αα»ααααααααα - ααΎααααΈααΆαααααααΆαα ααααα·αααΎααΆαααα·ααα ααΎα ααα»α αααα’αΆα ααα½αααααΆα αααααααΆααααααΉαααααΌαααΆααααααααΆαααα»α "αα»αα·αααα·αα·αα"α αααααΆαααα ααααα·αααΎαα·αααΆαααΆααααααα’αα αααα»αααΌα ααΆααααΆααααααααΆαα α’αααα’αα·ααααααααΉαααα½αααΆαααΆαααΌαααααΉαααΆαα·αααΆαααΆαααΈαα αααΎααααα»αααααααααααααΆαααααΎααααα ( α αΎαβα’αααΈβαα½αβααααΌαβααααΎβα’αααΈβααΆ)α
- ααααααααααααΆααααΆααααααα’αααα
αα
αΆα αα·ααααΈααΈααΌ. ααΎααααααααααΆααααααααΆαααΌα
ααΆα
αααααα
αααα»α Golang α αΎαααααΎαααΆααα½αααΆαα
αααα»α Kubernetes α ααΌα
αααα ααΆααααααααααα½ααααααααΌαααΆαααααΆαααααΆααααΆαα½αααΉαααΆααααααααααΆααΆ Golangα ααΆαααααΆαααΎα αα
αααα
αΆααααααΎα ααααΌαααΆααα’αααα
ααΎαααΆαααΈαααααΌαααΆαααααΎ ααααα·αααΎα’ααααα·ααααααα’ααα GOMAXPROCS α
αααΆααααΆαααα α αΎααα
ααααααααααΆααααααααααααΆα
αααΎαααααΌαααΆαααΆααα±ααααααΎαααΆααα
ααΎαααΆαααΈααααα½α αα½αααα
αΆααααααΎα ααΎααααΈααααα½αααααααααααΆα ααααααααααααααΆαα
αα·ααα
ααα ααααΆα ααααΆαααααααααα αΆαααΈααααααααααααααΆααααα·ααααα·ααααΆααααααΌα ααααα·αααΎα’αααααααΎαααΆααααααα·ααΈαααααααΆαααΆααααααααααααααααΆ αα·ααα
αααα»αααΆααααααΆαααααααΆααααααααααΆαα (αααααααααααΆα ααααΊ
αα ααΈααα ).
αααααααΆα’αα»αααα αα·α ααΊααα’ααΆαα α’αα·ααααΆα α¦α€α£ms α’αααααααΆα α€α’msα ααΌαααα’αΆα α α»α ααΆαα
αααβαααβααβααΆααβαα·α βααΊβααα’βααΆαα α’αα·ααααΆ: 14091 ns, α’αααααααΆ: 151 ns α ααΌαααα’αΆα α α»α ααΆαα
αα
ααααΆααααΆααααα
αααΆααα½αααααα»αααααΆ α’αααα’αΆα
αααααα’αααααααααΆαα
αααΆαα α¬α’αααα’αΆα
ααααΎαααααΆααα
ααΆαααααααΆα
β’ αα·αα·αααα’αα»αααααΆα αα»ααααα’αααα
αΆααααααΎααααααααααΆααα‘αΎααα
ααα·ααΆααΆααααα’αααα
ααααΆα α’αααααααΌααα·αα·αααααΎαααΌα
ααΆααααααα
- α
ααα»α
αααα
αα API α
- ααΆαα’αα»αααααΆαααΆαααααΎαααα
ααα»α
αααα
αα API ααΆαα½ααααααααΆαααα
- αααααααααααα ααα»α
- ααΆααααααααααααΆαααααΆααααααΎαα
ααααΆαααα (αα
αα
α»αααααααααααααΌαααΆαααααΎααα netramesh)
- ααααααααααΆαααααΆααααααααα
αΆαααα
αααααααΎααΆααα
ααΆααα‘αΆααααα»αααααΉαααα·ααΆαααα αααααααΌαααΆαααΆα
αΆαααΆα
αααΎααααΈααΆαααΆαααΆααααααΆααααααααΆααααααααααΆααα‘αΆααααα»αα α’αααα’αΆα
ααααΎααΆαααα·αααααα ideempotent αα
α‘αΆααααα»α ααααα·ααααααΎαααΆααααααΆααααααααΆαααα (αααααα’) αα·ααα·ααααααα’αΆααΈαααααααααααααΉαααΆααααααΆααααααααΆαααα (αααα’αΆαααααααΆαα!) α α αΎααα
α
ααα»α
αα
ααααααααΆααααααΆαααααααααΆαααΆαααα αΆ ααΆααααααΉαααΆα’αααααΆααΆα’αααααααα αα·αα’αΆαα‘αΆααααα»ααα½ααααα
ααααααΆααααα±ααααΆαααααΉαααααΌαα
αα·αααΆαα’αα»αααααΆα αααΎααα αααα»α Avito αα α‘αΎααα ααα»ααααα’αΆααααααα½ααααααα»ααααααΈαα αα·α αα αααααααααααααααααΆααααα αααΎαααΆααα αααα»αααααααααααααα»αα’αΆα ααα αα·ααααααΆα ααΆααΆααααααΆααααα½ααααα»αααΆααααααΆαααα·αααΆααααΆαααααΆααΈααααΌα
ααΆαααααΎαααααααααα
β’ ααΆαααααΎαααααααααα·ααα»ααα·αα αααααΆαααααα αΆαααα₯α‘αΌααααααΎααααα»αααααΎαααααααΎαα
αα
β’ ααααααααααααα ααΎαααααΆααΆαααΆαααααααΆααααααΆααα’αααα
ααΆααααααΎαααΆαααα’αααα»αα α αΎαααααααΆααα’ααααααααΆααααααΈαα½ααααααΌαααααΆααααααααα»ααααΆαααααΎααααααααα»α - αα·ααΈαααααΎαα’αΆα
αααααΈααααΎαααΆααα
αα
α»ααααααααααααΆαααα αα·αααΆααα»αααααΆααΆαα½αααΉααααααα»αααααααΆααααααΌα
ααααΆα ααααα·αααΎαααααΆααααΈααΆαα’αΆαααααααααΆαααα ααααΎαααΆαααααααΆααααΆααα
α»ααα½αααααααα αααααΆαααααΆα
αααΆααααΆαααααααΆααααα
αΆααααααααΆα α’αααααααΌαααΈααααΆααααααΌα αα·ααααααααΌαααααΆαααΆαα
ααΆα§ααΆα ααα ααΎαααααΎααααΆαααα·ααααααααααααααΌαααΆα ααΎααααΈα’αα»ααααααΆαααααΎααΆαααααααΆααααααααααααααααα·αααΆαααααΉαααααΌα α αΎααα
ααΈαααα
αα ααΆααΌαα
αααααΆααΎααααΆααααα’αΆα
ααααΎααΆαααααααΆαααΆαααααα·αααΆα
ααα‘α»ααααααΆααααααααα»α ααΎααα·αα·αααααΎαααΆααΎααΆαααααΎααααΆααααααΆαααααΌαααΉααααααααααααααΆααααααα α αΎαβααΎαβαααααβααΆβα ααααβαα βααΎβααΆαβαααα»αβαα·ααα
α) ααΎααα·αα·αααααΎαααααα»αααα»αα
- ααΌα
ααα - ααααααΆααΆαα’αααΈαα½ααα·αααααΎαααΆαααΆααααααα ααααα·αααΎααααα»αααααΆααααααΆααα
α»αα
αααΎαααα
- ααααα - ααΆαααΆαααΆααααααΎαααααα·αααααΆαα
α) ααΎααα·αα·αααααΎαααΆαααΆααα
αααααααααα
ααΆα RPS α
αα
ααΈαααααΎααα·αα·αααααΎαααΆααα»αααααΆαααΆααααααα
αα
α»αααααα αα·ααααααα»α αα·αααα·ααΆαααα»αα ααΆα§ααΆα ααα ααααα·αααΎααααΆαααααα½αααα·αααΆα 100 rps αααααΆααααΌαααΆαααααααα·αααΌαααα’ α¬αααααΊααΆααααααααΆααααΆααααααααΆ ααα»αααααααα»αααααΈααΆααααα αααααΆα ααα»αααααααααΌαααΎαααααΆαααααααΆααα·ααααα
ααααα·αααΎαααα»ααα
αα·α ααΆα RPS α
αααΎαααα ααααααα ααααΆααΆαααααααααααα α»α α αΎαα
ααα»α
αααα
αααα½αα
ααα½αααΆααααααααΎαααΆαααααα»α α αΎααα½ααααααΊααααΆαααααααα return true;
ααΆαααααΎααααα Canary
αααααΆααβααΈβααΎαβααααβααΆααβααΆαβααααΎβαααααβααααα ααΎαβααααΎβαααααβααΈααααΌβααααΆβααΎβα’αααβααααΎβαα½αβα
ααα½αβααΌα
α ααΎαα
αΆααααααΎαααααααα»ααααααααα ααΆαα½αααΉαα
ααααααΌα
αα½ααααααααα·ααααααα
ααααΆαααααααααΆαααα - αα·α
ααΆα 0,1% α αα
ααααΆααααΆαααα ααΆααΆαααΆααααααΆααααααΆααααΆαααααααΆαααΆααααααα
αα
ααααα αα·αααα·αααααααΉαααααΌαααααΌαααΆααααα
αΌααααα»αααΆααααα½ααα·αα·ααα ααΌα
αααααα½ααααααα αΆααααα αΆαα
αααα»αααααΆααααα±ααααΆαααΏαααΆααααα’αΆα
ααααΎαα
ααΆαα αααααααΆα’αααααααΆαααααΆααααΆαααααΎααααα Canary ααΊ 5 ααΆααΈα αΎαααααΆααααΊ 2 ααααα αααααΆααααααΆαααααααα»αααααΆα ααΎαααααααααααααΆαααααα
ααααα·ααΆαα
- ααααααααΆααααΆααααααΆααΆ ααΆαα·ααα αα»ααααα·α php-fpm;
- ααα α»ααα
αααα»α Sentry;
- ααααΆαααΆαααααΎααα;
- αααααααΆααααΎααα αα·αααααΆαα αα·ααααααα
- ααΆαααΊααααΆα;
- ααααΈααΎαααα ααααΎαααΆα αα·ααα·αααΆααααααααΆα;
- αααααΆααααα·αααα
ααΆαααααΎαααααα ααααΆα α
ααΆαααααΎααααα Squeeze ααααΌαααΆαααα α
ααΆ "ααΆαα
ααααΆα
α" αααααα ααααααααα
αα
αααααααααΌαααΆαααααΆααα
αααα»α Netflix α ααααΉαααΆαααααααΆααΊααΆααααΌαααΎααααααα§ααΆα ααααα½αααΆαα½αααΉαα
ααΆα
ααααα·αααααΆαααααα
ααα»α
ααααΆααααΆαααα αΎαααΌα
αααααααααααααααααααααααΆα αααααΆααααααΎαααααααα§ααΆα ααααα½ααααα αΎααααα»αααΌααα - ααααααααααα’αα·ααααΆα ααΎαααΎααα·ααΆααα·αααΈαααααααααα½αααααΆαα½αααΉα "ααΆαα
ααααΆα
α" ααααΌαα ααΌα
ααααα αΎα ααΎαααααΆααα§ααΆα ααααα½ααααα»αααααααα½α α αΎαααααΆααααΆαααααΆαααααΆααααααΌαα
αα·ααααααααΆαααααααΆαααα "ααΆαα
ααααΆα
α" ααα αΌαα
αΌααα
αααα»αααΌαααααΆααα·ααααααααααααααΌαα
ααααα αααααΆαααααααααααΎααααααΎαααααααααααΆααααα»ααα·ααααα·αααα·αααΆαα½ααα½ααα α¬ααΌααααΈαααααα½α "ααααα" ααΆαα½ααα½αααα
ααα·ααα
β’ ααΆαααααΎααΆαααααααΆαα αα αααααΎαααΆααα ααααααΆααααααα·ααααα ααΎαααΆαααΆαααΆααΎααΆααααΎααΆαααααααΆααααΆαααΌα ααααα α ααΆααααα·αααααααααααΎα ααΆααααα½ααα·αα·αααααααΌα ααΆαααααΈααΈααΌααΊααααΆαααααα·αααααΆαααα ααΆαααααΎααΆαααααααΆααααααααααααααααααΆαα½α RPS benchmarking αα αααα»ααααααααα»αααααααααΆααααΎαααΆα ααα»αααααααααΆααααααααΆαααααα½αα ααα½αααΌα ααΆααΆαααααΆαααΆαα’ααΈαααΊαα·αα ααΌα αααα ααΎαβααΎαβααΆβααααΌαβαα βααααααβααα·αααβααΆααααΆααβαααααα·ααΈα
ααΆαααααααα
αααααααΎααΆαααααααΆαααΎααα·ααΆαα
- ααΌα
ααΆαα CPU αα·α RAM,
- α
ααα½αααααΎαα
αααα»ααα½α,
- αααααααΆααααΎααα,
- ααΆαααααΆααααααα’ααααΎαα·αααααααααααααα·ααΆααααααααααα
αα αααααααΎααΆαααααααΆαααααΆαααα ααΆααααααΆααααααααααα»αααΆααααα½ααα·αα·αααααΆαα’αΆαααααααααααΆ ααΎααααΈαα»αα±ααααΎαααααΎααΆαααααααΆαααααΆααααααααΌααα αααα»ααααααααααΆαα α αΎαααααΆαααααααααΆα αΌαααααΎαααΆααα·αααααΎαααΆαα ααΎααααΈαααααΎαααΆααααα»ααααα’αΆα ααα½αααααΆααααααΆααααααΆααααααΆααααΌα ααΎαααΎααα·αααααααααααααα·ααΆαααααααααααΆαααααααααΉαααα’αα "αα·ααααα»α" (ααα’ααααΎααΆααα½ααααα αΌαααααΌα ααΆαα CPU αα·α RAM αα½αααΆαα½αααΉααααααΆααααΆααααΆαααααααααα·ααΈ) α αΎααααααααααα½αααΆααΆαα½ααα·αααααααααααααα·ααΆααααα ααααααΆααααα αΆααααααΎα α αΎαααΌα αααααα ααΎ "αααααααααΆααα’αΆααααα" "ααΈααααΌααα ααΆαα
ααααΆαααα
αααααΆααααΈααααΆααααααΈααααΌααααΌαααΆαααΆααα±ααααααΎαααΆα ααΎαα’αΆα ααααΆαααααααΉααα ααΆααΆαα
αααααΊααΆααααΆαααΆαααααααΆααααααααΎαα‘αΎαα
- ααΆαααααΎαααΆαααααΎα
αααΆααααα»ααααααΆααααααααααΆααα
- αα
αα
α»ααααααααΆααα»ααααα·ααΆαααααΌαααΆαα
ααααααΆαα
- ααααΆαααααααα½αααΆαα·αααααΌαααΆαααααΎαα
αα
α»ααααααααΆαααΌαααα αΎαα
- ααααα»αααΎααααΆααααααΆαααΆαααα
α»ααα½αα±ααααααααααΆαα α¬αααααΆααααα·αααααααααααααΆαα
αααα
αα½αααααααΆα
- ααααΆααααααααααααααααααααΌαααΆααααα·ααΆααααΈαααα αΎαα
αααααααααα½ααα»αααααΌαα αααααααααααΆαααααααα·ααααα·ααΆα ααααααΆαα»αααΆαααααΆαααααΆααααααααα - α§ααΆα ααα ααααΆαααααααααα·αααααΌαααΆαααΆααα±ααααααΎααααΆααααΌαα αΎαααΌαααΆαααΌαααααΆαααααααΆααΆααααααααααΆααααΆααααα½ααα·αα·ααααα»ααααα·ααΆαα
ααααΆααααααααααα
ααα»ααα ααααΆαααααααααααααΊααΆααααΆαααααααΆαα PaaS ααΆααααΌαααααααΎαα
- α ααα»α αααα½αααααααααΆαα’αααΈααααΆαααα αααααΆααα·ααααααααΎααΆαααααααααααααΆαααΆαααααααααααΆ α ααα½αααΌαααΆαααααααΆ α ααα½αααααΆαα ααααααα·ααααα ααααααα
- α§αααααβαααααΆααβααααβαα·ααααααβααΆαβααααΆαααα αα·αβααααΆα (αααααΆαααααΆααβααβα’αααααΆαβα’αΆααΈααααα αα»αααΆαβααα·αααααα)
- α§ααααααααααΆααααΆααα½ααααα αΌαααΆαα½αα§αααααα αααααΆαα ααΆαααααααααααααΆααααΆαααΆαααΆα ααΆαααΆααααΎ αα·αααΆααααα½ααα·αα·αααα
- α ααα»α αααα½αααα―αααΆαααααΆααααα
- αα·αααααΆααααα½αααααααΉαααα·ααΆαααααΆααα’αααα ααΌααΆααααααΆααααα
ααα»α
αα»ααααααααΆα PaaS α’αααα’αα·ααααααααααΈα’αΆα α αααΆααααααΆα αααΎααααααΆα αααΎααααΈααααααααα’αααΈα§αααααααΆααα’αααααα αΆαααΆα αααΎααααΈααΎαααααΎαααΆαααααΆααααααααΆαααΌα αααα»αααα·αααααα Kubernetes, Helm, αααααααα·αααααΆααααα»ααααα TeamCity ααααααΎα ααΆαααα‘αΎαααΆααααααΆαααα ααΆααααΌαααααΆααα·αααααα αα·αααααΆαααααααΆαααααα»ααααααααα·αα’ααα±αα ααααααα α»αααα α₯α‘αΌααααααΆ α αααΆααααααΈαααΈααααααΎααααΈα’αΆαααΆαα αΆααααααΎααα αα αα·ααααααΎαααααΆααααααααααα½αα―αα
αααα»αααΆαααααααααΆαααΆαααααΎαααααΆαααααααααααΆαα HighLoad++ 2018 α’αααα’αΆα
ααΎαααΆααΆα
ααααααΆαααααααΆαααααααΆααα’ααααααα’αΆααααα αα
ααΎααα
Avito αααα»ααααα
αααΆαααααα»ααααααΆααααααααα»αααααααααΈαααααααααΆααα’αααα’αα·ααααααααΈ
ααΆαααααα»ααααααΆαααΉααααααααΉααααα α αΆααααΈααααααΈ 5 αααααααααΈ 7 ααααΈα αΆαα ααΈαααα»ααααΌααααΌα ααΆαααααααΊααΆααααααααΎααΆααααααΉαααααΌαααΆαααΆααααΆααααΆαααααα»αα α’αΆα αΆαααααααααα αα·αααΆαααααα»ααααααΆαααΉααααα·ααα αααα»αααΆαα·ααΆαααααααααΎα α αΎαα’αααα αΌααα½ααααααΆαααααΎαααΎαααΉαα αααΆααααααΆααααΆαααααΎααααΎα αα·αααΆαααααΆαααα ααααααα½αα―αα
α’αααα’αΆα
ααΆααααΆααααα»αα
αΌααα½α
ααΎαβααΉαβαααααΆαβαααααβα’αααβα
αΌαβαα½αβααααβααααα»ααααααΆαβαα
βαααα»αβααΆαβααααΎβαα
αα
α»ααααααααΆαβα
ααααβααΆαβαααααΆαβααα αα·αβαα
βααΎβαααααΆαβααααα Avito αααααΆααβα’αααβα’αα·αααααα (AvitoTech in
ααααα: www.habr.com