RIT 2019 ááœáẠáá»áœááºá¯ááºááá¯á·ááá¯ááºáá±á¬áºááá¯ááºááẠAlexander Korotkov á ááŒá¯áá¯ááºáá²á·áááºá
áá¯áá¡ááá·áº
"áá¯áá¡ááá·áºáá±á¬ááºáá±á¬á· áááŸááá°ážá áá«áááºáž ááááá°áž"
"Kung Fu Panda" áá¯ááºááŸááºáá²á Master Shifu
CIAN áá¯áá¹ááá®ááᯠá áááºáááºáá±á¬ááºááŒá®áž 14 ááŸá áºá¡ááŒá¬ááœáẠCIAN ááœáẠá¡ááá¯á¡áá»á±á¬ááºá áá áºááŒáá·áº á áááºáá±á¬ááºááœááºáá²á·áá«áááºá á¡á²áá®áá¯ááºážá ááœá¶á·ááŒáá¯ážáá±ážá¡ááœá²á·ááŸá¬ áá° áá áá±á¬ááºááŸááááºá áá¯á¶ááááºáááºááá¯ááºáá¬áž ááŸááºáá«áááºá á¡ááá¯á¡áá»á±á¬ááºá áá áºááẠá¡áá»áá¯á·áá±á¬áá¯á¶á á¶ááŒáá·áº áááºááŸááá±áá±á¬áºáááºáž á ááºáááºáááŒááºáá±á«ááºážá ááºááŒááºážááŸáá·áº áá¯ááºáá±ážááá¯á·ááŒááºážá¡ááœáẠáá®ážááŒá¬ážáŠážáááºáá»ááºááẠ35 áá¯ááŸá áºááœáẠá áááºáá¯á¶áá±á¬áºáá¬áááºá
ááá¯á¡áá»áááºááœááºá áá»áœááºá¯ááºááá¯á·ááœáẠLinux/Windows áá¬áá¬áá»á¬ážáá±á«áºááœáẠá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ Python, C# ááŸáá·áº PHP ááá¯á·á ááŒá®ážáá¬ážáá±á¬ monolith áá áºáá¯ááŸááááºá á€áá®áá°ážááᯠá¡áá¯á¶ážáá»ááẠáá»áœááºá¯ááºááá¯á·ááœáẠáá»áœááºá¯ááºááá¯á·ááá¯ááºááá¯áẠáá¯ááºáá±á¬ááºááá·áº áá¬ááºááœáŸááºážá¡á á¯á¶ááŸááááºá á¡ááá¯ááºážá¡áááºáá»á¬ážááᯠáá±á«ááºážá ááºážááŒááºážá áá»áá¯á·ááœááºážáá»ááºáá»á¬ážááᯠááŒá¯ááŒááºááŒááºážááŸáá·áº âáááºáá±á¬ááºááŸá¯ááœáẠááá°áá®áá±á¬á¡áá¯ááºáá»á¬ážâ ááŒáá·áº ááŒááºáááºáááºáá±á¬ááºááá·áºá¡áá« áááááá¹ááá»á¬ážááŒá±á¬áá·áº áá¬áá»ááºááá¯ááºáá²ááŸá¯ááŸáá·áº áá±ááá¬áá»á¬ážááᯠáá±á¬ááºááŒááºážáá±ážááá·áº ááá¯áá®áá ááºážáá±ážááœá²áááºáž ááŸááá²á·áááºá ááá¯ážááŸááºážáá±á¬ áá¯ááºáááºážá ááºááẠá€áá²á·ááá¯á· ááŒá áºáááº-
á€á¡áá¬ááᯠáá»áœááºá¯ááºááá¯á· ááá»á±ááááºááŒá
áºááŒá®áž áááºáá«ááá²áá² áá¯ááºáá±á¬ááºááá¯ááºáá±á¬á á¡ááá¯á¡áá»á±á¬áẠá
á®áá¶ááá¯ááºáá±á¬ áááºáá±á¬ááºááŸá¯ááŸáá·áº á¡áá¯á¶ážáá»ááŸá¯ áá¯ááºáááºážá
ááºááᯠáááºáá±á¬ááºááá¯áá«áááºá áááºážá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠCI/CD á
áá
Ạááá¯á¡ááºááŒá®áž Teamcity á á¡ááá²á·áá¬ážááŸááºážááŸáá·áº Jenkins á á¡ááá²á·áá¬ážááŸááºážááŒá¬ážááœáẠáá»áœááºá¯ááºááá¯á·ááẠáááºážááá¯á·ááŸáá·áº áá¯ááºáá±á¬ááºáá²á·ááŒá®áž áá¯ááºáá±á¬ááºáá»ááºá¡á
á¯á¶á¡áááºááŒáá·áº áá»áœááºá¯ááºááá¯á·ááŸáá·áº ááŸá
áºáŠážá
áá¯á¶áž ááá¯ááºáá®áá±á¬ááŒá±á¬áá·áº ááœá±ážáá»ááºáá²á·áááºá áá»áœááºá¯ááºááá¯á·ááẠTeamcity ááᯠáááŒá¬áá±ážáá®á áá¯ááºáá¯ááºáá
áºáá¯á¡ááŒá
Ạááœá±ážáá»ááºáá²á·áááºá ááá¯á¡áá»áááºááœááºá áá»áœááºá¯ááºááá¯á·ááẠááá¯ááºáááá¯áá¬ážáá
áºáááá¯áá¬ááᯠá¡áá¯á¶ážáááŒá¯áá±ážáá² á¡áá¯ááºáá»á¬ážááŸáá·áº ááá±á¬áá»ááºá¡áá»á¬ážá¡ááŒá¬ážááᯠááá»áŸá±á¬áºááá·áºáá¬ážáááá±ážáá«á
áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á ááá¯ááºááá¯ááºá áá áºá á¡áá°á¡áááᯠáá±á¬ááºááŸááá¬áá«áááºá
Teamcity ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááẠáááºá áœá²á¡áá¯ááºá áá áºá áááºáá áºááá¯ááºážááá¯áᬠáááºááŸá¬ážááá¯ááºáááº- áá»ááºá¡áá¬ááŸá¬ Pull Requests áááºáá®ážááŒááºážá Jira ááŸá á¡ááá·áºá¡ááá¯áẠááŒá¿áá¬áá»á¬ážááᯠááŒáŸáá·áºáááºááŒááºážááŸáá·áº áá¯ááºáá±áááºá¡ááœáẠááœá±ážáá»ááºááŒááºážááá¯ááºáᬠááŒá¿áá¬áá»á¬ážááŒá áºáááºá Teamcity á áá áºá áá«ááᯠáááá¯ááºááœááºááá¯ááºáá±á¬á·áá°ážá áá±á¬ááºááẠautomation ááááºážááŒá±á¬ááºážááá¯ááœá±ážáá»ááºáááºááá¯á¡ááºáááºá Teamcity ááœáẠscripts áá»á¬ážááŒáá·áº áá¯ááºáá±á¬ááºááẠááá¯á·ááá¯áẠááŒááºáá០á¡ááá¯á¡áá»á±á¬ááºá áá áºááá¯á· ááŒá±á¬ááºážááŒááºážá¡ááœáẠááœá±ážáá»ááºááŸá¯áá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· ááá·áºááœááºážá ááºážá á¬ážáá¬ážáá«áááºá ááá¯á·áá±á¬áº áá±á¬ááºáá¯á¶ážááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯ááºááŒá±ááŸááºážáá»ááºáá áºáá¯áá¬áá±ážááá¯ááºááá·áº á¡ááŒáá·áºáá¯á¶ážááŒá±á¬ááºážááœááºááŒááºááœááºááá¯á¡ááºááŒá±á¬ááºáž áá¯á¶ážááŒááºáá²á·áááºá á€áááºááŸá¬ Integro áá¯áá±á«áºáá±á¬ á ááºááœááºáž á¡ááá¯á¡áá»á±á¬ááºá áá áºá ááááá¬ážááŸááºáž áá±á«áºáá¬áá¯á¶ááŒá áºáááºá
Teamcity ááẠáááºáá±á¬ááºááŸá¯ááŸáá·áº á¡áá¯á¶ážáá»ááŸá¯ áá¯ááºáááºážá ááºáá»á¬ážááᯠá áááºááá·áºá¡ááá·áºááœáẠá¡ááá¯á¡áá»á±á¬ááºá áá áºááŸáá·áº áááºáááºááŒá®áž Integro ááẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºáááºážá ááºáá»á¬ážá ááááºáááºážá¡ááá·áº á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááŒááºážá¡áá±á«áº á¡á¬áá¯á¶á áá¯ááºáá¬ážáááºá Bitbucket ááŸá áááºá ááºá¡áááºážá¡ááŒá áºáá¯ááºááᯠáá¯ááºáá±á¬ááºááŒááºážááŒáá·áº Jira ááŸá ááŒá¿áá¬áá»á¬ážááŸáá·áº á¡áá¯ááºáá»á¬ážááᯠáá±á«ááºážá ááºááẠááá¯á¡ááºáá«áááºá á€á¡ááá·áºááœááºá Integro ááẠááá°áá®áá±á¬á¡áá¯ááºáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºáááºá¡ááœáẠáááºážáááá¯ááºááá¯ááºá¡áá¯ááºá¡ááœá¬ážá¡áá¬áá»á¬áž á áááºááŸááá¬áááºá
áá¯ááºáááºážáá¯ááºáááºážá ááºáá»á¬ážááœáẠá¡ááá¯á¡áá»á±á¬ááºá áá áºáá»á¬áž ááá¯ážáá¬ááŒááºážááŒá±á¬áá·áº Teamcity ááœáẠááá±á¬áá»ááºáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºááŸá¯áá»á¬áž áá»á¬ážááŒá¬ážáá¬áááºá ááá¯á·ááŒá±á¬áá·áº ááŒá¿áá¬á¡áá áºáá áºáá¯áá±á¬ááºáá¬áááº- á¡ááá²á· Teamcity á¥ááá¬áá áºáá¯ááẠááá¯á¶áá±á¬ááºáá« (á¡á±ážáá»áá·áº 3 áŠážááŸáá·áº ááá±á¬áá»áẠ100)á áá»áœááºá¯ááºááá¯á·ááẠá¡ááŒá¬ážá¥ááá¬áá áºáᯠ(áá±á¬ááºááẠá¡á±ážáá»áá·áº 3 áŠážááŸáá·áº ááá±á¬áá»áẠ100) ááᯠáá±á«ááºážááá·áºáá²á·áááºá ááááºá¡áá±ááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠá á®áá¶ááá·áºááœá²áááºáááºáá²áá±á¬ á¡á á¯á¡áá±ážáá»á¬ážá áœá¬ááŸááá±á¬ á áá áºáá áºáá¯ááŒáá·áº á¡áá¯á¶ážáááºáá²á·áááº-
4 áá¯ááŒá±á¬ááºá¥ááá¬áá
áºáá¯ááá±ážááœááºážáá±á«áºáá¬áá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·áááºá€áá²á·ááá¯á·áá±á¬áááºáááºááŸááºáááºáá±ááá¯ááºáááºááá¯ááºááŒá±á¬ááºážáá»áœááºá¯ááºááá¯á·áá¬ážáááºááá±á¬áá±á«ááºáá²á·áááºá á¡ááŒá±á¬ááºážááŸá¬á¥ááᬠ4 áá¯á¡ááœááºáá¶á·ááá¯ážááŸá¯á
á¯á
á¯áá±á«ááºážáá¯ááºáá»á
ááááºáááºááá·áºáááºáá»ááºáá
áºáá¯áá»áŸááá»á±á¬áºááœááºáá±á¬á·áá«á á¡ááá±áž Teamcity ááᯠáááºáá°ááŒááºáž ááá¯á·ááá¯áẠá¡ááá²á· Jenkins ááᯠááœá±ážáá»ááºááŒááºáž ááŸáá·áº áááºáááºááá·áº áá±ážááœááºáž áá±á«áºáá¬áááºá áá»áœááºá¯ááºááá¯á·ááẠáá¬áááá»á¬ážááŸáá·áº á¡ááá¯á¡áá»á±á¬ááºá
áá
áºááá¯ááºáᬠá¡á
á®á¡á
ááºáá»á¬ážááᯠááœááºáá»ááºááŒá®áž Jenkins ááœáẠáá±ááá¯ááºááẠáá¯á¶ážááŒááºáá²á·áááºá áááºááá¹ááááºááŸá
áºáááºááŒá¬ááŒá®ážáá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠJenkins ááá¯á·ááŒá±á¬ááºážáᬠTeamcity ááŒá
áºáááºáá»á¬ážá
áœá¬ááᯠááááºážááááºážááŒááºážááŸáá·áº áááºá
ááºáá±áá±á¬ áá±á«ááºážááá¯ááºááŒááºážá¡áá»áá¯á·ááᯠáááºááŸá¬ážáá
áºááá¯ááºáá«áááºá ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠIntegro ááᯠááœá¶á·ááŒáá¯ážááá¯ážáááºá
á±áááºááŸáá·áº Jenkins á
áááºááŒáá¯ááºááŒááºáááºááŒááºážá¡áá±á«áº á¡á¬áá¯á¶á
áá¯ááºááá¯ááºáá²á·áááºá
á¡ááŒá±áá¶á¡ááá¯á¡áá»á±á¬ááºá áá ẠááŒá®ážááœá¬ážáá¬ááŒááºážááŸáá·áºá¡áá° (ááœá²áá°áá±á¬ááºážááá¯ááŸá¯áá»á¬ážá á¡ááá¯á¡áá»á±á¬ááºáááºáá®ážááŸá¯á áá¯ááºá¡áá»á¯á¶ážáááºááŸá¯ááŸáá·áº á¡ááŒá¬ážá á áºáá±ážááŸá¯áá»á¬áž á á¯á ááºážáá¯ááºáá±ááŸá¯áá¯á¶á á¶) ááŸáá·áºá¡áá°) áááºá áœá²á á¬á¡á¯ááºáá»á¬ážááᯠáááºááá¯ááºááá»áŸ á áœáá·áºááœáŸááºáᬠá ááºáá¯ááºáá»á¬ážá¡ááœáẠá€á¡áá¯ááºááᯠáá±ážááá¯áá±á¬ááá¹áááŒááºážááŒáá¬áá«áááºá ááá¯á·á¡ááŒááºá áá¯áá¹ááá®ááẠáááŒá¬áááá¯ááºááŒááºááŸá¯áá»á¬áž ááá¯á¡ááºááŒá®áž áá áºáá¯ááŸáá·áºáá áºáᯠáá®ážááŒá¬ážá á® ááá¯á¡ááºááá·áº áá¯áá¹ááá®á¡ááœááºáž á¡áá±ážá á¬ážáááºáá±á¬ááºááŸá¯áá»á¬ážááá¯á· á áááºááŒá±á¬ááºážááœáŸá±á·áá²á·áááºá á€áááºááŸá¬ áá»áœááºá¯ááºááá¯á·á microservices áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºááœáŸááºááŒááºážááá¯á· áááŒááºážááŒááºážáá±á¬ááºááŸááá¬áá¯á¶ááŒá áºááẠ(áá»áœááºá¯ááºááá¯á·ááẠáá¯ááºáááºážá ááºáááŸá¯ááºááœá±ážááŸá¯ááŒá±á¬áá·áº áááºááŸá monolith ááᯠááá¯ááºááá¯ááºáá¯ááºááŒááºážááŒá áºáááº)á áá«áá±ááá·áº á¡áá»á¬ážá¡á¬ážááŒáá·áºáá±á¬á· ááŸá¯ááºááœá±ážááŸá¯á¡áá áºááœá± áá±á«áºáá¬áááºá
áá»áœááºá¯ááºááá¯á·ááẠá ááºážáááºááŸá¯ááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºáá«áááºá
áá¯ááºáá±ááŸá¯áá»á¬ážá á¡ááá¯á¡áá»á±á¬ááºá
áá
áºááŒá±á¬áá·áºá á¡áá»áá¯á·áá±á¬ á
ááºážáááºááŸá¯á¡ááá·áºáá»á¬ážááᯠáá»á±á¬áºááœááºááœá¬ážááŒááºážááŒá±á¬áá·áº ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºáááºážá
ááºáá»á¬áž á¡ááŸáááºááŒáŸáá·áºáá¬áááºá áááºážááẠáá¬áá®á¡áááºá¡ááœá±áž áá¯á¶ážááŸá¯á¶ážááœá¬ážá
á±áááºá áááºážááẠá¡áá±ážá¡ááœá²áᯠáááºááá±á¬áºáááºáž áá¯ááºáá±ááŸá¯áá»á¬ážá á¡ááŸáááºá¡áá¯ááºááŸáá·áºá¡áá°á áá¯ááºáá¯ááºááœá¶á·ááŒáá¯ážááá¯ážáááºáá±áž áááºážá
áá
áºááᯠááŒá±á¬ááºážáá²ááẠááá¯á¡ááºáá«áááºá á
ááºážáááºááŒááºážáá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááŒááºážá¡ááŒá±á¬ááºážá ááá¯ááºáá±ážááá¯ááºáá¬áá¬áááºááá¯ááá·áºááœááºážá
ááºážá
á¬ážááẠááá¯á¡ááºááẠ(á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠdeveloper ááŸááœááºááŸááá¬ážáá±á¬ code ááŸáá·áº bugs áá»á¬ážá¡ááœáẠááœá±ááŒá±ážáááºááœá±áá»á¬ážááá¯ááºáá² "áá±á«ááºážáá²ááœááºááŸááá±á¬á¡ááŒá¶á¥á¬ááºááá¯áááºáá¶ááŒááºáž" á¡ááŒá±á¬ááºážááŒá±á¬áá±ááŒááºážááŒá
áºáááº)á á¡ááá¯á¡áá»á±á¬áẠááŒáá·áºáá»ááºááŒááºážááŒáá·áº áá¯ááºáá±á¬ááºá
áá¬áá
áºáá¯ááᯠááœáŸááº/áááœáŸááºáá«á
á¡áááºá¡ááœá±ážááá¯ááºáᬠááŒá¿áá¬áá»á¬ážááᯠáááºááŸá¬ážááẠá¡áá±ážááŒá®ážáá±á¬ áá¯á¶ážááŒááºáá»áẠááŸá áºáá¯ááᯠáá»áœááºá¯ááºááá¯á· áá±á¬ááºááŸááá¬áááº- áá»áœááºá¯ááºááá¯á·ááẠáááá¹ááá® á ááºážáááºááŸá¯ááᯠá áááºáá²á·ááŒá®áž áááºážá ááá¯áá»áŸá¶ááŸá¯áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠáá¯á¶á·ááŒááºááŸá¯ááŒáá·áº á¡ááŸá¬ážá¡ááœááºáž áá±á¬ááºáá¶ááᯠá¡ááá¯á¡áá»á±á¬áẠá á±á¬áá·áºááŒáá·áºááŒááºážááᯠá áááºáá²á·áááºá áááááŒá±ááŸááºážáá»ááºááẠáá¯ááºááᯠáá¯ááºáá¯ááºááŒááºážááá¯á· á¡ááŒáá·áºá¡áááá¯ááºáá® áááá¬áááºááŸá¬ážáá±á¬ á¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠááŸá¬ááœá±á·ááá¯ááºá á±áᬠáá¯ááááááºážáááºážááẠáá¯ááºáá¯ááºáá±ážááá¯ááºáᬠááŒá¿áá¬áá»á¬ážá¡ááœáẠáá¯á¶á·ááŒááºáá»áááºááᯠáá»áŸá±á¬á·áá»áá±ážáááºá á¡ááŸá¬ážááœá± ááŒá áºáááºáá«áááºá áá«áá±ááá·áº á¡ááŸá¬ážááœá±ááᯠááŒááºááá¯á·ááá¯ááºáá² áá»áŸá±á¬á·áááºážá¡á±á¬ááºáá¯ááºááá¯á· áá»áœááºá¯ááºááá¯á·áá²á·á¡áá»áááºáá²á· ááŒáá¯ážá á¬ážá¡á¬ážáá¯ááºááŸá¯á¡áá»á¬ážá á¯ááᯠáá¯á¶ážá áœá²áá«áááºá
á¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááœá²á·
áááºááŸáááœáẠáá»áœááºá¯ááºááá¯á·ááœáẠdeveloper 130 á áááºáááºážáá
áºáŠážááŸáááŒá®áž áááºáááºáá¯ááºáá±á¬ááºáá±áá«áááºá
DevOps ááẠCIAN site á Dev/Beta áááºáááºážáá»ááºá Integro áááºáááºážáá»ááºá developer áá»á¬ážá¡á¬áž ááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážáá±ážáᬠá¡ááœááºá¡á á¬ážáá»á²á·ááœááºááá·áº áááºáááºážáá»ááºá¡ááœáẠáá»ááºážáááºááŸá¯á¡áá áºáá»á¬ážááᯠáááºáá®ážáá±ážáááºá Integro ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážáŠážáááºáá»ááºááẠIntegro ááá¯ááºááá¯ááºááŸáá·áº áááºá ááºáááºáá±á¬ááºááŸá¯áá»á¬áž ááŸá áºáá¯áá¯á¶ážááŸáá·áº áááºááá¯ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá Jenkinsá Jiraá Confluence á¡ááœáẠááááºá¡ááºáá»á¬ážááŸáá·áº ááœá¶á·ááŒáá¯ážáá±ážá¡ááœá²á·áá»á¬ážá¡ááœáẠá¡ááẠutilities áá»á¬ážááŸáá·áº applications áá»á¬ážááá¯áááºáž ááŒá¯á á¯áá±ážáá«áááºá
DI á¡ááœá²á·ááẠáááá¯áá¬áááºáá¬áá»á¬ážá á á¬ááŒáá·áºááá¯ááºáá»á¬ážááŸáá·áº ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážááá¯ááºáᬠáá»ááºážáááºááŸá¯áá»á¬ážááᯠá¡ááœááºážááá¯ááºážá áá±á¬áºáá±á¬ááºáá±ážáá±á¬ ááááºáá±á¬ááºážá¡ááœá²á·ááŸáá·áº áá°ážáá±á«ááºážáá¯ááºáá±á¬ááºáááºá áá áºáá»áááºáááºážááŸá¬áááºá CIAN á¡ááœááºážááŸá developer áá»á¬ážááẠá¡ááá¯á¡áá»á±á¬ááºá áá áºá¡ááœáẠá¡áá±á¬ááºá¡áá°ááŒá¯ááá¯ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá á¡ááœá²á·áááá¯á¡ááºáá»ááºáá»á¬ážááŸáá·áºááá¯ááºáá®á á±ááẠmicro-automation ááŒá¯áá¯ááºááŒááºáž ááá¯á·ááá¯áẠautomation ááá¯áá±á¬ááºážá¡á±á¬ááºááŒá¯áá¯ááºáááºážááᯠá¡ááŒá¶áá±á¬ááºážáá áºáá¯ááᯠáá»áŸáá±áá«á
CIAN ááœáẠá¡ááá¯á¡áá»á±á¬ááºá áá áºá á¡ááœáŸá¬ááááºáá¯áá·áº
á¡ááá¯á¡áá»á±á¬ááºá
áá
áºááœáẠáá«áááºáá±á¬ á
áá
áºá¡á¬ážáá¯á¶ážááᯠá¡ááœáŸá¬áá»á¬ážá
áœá¬ ááœá²ááŒá¬ážááá¯ááºáááº-
- ááŒááºáá áá áºáá»á¬áž (Jiraá Bitbucket á áááºááŒáá·áº)á ááœá¶á·ááŒáá¯ážáá±ážá¡ááœá²á·ááœá±á áá°ááá¯á·áá²á·áá¯ááºáááºá
- Integro ááááºáá±á¬ááºážá á¡áá»á¬ážá á¯ááŸá¬ developer áá»á¬ážááẠáááºážááŸáá·áº ááá¯ááºááá¯ááºá¡áá¯ááºááá¯ááºáá±á¬áºáááºáž áááºážááẠautomation á¡á¬ážáá¯á¶ážááᯠáááºáááºáááºáááºá á±áááºá
- ááá¯á·áá±á¬ááºááŸá¯á á ááºážáá¯á¶ážááŸá¯ááŸáá·áº ááŸá¬ááœá±ááœá±á·ááŸáááŸá¯ áááºáá±á¬ááºááŸá¯áá»á¬áž (á¥ááá¬á Jekninsá áá±á¬ááºá á áºáááºá Nomad)á áááºážááá¯á·áá¡áá°á¡áá®ááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠáá¬áá¬áá»á¬ážáá±á«áºááœáẠáá¯ááºááá¯ááŒáá·áºáá»ááºááŒá®áž áááºáá±á¬ááºááŸá¯áá»á¬áž áá áºáá¯ááŸáá·áºáá áºáᯠáá¯ááºáá±á¬ááºááŒá±á¬ááºáž áá±áá»á¬á á±áááºá
- áá¯ááºááá¯ááºážááá¯ááºáá¬á¡ááœáŸá¬ (áá¬áá¬áá»á¬ážá OSá áááºá ááºáá±á¬á·ááºáá²)á áá»áœááºá¯ááºááá¯á·ááá¯ááºááẠá€á¡ááá·áºááœáẠáá¯ááºáá±á¬ááºáá«áááºá áááºážááẠáá¯ááºááá¯ááºážááá¯ááºáá¬áá¬áᬠááá¯á·ááá¯áẠvirtual áá áºáᯠ(LXCá KVMá Docker) ááŒá áºááá¯ááºáááºá
á€ááá±á¬ááá¬ážááᯠá¡ááŒá±áá¶á áá»áœááºá¯ááºááá¯á·ááẠDI á¡ááœá²á·á¡ááœááºáž áá¬áááºááŸááá±á¬ áááºáááºáá»á¬ážááᯠááá¯ááºážááŒá¬ážáá¬ážáá«áááºá áááá¡ááá·áºááŸá áºáá¯ááẠIntegro ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážáŠážáááºáá»ááºááá¬áááºáá°ááŸá¯áááºáááºááœááºááŸáááŒá®áž áá±á¬ááºáá¯á¶ážá¡ááá·áºááŸá áºááá·áºááẠDevOps ááá¬áááºáá°ááŸá¯áááºáááºááœááºááŸááá±ááŒá®ááŒá áºáááºá áá»áœááºá¯ááºááá¯á·ááẠáá áºáŠážááŸáá·áºáá áºáŠáž áá®ážáááºáá±ááŒá®áž á¡ááááá¬ááŸáá·áº á¡ááœá±á·á¡ááŒá¯á¶áá»á¬ážááᯠá¡áááºáááŒáẠáááŸááºááá¯ááºáá±á¬ááŒá±á¬áá·áº áá¯ááºáááºážáá¬áááºáá»á¬ážááᯠá¡á¬áá¯á¶á áá¯ááºááá¯ááºááŒá®áž á¡ááŒááºá¡ááŸááºá¡ááŸá±á¬ááºá¡ááŸááºááŒá áºá á±áá±á¬ á€ááœá²ááœá¬ááŸá¯ááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž áá¯ááºáá±á¬ááºááá¯ááºá á±áá«áááºá
á¡áááºá¡ááá¯ááºáž
Integro ááá¯á¡á¬áá¯á¶á áá¯ááºááŒá®áž áááºážááá¬á¡á á¯á¡áá±ážááŒáá·áº á áááºááŒáá«á áá¯á·á
- CentOS 7
- Docker + Nomad + Consul + Vault
- Java 11 (Integro monolith á¡áá±á¬ááºážááẠJava 8 ááœáẠááŸááá±áááº)
- Spring Boot 2.X + Spring Cloud Config
- PostgreSql áá
- áá¯áẠMQ
- Apache Ignite
- Camunda (ááŒáŸááºááŸá¶áá¬ážáááº)
- Grafana + Graphite + Prometheus + Jaeger + ELK
- ááẠUI- áá¯á¶á·ááŒááºááŸá¯ (CSR) + MobX
- SSO- áá±á¬á·áá»áááº
áá»áœááºá¯ááºááá¯á·ááẠIntegro áá¡á á±á¬ááá¯ááºážáá¬ážááŸááºážáá áºáá¯á monolith áá¯á¶á á¶ááŒáá·áº á¡ááœá±á¡ááŸá áºáá»á¬ážááŸááá±áá±á¬áºáááºážá áá»áœááºá¯ááºááá¯á·ááẠá¡áá±ážá á¬ážáááºáá±á¬ááºááŸá¯ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážáááá¬áááᯠááá¯ááºáá¬áá«áááºá ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá áºáá¯á á®ááẠáááºážáááá¯ááºááá¯áẠDocker ááœááºááááºáá¬ááœáẠáá¯ááºáá±á¬ááºáá±ááŒá®áž áááºáá±á¬ááºááŸá¯áá»á¬ážááẠHTTP áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááŸáá·áº RabbitMQ áááºáá±á·áá»áºáá»á¬ážááŸáá áºááá·áº á¡áá»ááºážáá»ááºáž áááºááœááºáááºá Microservices áá»á¬ážááẠConsul ááŸáááá·áº á¡ááŒááºá¡ááŸááºááŸá¬ááœá±ááŒá®áž SSO (Keycloaká OAuth 2/OpenID Connect) ááŸáááá·áº ááœáá·áºááŒá¯áá»ááºááá°ááŒá®áž áááºážáᶠáá±á¬ááºážááá¯áá»ááºáá áºáá¯ááŒá¯áá¯ááºáá«á
áááºááœá±á·ááááá°áá¬á¡áá±ááŒáá·áº á¡á±á¬ááºáá«á¡ááá·áºáá»á¬ážáá«áááºáá±á¬ Jenkins ááŸáá·áº á¡ááŒááºá¡ááŸááºáááºáá¶ááŒááºážááᯠá
ááºážá
á¬ážáá«á
- á¡áá¯ááºá¡ááœá¬ážá¡áᬠá á®áá¶ááá·áºááœá²ááŸá¯ ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯ (ááá¯áá±á¬ááºááá¯ááºážááœáẠFlow microservice á¡ááŒá ẠáááºááœáŸááºážáááº) ááẠJenkins ááœáẠáááºáá±á¬ááºááŸá¯ááᯠáá¯ááºáá±á¬ááºááá¯áááºá áááºážááá¯áá¯ááºáá±á¬ááºáááºá Jenkins ááŸáá·áºáá±á«ááºážá ááºážáááºá¡ááœáẠmicroservice á IP:PORT ááá¯ááŸá¬ááœá±ááẠConsul ááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž Jenkins ááœááºáááºáá±á¬ááºááŸá¯á áááºááẠáááºážáᶠasynchronous áá±á¬ááºážááá¯áá»ááºáá áºáá¯áá±ážááá¯á·áááºá
- áá±á¬ááºážááá¯ááŸá¯áá áºáá¯ááᯠáááºáá¶áááŸáááŒá®ážáá±á¬ááºá Jenkins microservice ááẠá¡áá¯ááºáááááºááᯠááááŸáááá¯ááºá á±ááẠá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº Job ID ááŒáá·áº áá¯ááºáá±ážááŒá®áž áá¯á¶á·ááŒááºáá«áááºá áá áºáá»áááºáááºážááŸá¬áááºá áááºážááẠREST API áá±á«áºááá¯ááŸá¯ááŸáá áºááá·áº Jenkins ááœáẠáááºáá±á¬ááºááŸá¯ááᯠá¡á áá»áá¯ážá á±áááºá
- Jenkins ááẠáááºáá±á¬ááºááŸá¯ááᯠáá¯ááºáá±á¬ááºááŒá®áž ááŒá®ážá á®ážááŒá®ážáá±á¬ááºá áá¯ááºáá±á¬ááºáá»ááºááááºáá»á¬ážááŸáá·áºá¡áá° Jenkins ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá¶ááá¯á· áááºáá»áááºáá áºáᯠáá±ážááá¯á·áááºá
- Jenkins microservice ááẠwebhook ááá¯áááºáá¶áááŸáááŒá®ážáá±á¬ááºá áá±á¬ááºážááá¯ááŸá¯áá¯ááºáá±á¬ááºááŒááºážááŒá®ážá á®ážááŸá¯ááŸáá·áºáááºáááºááŒá®áž áááºáá±á·áá»áºáá áºáá¯áá¯ááºáá±ážááŒá®áž á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááááºáá»á¬ážááᯠáááºážááœáẠáá°ážááœá²áá¬ážáááºá áá¯ááºáá¯ááºáá¬ážáá±á¬ áááºáá±á·áá»áºááᯠRabbitMQ áááºážá á®ááẠáá±ážááá¯á·áááºá
- RabbitMQ ááŸáááá·áº áá¯ááºááŒááºáá¬ážáá±á¬ áááºáá±á·áá»áºááẠáá±á¬ááºážááá¯áá»ááºá០Job ID ááŸáá·áº áááºáá¶áááŸááá¬ážáá±á¬ áááºáá±á·áá»áºááᯠááá¯ááºáá®ááŒááºážááŒáá·áº áááºážááá¯ááºáááºážáá¯ááºáá±á¬ááºááŒááºážá ááááºááᯠááááŸáááá·áº Flow microservice ááá¯á· áá±á¬ááºááŸááááºá
ááᯠáá»áœááºá¯ááºááá¯á·ááœáẠá¡á¯ááºá á¯áá»á¬ážá áœá¬ ááœá²ááŒá¬ážááá¯ááºáá±á¬ á¡áá±ážá á¬ážáááºáá±á¬ááºááŸá¯ 30 ááá·áºááŸááááºá
- ááœá²á·á ááºážááŸá¯á á®áá¶ááá·áºááœá²ááŸá¯á
- ááááºážá¡áá»ááºá¡áááºááŸáá·áº á¡áá¯á¶ážááŒá¯áá°áá»á¬áž (ááááºáá»á¬ážá áá±ážááº) ááŸáá·áº á¡ááŒááºá¡ááŸáẠáááºááœááºááŸá¯á
- á¡áááºážá¡ááŒá áºáá¯ááºááŸáá·áºá¡áá°á¡áá¯ááºáá¯ááºá
- á¡áá¯á¶ážáá»áááááá¬áá»á¬áž (áá»áááºážáááºáá»á¬ážá ááŒá±ááá¯á¶ážá áá±á¬ááºá á áºááẠá áááºááŒáá·áº) áá±á«ááºážá ááºááŒááºážá
- á á±á¬áá·áºááŒáá·áºááŒááºáž (áá¯ááºáá±ááŸá¯áá»á¬ážá á¡ááŸá¬ážá¡ááœááºážáá»á¬áž á áááº)á
- áááºá¡áá¯á¶ážá¡áá±á¬ááºáá»á¬áž (á ááºážáááºááŸá¯áááºáááºážáá»ááºáá»á¬ážááᯠá á®áá¶ááá·áºááœá²áááºá á á¬áááºážá¡ááºážáá»á¬ážá á¯áá±á¬ááºážááŒááºáž á áááºááŒáá·áº)á
- á¡áá¯ááºááŒá±áá¬áá¶áááááá¬áá»á¬ážááŸáá·áº á¡áá¬ážáá°á áá áºáá»á¬ážááŸáá·áº áá±á«ááºážá ááºááŒááºážá
- ááá°áá®áá±á¬á¡áá¯ááºáá»á¬ážá¡ááœáẠWorkflow á á®áá¶ááá·áºááœá²ááŸá¯á
á¡áá¯ááºá¡ááœá¬ážá¡áᬠá¡áá¯ááºáá»á¬áž
Integro ááẠTask lifecycle ááŸáá·áº áááºááá¯ááºááá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºááŒááºáá¯ááºáá±ážáááºá ááá¯ážááŸááºážáá±á¬á áá¬ážá¡á á¡áá¯ááºáá áºáá¯ááááá¶ááá¬ááᯠJira ááŸá á¡áá¯ááºáá áºáá¯ááá¯ááºáááºážá¡ááœá¬ážá¡áá¬á¡ááŒá Ạáá¬ážáááºáááºááŒá áºáááºá áá»áœááºá¯ááºááá¯á·á ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºáááºážá ááºáá»á¬ážááœáẠááá±á¬áá»ááºá á¡áá¯ááºá¡áá»áá¯ážá¡á á¬ážááŸáá·áº áá®ážááŒá¬ážáá¯ááºáááºážáá áºáá¯ááœáẠááœá±ážáá»ááºáá¬ážááá·áº ááœá±ážáá»ááºá áá¬áá»á¬ážáá±á«áºáá°áááºá á¡áá¯ááºá¡ááœá¬ážá¡áᬠááœá²ááŒá¬ážááŸá¯áá»á¬ážááŸááááºá
áá»áœááºá¯ááºááá¯á· á¡áá»á¬ážáá¯á¶ážá¡áá¯á¶ážááŒá¯ááá·áº á¡áá¯ááºá¡ááœá¬ážá¡áá¬ááᯠááŒáá·áºááŒáá«á áá¯á·á
áá¯á¶ááœááºá áá®áá¬ááẠá¡áá°ážá¡ááŒá±á¬ááºážááᯠIntegro á០á¡ááá¯á¡áá»á±á¬áẠáá±á«áºááá¯ááŒá±á¬ááºáž ááœáŸááºááŒááŒá®áž áá°áá¬ážáá¯á¶ááá¹áá¬ááºááẠá¡ááœááºáá°ážááŒá±á¬ááºážááŸá¯ááᯠáá°áá
áºáŠážá០ááá¯ááºááá¯ááºáá±á«áºááá¯ááŒá±á¬ááºáž ááœáŸááºááŒáááºá á€áá¯ááºáááºážá¡ááœá¬ážá¡áá¬ááœáẠá¡áá¯ááºáá
áºáá¯áá¯ááºáá±á¬ááºááá¯ááºááá·áº áááºážááŒá±á¬ááºážáá»á¬ážá
áœá¬ááᯠááŒáá·áºááŒáá«á
áá¯á·á
áááá¹ááá®á ááºážáááºááŸá¯áá»á¬ážááá«áá² DEV+BETA ááœáẠááá¯ááºááá¯ááºá ááºážáááºááŒááºáž (áá¯á¶ááŸááºá¡á¬ážááŒáá·áº á€áááºááŸá¬ áá»áœááºá¯ááºááá¯á·ááẠmonolith ááá¯áá¯ááºááœáŸááºáá¯á¶ááŒá áºáááº)á
á¡ááŒá¬ážá¡áá°ážá¡ááŒá±á¬ááºáž áá±á«ááºážá
ááºááŸá¯áá»á¬ážáááºáž ááŸáááá¯ááºáá«áááºá áá
áºáá«áá
áºáá¶ááœáẠááŒá¿áá¬áááºááá·áºáááºážááŒá±á¬ááºážááᯠJira ááœáẠááœá±ážáá»ááºááŸá¯áá»á¬ážááŸáá
áºááá·áº ááœá±ážáá»ááºááá¯ááºáááºá
á¡áá¯ááºááŸá¯ááºááŸá¬ážááŸá¯
á¡áá¯ááºáá áºáá¯ááẠ"DEV Testing + Canary Tests" á¡áá¯ááºá¡ááœá¬ážá¡áá¬ááᯠááŒááºáááºážááá·áºá¡áá« áá¯ááºáá±á¬ááºáááá·áº á¡áááá¡ááá·áºáá»á¬ážááᯠááŒáá·áºááŒáá«á áá¯á·á
1. áá±á¬á·ááºáá²áá±ážáá¬ážáá° ááá¯á·ááá¯áẠPM ááẠáá¯ááºáá±á¬ááºá áá¬ááᯠáááºáá®ážáááºá
2. áá±á¬á·ááºáá²áá±ážáá¬ážáá°ááẠáá¯ááºáá±á¬ááºáááºáá¬áááºááᯠáá°áááºá ááŒá®ážá á®ážááŒá®ážáá±á¬ááºá áááºážááẠááŒááºáááºáá¯á¶ážáááºááŸá¯á¡ááŒá±á¡áá±ááá¯á· ááŒá±á¬ááºážáááºá
3. Jira ááẠJira microservice ááá¯á· Webhook áá±ážááá¯á·ááẠ(Jira ááŸáá·áº áá±á«ááºážá ááºážááŸá¯á¡ááœáẠáá¬áááºááŸááááº)á
4. Jira microservice ááẠá¡áá¯ááºá¡ááœá¬ážá¡áá¬ááá¯á áááºááẠFlow áááºáá±á¬ááºááŸá¯ (á¡áá¯ááºáá¯ááºáá±á¬ááºááá·áºá¡ááœááºážááá¯ááºážá¡áá¯ááºá¡ááœá¬ážá¡áá¬áá»á¬ážá¡ááœáẠáá¬áááºááŸááááº) ááá¯á· áá±á¬ááºážááá¯áá»ááºáá áºáá¯áá±ážááá¯á·áááºá
5. Flow áááºáá±á¬ááºááŸá¯á¡ááœááºážááá¯ááºáž-
- ááŒááºáááºáá¯á¶ážáááºáá°áá»á¬ážááᯠáá¬áááºáá±ážá¡ááºááŒááºážáá¶áááẠ(á¡áá¯á¶ážááŒá¯áá°áá»á¬ážá ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯ + Jira microservice)á
- Source microservice ááŸáááá·áº (áááºážááẠrepositories ááŸáá·áº branchs áá»á¬ážá¡ááŒá±á¬ááºážááá¯áááá±á¬áºáááºáž code ááá¯ááºááá¯ááºááŸáá·áºá¡áá¯ááºááá¯ááºáá«) áááºáá»áœááºá¯ááºááá¯á·áááŒá¿áá¬áá¡ááœá²áá«ááŸááá±á¬ repositories á¡ááœááºááŸá¬ááœá±ááŸá¯ááá¯ááŒá¯áá¯ááºááẠ(ááŸá¬ááœá±ááŸá¯ááá¯ááá¯ážááŸááºážá á±áááºá áá¬áááœá²á¡áááºááẠááŒá¿áá¬ááŸáá·áºááá¯ááºááá¯ááºáá«áááºá Jira ááœááºáá¶áá«ááº)á á¡áá»á¬ážá á¯ááŸá¬á áá¯ááºáááºážáá áºáá¯ááœáẠrepository áá áºáá¯ááœáẠáá¬áááœá²áá áºáá¯áá¬ááŸááááºá áááºážááẠdeployment queue áá á®áá¶ááá·áºááœá²ááŸá¯ááᯠááá¯ážááŸááºážá á±ááŒá®áž repositories áá»á¬ážááŒá¬ážáá»áááºáááºááŸá¯ááᯠáá»áŸá±á¬á·áá»áá±ážáááºá
- ááœá±á·ááŸááá±á¬áá¬áááœá²áá
áºáá¯á
á®á¡ááœááºá á¡á±á¬ááºáá«áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá á¡á
á®á¡á
á¥áºááᯠáá¯ááºáá±á¬ááºáááº-
i) áá¬á áá¬áá¬áááœá²ááᯠá¡ááºááááºáá¯ááºááŒááºáž (áá¯ááºááŒáá·áºáá¯ááºáá±á¬ááºáááºá¡ááœáẠGit microservice)á
ii) áá¬áááœá²á¡á¬áž developer (Bitbucket microservice) á០á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá០ááááºááá¯á·áá¬ážáááºá
iii) á€áá¬áááœá² (Bitbucket microservice) á¡ááœáẠPull Request áá áºáᯠáááºáá®ážáá¬ážáááºá
iv) Pull Request á¡áá áºáá áºáá¯á¡ááŒá±á¬ááºáž áááºáá±á·áá»áºáá áºá á±á¬ááºááᯠdeveloper chats ááá¯á· áá±ážááá¯á·ááẠ(á¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáá»á¬ážááŸáá·áºá¡áá° áá¯ááºáá±á¬ááºáááºá¡ááœáẠmicroservice ááᯠá¡áááá±ážáá«)á
v) áááºáá±á¬ááºááŒááºážá á ááºážáááºááŒááºážááŸáá·áº á¡áá¯á¶ážáá»ááŒááºáž áá¯ááºáááºážáá»á¬ážááᯠDEV (Jenkins ááŸáá·áº áá¯ááºáá±á¬ááºáááºá¡ááœáẠJenkins ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯) ááœáẠá áááºáá±á¬ááºááœááºáá«áááºá
vi) ááááºá¡ááá·áºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠá¡á±á¬ááºááŒááºá áœá¬ááŒá®ážááŒá±á¬ááºáá«áá Integro ááẠáááºážá Approve ááᯠPull Request (Bitbucket microservice) ááœáẠááá·áºááœááºážáááºá - Integro ááẠáááºááŸááºáá¬ážáá±á¬ áá¯á¶ážáááºáá°áá»á¬ážáá¶á០Pull Request ááœáẠá¡áááºááŒá¯ááẠá á±á¬áá·áºáá±áááºá
- ááá¯á¡ááºáá±á¬ááœáá·áºááŒá¯áá»ááºá¡á¬ážáá¯á¶ážááᯠáááºáá¶áááŸáááŒá®ážáááºááŸáá·áº (á¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŸá¯áá»á¬ážá¡áá«á¡ááẠá¡ááŒá¯ááá±á¬áá±á¬ááºáá±á¬á¡á±á¬ááºááŒááºááŸá¯) ááá¯áááŸááááºááŸáá·áºáááŒáá¯ááºááẠIntegro ááẠá¡áá¯ááºá¡á¬áž Dev (Jira microservice) ááœáẠá ááºážáááºááŸá¯á¡ááŒá±á¡áá±ááá¯á· ááœáŸá²ááŒá±á¬ááºážáá±ážáá«áááºá
6. Testers áá»á¬ážááẠáá¯ááºáááºážáá¬áááºááᯠá ááºážáááºáááºá ááŒá¿áá¬áááŸááá«áá á¡áá¯ááºá¡á¬áž Ready For Build á¡ááá·áºááá¯á· ááœáŸá²ááŒá±á¬ááºážáááºááŒá áºáááºá
7. Integro "ááŒááºáááº" ááẠáá¯ááºáááºážááẠáá¯ááºáá±ááẠá¡áááºááá·áºááŒá áºááŒá®áž Canary áá¯áẠ(Jenkins microservice) ááœáẠáááºážáááŒáá·áºáá»ááºááŸá¯ááᯠá áááºáááºá ááœáŸááºáá±ážááẠá¡áááºááá·áºááᯠá ááºážáá»ááºáž á¡á á¯á¶ááŒáá·áº áá¯á¶ážááŒááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá¯ááºáá±á¬ááºá áá¬ááẠááá¯á¡ááºáá±á¬á¡ááŒá±á¡áá±ááœááºááŸáááŒá®ážá á¡ááŒá¬ážáá¯ááºáá±á¬ááºá áá¬áá»á¬ážááœáẠáá±á¬á·ááºáá»ááŒááºážáááŸááá«á áá±á¬áá±á¬áááºááœáẠá€ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯á á¡áááºáááºáá±á¬ á¡ááºáá¯ááºáá»á¬áž áááŸááá«á
8. á¡áá¯ááºá¡á¬áž Canary status (Jira microservice) ááá¯á· ááœáŸá²ááŒá±á¬ááºážáááºá
9. Jenkins ááẠCanary áá¯ááºááœáẠNomad (áá¯á¶ááŸááºá¡á¬ážááŒáá·áº 1-3 áá¬áá) ááŸáááá·áº ááŒáá·áºáá»ááºááŒááºážáá¯ááºáááºážááᯠá áááºááá¯ááºááŒá®áž ááŒáá·áºáá»ááºááŸá¯ááŸáá·áºáááºáááºá áá¯ááºááŒááºááŸá¯á á±á¬áá·áºááŒáá·áºáá±ážáááºáá±á¬ááºááŸá¯ (DeployWatch microservice) ááᯠá¡áááá±ážáááºá
10. DeployWatch microservice ááẠá¡ááŸá¬ážá¡ááœááºážáá±á¬ááºáá¶ááᯠá á¯áá±á¬ááºážááŒá®áž ááá¯á¡ááºáá«á áááºážááá¯áá¯á¶á·ááŒááºáááºá á¡ááŸá¬ážá¡ááœááºáž áá±á¬ááºáá¶ááᯠáá»á±á¬áºááœááºáá±áá«á (áá±á¬ááºáá¶á á¶ááŸá¯ááºážááᯠá¡ááá¯á¡áá»á±á¬áẠááœááºáá»ááºáááº)á áá±á¬á·ááºáá²á¡ááºáá»ááºáá®áá¬áá»á¬ážááᯠNotify microservice ááŸáá áºááá·áº á¡ááŒá±á¬ááºážááŒá¬ážáááºááŒá áºáááºá 5 áááá áºá¡ááŒá¬ááœáẠáá±á¬á·ááºáá²áá±ážáá¬ážáá°á áá¯á¶á·ááŒááºááŒááºážáááŸááá«á (ááŒááºááŒá±á¬ááºážááẠááá¯á·ááá¯áẠáááºáá±áááºááᯠááŸáááºáá«)á ááá¯á·áá±á¬áẠáááá¹ááá®ááŒá áºáááºáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠááŒááºááŸáá·áºáá¬áááºááŒá áºáááºá áá±á¬ááºáá¶ááᯠááá»á±á¬áºááœááºáá«áá áá±á¬á·ááºáá²áá±ážáá¬ážáá°ááẠá¡áá¯ááºááŒáá·áºáá»ááºááŸá¯ááᯠáá¯ááºáá¯ááºááŸá¯ááá¯á· ááá¯ááºááá¯ááºá áááºááá«ááẠ(UI ááŸá ááá¯ááºáá áºáá¯ááᯠááŸáááºááŒááºážááŒáá·áº)á áááá Ạ60 á¡ááœááºáž developer ááẠáá¯ááºáá¯ááºááŸá¯ááá¯á· ááŒáá·áºáá»ááºááŸá¯ááᯠááá¯ááºáá±á¬ááºáá«áá áá¯á¶ááŒá¯á¶áá±ážá¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážááŒá±á¬áá·áº Canary instances áá»á¬ážááá¯áááºáž ááŒááºáááºá¡áá¯á¶ážááŒá¯ááá¯ááºáááºááŒá áºáááºá
11. áá¯ááºáá¯ááºááŸá¯ááᯠá áááºááŒá®ážáá±á¬ááºá
- áá¯ááºáááºážááᯠáá¯ááºáá¯ááºááŸá¯á¡ááŒá±á¡áá± (Jira microservice) ááá¯á· ááœáŸá²ááŒá±á¬ááºážáá¬ážáááºá
- Jenkins microservice ááẠááŒáá·áºáá»ááºááŸá¯áá¯ááºáááºážá ááºááᯠá áááºááŒá®áž DeployWatch microservice á¡á¬áž ááŒáá·áºáá»ááºááŸá¯á¡ááŒá±á¬ááºáž á¡áááá±ážáááºá
- DeployWatch microservice ááẠáá¯ááºáá¯ááºáá±ážááŸá ááœááºááááºáá¬áá»á¬ážá¡á¬ážáá¯á¶ážááᯠá¡ááºááááºáá¯ááºááŒá®ážááŒá±á¬ááºáž á á áºáá±ážááẠ(á¡á¬ážáá¯á¶ážááᯠááœááºážáá¶áá¬ážááá·áºá¡áá« ááŒá áºáááºáá»á¬ážááŸááá²á·áááº)á
- Notify microservice ááŸáááá·áºá ááŒáá·áºáá»ááºááŸá¯áááááºáá»á¬ážá¡ááŒá±á¬ááºáž á¡áááá±ážáá»ááºááᯠáá¯ááºáá¯ááºáá±ážááá¯á· áá±ážááá¯á·áááºá
12. Developer áá»á¬ážááẠáááŸááºáááºáá±á¬ microservice á¡ááŒá¯á¡áá°ááᯠááœá±á·ááŸááá«á Production á០áá¯ááºáá±á¬ááºá áá¬áá áºáá¯ááᯠááŒááºáááºá áááºááẠáááá Ạ30 ááŒá¬ááŒáá·áºáááºááŒá áºáá«áááºá á€á¡áá»áááºááŒá®ážáá±á¬ááºá áá¯ááºáá±á¬ááºá áá¬ááᯠáá¬á áᬠ(Git microservice) á¡ááŒá Ạá¡ááá¯á¡áá»á±á¬áẠáá±á«ááºážá ááºááœá¬ážáá«áááºá
13. á¡á±á¬ááºááŒááºáá±á¬ áá¬á áá¬á¡ááŒá Ạáá±á«ááºážá ááºážááŒá®ážáá±á¬ááºá áá¯ááºáá±á¬ááºá áᬠá¡ááŒá±á¡áá±á¡á¬áž Closed (Jira microservice) ááá¯á· ááŒá±á¬ááºážáá²ááœá¬ážáá«áááºá
áá¯á¶ááŒááºážááẠáá¯á¶ážáá¡áá±ážá áááºáááºáá±á¬ááºááŒááºážáááŸááá« (áááºááœá±á·ááœáẠááá¯ááááºá¡ááá·áºáá»á¬ážááŸááá±ážáááº)á ááá¯á·áá±á¬áº áááºážááẠáá¯ááºáááºážá ááºáá»á¬ážááœáẠáá±á«ááºážá ááºážááŒááºážáá¡ááá¯ááºážá¡áá¬ááᯠá¡áá²ááŒááºááẠááá·áºááá¯ááœáá·áºááŒá¯áááºá áá»áœááºá¯ááºááá¯á·ááẠá€á¡á á®á¡á á¥áºááᯠá á¶ááá°áá¬á¡ááŒá Ạááá°ááá² á¡ááá¯á¡áá»á±á¬áẠááŒáá·áºáá»áááŸá¯ááŸáá·áº ááŒáá·áºáá»ááºááŸá¯ áá¶á·ááá¯ážááŸá¯ááá¯ááºáᬠáá¯ááºáááºážá ááºáá»á¬ážááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠáá¯ááºáá±á¬ááºáá±áá«áááºá
áá±á¬ááºáá áºáá¯ááá¬áá²
áá»áœááºá¯ááºááá¯á·ááœáẠá¡ááá¯á¡áá»á±á¬ááºá áá Ạááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááœáẠááŒá®ážááŒá®ážáá¬ážáá¬áž á¡á á®á¡á ááºáá»á¬áž ááŸááááºá á¥ááá¬á monolith áá¯ááºáá±ááŸá¯áá»á¬ážá¡ááœááºáž ááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáááºááŸá¬ážááŒááºážá á¡ááá¯á¡áá»á±á¬áẠááŒáá·áºáá»ááºá ááºá¡ááœááºáž á á±á¬áá·áºááŒáá·áºááŒááºáž ááá¯ážáááºá á±ááŒááºážááŸáá·áº áá±á¬á·ááºáá²áá±ážáá¬ážáá°áá»á¬ážááŸáá·áº á¡ááŒááºá¡ááŸááºáááºáá¶áá±áž ááá¯ážáááºáá±á¬ááºážááœááºá á±ááŒááºážá
áá«áá±ááá·áº áá®ááŸá¬áá² áááºááá¯ááºááŒáá¡á±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááá¯á¡áá»á±á¬ááºá
áá
áºááŒááºáááºáá¯á¶ážáááºááŒááºážááœáẠá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážá
áœá¬ááᯠá¡áá±á«áºáá¶á¡á¬ážááŒáá·áº áá±á¬áºááŒáá²á·ááŒá®ážá á¡áá»áá¯á·ááŸá¬ áá¯á¶ážáááááááá±á¬ááŒá±á¬áá·áº áá±ážááœááºážáá»á¬ážááᯠááŒá±ááá¯ááẠáááºážááŒá±á¬ááºáááá«áááºá á¡áá±ážá
áááºá¡áá»ááºáá»á¬ážááŸáá·áºáááºáááºá á¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á·á
á±á¬áá·áºááá¯ááºážáá±áá«áááºá ááŸááºáá»ááºáá»á¬ážááœááºáá±ážáá«á
source: www.habr.com