2019 áá¯ááŸá áºááááºážá áá¯ááŸá¬ážááá¯ááºáá¶ááẠáááŒá áºááá± áá¶ááááºáááºááŒááºážááá¯ááºáᬠá¥ááá±áá áºáááºááŸááá²á·áááºá á¥ááá±ááẠáá¯ááºá ááºá¡á¯ááºá á¯á¡á¬ážáá¯á¶ážááŸáá·áº áááºááá¯ááºááŒááºážáááŸááá«á áá¯ááºáá á¹á ááºážá¡á¯ááºá á¯áá»á¬ážá¡ááœáẠáááŒá áºááá±áá¶ááááºáááºááŒááºážá á¡áááºáááºááá·áºáááºá áœá²áá»á¬ážááẠááœá²ááŒá¬ážáá«áááºá áá±ážááœááºááŒá®ážá áááááºááŸáá·áº áá±ážáá«ážáá»á¬ážááẠáááŒá áºááá± áá¶ááááºáááºáááá·áº ááááá¯á¶ážááŒá áºáááá·áºáááºá á¡ááŒá¬ážáá¯ááºáá¯ááºáá»á¬áž á¥ááá¬á áá±ááœáŸá±ážá á¡áááºá¡ááááºááŸáá·áº ááá¯á·ááá¯á·ááᯠáá±á¬ááºááá¯ááºážááœáẠááá·áºáá±ážáá«áááºá á€á¥ááá±ááŒá¯áá®ááœááºáááºážáá áºááŸá¯ááẠáá¯ááºáá¯ááºáá áºáá¯áááááœááºážáááºáá áºáá¯áá¯á¶ážááᯠáá¯ááºáá¯ááºááŸá¯á០á á¬ážáá¯á¶ážáá°á¡áá¯á¶ážáááºá¡ááá áá¯ááºáááºážá ááºááœááºáá«áááºáá°á¡á¬ážáá¯á¶ážáᶠááŒá±áá¬áá¶ááá¯ááºá á±ááá·áº á¡áá¯ááºáá®ááŒá±ááŸááºážáááºážá¡áá áºáá»á¬áž ááœá¶á·ááŒáá¯ážááá¯ážáááºáá¬á á±ááẠááŸá¯á¶á·áá±á¬áºáá±ážáá²á·áááºá áááŒá áºááá± áá¶ááááºáááºááŒááºážá
X5 ááœáẠáá¶ááááºáááºáá¬ážáá±á¬ áá¯ááºáá á¹á ááºážáá»á¬ážááᯠááŒá±áá¬áá¶ááŒá®áž ááá¯ááºáá¶áá±á¬áºááŸáá·áº áá±ážááœááºážáá°áá»á¬ážááŸáá·áº áá±áá¬áááŸááºááá·áºá áá áºá¡á¬áž "Marcus" áá¯áá±á«áºáááºá á¡á²áá«ááᯠáááºáá°á áá®ááœááºáá²á·ááá²á áá°á·áá²á· áááºážááᬠá¡á á¯á¡áá¯á¶á áá¬áá²á áá¬ááŒá±á¬áá·áº áá¯ááºáá°á áᬠáá áºáá¯áᯠááŸááá²ááá¯áá¬ááᯠááŒá±á¬ááŒáá¡á±á¬ááºá
áááá·áº HighLoad
âMarcusâ ááẠááŒá¿áá¬áá»á¬ážá áœá¬ááᯠááŒá±ááŸááºážáá±ážáááºá á¡áááááŸá¬ X5 ááááºážá¡áá»ááºá¡áááºá áá áºáá»á¬ážááŸáá·áº áá¶ááááºáááºáá¬ážáá±á¬ áá¯ááºáá¯ááºáá»á¬ážá¡ááœáẠááá¯ááºáá¶ááá¯ááºá¡áá»ááºá¡áááºá áá Ạ(GIS MP) á¡ááŒá¬áž áá±á«ááºážá ááºá¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯ááŒá áºáááºá ááááºáá±á¬ááºážááẠáá»áœááºá¯ááºááá¯á·áá¶ááŸáááŸááá±á¬ á¡ááœáŸááºážáá¯ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááááºážáááºážáá¬ážááŒá®áž á¡áá¬ááá¹áá¯áá»á¬ážáá áºáá»áŸá±á¬áẠá€áá¯ááºáá»á¬ážá ááœá±á·áá»á¬ážááŸá¯áááá¯ááºážáá áºáá¯áá¯á¶ážááá¯áááºáž ááááºážáááºážáá¬ážááŒá®áž á¡ááœáŸááºážáááºáá¬ážáá±á¬ áá¯ááºáá¯ááºáá»á¬ážááᯠááŒááºáááºá¡ááá·áºáááºááŸááºááŒááºážááᯠáááºááŸá¬ážáá±ážáá«áááºá áá¶ááááºáááºáá¬ážáá±á¬ áá¯ááºáá á¹á ááºážá¡á¯ááºá á¯áá»á¬ážááœáẠááááá¯á¶ážáá«áááºááá·áº áá±ážááœááºááŒá®ážááœááºáá¯ááºáá»á¬ážá á¥ááá¬ááᯠá¡áá¯á¶ážááŒá¯á á á®ážááááºáá áºáá°ážááœáẠá¡áá¯áẠ600 ááá·áºáá«áááºááŒá®áž áááºážááá¯á·áá áºáá¯á á®ááœáẠááá¯ááºááá¯ááºáá¯ááºáá«ááŸááááºá ááá¯á·á¡ááŒáẠáá»áœááºá¯ááºááá¯á·áá áá áºááá¬áááºááŸá¬ ááá¯áá±á«ááºáá»á¬ážááŸáá·áº á ááá¯ážááá¯ááºáá»á¬ážááŒá¬ážááŸá ááá¯ááŸá±á¬ááºáá¯á¶áá»á¬ážááŸáá·áº á ááá¯ážááá¯ááºáá»á¬ážááŒá¬ážááŸá á¡á á¯á¡áá±ážáá áºáá¯á á®á ááœá±á·áá»á¬ážááŸá¯áá»á¬ážáááá¬ážáááºááŸá¯ááᯠááŒá±áá¬áá¶áááºááŸáá·áº áá±á¬ááºáá¯á¶ážááœáẠáááºáá°áá°áᶠáá±á¬ááºážáá»ááá¯ááºááŸá¯ááᯠá¡áááºááŒá¯áááºááŒá áºáááºá ááá¯á·á¡ááŒáẠáá»áœááºá¯ááºááá¯á·ááẠáá áºáá¬áá®áá»áŸáẠááœá±áá¬ážááœáŸá²ááŒá±á¬ááºážááŸá¯ 000 ááá·áºááᯠááŸááºáááºážáááºáá¬ážááŒá®áž ááá¯áá²á·ááá¯á·áá±á¬ pack áá áºáá¯á á®ááẠá ááá¯ážááá¯ááºáá²ááá¯á· áááºááá¯á·áá±á¬ááºááŸáááœá¬ážáááºááᯠááŸááºáááºážáááºááẠááá¯á¡ááºáá«áááºá ááá¯á·ááŒá±á¬áá·áº á¡áá¬ááá¹áá¯áá»á¬ážááŒá¬ážááŸá ááœá±á·áá»á¬ážááŸá¯á¡á¬ážáá¯á¶ážááᯠááá·áºááœááºážááœááºáá»ááºááŒá®áž áá áºááŸá áºáá»áŸáẠááŸááºáááºážáá±á«ááºáž áá®áá®áá¶ááŸáá·áºáá»á®á áá»áŸá±á¬áºááá·áºáá»ááºááŸááááºá
á¡áááºáž á¡ááºá
Marcus ááẠX5 á¡ááœááºáž ááá±á¬áá»ááºáá áºáá¯áᯠáá°ááá±á¬áºáááºážá áááºážááᯠáá¯ááºáá¯ááºáá»ááºážáááºááŸá¯ááŒáá·áº á¡áá±á¬ááºá¡áááºáá±á¬áºáá»ááºááŸááááºá á¡ááœá²á·ááẠScrum á¡áá¡áá¯ááºáá¯ááºáááºá ááá±á¬áá»ááºááᯠááŒá®ážáá²á·áá±á¬ááœá±áá¬áá®á á áááºáá²á·áá±á¬áºáááºáž áááááááºááẠá¡á±á¬ááºááá¯áá¬áááœááºáᬠááœááºáá±á«áºáá¬ááẠ- áá»áœááºá¯ááºááá¯á·áá¡ááœá²á·ááẠá¡ááŒáá·áºá¡áá á¯áá±ážáá²á·ááŒá®ážá á áá áºáááá¯áá¬ááᯠáá®ááœááºáá²á·ááŒá®áž á ááºáá á¹á ááºážáá»á¬ážááᯠáááºáá°áá²á·áááºá ááá¯á¡ááœá²á·ááœáẠáá° áá áŠážááŸáááŒá®áž áááºážááá¯á·á¡ááẠááŒá±á¬ááºáŠážááẠbackend ááŸáá·áº frontend ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááœáẠáá«áááºáá±ááŒá®áž áááºážááá¯á·áá²á០áá¯á¶ážáŠážááẠá áá áºááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááœáẠáá«áááºáá«áááºá áá°ááŒá±á¬ááºáŠážááẠáá°ááá¯ááºááá¯ááºá áááºá á¡ááá¯á¡áá»á±á¬áẠá ááºážáááºááŒááºážááŸáá·áº áá¯ááºáá¯ááºááŒá¯ááŒááºááááºážááááºážááŒááºážááœáẠáá«áááºáá«áááºá ááá¯á·á¡ááŒáẠáá»áœááºá¯ááºááá¯á·ááœáẠSRE á¡áá°ážáá¯áá áºáŠážááŸááááºá
áá±á¬á·ááºáá²áá±ážáá¬ážáá°áá»á¬ážááẠáá»áœááºá¯ááºááá¯á·áá¡ááœá²á·ááœáẠáá¯ááºáá»á¬ážáá±ážáá¯á¶áá¬ááá á¡á¬ážáá¯á¶ážáá®ážáá«ážááẠáááá¯ááááºááŸáá·áº á¡á±á¬áºááá¯á ááºážáááºááŸá¯áá»á¬áž áááºááá¯á·áá±ážááááºááᯠááááŒááŒá®ážá áá¬ááºááœáŸááºážáá»á¬ážáááºáááºááŸáá·áº á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááá·áº script áá»á¬ážááᯠáá°ááá¯ááºážáá®ážáá«áž ááááŒáááºá áá¯ááºáá¯ááºáá¶á·ááá¯ážááŸá¯áááºáá»áŸáẠá¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááá·áºááŒáá·áºááẠááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº áááºážááᯠáá»áœááºá¯ááºááá¯á· á¡áá°ážá¡á¬áá¯á¶á áá¯ááºáá«áááºá áá»áœááºá¯ááºááá¯á·ááẠááááºá á¡á á®á¡á ááºááá»ááá±ážáá±á¬ áá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬ážá¡á¬áž á¡ááŒá¶áá¬ááºááŸáá·áº áá°áá®ááẠá¡ááŒá²ááŒáá¯ážá á¬ážááŒá®áž áááºážááá¯á·á¡á¬áž áá¯ááºáá±á¬ááºááẠáá±ážáááºáá±á¬ á¡áá¯ááºá¡áá»áá¯á·ááᯠáá±ážáá«áááºá
ááá¯ááá¯áá¬ááá¯ááºážáááºáá°ážá ááºáá±á¬áá«ááŒá±á¬áá·áº á¡ááœá²á·áá áºáá¯áá¯á¶ážááᯠá¡áá±ážááááºážá¡áá¯ááºááá¯á· ááœáŸá²ááŒá±á¬ááºážáá±ážáááºá ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á á®áá¶ááá·áºááœá²ááŸá¯á¡ááœáẠáááááá¬á¡á¬ážáá¯á¶ážáááŸáááá¯ááºááŸá¯á Jira ááŸáá·áº GitLab ááŸá áááºáá±á¬ááºáá¬ážáá±á¬ á¡áá¯ááºá¡ááœá¬ážá¡áá¬áá»á¬ážááẠá€á¡ááá·áºááᯠá¡ááœááºááá°áá»á±á¬áºááŒááºááá¯ááºá á±áá²á·áááºá á¡áá±ážááŸáá±áá²á·áá±á¬ááá»á¬ážááẠááááºá¡áá±ááŒáá·áº á¡áááºážááá¯ááºáá¯ááºá áœááºážá¡á¬ážááᯠáááááá¯ááºá á±ááŒá±á¬ááºážááŒááá²á·áááºá áá»á¬ážá áœá¬áá±á¬á¡ááœááºá á¡áá¯ááºááœáẠáááºáá±á¬áá·áºáááºáá¬ááŸáááŸá¯ ááá¯ážáá¬áᬠáá áºáá¯áááºážáá±á¬á¡áá»ááºááŸá¬ ááá¯ááºááá¯ááºáááºááœááºááŸá¯ áá»á±á¬ááºáá¯á¶ážáá±ááŒááºážáááºááŒá áºáááºá
á¡áá±ážááááºážá¡ááœá²á· á¡á ááºážá¡áá±áž
áá±ážáá¶áá±á«ááºáá®áá±á¬á¡áá¯ááºááœáẠá¡á ááºážá¡áá±ážáá»á¬áž
ááŒá±ááŸááºážáá»ááºááááºážááá¬á¡á á¯á¡áá±áž
X5 á¡ááœáẠstandard repository ááŸáá·áº CI/CD tool ááẠGitLab ááŒá áºáááºá áá»áœááºá¯ááºááá¯á·ááẠáááºážááᯠáá¯ááºááá¯ááŸá±á¬ááºááŸá¯á á ááºáááºáááŒáẠá ááºážáááºááŒááºážááŸáá·áº á ááºážáááºáá¯ááºáá¯ááºááŒááºáž áá¬áá¬áá»á¬ážááá¯á· ááŒáá·áºáá»ááºááŒááºážá¡ááœáẠá¡áá¯á¶ážááŒá¯áá«áááºá á¡áááºážáá¯á¶áž áá¯ááºáá±á¬áºááá¯ááºááẠ2 áŠážááẠáá¯ááºááŸáá·áº áá±á¬á·ááºáá²áá±ážáá¬ážáá°á០ááŒá¯áá¯ááºáá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠá¡áááºááŒá¯ááẠááá¯á¡ááºáá±á¬á¡áá«ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá¯ááºááŒááºáááºáá¯á¶ážáááºááŒááºážá¡áá±á·á¡áá»áá·áºááá¯áááºáž á¡áá¯á¶ážááŒá¯áá«áááºá Static code ááœá²ááŒááºážá áááºááŒá¬áá° SonarQube ááŸáá·áº JaCoCo ááá¯á·ááẠáá»áœááºá¯ááºááá¯á·ááá¯ááºááᯠááá·áºááŸááºážá á±ááŒá®áž ááá¯á¡ááºáá±á¬ áá°áá áºá ááºážáááºááŸá¯á¡ááá·áºááᯠáá±áá»á¬á á±ááẠáá°áá®áá±ážáá«áááºá áá¯ááºááá¯á· ááŒá±á¬ááºážáá²ááŸá¯á¡á¬ážáá¯á¶ážááẠá€á á áºáá±ážááŸá¯áá»á¬ážááŸáá áºááá·áº áá¯ááºáá±á¬ááºááááºááŒá áºáááºá ááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºáá±á¬ á ááºážááẠscript áá»á¬ážá¡á¬ážáá¯á¶ážááẠáá±á¬ááºááá¯ááºážááœáẠá¡ááá¯á¡áá»á±á¬áẠáá¯ááºáá±á¬ááºáá«áááºá
"Marcus" á០á á®ážááœá¬ážáá±ážáá¯ááºáááºážá ááºáá»á¬ážááᯠá¡á±á¬ááºááŒááºá áœá¬ á¡áá±á¬ááºá¡áááºáá±á¬áºáááºá¡ááœááºá áá áºáá¯áá»ááºážá á®á¡ááá¯áẠáááºážááá¬ááá¯ááºáᬠááŒá¿áá¬áá»á¬ážá áœá¬ááᯠáá»áœááºá¯ááºááá¯á· ááŒá±ááŸááºážáá²á·ááááºá
Task 1. á áá áºá á¡áá»á¬ážááá¯áẠá¡ááá¯ááºážá¡áᬠááá¯á¡ááºáá»ááº
á€ááŒá¿áá¬ááá¯ááŒá±ááŸááºážááẠáá»áœááºá¯ááºááá¯á·ááẠáááá¯áá¬ááá¬á¡ááœáẠmicroservice áá»ááºážáááºáááºážááᯠááœá±ážáá»ááºáá²á·áááºá áá áºáá»áááºáááºážááŸá¬áááºá áááºáá±á¬ááºááŸá¯áá»á¬ážá áá¬áááºááá¹ááá¬ážáá»á¬ážááᯠáá¬ážáááºááẠá¡ááœááºá¡áá±ážááŒá®ážáá«áááºá áá¯ááºáááºážá ááºáá»á¬ážá áááá»áá±á¬á¡áá»ááºá¡áááºáá»á¬ážááᯠááá·áºááœááºážá ááºážá á¬ážáᬠáááºážááá¯á·ááᯠáá¯ááºáááºážáááºáááºááŸá¯á¡ááŒá áºááá¯á· ááá¯ááºážááŒá¬ážááẠáá»áœááºá¯ááºááá¯á·ááŒáá¯ážá á¬ážáá²á·áááºá á¥ááá¬á¡á¬ážááŒáá·áºá ááá¯áá±á«ááºáá áºáá¯ááœáẠáááºáá¶ááŒááºážááẠáááŒá¬ááááá¯ááºáá±á¬áºáááºáž á¡ááœááºááŒá®ážáá¬ážáá±á¬ áááºáááºááŸá¯ááŒá áºááŒá®ážá ááá¯áá¬áá¡ááœááºáž áá¯ááºáá á¹á ááºážáááºáá¶ááá·áºáá°áá áºááŸáá·áºáááºáááºááá·áº ááŒááºáááºá ááºážáááºážááááºážááááºážáá±ážá¡ááœá²á·áá¶á០ááááºážá¡áá»ááºá¡áááºááᯠá¡ááŒááºááá°ááẠááá¯á¡ááºáááºá áá áºááŒáááºááœáẠáá±ážááá¯á·ááá·áºá¡áá±á¡ááœááºááẠ600000 á¡áááá±á¬ááºááŸáááœá¬ážáááºááŒá áºáááºá á á€áá¯ááºáá¯ááºááᯠááá¯áá±á«ááºáá²ááá¯á· áááºáá¶ááá¯ááºááŸá¯ááᯠá á áºáá±ážááŒá®áž ááá¯áá±á«ááºá¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááœáẠááá¯á¡ááºáá±á¬ á¡áá»ááºá¡áááºá¡á¬ážáá¯á¶ážááᯠááŒááºááá¯á·áá±ážáá«á ááá¯á·áá±á¬áº ááá¯ááŸá±á¬ááºáá¯á¶áá»á¬ážá០áááºááá¯á·ááŸá¯ááẠááá¯ááá¯ááŒááºážáááºááŸá¯ááŸáááŒá®áž áá áºáá»áááºáááºážááœáẠáá±ážáááºáá±á¬áá±áá¬ááá¬áááŒáá·áº áá¯ááºáá±á¬ááºáááºá
áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á¬ááºááŸá¯á¡á¬ážáá¯á¶ážááᯠááá¯ááºáá¶áá²á·á¡ááŒá±áá¶ááŒáá·áº á¡áá±á¬ááºá¡áááºáá±á¬áºááŒá®áž Kafka ááá¯ááºááá¯ááºá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áᬠá¡ááœááºážááá¯ááºážáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡ááá·áºáá»á¬ážá¡ááŒá Ạááá¯ááºážááŒá¬ážááẠááŒáá¯ážá á¬ážáááºá á€áááºááŸá¬ á¡áááºážá¡ááŒá áº-áá»á¬ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááœáẠáááºááᯠáá»áááºááœááºáá»áŸá¬áá®á á±ááŒá®áž áá¯ááºáá¯ááºááŒá¯ááŒááºááááºážááááºážááŸá¯ááᯠááá¯ážááŸááºážááœááºáá°á á±ááá·áº áááºááᯠáá°á·áá¬áá¬áá°áᶠáááºáá±á·áá»áºáá±ážááá¯á·ááá·áºá¡áá«ááœááºá ááá¯á·áá±á¬áº áá±á¬ááºááá¯ááºážááœáẠááá¯ááá¯áá»á¬ážááŒá¬ážáááºá
ááŒááºáá áá áºáá»á¬ážááŸáá·áº á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯á¡ááœáẠáá±á¬áºáá»á°ážáá»á¬ážááᯠáá®ážááŒá¬ážáááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááŒá Ạááœá²ááŒá¬ážááẠáá¯á¶ážááŒááºáá²á·áááºá áááºážááẠáá¯ááºáááºážáá¯ááºáá±á¬ááºááá¯ááºá áœááºážááŸááá±á¬ áááºáá±á¬ááºááŸá¯áá»á¬ážá¡áá±á«áº áááºáá±á¬ááºááŸá¯áááŸáááá±á¬áẠááŒááºáá áá áºáá»á¬ážá áááŒá¬ááááŒá±á¬ááºážáá²áá±áá±á¬ APIs ááŒá¿áá¬ááᯠááŒá±ááŸááºážááá¯ááºá á±áá²á·áááºá
ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯á¡á¬ážáá¯á¶ážááᯠOpenShift á¡á
á¯á¡áá±ážááœáẠááŒáá·áºáá»ááºáá¬ážááŒá®ážá áááºážááẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá
áºáá¯á
á®ááᯠáá»á²á·ááœááºááŒááºážááŒá¿áá¬ááŸá
áºáá¯áá¯á¶ážááᯠááŒá±ááŸááºážáá±ážááŒá®áž ááŒááºááá¯áá¹ááá® áááºáá±á¬ááºááŸá¯ááŸá¬ááœá±ááŒááºážáá°ážááºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á·á¡á¬áž á¡áá¯á¶ážáááŒá¯á
á±áá«á
á¡áá¯áẠ2á ááááºáá±á¬ááºážáááºáá±á¬ááºááŸá¯áá»á¬ážááŒá¬ážááœáẠááŒáá·áºáá¬ážáá±á¬áááºááŸáá·áº á¡ááœááºá¡ááŒáááºá¡ááẠáá±áá¬áááŸááºááẠááá¯á¡ááºáááº- ááá±á¬áá»ááºá áááºááá·áºá¡ááá·áºááœáẠáá áºá áá¹ááá·áºáá»áŸáẠáááºáááºááŸá¯ 600 ááá·áº áá¯ááºáá±á¬ááºáááºá áááºáá®ááá¯ááºáá»á¬ážááẠáá»áœááºá¯ááºááá¯á·áááááºáá±á¬ááºážááŸáá·áºáá»áááºáááºáá¬ážáá±á¬ááŒá±á¬áá·áº á€áááºááá¯ážááẠops/sec 5000 á¡ááááá¯ážáá¬áááºáá¯áá»áŸá±á¬áºááá·áºáá«áááºá
Kafka á¡á
á¯á¡áá±ážááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž ááááºáá±á¬ááºážá ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááŒá¬áž áá
áºááŒáá¯ááºááẠá¡ááŒááºá¡ááŸáẠá¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯ááᯠáá¯á¶ážááá®ážáá«áž á
áœáá·áºááœáŸááºááŒááºážááŒáá·áº á€ááŒá¿áá¬ááᯠááŒá±ááŸááºážááá¯ááºáá²á·áááºá áá¯ááºáá±á¬ááºáá»ááºá¡á¬ážáá¯á¶ážááẠáááŒáá¯ááºáááºáááºážááá¯ááºáá±á¬ááŒá±á¬áá·áº á
áá
áºááá¯á¡ááºáá»ááºáá»á¬ážááᯠá¡ááœááºááá¯áá
áá¯ááºááœá²ááŒááºážá
áááºááŒá¬ááẠááá¯á¡ááºáá«áááºá áá
áºáá»áááºáááºážááŸá¬áááºá áá»áœááºá¯ááºááá¯á·ááẠááœá²á
á¬ážááŸáá
áºááá·áº á¡ááŒá
áºá¡áá»ááºáá»á¬ážááᯠáá¯ááºááœáŸáá·áºáá¯á¶áá¬áá ááá¯á¡ááºááá·áº áá¯ááºáááºážááá¯ááºáᬠá¡áá»ááºá¡áááºá¡á¬ážáá¯á¶ážááᯠáááºáá±á·ááºá»ááœááºáá« áá±ážááá¯á·áá«áááºá ááá¯á·ááŒá±á¬áá·áº áááºáá±á·áá»áºá¡ááœááºá¡á
á¬ážááẠáá®ááá¯ááá¯ááºáá»á¬ážá
áœá¬á¡áá áá±á¬ááºááŸáááá¯ááºáááºá Kafka ááŸá áááºáá±á·áá»áºá¡ááœááºá¡á
á¬áž ááá·áºáááºáá»ááºááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž áááºáá±á·ááºá»á¡ááœááºá¡á
á¬ážááᯠáááá»á
áœá¬ ááá·áºááŸááºážááẠááá¯á¡ááºááŒá®áž ááá¯á¡ááºáá«á áááºážááá¯á·ááᯠááá¯ááºážááŒá¬ážááẠááá¯á¡ááºáá±á¬áºáááºáž ááœá²áá±ááŸá¯ááẠáá¯ááºáááºážáá±á¬ááºááœááºááŸá¯áá»á¬ážááŸáá·áº áááºá
ááºáá±áá«áááºá
á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠáá¬ážáá
áºá
á®ážááŸáá±á¬ááºááŸááá¬áá±á¬ áá¯ááºáá
á¹á
ááºážáá»á¬ážááᯠáá±áá¹áá¬áá»á¬ážá¡ááŒá
Ạááá¯ááºážááŒá¬ážáá«á synchronous áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááœáẠáá®ážááŒá¬áž microservices áá»á¬ážááᯠááœá²áá±áá±ážááŒá®áž ááŸá¶á·ááŸá¶á·á
ááºá
áẠload testing ááŒá¯áá¯ááºáá«áááºá Kafka ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·á¡á¬áž áá±á¬ááºáááºá
áááºáá±á«áºááŸá¯áá
áºáá¯á¡áá±ááŒáá·áº áá±ážá¡ááºááẠ- Kafka áá±á«ááºážá
ááºážááŸá¯ááᯠááá·áºááœááºážá
ááºážá
á¬ážááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááááºáá±á¬ááºááŸá¯áá¯ááºáááºážáááºáááºááŸá¯ááᯠá
ááºážáááºááŒááºážááẠáá»áœááºá¯ááºááá¯á·ááá°áá
áºá
ááºážáááºááŸá¯á¡á¬ážáá¯á¶ážááᯠááŒáá¯ááºáá°ááŒá
áºá
á±áááºá Embedded Kafka Broker ááᯠá¡áá¯á¶ážááŒá¯á áá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯áẠá¡áá¯á¶ážáááºáááºážáááºážáá»á¬ážááᯠáá±ážáá¬ážááŒááºážááŒáá·áº á€ááŒá¿áá¬ááᯠááŒá±ááŸááºážááá¯ááºáá²á·áá«áááºá áááºážááẠáá
áºáŠážáá»ááºážáááºážáááºážáá»á¬ážá¡ááœáẠáá°áá
áºá
ááºážáááºááŸá¯áá»á¬ážááᯠáá±ážáááºáááá¯á¡ááºáá±á¬áºáááºáž Kafka ááá¯á¡áá¯á¶ážááŒá¯á ááŸá¯ááºááœá±ážáá±á¬ááá
á¹á
áááºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á·á
ááºážáááºááá¯áá«áááºá
áááºáá±á¬ááºááŸá¯áá»á¬ážáá¯ááºáá±á¬ááºáá±á áẠááá¯á·ááá¯áẠKafka batch ááŸáá·áºá¡áá¯ááºáá¯ááºááá·áºá¡áá« ááŒáœááºážáá»ááºáá»á¬ážááŒá áºáá±á«áºááá·áºá¡áá« áááºážááá¯á·á TraceId ááᯠááŒá±áá¬áá¶ááŒááºážááŸááºáááºážáá»á¬ážááœáẠá¡á¬áá¯á¶á áá¯ááºááŸá¯áá»á¬ážá áœá¬ááŒá¯áá¯ááºáá¬ážáááºá ááááá áºáá¯ááŸáá·áº á¡áá°ážááŒá¿áá¬áá»á¬áž áááŸááá²á·áá«áá áá¯áááááá á¹á ááœááºá á¡áá¯ááºááŸáá·áºá¡áá° áá«áá¬áá±á¬ TraceIds á¡á¬ážáá¯á¶ážááᯠááŸááºáááºážááœááºážááŒá®áž áááºáááºááŒá±áá¬áá¶ááẠáá áºáá¯ááᯠááœá±ážáá»ááºáá«á ááá¯á·áá±á¬áẠáá°áááºáž TraceId ááŒáá·áº ááŸá¬ááœá±áá±á¬á¡áá«á á¡áá¯á¶ážááŒá¯áá°ááẠááŒá±áá¬áá¶ááŒááºáž áááºáááºáá¯ááºáá±á¬ááºáááºááᯠá¡ááœááºááá° ááááŸáááá¯ááºáááºááŒá áºáááºá
Task 3. Data á¡áá»á¬ážá¡ááŒá¬áž ááááºážáááºážááẠááá¯á¡ááºáááº- áá±ážááááºáá áºáá¯áááºážá¡ááœáẠáá áºááŸá áºáá»áŸáẠáá¶ááááºáá±á«ááºáž á áá®áá®áá¶áá»á±á¬áºááẠX1 ááá¯á· áá±á¬ááºáá¬áááºá áááºážááá¯á·ááẠá¡áááºáááŒááºááŸáá·áº á¡ááŒááºáááºáá±á¬ááºááẠááá¯á¡ááºáááºá á á¯á á¯áá±á«ááºážá á áá áºááẠá€áá¶ááááºáááºáá¬ážáá±á¬ áá¯ááºáá á¹á ááºážáá»á¬ážá ááŸá¯ááºááŸá¬ážááŸá¯ááŸááºáááºáž áá áá®áá®áá¶ááá·áºááᯠáá¯ááºáá±á¬ááºááááºááŒá áºáááºá
ááááááŒá¿áá¬ááá¯ááŒá±ááŸááºážááẠNoSQL áá±áá¬áá±á·á ẠMongoDB ááá¯ááœá±ážáá»ááºáá²á·áááºá áá»áœááºá¯ááºááá¯á·ááẠnode 5 áá¯ááá¯áááºáá±á¬ááºáá¬ážááŒá®áž node áá áºáá¯á á®ááœáẠáá¬áᬠ3 áá¯ááá¯á¶áá°á¡á á¯áá áºáá¯ááŸááááºá áááºážááẠááá·áºá¡á¬áž á áá áºá¡á¬áž á¡áá»á¬ážááá¯áẠá¡ááá¯ááºážá¡áá¬á áá¬áá¬á¡áá áºáá»á¬ážááᯠá¡á á¯á¡áá±ážááá¯á· áá±á«ááºážááá·áºáááºááŸáá·áº áááºážá á¡ááŸá¬ážá¡ááœááºážááᯠáá¶ááá¯ááºáááºááŸáá á±ááẠáá±áá»á¬á á±áááºá á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá±á¬ááºáááºááŒá¿áá¬áá áºáᯠááŒá¯á¶ááœá±á·áááẠ- á¡áá»á¬ážááá¯áẠá¡ááœááºá á¬ážááá¯ááºáá±á¬ ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááᯠááá·áºááœááºážá ááºážá á¬ážáᬠmongo á¡á á¯á¡áá±ážááœáẠá¡áá±á¬ááºážá¡áááºááŒá¯áá¯ááºááŒááºážááᯠáá±áá»á¬á á±áá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·áá áá áºááá¬áááºáá áºáá¯ááŸá¬ áá°áá®áá±á¬áá¶ááááºáááºáá¬ážáá±á¬áá¯ááºáá»á¬ážááŒáá·áº áá¯ááºáá¯ááºáá»á¬ážááᯠááŒááºáááºáá±á¬ááºážáá»ááẠááŒáá¯ážáááºážááŸá¯áá»á¬ážááᯠáá±á¬áºáá¯ááºáááºááŒá áºáááºá á€ááœááºá áááºááá·áºáá»á¬ážááẠááŸá¬ážááœááºážáá±á¬ á áááºáááºááŒááºáž ááá¯á·ááá¯áẠááœá±ááá¯ááºááá¬ážáá»á¬ážá ááŸá¬ážááœááºážáá±á¬ áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááŒáá·áº áá±á«áºáá¬áá«áááºá ááá¯ááá¯á·áá±á¬ áááºáá°áá»á¬ážááᯠKafka batch áá áºáá¯ááœáẠá á®áá¶áá±á¬ááºááœááºáá±ááŒá®áž ááŸá áºáá¯áá¯á¶ážááœáẠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºáá±ááŸá¯áá»á¬ážááᯠááœá±á·ááŸáááá«áááºá ááá¯á·ááŒá±á¬áá·áºá áá±áá¬áá±á·á áºááᯠáá±ážááŒááºážááŒááºážááŒáá·áº áááºáá°ááŒá áºáá±ááŒááºážá¡ááœáẠá á áºáá±ážááŒááºážááŸá¬ áá¬áá áºáá¯á០ááá±ážáá²á·áá«á ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá áºáá¯á á®á¡ááœááºá á€áááºáá±á¬ááºááŸá¯á áá¯ááºáááºážááá¯ááºáᬠáá¯áá¹ááááá¯á¡ááŒá±áá¶á ááŒá¿áá¬ááᯠáá®ážááŒá¬ážááŒá±ááŸááºážáá²á·áááºá á¥ááá¬á¡á¬ážááŒáá·áºá á á áºáá±ážááŸá¯áá»á¬ážá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááœá²á¡ááœááºážááœáẠáá»ááºáááºááŸááºáá áºáá¯ááᯠááá·áºááœááºážááŒá®áž ááá·áºááœááºážááá·áºá¡áá« áááºáá±ááá·áºáá¯á¶ááá¹áá¬ááºá¡ááœáẠáá®ážááŒá¬ážáá¯ááºáá±á¬ááºááŒááºážá
áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá áááá¯ááºážááŒá±á¬ááºážááŸáá·áº áá¯á¶ážá áœá²áá°áá»á¬ážá áá¯ááºáá±á¬ááºáá»ááºááẠá¡áá±ážá¡ááŒá®ážáá¯á¶ážá¡áá¬á¡áá±á«áº áááºáá±á¬ááºááŸá¯áááŸáá á±ááẠáá±áá»á¬á á±ááẠ- áá»áœááºá¯ááºááá¯á·á áá¯ááºáááºážáá¯ááºáááºážá ááºáá»á¬áž áá¯ááºáá±á¬ááºááŒááºážááœááºá áá»áœááºá¯ááºááá¯á·ááẠKafka ááŸáááá·áº ááááºážá¡áá»ááºá¡áááºáá»á¬ážááᯠáááŸáááá·áº áá®ážááŒá¬ážáá±áá¬áá±á·á áºáá áºáá¯ááŒáá·áº áááá¯ááºážá¡áá»ááºá¡áááºá¡á¬ážáá¯á¶ážááᯠáá®ážááŒá¬ážáááºáá±á¬ááºááŸá¯á¡ááŒá Ạááœá²ááŒá¬ážáá¬ážáá«áááºá . á€áááºážá¡á¬ážááŒáá·áºá á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠáááºáááºáá¯ááºáá±á¬ááºáá±áá±á¬ áá¯ááºáááºážáá»á¬ážá¡ááœáẠáá±áá¬ááᯠáá¯ááºáá±á¬ááºááá·áº áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáááááá¯ááºá á±áá² áá®ážááŒá¬ážáááºáá±á¬ááºááŸá¯áá áºáá¯ááŒáá·áº áá¯ááºáá±á¬ááºáá«áááºá
Task 4- áááºážá á®ááŒááºážááᯠááŒááºáááºáá¯ááºáá±á¬ááºááŒááºážááŸáá·áº á á±á¬áá·áºááŒáá·áºááŒááºáž-
ááŒáá·áºáá±ááá·áºá áá áºáá»á¬ážááœáẠáá±áá¬áá±á·á áºáá»á¬ážá áááºážá á®ááŸá¯áá»á¬ážááŸáá·áº ááŒááºááá±áá¬áááºážááŒá áºáá»á¬áž áááŸáááá¯ááºááŸá¯ááœáẠááŒá¿áá¬áá»á¬ážááŸáá·áº á¡ááŸá¬ážá¡ááœááºážáá»á¬áž áááœá²áááœá± ááŒá áºáá±á«áºáá¬áá«áááºá Marcus áááŒá áºáááºááœááºá ááá¯ááá¯á·áá±á¬á¡ááŸá¬ážáá»á¬ážááááºážááŒá áºááŸá¬ ááŒááºáá áá áºáá»á¬ážááŸáá·áº áá±á«ááºážá ááºááŒááºážááŒá áºáááºá áááºááŸááºáá¬ážáá±á¬ á¡áá»áááºááœááºááŸá¯ááŸáá·áºá¡áá° ááŸá¬ážááœááºážáá±á¬ áá¯á¶á·ááŒááºááŸá¯áá»á¬ážááᯠáááºáá«ááá²áá² áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠááœáá·áºááŒá¯ááá·áº á¡ááŒá±ááᯠááŸá¬ááœá±ááẠááá¯á¡ááºáá±á¬áºáááºáž áá áºáá»áááºáááºážááŸá¬ááẠáááºááááºážá á®ááœáẠá¡á±á¬ááºááŒááºáá±á¬ áá±á¬ááºážááá¯áá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááŒááºážááᯠááááºááá·áºá á±áá«á á€áááºááœááºáá»ááºá¡ááœááºá âá¡ááŒá±á¬ááºážá¡áá¬ááᯠá¡ááŒá±áá¶á ááŒááºáááºááŒáá¯ážá á¬ážááŒááºážâ áá¯áá±á«áºááá·áº á¡áá°á¡áááᯠááœá±ážáá»ááºáá²á·áááºá áááºáá¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯á á®á¡ááœááºá ááŸá¬ážááœááºážáá±á¬áááºáá±á·áá»áºáá»á¬ážááᯠáá±ážááá¯á·ááá·áºáá áºáᯠááá¯á·ááá¯áẠáá áºáá¯áááºááá¯áá±á¬ ááŒááºááŒáá¯ážá á¬ážááá·áºá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáááºáá®ážáá¬ážááŒá®áž áá áºáá»áááºáááºážááŸá¬ááẠá¡áááá¡ááŒá±á¬ááºážá¡áá¬á០áááºáá±á·áá»áºáá»á¬ážááᯠáá¯ááºáá±á¬ááºáá¬ááœáẠááŸá±á¬áá·áºááŸá±ážááŸá¯ááᯠáááºááŸá¬ážáááºááŒá áºáááºá á¡ááŒááºá¡ááŸááºáááºááœááºááŸá¯á¡á á®á¡á áẠ-
ááá¯áá²á·ááá¯á·áá±á¬ á¡á
á®á¡á
ááºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºá áá»áœááºá¯ááºááá¯á·ááẠá¡á±á¬ááºáá«ááá¯á·ááᯠááá¯á¡ááºáááº- á€ááŒá±ááŸááºážáá»ááºááᯠSpring ááŸáá·áº áá±á«ááºážá
ááºáᬠáá¯ááºááœá¬ážááŒááºážááᯠááŸá±á¬ááºááŸá¬ážáááºá áááºááᯠá
á®ážáááºážáá±á
áẠSpring BeanPostProccessor ááá¯á¡ááŒá±áá¶á á¡áá¬ážáá°ááŒá±ááŸááºážáá»ááºááᯠááœá±á·ááŸááá²á·áá±á¬áºáááºáž áá»áœááºá¯ááºááá¯á·á¡ááœáẠáááá¯á¡ááºáá² áááºáá²áá±áá¯á¶ááááºá áá»áœááºá¯ááºááá¯á·áá¡ááœá²á·ááẠáá¯á¶ážá
áœá²áá°áá»á¬ážáááºáá®ážáááºá¡ááœáẠááœá±áŠážá
ááºáááºážááœáẠáá±á«ááºážá
ááºážááá¯ááºá
á±ááá·áº ááá¯ážááŸááºážáá±á¬ááŒá±ááŸááºážáá»ááºáá
áºáá¯ááᯠááŒá¯áá¯ááºáá¬ážááŒá®áž áááºáá¶áááŒáá¯ážá
á¬ážá¡áá¯á¶ážááŒá¯áá°áá»á¬ážááá¯áááºáž ááá·áºááœááºážáá¬ážáá«áááºá Spring team ááᯠáá»áœááºá¯ááºááá¯á·áááŒá±ááŸááºážáá»ááºá ááŸá±á·ááŒá±ážáá¯á¶á
á¶ááᯠáááºážááŸááºážáá²á·áááºá áááºááŒááºááá¯ááºáááºá
ááŒááºáááºááŒáá¯ážá á¬ážááŸá¯á¡á¬ážáá¯á¶ážááŒá®ážáá±á¬áẠáááºáá±á·áá»áºááᯠááá±á¬ááºááœááºááá¯ááºáá«á Spring DeadLetterPublishingRecoverer ááᯠá¡áá¯á¶ážááŒá¯á DLT (á á¬áá±áá±á«ááºážá ááº) ááá¯á·ááœá¬ážáá«áááºá áá¶á·ááá¯ážáá°áá®ááŸá¯áá±á¬ááºážááá¯áá»ááºá¡áá áá»áœááºá¯ááºááá¯á·ááẠá€áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠááá¯ážáá»á²á·ááŒá®áž DLTá stackTraceá traceId ááŸáá·áº áááºážááá¯á·ááŸáá·áºáááºáááºáá±á¬ á¡ááŒá¬ážá¡áá¯á¶ážáááºáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááœáẠáá«áááºáá±á¬ áááºáá±á·áá»áºáá»á¬ážááᯠááŒáá·áºááŸá¯ááá¯ááºá á±ááá·áº áá®ážááŒá¬ážáááºáá±á¬ááºááŸá¯áá áºáá¯ááᯠáááºáá®ážáá²á·áááºá ááá¯á·á¡ááŒááºá á á±á¬áá·áºááŒáá·áºááŒááºážááŸáá·áºááááá±ážáá»ááºáá»á¬ážááᯠDLT áá±á«ááºážá ááºáá»á¬ážá¡á¬ážáá¯á¶ážááœáẠáá±á«ááºážááá·áºáá²á·ááŒá®áž ááá¯á¡áá«á ááááºáá±á¬á·á DLT áá±á«ááºážá ááºááŸá áááºáá±á·áá»áºáá áºáá¯á á¡ááœááºá¡ááŒááºááẠáá»áá¯á·ááœááºážáá»ááºáá áºáá¯ááᯠááœá²ááŒááºážá áááºááŒá¬ááŒá®áž ááŒá¯ááŒááºááẠá¡ááŒá±á¬ááºážááŒáá»ááºáá áºáá¯ááŒá áºáááºá áááºážááẠá¡ááœááºá¡áááºááŒá±ááẠ- áá±á«ááºážá ááºá¡áááºááŒáá·áºá ááŒá¿áá¬á á¡áááºážáá¶á¡ááŒá±á¬ááºážááá¬ážááŸá¬ááœá±ááŸá¯ááᯠáááááá¬áᬠá¡ááŸáááºááŒáŸáá·áºáá±ážááá·áº áá¯ááºáááºážá ááºá áááºááá·áºá¡ááá·áºááœáẠáá»áœááºá¯ááºááá¯á· áá»ááºáá»ááºážáá¬ážáááºáá«áááºá
áááŒá¬áá±ážáá®áá áá»áœááºá¯ááºááá¯á·ááẠáááºážááá¯á·á á¡ááŒá±á¬ááºážáááºážáá»á¬ážááᯠáááºááŸá¬ážááŒá®ážáá±á¬áẠ(á¥ááá¬á ááŒááºáá
áá
áºá áá¯ááºáá±á¬ááºááá¯ááºá
áœááºážááᯠááŒááºáááºáááºáá±á¬ááºááŒááºáž) ááŸáá·áº ááœá²ááŒááºážá
áááºááŒá¬ááŸá¯á¡ááœáẠáááºááá¯ááºáᬠáá»áá¯á·ááœááºážáá»ááºááᯠáááºáá±á¬ááºááŒá®ážáá±á¬áẠáá»áœááºá¯ááºááá¯á·á áá¶á·ááá¯ážáá°áá®ááŸá¯ááŒáá·áº áááºáá±á·áá»áºáá»á¬áž ááŒááºáááºáá±ážááá¯á·ááá¯ááºá
á±ááá·áº áá±á·á
áºáá¯ááºááºáá
áºáá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá±á¬ááºááœááºáá²á·áá«áááºá á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯ááºá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááẠá¡áá¯á¶ážáááºáá¬áá«áááº- ááŸááºáá»á¬ážáá±á¬áá¯ááºáá±á¬ááºááŸá¯ááœááºážáááºáá
áºáá¯ááᯠááŒááºáááºá
áááºáááºá¡ááœáẠá¡ááá¯ááŸááá±á¬á¡ááá·áºá០áááºážááᯠááŒááºáááºá
áááºááá¯ááºáá«áááºá
ááááºáá±á¬ááºážáááºáááºááŸá¯
ááááºáá±á¬ááºážááẠá¡áá»áá¯ážááŒá áºááœááºážáá±á¬ áááºáááºááŸá¯ááœááºááŸáááŒá®ážá áá»áœááºá¯ááºááá¯á· áá±á·á áẠááá¯á·áá±á¬ááºááŸá¯ááŸáá·áº ááá¯á·áá±á¬ááºááŸá¯áá»á¬áž áá¯ááºáá±á¬ááºáᬠááŒáá·áºááŒá°ážáá±ážá ááºáá¬áá»á¬ážááŸáá·áº á ááá¯ážááá¯ááºá¡áá áºáá»á¬ážááᯠáá»áááºáááºáá«á áá±áá¬ááºááŸá°ážá áá áºá áááºáá áºááá¯ááºážá¡áá±ááŒáá·áºá á áá áºááẠ"Tobacco" ááŸáá·áº "Shoes" áá¯ááºáá¯ááºá¡á¯ááºá á¯áá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáá«áááºá
áá»áœááºá¯ááºááá¯á·áá¡ááœá²á·áá áºáá¯áá¯á¶ážááẠáá±áá¬ááºááŸá°ážáá»á¬ážáá¯ááºáá±á¬ááºááŒááºážá áá±á«áºáá±á«ááºáá¬áá±á¬ááŒá¿áá¬áá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááŒá®áž áá»áœááºá¯ááºááá¯á·ááá¯ááºáá¯ááºááá¯ážáááºá á±áááºá ááŸááºáááºážáá»á¬ážááá¯ážáááºáá±á¬ááºážááœááºá á±ááŒááºážá០ááŒá±á¬ááºážáá²ááŒááºážáá¯ááºáááºážá ááºáá»á¬ážá¡áá á¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážáá±ážáááºá
áá»áœááºá¯ááºááá¯á·áá¡ááŸá¬ážáá»á¬ážááᯠáááºáá«ááá²áá²áááŒá¯áá¯ááºá á±áááºá áá±áá¬ááºááŸá°ážá¡ááœááºáž ááœá±á·ááŸáááá·áºááá á¹á á¡á¬ážáá¯á¶ážááᯠá¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŸá¯áá»á¬ážááœáẠáááºáááºá á±áá«áááºá á¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŸá¯áá»á¬ážááŸáá·áº áá°áá áºá ááºážáááºááŸá¯áá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážááŸááá±ááŒááºážááẠááá·áºá¡á¬áž áá¯ááºáá¯ááºááŸá¯á ááºážáááºááŒááºážááŸáá·áº á á¬áá¬ážá¡ááá¯ááºáž áá¬áá®á¡áááºážáááºá¡ááœááºáž hotfix ááᯠááá·áºááœááºážááá¯ááºáááºá
ááᯠáá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á ááááºáá±á¬ááºážááᯠáááºááẠááœá¶á·ááŒáá¯áž ááá¯ážáááºá¡á±á¬áẠáá¯ááºáá±á¬ááºáá±ááŒá®áž á
áááºáá±á«áºááŸá¯á¡áá
áºáá»á¬ážááᯠá¡áááºáááŒáẠáááºááá¯ááºáá±áá«áááºá áááºá
áááºáááºá
á¬ážáá«á á¡á±á¬ááºáá«áá±á¬ááºážáá«ážáá»á¬ážááœáẠáá»áœááºá¯ááºááá¯á·áááŒá±ááŸááºážáááºážáá»á¬ážááᯠááœá±ážááœá±ážáá«áááºá
source: www.habr.com