áááºá¹ááá¬áá«! áá»áœááºá¯ááºáá¡áááºááŸá¬ Vadim Madison ááŒá áºááŒá®áž Avito System Platform ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážááᯠáŠážáá±á¬ááºáá«áááºá áá¯áá¹ááá®á០áá»áœááºá¯ááºááá¯á·ááẠmonolithic áááá¯áá¬áááºáá¬á០microservices áá áºáá¯ááá¯á· áááºáá²á·ááá¯á· ááœá±á·ááŒá±á¬ááºážáááºááᯠáá áºááŒáááºáááºááá¯á ááŒá±á¬ááŒá¬ážáá¬ážáááºá ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážá០á¡áá±á¬ááºážáá¯á¶ážááá°ááŒá®áž áááºážááá¯á·ááœáẠááá»á±á¬ááºááœááºááœá¬ážá á±ááẠáá»áœááºá¯ááºááá¯á·áá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠáááºááá¯á·ááŒá±á¬ááºážáá²áá²á·áááºááᯠáá»áŸáá±ááẠá¡áá»áááºáá»áá±á¬ááºááŒá®ááŒá áºáááºá á€áá±áá¬ááœáẠPaaS á áá»áœááºá¯ááºááá¯á·ááᯠáá°áá®áá±ážáá¯á¶á ááŒáá·áºáá»ááºááŸá¯ááᯠááá¯ážááŸááºážá¡á±á¬ááºááŒá¯áá¯ááºáááºážááŸáá·áº microservice áááºáá®ážááŸá¯ááᯠáá áºáá»ááºááŸáááºáá¯á¶ááŒáá·áº áá»áŸá±á¬á·áá»áááºáž - áááºáááºáá«á á¡á±á¬ááºááœááºáá»áœááºáá±á¬áºáá±ážáá¬ážáá±á¬á¡áá¬á¡á¬ážáá¯á¶ážááẠAvito ááœááºá¡ááŒáá·áºá¡áá¡áá±á¬ááºá¡áááºáá±á¬áºáááºááá¯ááºáá«á á¡áá»áá¯á·áááºáá»áœááºá¯ááºááá¯á·áááááºáá±á¬ááºážááá¯áááºáá±á¬ááºáá¯á¶ááŒá áºáááºá
(á€áá±á¬ááºážáá«ážáá¡áá¯á¶ážááœááºá microservice áááá¯áá¬ááá¬ááŸáẠChris Richardson ááŸáá¯á¶ážáááºááŒá¬ááœá±ážááœá±ážááœá²ááá¯á·áááºáá±á¬ááºáááºá¡ááœáá·áºá¡áá±ážá¡ááŒá±á¬ááºážááŒá±á¬áá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááá¯á· áááºááá¯á·áá±á¬ááºáá¬ááááºážá
Avito ááẠááá¹áá¬áá±á«áºááœáẠá¡ááŒá®ážáá¬ážáá¯á¶áž á¡áá»áá¯ážá¡á á¬ážááœá²áá¬ážáá±á¬ ááá¯ááºáá»á¬ážáá²á០áá áºáá¯ááŒá áºááŒá®áž áá áºáá±á·áá»áŸáẠááŒá±á¬áºááŒá¬á¡áá Ạ15 áááºážáá»á±á¬áº ááœáŸáá·áºáááºáá»ááºááŸááááºá áá»áœááºá¯ááºááá¯á·á áá»á±á¬áá±á¬ááºáá±á¬ááºáá¶ááẠáá áºá áá¹ááá·áºáá»áŸáẠáá±á¬ááºážááá¯áá»ááºáá±á«ááºáž 20 áá»á±á¬áºááᯠáááºáá¶áá«áááºá áá»áœááºá¯ááºááá¯á·ááœáẠáááºááŸáááœáẠá¡áá±ážá á¬ážáááºáá±á¬ááºááŸá¯ áá¬áá±á«ááºážáá»á¬ážá áœá¬ááŸááááºá
áá»áœááºá¯ááºááá¯á·ááẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áááá¯áá¬ááᯠáááºáá±á¬ááºáá±áááºááŸá¬ ááŸá
áºá¡áá±á¬áºááŒá¬áá±ááŒá®ááŒá
áºáááºá á¡ááá¡áá» - áá»áœááºá¯ááºááá¯á·ááá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬ážááá¯á¡ááá¡áá»áááºáá»áŸ
á¡á ááá¯ááºážááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž áá»ááºáá»ááºááŒáá·áºááŒáá·áº áá°áá®áá±ážááá·áº ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá áááºáááºáá®ážáá±ážááá·áº áá±áá áá áºááᯠááááºáá®ážáá²á·áá«á áááºážááá¯á·ááẠááá¯ážááŸááºážáá±á¬ áááºááŒááºáá¯á¶ááá¬ážááŸááá±á¬ open source ááŒá±ááŸááºážáá»ááºáá»á¬ážá¡á¬áž á á¯áá±á¬ááºážáᬠá¡áááºááœááºá áááºáá²á·ááŒá®áž áááºážááá¯á·ááŸáá·áºáááºáá¶ááẠdeveloper ááᯠááááºáá±á«áºáá²á·áááºá ááááºá¡áá±ááŒáá·áº áá°ááẠáá±áá¬áá áºáá«ááẠ(áááºááŸáºáá¯ááºáá»á¬ážá á¡ááœááºážááá¯ááºáž áááºáá±á¬ááºááŸá¯áá»á¬áž) ááá¯á· ááœá¬ážááŒá®ážáá±á¬áẠáááºážááẠáá¯ááºááᯠááŸá±ážáááºážá¡ááá¯ááºáž ááá¯áá®áá¯á¶ážááŒáá·áº ááŒááºááá¯áá±á¬ááá¹á ááŒááºážáááºáá¬áááºá á¡á±á¬ááºáá±á¬áºááŒáá«áá¯á¶áá»á¬ážááœáẠá¡á áááºážááá·áºáá±á¬ááºááẠáá±á¬á·ááºáá²áá±ážáá¬ážáá°ááẠáááááááºááŒáá·áº áá áºáááºážááá¯ááºáá áºáááºáž áá¯ááºáá±á¬ááºáááºááᯠááœáŸááºááŒááŒá®áž á¡áá«áá±á¬ááºááẠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááŸá¯ááᯠááœáŸááºááŒáááºá
ááᯠPaaS CLI utility ááœááºá áááºáá±á¬ááºááŸá¯á¡áá áºáá áºáá¯ááᯠcommand áá áºáá¯áááºážááŒáá·áº áááºáá®ážáá¬ážááŒá®áž áá±áá¬áá±á·á áºá¡áá áºáá áºáá¯ááᯠáá±á¬ááºáááºááŸá áºáá¯áááºááá·áºáᬠStage ááá¯á· ááŒáá·áºáá»ááºáá¬ážáááºá
Microservice fragmentation áá±ááºááᯠáááºááá¯áá»á±á¬áºááœáŸá¬ážááá²á
monolithic áááá¯áá¬áááºáá¬ááŒáá·áºá áá¯ááºáá¯ááºááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážá ááá¯ááºáá»á±á¬áá®ááœá±ááŸáá á±áááºá¡ááœááºá developer áá»á¬ážááẠáááºážááá¯á·áá¡áááºáá®ážáá¬ážáá»ááºážáá»á¬ážááŸáá·áº áá¬ááŒá áºáá±áááºááᯠááŸá¬ááœá±áá±á¬áºáá¯ááºááẠááœááºážá¡á¬ážáá±ážáá²á·ááŒáááºá áááá¯áá¬á¡áá áºááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá«á áááºáá±á¬ááºááŸá¯ááá¯ááºáᬠá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááẠáá áºáá¯ááŸáá·áºáá áºáá¯á¡áá±á«áº ááá°áááºáá±á¬á·áá«á
ááá¯á·á¡ááŒááºá ááá¯ááºáááá¯áá¬ážáá áºáááá¯áá¬áá áºáᯠáááá±á¬ááºá á±áááºá¡ááœááºá áá¯ááºáááºážá ááºáá»á¬ážá áœá¬ááᯠáá°áá±á¬ááºááẠááá¯á¡ááºáááº-
⢠áá
áºáá¯ááºááŒááºážá
⢠ááŒá±áá¬áá¶ááŒááºáž (Jaeger);
⢠á¡ááŸá¬ážá
á¯á
ááºážááŸá¯ (Sentry);
⢠Kubernetes (Event Stream Processing) á០á¡ááŒá±á¡áá±áá»á¬ážá áááºáá±á·áá»áºáá»á¬ážá
⢠ááŒáá¯ááºááœá²ááá·áºáááºáá»áẠ/ circuit breaker (ááẠHystrix ááá¯áá¯á¶ážááá¯ááºáááº);
⢠áááºáá±á¬ááºááŸá¯áá»áááºáááºááŸá¯ááᯠááááºážáá»á¯ááºááŒááºáž (áá»áœááºá¯ááºááá¯á·ááẠNetramesh ááá¯á¡áá¯á¶ážááŒá¯áááº)á
⢠á
á±á¬áá·áºááŒáá·áºáá±áž (Grafana);
⢠á
ááºážáá±ážááœá² (TeamCity);
⢠áááºááœááºáá±ážááŸáá·áº á¡áááá±ážáá»áẠ(Slacká á¡á®ážáá±ážááº);
â¢á¡áá¯ááºááŒá±áá¬áá¶; (Jira)
⢠á
á¬ááœááºá
á¬áááºážááŒááºáááºááŒááºážá
á áá áºááẠáááºážáááá¯ááºáá¬ááŸá¯ááᯠááá¯á¶ážááŸá¯á¶ážá á±áááºááŸáá·áº áááºážááá¯á¡ááá¯ááºážá¡áá¬áá áºáá¯á¡áá áááá±á¬ááºááŸá¯ááŸáá á±ááẠáá±áá»á¬á á±áááºá áá»áœááºá¯ááºááá¯á·ááẠAvito ááŸá ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯á¡ááœá²á·á¡á ááºážááᯠááŒááºáááºá ááºážá á¬ážáá²á·áááºá
áá»áœááºá¯ááºááá¯á·ááẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáááºááá¯á·á á®áá¶ááá·áºááœá²áááºáááºážá
Avito microservices á¡áá»á¬ážá¡ááŒá¬ážááŒá¬ážááœáẠáá áºá á¯áá áºá ááºážáááºáž "áá«áá®áá°áá«á" ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠá¡á±á¬ááºáá«á¡áá°á¡áá®á
- á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá»á¬ážááᯠá¡ááœáŸá¬áá»á¬ážááœá²ááŒááºážá
- áááºáá±á¬ááºááŸá¯á¡ááŒá Ạááááºáá±á¬ááºáž (PaaS) á¡áá°á¡áá
- ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááŒáá·áº ááŒá áºáá»ááºááá»áŸááᯠá á±á¬áá·áºááŒáá·áºááŒááºážá
Infrastructure abstraction á¡ááœáŸá¬ááœáẠá¡ááœáŸá¬áá¯á¶ážááœáŸá¬ áá«áááºáááºá á¡áá±á«áºááá± á¡á±á¬ááºááᯠááœá¬ážáá¡á±á¬ááºá
A. ááááºáááºáž - áááºáá±á¬ááºááŸá¯ááœááºá á¡á
ááá¯ááºážááœáẠáá»áœááºá¯ááºááá¯á·ááẠIstio ááᯠá
ááºážáá¯á¶ážááŒáá·áºáá±á¬áºáááºáž áááºážááẠáá»áœááºá¯ááºááá¯á·á volumes áá»á¬ážá¡ááœáẠá¡ááœááºá
á»á±ážááŒá®ážáá±á¬ á¡áááºážá¡ááŒá
áºáá»á¬ážá
áœá¬ááᯠá¡áá¯á¶ážááŒá¯ááŒá±á¬ááºáž ááœá±á·ááŸáááá«áááºá ááá¯á·ááŒá±á¬áá·áº áááá¯áá¬á¡ááœá²á·á០á¡ááŒá®ážáááºážá¡ááºáá»ááºáá®áᬠAlexander Lukyanchenko ááẠáá°áááá¯ááºááá¯ááºááŒá±ááŸááºážáá»ááºááᯠáá®ááœááºáá²á·áááº-
B. á¡áááºá
á¬áž - Kubernetesá áááºážáá±á«áºááœáẠáá»áœááºá¯ááºááá¯á·ááẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážáá»ááŒá®áž áá¯ááºáá±á¬ááºáá«áááºá
áá á¡á±á¬ááºááŒá± - ááá¹áá¯ááá¬á áá»áœááºá¯ááºááá¯á·ááẠOpenStack áá²á·ááá¯á·áá±á¬ ááááºáá»á¬áž ááá¯á·ááá¯áẠá¡áá¬áá»á¬ážááᯠááá¯á¶ážáá±á¬áºáááºáž ááá¹áá¯ááá¬ááᯠáá¯á¶ážá á¡á¬ážááá¯ážáá«áááºá
á¡ááœáŸá¬á¡á¬ážáá¯á¶ážááᯠPaaS ááŒáá·áº áá±á«ááºážá ááºáá¬ážáááºá ááŒá®ážáá±á¬á· áá®ááááºáá±á¬ááºážááŸá¬ á¡ááá¯ááºážáá¯á¶ážááá¯ááºáž áá«áááºáá«áááºá
I. áá®ážá ááºáá»á¬ážCLI utility ááŸáááá·áºááááºážáá»á¯ááºáá¬ážáááºá developer ááẠmicroservice áá áºáá¯ááᯠááŸááºáááºáá±á¬áááºážááŒáá·áº áááºáá®ážááŒá®áž á¡áááºážáá¯á¶áž ááŒáá¯ážá á¬ážá¡á¬ážáá¯ááºááŸá¯ááŒáá·áº áá°áá®áá±ážáá°ááŒá áºáááºá
II á á¯á ááºážá á¯áá±á¬ááºážáá° á¡áá¯á¶ážáá»á¬ážáá±á¬ áááºááŸáºáá¯ááºááŸáááá·áº áááááá¬á¡á¬ážáá¯á¶ážááᯠááááºážáá»á¯ááºááá¯ááºáááºá
III ááá¯ááŸá±á¬ááºááŸá¯. áááá¬áááºááŸá¬ážáá±á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááœáẠá¡á áá»áá¯ážááŸá¯áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºáááºááŸááºáá±ážááá·áº á¡áá»áááºááá¬ážááœá²áá°áá»á¬ážááŸáá·áº áá»áááºáááºáááºá ááá¯ááá¯á·áá±á¬á áá áºááŒá±á¬áá·áº Jira ááœááºáá áºá á¯á¶áá áºáŠážááŸáá¯ááºáá±á¬ááºáááºáá±á·ááœá¬ážáá±á¬ááŒá±á¬áá·áºáá¯ááºáá±á¬ááºá áá¬áá áºáá¯áá»áŸáááœááºááœá¬ážáá«á áááºážá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠAtlas áá¯áá±á«áºáá±á¬ á ááºááœááºážáá°ážááºááᯠá¡áá¯á¶ážááŒá¯áááºá
Avito ááŸá ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááá¯áááºáž ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŸáá·áº ááŒáá·áºáá»áááŸá¯á¡ááá·áºááá¯ááºážááœáẠáááºážááá¯á·á¡áá±á«áº ááááºážáá»á¯ááºááŸá¯ááᯠááá¯ážááŸááºážááœááºáá°á á±ááá·áº áá áºáá¯áááºážáá±á¬ á¡á á®á¡á ááºá¡ááá¯ááºáž áá±á¬ááºááœááºáá«áááºá
Standard Microservice Development pipeline ááẠáááºááá¯á·á¡áá¯ááºáá¯ááºááááºážá
áá±áá¯áá»á¡á¬ážááŒáá·áºá microservice áááºáá®ážááŸá¯ ááœááºážáááºááẠá€áá²á·ááá¯á· ááŒá áºáááº-
CLI-push â áááºááá¯ááºáá±á«ááºážá ááºážááŒááºáž â áá¯áẠâ á¡áá¯á¶ážáá»ááŒááºáž â á¡áá¯á ááºážáááºááŸá¯áá»á¬áž â áááá¹ááá®á ááºážáááºááŸá¯áá»á¬áž â ááŸá áºá ááºážáááºááŒááºáž â áá¯ááºáá¯ááºááŸá¯ â ááŒá¯ááŒááºááááºážááááºážááŒááºážá
á€á¡á á®á¡á á¥áºá¡ááá¯ááºáž áááááá»áá» ááŒááºáááºážááŒáá«á áá¯á·á
CLI-ááœááºáž
⢠á¡áá±ážá
á¬ážáááºáá±á¬ááºááŸá¯áá
áºáᯠáááºáá®ážááŒááºážá.
developer ááá¯ááºážááᯠmicroservices áá¯ááºáááºážáááºáá±ážááẠá¡áá»áááºá¡áá±á¬áºááŒá¬á¡á±á¬áẠáá¯ááºážáááºáá²á·ááááºá áááºážááœáẠááŒá
áºáá¯á¶ááœáẠá¡áá±ážá
ááẠááœáŸááºááŒá¬ážáá»ááºáá»á¬áž áá±ážáá¬ážááŒááºáž áá«áááºáááºá áá«áá±ááá·áº á¡á
á®á¡á
á¥áºááœá± ááŒá±á¬ááºážáá²ááŒá®áž á¡á¬ážááŒáá·áºáá±ážáá²á·áááºá ááááºááŸá¬ ááá®ážá¡á
ááœáẠááááºááá¯á·ááŸá¯áá
áºáᯠáá±á«áºáá¬áááº- ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá
áááºááẠá¡áá»áááºáá»á¬ážá
áœá¬áá°áá²á·áááŒá®áž áááºážááá¯á·á áááºáá®ážááŸá¯á¡ááœááºáž ááŒá¿áá¬áá»á¬áž áááŒá¬áá áá±á«áºáá±á«ááºáá±áá²ááŒá
áºáááºá
á¡áá¯á¶ážááœááºá áá»áœááºá¯ááºááá¯á·ááẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯ááá¯áááºáá®ážáá¬ááœáẠá¡ááŒá±áá¶á¡ááá·áºáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºáá±ážááá·áº ááá¯ážááŸááºážáá±á¬ CLI utility áá áºáá¯ááᯠáááºáá±á¬ááºáá²á·áááºá ááááºáá±á¬á·á áááºážááẠááá git push ááá¯á¡á á¬ážááá¯ážáááºá áá«á áá°ááá¯ááºáᬠá¡ááá¡áá»áá²á
â áá¯á¶á á¶ááœááºáá áºáá¯á¡á áááºáá±á¬ááºááŸá¯áá áºáá¯ááᯠáááºáá®ážááẠâ á¡ááá·áºááá·áºá âwizardâ áá¯ááºááœááºá Avito áá±á¬ááºáá¶ááœáẠPHPá Golang ááŸáá·áº Python ááá¯á·ááœáẠá¡ááááááá¯ááááºážáááºážáá¬áá¬á áá¬ážáá»á¬ážá¡ááœáẠááá°áá¬áá¯á¶á á¶áá»á¬ážááŸááááºá
- áá áºáá»áááºáááºážááœáẠááœáŸááºááŒá¬ážáá»ááºáá áºáá¯ááẠáá®ážááŒá¬ážá ááºáá áºáá¯áá±á«áºááœáẠáá±áááá¯ááºáá¬ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááœáẠáááºáááºážáá»ááºááᯠááŒáá·áºáá»ááºáá±ážááẠ- Minikube ááᯠá áááºááá¯ááºáááºá Helm ááá¬ážáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±ážááŒá®áž local kubernetes ááœáẠá áááºáá¯ááºáá±á¬ááºáá«áááºá
- ááá¯á¡ááºáá±á¬áá±áá¬áá±á·á áºááá¯áá»áááºáááºáá«á áá±á¬á·ááºáá²áá±ážáá¬ážáá°ááẠáá°ááá¯á¡ááºáá±á¬áá±áá¬áá±á·á áºááá¯á·áááºáá±á¬ááºááœáá·áºáááẠIPá áá±á¬á·ááºá¡ááºááŸáá·áº á áá¬ážááŸááºááá¯á·ááᯠáááááºáááá¯á¡ááºáá« - áááºážááᯠááŒááºááœááºážá á¡ááá·áºááœááºááŒá áºá á± ááá¯á·ááá¯áẠáá¯ááºáá¯ááºáá±ážááœááºááŒá áºá á±á ááá¯á·á¡ááŒááºá áá±áá¬áá±á·á áºááᯠá¡ááŸá¬áž-áá¶ááá¯ááºáááºááŸááá±á¬ ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááŸáá·áº áá»áááºááœááºáá»áŸá¬ááŸáááŸá¯ááŒáá·áº áá»ááºáá»ááºážá¡áá¯á¶ážáá»áááºá
- áááºážááẠááá¯ááºááá¯ááºá ááºážáá±ážááœá²ááᯠááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºáááºá áá±á¬á·ááºáá²á¡ááºáá»ááºáá®áá¬áá áºáŠážááẠáááºážá IDE ááŸáá áºááá·áº ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá áºáá¯ááœáẠáá áºáá¯áá¯ááᯠááŒá¯ááŒááºáá²á·áááºááá¯ááŒáá«á áá¯á·á utility ááẠááá¯ááºá áá áºá¡ááœááºáž á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠááŒááºááœá±á·áááŒá®áž áááºážááá¯á·á¡áá±á«áº á¡ááŒá±áá¶á á¡ááá®áá±ážááŸááºáž (Golang á¡ááœááº) ááᯠááŒááºáááºáááºáá±á¬ááºááŒá®áž ááŒááºáááºá áááºáááºá PHP á¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠcube á¡ááœááºážááŸá directory ááᯠááá¯ážááŸááºážá áœá¬ áá±ážááá¯á·ááŒá®áž ááá¯ááºááá¯ááºááŒááºáááºááŒááºážááᯠ"á¡ááá¯á¡áá»á±á¬ááº" áááŸááá«áááºá
- á¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŸá¯áá»á¬ážááᯠááŒá¯áá¯ááºáá±ážáááºá ááœááºáááºáá¯á¶á á¶ááŒá áºáá±á¬áºáááºáž á¡áá¯á¶ážááŒá¯áááºá¡áá±á¬áºáá±ážááá·áºáá»á±á¬áºáááºá
⢠Microservice ááŒáá·áºáá»ááºááŒááºážá.
ááá¯ááºáááá¯áá¬ážáá áºááᯠááŒáá·áºáá»ááºááŒááºážááẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠá¡áááºáááŒá±ááŒá áºáá²á·áá°ážáááºá á¡á±á¬ááºáá«ááá¯á·ááᯠááá¯á¡ááºáááº-
I. Dockerfileá
II ááŒááºáááºááŸá¯á
III áááºáááºáá²áá²ááŸáá·áº áá«áááºááá·áº áŠážáá¯á¶ááá¬ážá
- ááá¬ážáá»á¬ážááá¯ááºááá¯ááº;
- áá¯á¶á
á¶áá»á¬áž;
â ááá°áá®áá±á¬áááºáááºážáá»ááºáá»á¬ážááá¯ááá·áºááœááºážá
ááºážá
á¬ážáá±á¬áááá»áá±á¬áááºááá¯ážáá»á¬ážá
Kubernetes manifests áá»á¬ážááᯠááŒááºáááºááŒá¯ááŒááºááŒááºážá០áá¬áá»ááºááŸá¯ááᯠáá»áœááºá¯ááºááá¯á· áááºááŸá¬ážáá²á·ááŒá®ážááŒá áºáá±á¬ááŒá±á¬áá·áº áááºážááá¯á·ááᯠááᯠá¡ááá¯á¡áá»á±á¬áẠáá¯ááºáá±ážáá«áááºá ááá¯á·áá±á¬áº á¡áá±ážá¡ááŒá®ážáá¯á¶ážááŸá¬á áááºážááá¯á·ááẠááŒáá·áºáá»ááºááŸá¯ááᯠááá·áºáááºáá»ááºá¡áá ááá¯ážááŸááºážá á±áááºá ááá¯ááŸá á áá»áœááºá¯ááºááá¯á·ááœáẠDockerfile áá áºáá¯ááŸáááŒá®áž developer á០config áá áºáá¯áá¯á¶ážááᯠapp.toml ááá¯ááºááá¯áá áºáá¯áááºážááœáẠáá±ážáá±ážáá«áááºá
áá¯ááºáá²á·á app.toml ááá¯ááºááá¯ááºá áá áºáááá áºáá±á¬áẠáá¯ááºá áá¬áááŸááá«áá°ážá áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á¬ááºááŸá¯áá±ážááá·áºáá±áá¬ááŸáá·áº áááºáá»áŸáááá¹áá°áá»á¬ážááᯠáááºááŸááºáá±ážááẠ( dev áá¬áá¬ááœááºá á¡ááá·áºááŒáŸáá·áºáááºááŸá¯á áá¯ááºáá¯ááºááŸá¯ááœááº) ááŸáá·áº áááºážáááŸá®ááá¯ááŸá¯áá»á¬ážááᯠááœáŸááºááŒáá«áááºá [á¡ááºáá»ááº] ááá±á¬ááºááŸá ááá¯ááºážá¡ááœááºá¡á á¬áž = "small" ááᯠáááááŒá¯áá«á áááºážááẠKubernetes ááŸáá áºááá·áº áááºáá±á¬ááºááŸá¯á¡ááœáẠááœá²áá±áá±ážááá·áº ááá·áºáááºáá»ááºááŒá áºáááºá
ááá¯á·áá±á¬áẠconfig ááá¯á¡ááŒá±áá¶á ááá¯á¡ááºáá±á¬ Helm ááá¬ážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±ážááŒá®áž áá±áá¬áá±á·á áºáá»á¬ážááŸáá·áºáá»áááºáááºááŸá¯áá»á¬ážááᯠáááºáá®ážáá«áááºá
⢠á¡ááŒá±áá¶á¡áááºááŒá¯áá»ááºá ááá¯ááá¯á·áá±á¬á
á
áºáá±ážááŸá¯áá»á¬ážáááºáááºáž á¡ááá¯á¡áá»á±á¬ááºááŒá
áºáááºá
ááŒá±áá¬áá¶ááẠááá¯á¡ááºáááº-
- Dockerfile ááŸááá«ááá¬ážá
â app.toml ááŸááá«ááá¬ážá
- á
á¬ááœááºá
á¬áááºážááŸááá«ááá¬ážá
- ááŸá®ááá¯ááŸá¯áᬠá¡á
ááºááá¯ááºááŸááá¬ážá
- ááááá±ážáá»ááºá
ááºážáá»ááºážáá»á¬áž áááºááŸááºááŒá®ážááŒá®áá¬ážá
áá±á¬ááºáá¯á¶ážá¡áá»ááºá¡áá±ááŒáá·áº- áááºáá±á¬ááºááŸá¯ááá¯ááºááŸááºááẠáááºááá·áºáá¯ááºáá¯ááºáááºááá
áºáá»á¬ážááᯠá
á±á¬áá·áºááŒáá·áºááẠáá¯á¶ážááŒááºáááºá
⢠á
á¬ááœááºá
á¬áááºážááŒááºáááºááŒááºážá
ááŒááá¬ááŒá
áºáá±áá¯ááºážáá«áá²á áááºážááẠá¡áááºááŸá¬ážáá¯á¶ážááŒá
áºáá¯á¶ááá±á¬áºáááºáž áá
áºáá»áááºáááºážááŸá¬ááẠáááºážááẠ"áááŒá¬áááá±á·áá»á±á¬á·ááŒááºáž" ááŸááºáááºážáá
áºáá¯ááŒá
áºááŒá®áž ááá¯á·ááŒá±á¬áá·áº ááœááºážáááºá¡ááœááºážááŸá á¡á¬ážáááºážáá±á¬ááá·áºááºáá
áºáá¯áááºážááŒá
áºáááºá
ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá
áºáá¯á
á®á¡ááœáẠá
á¬ááœááºá
á¬áááºážááŸáááẠááá¯á¡ááºáááºá áááºážááœááºá¡á±á¬ááºáá«ááá±á¬ááºáá»á¬ážáá«áááºáááºá
I. áááºáá±á¬ááºááŸá¯á á¡áá»ááºážáá»á¯ááºáá±á¬áºááŒáá»ááº. áááºážááá¯áá¬ááŒá±á¬áá·áºááá¯á¡ááºááŒá±á¬ááºážááŸáá·áº áááºážááá¯áá¬ááŒá±á¬áá·áºááá¯á¡ááºááŒá±á¬ááºáž á á¬áá¬ážá¡áááºážáááºáá±á¬áºááŒáááºá
II áááá¯áᬠáá¯á¶ááŒááºáž ááá·áºááº. áá»ááºááŒááºá áœá¬áá áºáá»ááºááŒáá·áºááá¯ááºááŒááºážááŒáá·áºá á¥ááᬠáááºááẠáááºááŸáºá¡ááœáẠRedis ááá¯á¡áá¯á¶ážááŒá¯áá±áááºááŒá áºá á± ááŒá²ááŒá²áá¯ááºááœáẠáááºááá±áá¬ááá¯ááŸá±á¬ááºááŸá¯á¡ááŒá Ạáááºá¡áá¯á¶ážááŒá¯áá±áááºááŒá áºá á± áá¬ážáááºáááœááºáá°ááẠá¡áá±ážááŒá®ážáá«áááºá ááᯠAvito ááœáẠá€áááºááŸá¬ ááŒá áºáá¯á¶ááá¯á· ááá·áºááºáá áºáá¯ááŒá áºáááºá
III ááŸá±á·ááŒá±ážá á¬á¡á¯ááº. áááºáá±á¬ááºááŸá¯á áááºááŒááºážááá¯ááºáᬠáááºážááœáŸááºááá¯ááá¯ááŸáá·áº áááºážááᯠááá¯ááºááœááºááŒááºážá ááŸá¯ááºááœá±ážááŸá¯áá»á¬ážá
IV á¡ááŒá²áá±ážáá±á·ááŸááá±á¬áá±ážááœááºážáá»á¬ážááá·áºáá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬áž áááºáá±á¬ááºááŸá¯ááŸáá·áº á¡áá¯ááºáá¯ááºáá¬ááœáẠááŒá¯á¶ááœá±á·áááá·áº ááŒá¿áá¬áá»á¬ážááᯠááŒáá¯áááºááá·áºááŸááºážááẠáá±á¬ááºážááœááºáá«áááºá
V. API á¡ááœáẠá¡áá¯á¶ážááŸááºáá»á¬ážá áá±á¬áºááŒáá»ááº. áááºááœá¬ážááá·áºáá±áá¬áá»á¬ážááᯠáá¯ááºááááºááááºááŸááºáá«áá ááá·áºáá¯ááºáááºážááŸáá·áºáááºáááºááá·áº microservices ááá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬ážááẠáááºážá¡ááœáẠáá±áá»á¬áá±á«ááºáá®ážáá«ážáá±ážáá»á±áááá·áºáááºá ááᯠáá»áœááºá¯ááºááá¯á·ááẠSwagger ááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž á€á¡ááœáẠá¡ááá¯áá»á¯á¶ážáá¯áá±á«áºáá±á¬ áá»áœááºá¯ááºááá¯á·áááŒá±ááŸááºážáá»ááºááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
VI á áá¶ááááºáá»á¬áž. ááá¯á·ááá¯áẠáááºáá±á¬ááºááŸá¯ááá¯ááºááá¯ááºááá·áº áá¯áá¹ááá®á áááºááá·áºáá¯ááºáá¯ááºá áá¯ááºáá±á¬ááºááá¯ááºá áœááºáž ááá¯á·ááá¯áẠááœá²á·á ááºážáá¯á¶ááá¯ááºáᬠááá¯ááºážááŒá¬ážááŸá¯ááᯠááŒáááá·áº á¡ááŸááºá¡áá¬ážáá»á¬ážá á¥ááá¬á¡á¬ážááŒáá·áºá ááá·áºáá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬ážááẠááœááºáá²á·áá±á¬ áá áºáááºá áá°áá®áá±á¬ áá¯ááºáááºážáá°áá áºá¡ááœáẠáá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬áž áá¯ááºáá±ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠááŒááºáá±á¬ááºááŒááºážááŸááááŸá áá»áŸááºááŒááºá áœá¬ áá¬ážáááºááẠáá°áá®áá±ážáááºá
áááºááŒáá¬áá²á· áááºáá±á¬ááºááŸá¯ááá¯ááºááŸáẠááá¯á·ááá¯áẠááá¯ááºááŸááºáá»á¬áž. ááá á¹á á¡áá»á¬ážá á¯ááœááºá áááºážááᯠPaaS áá¯á¶ážááŒá®áž á¡ááá¯á¡áá»á±á¬ááºáá¯á¶ážááŒááºááá¯ááºáá±á¬áºáááºáž áá±ážáááºážá á±áááºá¡ááœáẠdeveloper á០áááºážááá¯á·ááᯠááá¯ááºááá¯ááºáááºááŸááºááẠááá¯á¡ááºáá«áááºá
áá±á¬ááºáá¯á¶ážááœááºá áá¯ááºááŒááºáááºáá¯á¶ážáááºááŒááºážááŸáá·áºáááºáá°áá±á¬ á á¬ááœááºá á¬áááºážáá»á¬ážááᯠááŒááºáááºáá¯á¶ážáááºááẠá¡áá±á·á¡áá»áá·áºáá±á¬ááºážáá áºáá¯ááŒá áºáááºá
á ááºáááºáááŒááºáá±á«ááºážá ááºážáá±áž
- ááá¯ááŸá±á¬ááºááŸá¯áá»á¬ážááᯠááŒááºáááºáá±áá«áááºá
- TeamCity ááœáẠááá¯ááºááá¯ááºážáá áºáᯠáááºáá®ážááŒááºážá
- á¡ááœáá·áºá¡áá±áž áááºááŸááºááŒááºážá
- áááºáá±á¬ááºááŸá¯ááá¯ááºááŸááºáá»á¬ážááᯠááŸá¬ááœá±áá«á á€áá±áá¬ááœáẠááá¯ááºááá áºá¡á á®á¡á á¥áºáá áºáᯠááŸáááẠ- áááºááŒáá·áºá¡ááŸááºá¡áá¬ážááŒá¯ááŒááºážááŸáá·áº PaaS á០á¡áááºážáá¯á¶áž á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááŒááºáž áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡ááŒá¬ážááœá¶á·ááŒáá¯ážáá±ážá¡ááœá²á·ááá¯á· áá¶á·ááá¯ážááŸá¯áá±ážááẠááá¯á·ááá¯áẠá¥ááá¬á¡á¬ážááŒáá·áº áááºáá±á¬ááºááŸá¯áá±á¬á·ááºáá²áá¯ááºáá¯ááºáá°á០áá¯ááºááœááºááá·áºá¡áá« áááºáá±á¬ááºááŸá¯áá»á¬áž á¡ááŒáá·áºá¡á á¡ááá¯á¡áá»á±á¬ááºá áá áºáá»ááºááœá¬ážáá«áááºá
- Atlas ááœáẠáááºáá±á¬ááºááŸá¯áá áºáᯠááŸááºáá¯á¶áááºááŒááºážá (á¡áááºááœááºááŒáá·áºáá«)á áááºážáááá¯ááºááŸááºáá»á¬ážááŸáá·áºááŸá®ááá¯ááŸá¯á¡á¬ážáá¯á¶ážááŸáá·áºá¡áá°á
- ááœáŸá±á·ááŒá±á¬ááºážááŸá¯áá»á¬ážááᯠá á áºáá±ážááŒááºážá áááºážááá¯á·áá²á០áá áºáá¯áá¯ááẠá¡áá¹ááá¬ááºááŒá áºááá¯ááºáá»á± ááŸááááŸá á á áºáá±ážáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºážááá¯á·áá²á០áá áºáá¯ááœáẠáááºáá±á¬ááºááŸá¯á ááá°áá®áá±á¬áá¬ážááŸááºážáá»á¬ážááŒá¬ážááœáẠdata schema á ááá¯ááºáááºáá®ááŸá¯ááᯠáá»áá¯ážáá»ááºááá¯ááºáá±á¬ ááŒá±á¬ááºážáá²ááŸá¯ááá¬ážáá áºáᯠááá¯á·ááá¯áẠá¡ááŒá¬ážá¡áá¬áá áºáᯠáá±á«áºáá¬áá«áááºá ááá¯á·áá±á¬áẠááœáŸá±á·ááŒá±á¬ááºážááŒááºážá¡á¬áž áá¯ááºáá±á¬ááºáááºááá¯ááºáá±á¬áºáááºáž á á¬áááºážááœááºážááŸá¯áá áºáá¯ááœáẠááá·áºááœááºážáá¬ážááẠ- áááºážááᯠá¡áá¯á¶ážááŒá¯ááẠáá±ážáááºážááá·áºá¡áá«ááœáẠPaaS ááẠáááºáá±á¬ááºááŸá¯ááá¯ááºááŸááºáᶠá¡áá»ááºááŒááá«áááºá
áá¯áá·áºáá¯ááº
áá±á¬ááºáá áºááá·áºááŸá¬ áá¯ááºááá¯ážááŒááºážáááºáá±á¬ááºááŸá¯áá»á¬áž ááŒáá·áºáá»ááºááŒááºážáááŒá¯áá®á
- áá»áŸá±á¬ááºááœáŸá¬ááá¯áááºáá±á¬ááºááŒááºážá ááá¹ááááºá áá¬ážá¡á - Docker áá¯á¶áá áºáá¯á
- áááºáá±á¬ááºááŸá¯ááá¯ááºááá¯ááºááŸáá·áº áááºá ááºá¡áááºážá¡ááŒá áºáá»á¬ážá¡ááœáẠHelm ááá¬ážáá»á¬ážá áá»áá¯ážáááºá áá±áá¬áá±á·á áºááŸáá·áº áááºááŸáºáá»á¬ážá¡ááœáẠáá«áááºáááºá áááºážááá¯á·ááᯠCLI-push á¡ááá·áºááœáẠáá¯ááºáá±ážááá·áº app.toml config ááŸáá·áºá¡áá® áááºážááá¯á·ááᯠá¡ááá¯á¡áá»á±á¬áẠáááºáá®ážáá¬ážáááºá
- ááááºáááºážáá»á¬ážááœáá·áºááẠá á®áá¶ááá·áºááœá²áá°áá»á¬ážá¡ááœáẠáááºááŸááºáá»á¬áž áááºáá®ážááŒááºážá (ááá¯á¡ááºáá±á¬á¡áá«)á
- áá°áá áºá ááºážáááºááŸá¯áá»á¬áž áá¯ááºáá±á¬ááºááŒááºážááŸáá·áº áá¯ááºá¡áá»á¯á¶ážáááºááŸá¯ááᯠááœááºáá»ááºááŒááºážá. áá¯ááºá¡áá»á¯á¶ážáááºááŸá¯ááẠáááºááŸááºáá¬ážáá±á¬ áááºááŸááºáá»ááºááẠá¡á±á¬ááºááœááºááŸááá±áá«áá áááºáá±á¬ááºááŸá¯ááẠááá¯ááá¯á¡áá¯á¶ážááŒá¯ááá¯ááºáá±á¬á·ááẠááá¯ááºáá« - ááŒáá·áºáá»ááºáááºá áááºáá¶ááá¯ááºáá±á¬ááºááŒá®ááá¯áá»áŸáẠáááºáá±á¬ááºááŸá¯á¡á¬áž "á¡ááá¯ážááŒááºááŒááºáž" ááááºážááááºážá¡ááŒá ẠáááºááŸááºáá±ážáááº- ááá¯á·áá±á¬ááºá á¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸ ááœáŸááºááŒááŸá¯ááœáẠááá¯ážáááºááŸá¯áááŸááá²á·áá«áá áá±á¬á·ááºáá²áá±ážáá¬ážáá°ááẠá ááºážáááºááŸá¯ááá¯ááºáᬠááá¯ážáááºááŸá¯áááŸáááŒá±á¬ááºáž á¡áááá±ážáá»ááºááᯠáááºáá¶áááŸááááá·áºááẠ( ááŒá®ážáá±á¬á· áá áºáá¯áá¯áá¯ááºáááŸá¬áá±á«á·á)
- Memory ááŸáá·áº CPU ááá·áºáááºáá»ááºáá»á¬ážááᯠá
á¬áááºážááŒá¯á
á¯ááŒááºážá. áá»áœááºá¯ááºááá¯á·ááẠGolang ááœáẠá¡áá±ážá
á¬ážáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡ááááá±ážáá¬ážááŒá®áž Kubernetes ááœáẠáá¯ááºáá±á¬ááºáá«áááºá ááá¯á·ááŒá±á¬áá·áº Golang áá¬áá¬á
áá¬ážááá°ážááŒá¬ážáá»ááºááŸáá·áºáááºá
ááºáá±áá±á¬ ááááºááœá±á·ááŸá¯áá
áºáá¯- áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá á
áááºáá±á¬á¡áá«á á
ááºáá±á«áºááŸá cores á¡á¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯áááºá GOMAXPROCS variable ááᯠá¡ááá¡áá»ááááºááŸááºáá¬ážáá«áá áááºážáááºáá±á¬ááºááŸá¯áá»á¬ážá
áœá¬ááᯠá
ááºáá
áºáá¯áááºážááœáẠá
áááºáá±á¬á¡áá«á áááºážááá¯á·ááẠá
áááºááẠá¡áááºážá¡ááŒá
áºáá»á¬ážááᯠááŸááºááŒáá¯ááºáááºá á¡áá»ááºážáá»ááºáž ááŸá±á¬áá·áºááŸááºááŒááºážá á¡áááºá áááºááẠá¡ááá®áá±ážááŸááºážá¡á¬áž á¡ááŒááºážá¡áá¯á¶áááŸááá² áá¯ááºáá±á¬ááºááŒá®áž á¡áááºážá¡ááŒá
áºáá¯ááºá¡ááœáẠá¡ááŒáá¯ááºá¡ááá¯ááºáá¯ááºáá±á¬ááºáá«á á¡á±á¬ááºáá«ááááºáá»á¬ážááẠáá¯ááºáá±á¬ááºáá»ááºá¡áá»áááºááᯠáááºááá¯á·ááŒá±á¬ááºážáá²áááºááᯠááŒááááºá (ááááºáá
áºáá»á¬ážáá¡áááºážá¡ááŒá
áºáá»á¬áž
áá®ááŸá¬ ).
á¡áá±á¬ááºá¡áááºáá±á¬áºáá»áááºáááºážáá¬á ááá¯áá±á¬ááºážáá«áááºá á¡áá»á¬ážáá¯á¶áž- 643msá á¡áááºážáá¯á¶áž- 42msá áá¬ááºáá¯á¶ááᯠááá áºááŸáááºááá¯á·ááááºá
ááœá²á áááºááá¯á· á¡áá»áááºáááºážáá¬á ááá¯áá±á¬ááºážáá«áááºá á¡áá»á¬ážáá¯á¶áž- 14091 nsá á¡áááºážáá¯á¶áž- 151 nsá áá¬ááºáá¯á¶ááᯠááá áºááŸáááºááá¯á·ááááºá
á
ááºážáá±ážááœá²ááŒááºáááºááá·áºá¡ááá·áºááœááºá áááºááẠá€ááááºážááŸááºááᯠá¡ááá¡áááºáž áááºááŸááºááá¯ááºááẠááá¯á·ááá¯áẠá
á¬ááŒáá·áºááá¯ááºááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
áá»áá¬ážáá±ážáá«á
⢠ááá±á¬áá°áá®áá»ááºáá»á¬ážááᯠá
á
áºáá±ážááŒááºážá ááá·áºáááºááœááºáá¬ážáá±á¬ áááºáááºážáá»ááºáá»á¬ážááá¯á· áááºáá±á¬ááºááŸá¯á
ááºážáá±ážááœá²áá»á¬áž áá
áááºáá®á á¡á±á¬ááºáá«ááá¯á·ááᯠá
á
áºáá±ážááẠááá¯á¡ááºáááº-
- API á¡áá¯á¶ážááŸááºáá»á¬ážá
â schema ááŸáá·áº API á¡áá¯á¶ážááŸááºáá»á¬áž áá¯á¶á·ááŒááºááŸá¯áá»á¬ážááᯠááá¯ááºáá¬ááŒááºážá
- ááŸááºáááºážáá¯á¶á
á¶á
- áááºáá±á¬ááºááŸá¯á¡ááœáẠáá±á¬ááºážááá¯ááŸá¯áá»á¬ážá¡ááœáẠáá±á«ááºážá
á®ážáá»á¬áž áááºááŸááºááŒááºáž (áá±á¬áá±á¬ááẠáááºážááᯠnetramesh ááŒáá·áº áá¯ááºáá±á¬ááºáááº)
â ááœá²áááºá
áºááá¯á· áááºáá±á·áá»áºáá»á¬ážááá¯á·ááá·áºá¡áá« ááá¯ááºááŸááºááá¯áááºááᯠáááºááŸááºááŒááºážá áááºá
áºáá¬ážáá
áºáá»áŸá±á¬áẠáááºáá±á¬ááºááŸá¯áá»á¬ážá áá»áááºáááºááŸá¯ááᯠááŒá±áá¬áá¶ááẠáááºážááŸá¬ ááá¯á¡ááºáá«áááºá áááºáá±á¬ááºááŸá¯áá»á¬ážá áá»áááºáááºááŸá¯ááᯠáááá¯ážá
á±áá² (áá±á¬ááºážáááº) ááŸáá·áº áááºáá±á¬ááºááŸá¯áá»á¬ážá áá»áááºáááºááŸá¯ááᯠá¡á¬ážáá±á¬ááºážá
á±ááá·áº áá¯ááºáááºážáá±áᬠ(á¡ááœááºááá¯ážááœá¬ážáá«áááºá) á€áá»áááºáááºááŸá¯ááŸá¬ ááŒá¿áá¬áá
áºáá¯ááŒá
áºáá¬áá±á¬á¡áá«ááœáẠáááºá
áºáá¬ážááᯠáááºáá°áá±ážáááºááŸáá·áº áááºáááºááᯠáá¬ážáááºááŒááºážááẠáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá±á¬ááºážá
áœá¬ááœá²ááŒá¬ážááẠáá°áá®áá±ážáááºá
Avito ááœáẠá ááºážáá±ážááœá²áá»á¬ážá áœá¬ áááŸááá±ážáá±á¬áºáááºáž áááºážááá¯á·á á¡á á¯á¡áá±ážááẠááá¯ážáá»á²á·áá»ááºááŸááááºá á¡ááœá²á·ááẠáá¬ážáááºááá±á¬áá±á«ááºááá¯ááºááá·áºáá¯á¶á á¶ááŒáá·áº áááºážááá±á¬áá°áá®áá»ááºáá»á¬ážááᯠááá¯ááá¯áááŸáááá¯ááºáá±áá±á microservices áá»á¬ážá¡ááŒá¬áž ááá¯ááºáá»á±á¬áá®ááœá±ááŸáááŸá¯ááᯠááááºážááááºážáá¬ážááẠááá¯ááá¯ááœááºáá°áá±ááŒá áºáááºá
ááŒáẠbenchmark
⢠ááœááºážááááºá
ááºážáááºááŒááºážá áááºážá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠááᯠopen source ááᯠá¡áá¯á¶ážááŒá¯áá±áá«áááºá
⢠á
áááºááá
á®ážááŸá¯á
ááºážáááºááŒááºážá áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á¬ááºááŸá¯á¡á¬ážáá¯á¶ážááᯠá¡áá±á¬ááºážáá¯á¶ážá
áœááºážáá±á¬ááºáááºááá¯á· áá°áá±á¬ááºáá¬ááẠááŒáá¯ážá
á¬ážáá«áááºá ááá¯á·á¡ááŒáẠáááºáá±á¬ááºááŸá¯áá
áºáá¯á
á®á áá¬ážááŸááºážá¡á¬ážáá¯á¶ážááẠáááºá
ááºážáááºááŸá¯á¡á±á¬ááºááœáẠááŸáááá«ááẠ- á€áááºážááŒáá·áº áááºáá±á¬ááºááŸá¯á áááºááŸáá
áœááºážáá±á¬ááºáááºááŸáá·áº áá°áá®áá±á¬áááºáá±á¬ááºááŸá¯á ááááºáá¬ážááŸááºážáá»á¬ážááŸáá·áº ááœá¬ááŒá¬ážáá»ááºááᯠáá»áœááºá¯ááºááá¯á· áá¬ážáááºááá¯ááºáá«áááºá áááºáá±á¬ááºááŸá¯á¡ááºááááºáá
áºáá¯ááŒá®ážáá±á¬áẠáááºážáá
áœááºážáá±á¬ááºáááºááẠáá
áºáááœá²ááá·áºáá»áááºážááœá¬ážáá«áá áááºážááẠáááºážáááá¯ááºááŸááºáá»á¬ážá¡ááœáẠááŸááºážáááºážááŒááºáá¬ážáá±á¬á¡áá»ááºááŒááŸá¯ááŒá
áºáááº- áááºááẠáá¯ááºááá¯ááŸá¬ááœá±ááŒá®áž á¡ááŒá±á¡áá±ááᯠááŒá¯ááŒááºáááºááá¯á¡ááºáááºá
á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠá
á¯áá±á¬ááºážáá¬ážáá±á¬áá±áá¬ááᯠá¡ááá¯á¡áá»á±á¬ááºá
áá±ážáá»ááŒááºážááᯠááŸááºáááºá
áœá¬á¡áá±á¬ááºá¡áááºáá±á¬áºááẠá¡áá¯á¶ážááŒá¯ááŒááŒá®ážá á¡áá¯á¶ážááœáẠáááºáá±á¬ááºááŸá¯ááẠáááºáá»áŸá¡ááá¯ááºážá¡áá¬á¡áá áá»á²á·ááœááºááá¯ááºáááºááᯠáá±áá°áá»áá¬ážáááºáá«áááºá
áááºá ááºážáááºá ááºááœááºá á¡áááºážá¡ááŒá áºáá¯á¶ážá áœá²ááŸá¯ááẠáááºááŸááºáá¬ážáá±á¬ ááá·áºáááºáá»ááºáá»á¬ážááŸáá·áº ááŒáá·áºáá®ááŒááºážááŸááááŸá á á áºáá±ážáá«áááºá ááŒá®ážáá±á¬á· áá»áœááºáá±á¬áºááá¯á·á á¡á áœááºážáá±á¬ááºááœá±ááᯠá¡áááá¡á¬áá¯á¶á áá¯ááºáááºá
á) á
á¯á
á¯áá±á«ááºážáááºááá¯ááŒáá·áºáááºá
- á¡ááœááºáá±ážáááºááẠ- áááºááẠá¡ááŒáááºáá»á¬ážá
áœá¬ áá¯ááºáááẠáá»ááœá¬ážáá«á áá
áºáá¯áᯠáá¯á¶ážá á¡áá¯ááºááá¯ááºáá«á
- ááŒá®ážááœááºážááẠ- ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááẠááá¯á¡ááºáááºá
b) RPS á¡á ááŒááºáá±á¬ááºááŸá¯ááᯠáá»áœááºá¯ááºááá¯á· ááŒáá·áºááŸá¯áááºá
á€ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáááºááŸááá¬ážááŸááºážááŸáá·áº ááááºáá¬ážááŸááºážááŸáá·áº á
á¯á
á¯áá±á«ááºáž ááá¬áá¡ááŒá¬áž ááŒá¬ážáá¬ážáá»ááºááᯠááŒáá·áºáá«á á¥ááá¬á¡á¬ážááŒáá·áºá áááºáá±á¬ááºááŸá¯áá
áºáá¯ááẠ100 rps ááá¯áá¯ááºáá¯ááºáá«áá áááºážááẠáá¶á·áá»ááºážá
áœá¬áá±ážáá¬ážááŒááºáž ááá¯á·ááá¯áẠáááºážááẠáááºážááááá»ááŸá¯ááŒá
áºáááºá ááá¯á·áá±á¬áº áááºááá¯á·áááºááá¯á
á±á á€áááºááŸá¬ áááºáá±á¬ááºááŸá¯ááᯠá¡ááœááºá¡áá®ážáááºááŒáá·áºááŸá¯ááẠá¡ááŒá±á¬ááºážááŒáá»ááºáá
áºáá¯ááŒá
áºáááºá
ááá·áºáá»ááºáááºá¡áá±ááŸáá·áºá RPS áá»á¬ážááœááºážáá«áá áá»áá¯á·ááœááºážáá»ááºá¡áá»áá¯á·ááŸáááá¯ááºááŒá®áž á¡áá»áá¯á·áá±á¬ endpoints áá»á¬ážááẠpayload ááá¯áá¯ááºáá±á¬ááºááŒááºážááŸáááºááá·áºááœá¬ážáᬠá¡ááŒá¬ážáá
áºáá¯ááẠááá¯ážááá¯ážááŸááºážááŸááºážá
áááºááá¯ááºáá«áááºá return true;
áááá¹ááá®á ááºážáááºááŸá¯áá»á¬áž
áá»áœááºá¯ááºááá¯á·ááẠáá¬áá¯á
ááºážáááºááŸá¯áá»á¬ážááᯠá¡á±á¬ááºááŒááºááŒá®ážáá±á¬ááºá áá¯á¶ážá
áœá²áá°á¡áááºážá
á¯ááœáẠmicroservice ááᯠá
ááºážáááºáá«áááºá áááºáá±á¬ááºááŸá¯á áááºááœááºáá¬ážáá±á¬ ááááááºá áá±ážáááºáá±á¬ áá±á
á¯ááŒáá·áº - 0,1% áááºáááºážáá±á¬ ááá¯áá
áá¯ááºááŒáá·áº á
áááºáá«áááºá á€á¡ááá·áºááœááºá ááŸááºáááºáá±á¬áááºážááá¬ááŸáá·áº áá¯ááºáá¯ááºáááºááá
áºáá»á¬ážááᯠá
á±á¬áá·áºááŒáá·áºá
á
áºáá±ážááŒááºážááœáẠááá·áºááœááºážáá¬ážááẠá¡ááœááºá¡áá±ážááŒá®ážááŒá®áž áááºážááá¯á·ááẠáááºáá±á¬ááºááŸá¯ááœáẠááŒá¿áá¬ááᯠáááºááá¯ááºááá»áŸ ááŒááºááŒááºááŒáááá¯ááºá
á±ááẠááŒá
áºáááºá áááá¹ááá®á
ááºážáááºááŸá¯áá
áºáá¯á¡ááœáẠá¡áááá·áºáá¯á¶ážá¡áá»áááºááẠá
áááá
áºááŒá
áºááŒá®áž á¡áááá¡áá»áááºááẠá áá¬áá®ááŒá
áºáááºá ááŸá¯ááºááœá±ážáá±á¬áááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠá¡áá»áááºááᯠááá¯ááºááá¯ááºáááºááŸááºáá±ážáá«áááºá
ááœá²ááŒááºážá
áááºááŒá¬ááŒáá«á
áá¯á·á
â á¡áá°ážáááŒáá·áºá á¡áá°ážáááŒáá·áº php-fpm á¡áá¯ááºááá¬ážáá»á¬ážá
- Sentry ááœááºá¡ááŸá¬ážáá»á¬áž;
- áá¯á¶á·ááŒááºááŸá¯á¡ááŒá±á¡áá±áá»á¬áž;
- áá¯á¶á·ááŒááºáá»áááºá á¡ááá¡áá»ááŸáá·áº áá»ááºážáá»áŸá
- ááŒá¬áá»áááº;
- ááŒáœááºážáá»ááºá á
á®áá¶áá±á¬ááºááœááºááŒá®áž ááá¯ááºááœááºááŒááºážáááŒá¯áá²á
- áá¯ááºáá¯ááºááá¯ááºážáá¬ááŸá¯áá»á¬ážá
ááŸá áºá ááºáž
Squeeze Testing ááᯠ"squeezing" test ááá¯á·áááºáž áá±á«áºáá«áááºá áááºážááá¬áá¡áááºááᯠNetflix ááœááºááááºáááºáá²á·áááºá áááºážáá¡ááŸá
áºáá¬áááŸá¬ ááááŠážá
áœá¬ áá»áœááºá¯ááºááá¯á·ááẠáá»ááºááœááºááá·áºáá±áá¬á¡áá á¡á
á
áºá¡ááŸááºáááºážááŒá±á¬ááºážáá
áºáá¯ááŒáá·áº á¥ááá¬áá
áºáá¯ááᯠááŒáá·áºááœááºážááŒá®áž áááºážáááá·áºáááºáá»ááºááᯠáááºááŸááºááŒááºážááŒá
áºáááºá ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠá¡ááŒá¬ážá¥ááá¬áá
áºáá¯ááᯠáá±á«ááºážááá·áºáᬠá€á¡ááœá²ááᯠá¡ááŒáá·áºáá¯á¶ážááá¯á· áááºáá¶áááºáá«á ááááá¯á¶áž "ááŸá
áº" ááŒáá·áº áááºážááá¯á·á áá»ááºááŸá¬áá»ááºááŸáá·áº ááŒá
áºááá»áœááºážáá±á«áºáá±áááᯠáá»áœááºá¯ááºááá¯á· ááŒááºááœá±á·ááááºá ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠáá
áºááŒáááºáá»áŸáẠáá¬áááá
áºáá¯ááᯠáá»áááºáááºááŒá®áž á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá áá¯á¶á
á¶ááᯠááœááºáá»ááºáá«áááºá
"áá»á
áºááŸá
áºááŒááºáž" ááŸáá
áºááá·áº á
ááºážáááºáá±áá¬ááẠáááºážááá¯á·ááŸáá·áºá¡áá° á¡áá¯ááŒá¯áá¯ááºáá¬ážáá±á¬ áááºááááºáá»á¬ážááᯠááŒáá·áºá
áœááºážáá±ážááá¯ááºááẠááá¯á·ááá¯áẠáááºážááá¯á·ááŸáá·áº "áá±á«ááºážá
ááºááŸá¯" ááá¯ááẠá¡á
á¬ážááá¯ážááá·áº áá¯á¶áááºááá
áºáá±áá¬áá±á·á
áºáá
áºáá¯ááá¯á·áááºáž á
á®ážáááºážááœá¬ážáá«áááºá
áá¯ááºáá¯ááºááŸá¯
⢠á¡ááá¯ááºážá¡áá¬á áá¯ááºáá¯ááºááŸá¯á¡ááœáẠáááºáá±á¬ááºááŸá¯áá áºáᯠá áááºáá±á¬á¡áá«á áááºážááẠáááºáá²á·ááá¯á· á¡ááá¯ááºážá¡áá¬á¡áá ááá¯ááºážáá¬áááºááᯠáá»áœááºá¯ááºááá¯á· á á±á¬áá·áºááŒáá·áºáá«áááºá áá»áœááºá¯ááºááá¯á·áá¡ááœá±á·á¡ááŒá¯á¶á¡áá CPU á¡ááœáŸááºážáá»á¬ážááá¯áᬠá á±á¬áá·áºááŒáá·áºááŒááºážááẠááááá±á¬ááºáá«á áááºážáá á áºááŸááºáá±á¬áá¯á¶á á¶ááŒáá·áº RPS á á¶ááŸá¯ááºážááŒáá·áº á¡ááá¯á¡áá»á±á¬áẠá¡ááá¯ááºážá¡áá¬ááŒáá·áº áá»á²á·ááœááºááŒááºážáááºá ááá¯á·áá±á¬áº á¡áœááºááá¯ááºáž ááá¯ááºááá¯ááºááŒáá·áºááŸá¯ááŒááºážáá²á·ááá¯á·áá±á¬ áááºáá±á¬ááºááŸá¯á¡áá»áá¯á·á¡ááœááºáᬠáá¯ááºáá±á¬ááºáá«áááºá ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºážá¡ááá¯áẠáá¯ááºáá¯ááºáááºááá áºáá»á¬ážááᯠáŠážá áœá¬ááŒáá·áºáá«á
ááááºá¡áá±ááŒáá·áºá áá»á²á·ááœááºáá±á¬á¡áá«á
- CPU ááŸáá·áº RAM á¡ááœáŸááºážáá»á¬ážá
- áááºážá
á®ááœáẠáá±á¬ááºážááá¯áá»ááºá¡áá±á¡ááœááºá
- áá¯á¶á·ááŒááºáá»áááºá
- á
á¯áá±á¬ááºážáá¬ážáá±á¬ áááá¯ááºážá¡áá»ááºá¡áááºáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á ááá·áºááŸááºážáá»ááºá
áááºáá±á¬ááºááŸá¯áá áºáá¯á¡á¬áž áá»á²á·ááœááºáá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·ááẠááœááºážáááºááŸá ááááááºáá±á¬ááºááŸá¯ááᯠá¡ááá¯ááºážá¡áá¬áááááá á±áááºááŸáá·áº áááºážááá¯áááºáá±á¬ááºááŒáá·áºááŸá¯ááá·áºá¡áá¬áá»á¬ážááẠáááºáááá á±ááẠáááºážáááŸá®ááá¯ááŸá¯ááᯠá á±á¬áá·áºááŒáá·áºáááºáááºáž á¡áá±ážááŒá®ážáá«áááºá áááºáá±á¬ááºááŸá¯á¡á á¯á¡áá±ážáá áºáá¯áá¯á¶ážá¡ááœáẠáááºáá¶ááá¯ááºáá±á¬áááºááᯠáááºáá±á¬ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠâá¡áá®ážáá¯á¶ážâ ááŸá®ááá¯áááºáá±á¬ááºááŸá¯á áááá¯ááºážááá¯ááºáá¬áá±áᬠ(CPU ááŸáá·áº RAM á¡ááœáŸááºážááááºážáá»á¬ážá á¡ááºááºá¡ááá¯áẠáááºááá áºáá»á¬ážááœá²áá»ááº) áá±á«ááºážá ááºááŸá¯á¡áá±á«áº á¡ááŒá±áá¶á áááºážááá¯á·ááᯠáááá¯ááºážáá±áá¬ááŸáá·áº ááŸáá¯ááºážááŸááºááŒáá·áºáá« á áááºááŒááºážáááºáá±á¬ááºááŸá¯á âááŸá®ááá¯ááŸá¯ááœááºážáááºâ áá áºáá»áŸá±á¬ááºáá¯á¶ážá á¡áá±á«áºááŸá¡á±á¬ááºááŒá±á¡ááá
áááºáá±á¬ááºááŸá¯
ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯ááᯠá áááºáááºáááºááŒá®ážáá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠáááºážááœáẠá¡á áá»áá¯ážááŸá¯áá»á¬áž áá°ážááœá²áá¯ááºáá±á¬ááºááá¯ááºáá«áááºá
á€áááºááŸá¬ á¡á
áá»áá¯ážááŸá¯áá»á¬áž ááŒá
áºáá±á«áºááá·áº áá¯á¶ááŸááºá¡ááŒá±á¡áá±áá»á¬ážááŒá
áºáááºá
- ááŒá
áºááá¯ááºáá»á±ááŸááá±á¬ ááœáŸá±á·ááŒá±á¬ááºážáá±ááá¯ááºááŸá¯áá»á¬ážááᯠááœá±á·ááŸááá²á·áááºá
- áá¯á¶ááŒá¯á¶áá±ážá¡ááºááááºáá»á¬ážááᯠáá¯ááºááŒááºááá¯ááºáá«ááŒá®á
- áááºáá±á¬ááºááŸá¯ááá¯ááºááá¯ááºá á¡áá»áááºá¡áá±á¬áºááŒá¬ á¡ááºááááºááá¯ááºáá¬ážáá«áá°ážá
â áááºáá±á¬ááºááŸá¯áá±á«áºááŸááááºá¡á¬áž áááá¬á
áœá¬áá»áááºážááœá¬ážááẠááá¯á·ááá¯áẠáááºážááá¯ááºáá¯ááºáááºááá
áºá¡áá»áá¯á·ááẠáá¯á¶ááŸááºá¡ááœá¬á¡áá±ážááẠáá»á±á¬áºááœááºáá±áá«áááºá
â áááºáá±á¬ááºááŸá¯ááẠááááºáá±á¬ááºážááá¯á¡ááºáá»ááºá¡áá
áºáá»á¬ážááŸáá·áº áááá¯ááºáá®áá±á¬á·áá«á
á¡áá»áá¯á·áá±á¬ á¡á áá»áá¯ážááŸá¯áá»á¬ážááẠáááºáááºááŸá¯áááºááŒáááºááŸá¯á¡ááœáẠáá¬áááºááŸááááºá á¡áá»áá¯á·ááŸá¬ - á áá áºááááºážááááºážááŸá¯ááá¯ááºáá±á¬ááºáá»ááºáá áºáá¯á¡áá±ááŒáá·áº - á¥ááá¬á¡á¬ážááŒáá·áºá á¡áá»áá¯á·áá±á¬áááºáá±á¬ááºááŸá¯ááẠá¡áá»áááºá¡ááŒá¬ááŒá®ážá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž áááºážáá¡ááŒá±áá¶áá¯á¶ááẠáá¯á¶ááŒá¯á¶áá±ážá á áºáá±ážááŸá¯áá»á¬ážáá¡á±á¬ááºááŒááºáá±á¬á·áá«á
ááá¯ááºááœááº
á¡ááá¯áá»á¯ááºá¡á¬ážááŒáá·áºá áááºááŸáºáá¯ááºááẠáá»áœááºá¯ááºááá¯á·á PaaS áá áºáá¯áá¯á¶ážá ááááºážáá»á¯ááºááŸá¯áá±á¬ááºááŒá áºáááºá
- áááºážáá ááºážáááºááŸá¯ááœáŸááºážááŒá¯á¶ááŸá¯ááá¯ááºáá¬áá±áá¬á áááºážááá¯ááºáá¯á¶á¡áá±á¡ááœááºá áá¯ááºáá¯ááºááŸá¯áá±á¬áºáá®á¡áá±á¡ááœááºá áá¬ážááŸááºážáá»á¬ážá áááºááŒáá·áº áááºáá±á¬ááºááŸá¯ááŸáá·áºáááºáááºááá·áº á¡áá»ááºá¡áááºáá áºáá¯áááºážáá«
- áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº á¡ááœáŸááºážáá»á¬ážááŒáá·áº áá±áá¬ááᯠá á áºáá¯ááºááẠáááááá¬áá áºáᯠ(áá¯ááºáááºážáá°áá áºáá»á¬ážááŸáá·áº áááºááá¯ááºááá·áº á¡ááŸááºá¡áá¬ážáá»á¬ážá áá¯ááºáá¯ááºáá¯ááºáá±á¬ááºááá¯ááºá áœááºáž á áááºááŒáá·áº)
- ááŒá±áá¬áá¶ááŒááºážá áá áºáá¯ááºááŒááºážááŸáá·áº á á±á¬áá·áºááŒáá·áºááŒááºážá¡ááœáẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áááááá¬áá»á¬ážááŸáá·áº áá±á«ááºážá ááºážááŒááºážá¡ááœáẠáááááá¬áá áºáá¯á
- áááºáá±á¬ááºááŸá¯á áá áºáá¯áááºážáá±á¬ á¡áá»ááºááŒá áºáááºá
- áááºáá±á¬ááºááŸá¯áá»á¬ážáá áºáá»áŸá±á¬áẠááŒá áºáááºá¡á¬ážáá¯á¶ážá áá áºáá¯áááºážáá±á¬á¡ááŒááºá
á á¯á á¯áá±á«ááºáž
PaaS ááᯠáááááºáááºáá®á áá±á¬á·ááºáá²áá±ážáá¬ážáá°á¡áá áºááẠáá¯ááºáá¯ááºááŸá¯ááœáẠááá¯ááºáááá¯áá¬ážáá áºáá áºáᯠá áááºááẠááá¯á¡ááºáá±á¬ áááááá¬á¡á¬ážáá¯á¶ážááᯠáááºááá¹ááááºáá»á¬ážá áœá¬ á¡áá»áááºáá°áá¬ážáááºááá¯ááºáááº- Kubernetesá Helmá áá»áœááºá¯ááºááá¯á·á á¡ááœááºážááá¯ááºáž TeamCity á¡ááºá¹áá«áááºáá»á¬ážá áá±áá¬áá±á·á áºáá»á¬ážááŸáá·áº áááºááŸáºáá»á¬ážááᯠá¡ááŸá¬ážá¡ááœááºážáá¶ááá¯ááºáá±á¬ áááºážáááºážááŒáá·áº áá»áááºáááºáááºááŸááºááŒááºáž á áááºááŒáá·áº ááá¯á á¡ááŒááºá áááºááŒá®áž áááºáá±á¬ááºááŸá¯ááᯠááá¯ááºááá¯ááºáááºáá®ážááẠáá¬áá®á¡áááºážáááºááŒá¬áááºá
HighLoad++ 2018 á¡ááœáẠá€á¡ááŒá±á¬ááºážá¡áá¬ááŸáá·áºáááºáááºááá·áº á¡á
á®áááºáá¶á
á¬ááᯠáá»áœááºá¯ááºáá±ážáá²á·ááŒá®ážá áááºááŒáá·áºááŸá¯ááá¯ááºáá«áááºá
á¡áá¯á¶ážáááááºáá°áá»á¬ážá¡ááœáẠBonus áá áºáá¯ááº
áá»áœááºá¯ááºááá¯á·ááẠAvito á០developer áá»á¬ážá¡ááœáẠá¡ááœááºážááá¯ááºážáá¯á¶ážáááºáááºáááºážááᯠá
á®á
ááºáá»ááºááŸááááºá
áá±á·áá»áá·áºááŸá¯ááᯠáá±á¬áºá ááá¯ááŒáá¯á·ááœáẠááŒáá¯áẠá áááºá០á áááºá¡áá áá»ááºážááááºááŒá áºáááºá á€áááºáá»á¬ážááẠá¡ááŒáá·áºá¡áááááºážááá¯ááºááá·áº á¡áá¯ááºáááºáá»á¬ážááŒá áºáááºá áá±á·áááºá á¬ááŸáá·áº áááºáááºážááᯠáá»áœááºá¯ááºááá¯á·ááá¯á¶ážáááºážááœáẠáá¬ážááŸááááºááŒá áºááŒá®áž ááœá±ážáá»ááºáá¶ááá°ááẠááá®ážááŸáá·áº áááºážááá¯áá¡ááœáẠááá¯ááºááá¯ááºáá±ážáá»á±áááºááŒá áºáááºá
áá«áááºááẠáá»áŸá±á¬ááºáá¬ážááá¯ááºáá«áááºá
á€ááá¯á·á
áºá¡ááœáẠá¡ááºááááºáá
áºáá¯ááŸáá·áº áá±á¬á·ááºáá²áá±ážáá¬ážáá°áá»á¬ážá¡ááœáẠAvito (AvitoTech in) á០áááºáááºážáááºáá±á¬ááºáá°á á¡áááºááᯠáá»áœááºá¯ááºááá¯á· ááŒá±áá¬áá«áááºá
source: www.habr.com