microservice áááá¯áá¬ááá¯ááºáᬠáá±á«ááºážá
ááºáá²á· áááºáááºááŒá®áž áá±á¬ááºážáá«ážáá
áºáá¯ááºáá±ážáá»ááºáá±áᬠááŒá¬áá«ááŒá®á áá«áá±ááá·áº á¡áá¬ááŸá
áºáá¯á áá»áœááºáá±á¬á·áºááᯠáááºááá·áºá
á±áá²á·ááẠ- áá±á«ááºážá
ááºáá²ááᯠáááºáá±á¬ááºážááá·áºááá¯ááºáá±á áá«áááá²á·á¡áá¬á áááá¬áááºááŸá¬ážáá¬áá±áá±á áá«ááá¯ááºáá²á·á¡áá¬á ááá¯áááá¬áá¬áá±áá«áá²á áá±á·áá¬ááẠááá¯á¡ááºáááºáááá áá
áºáááºááááºáž áá»ááºááŒáá·áºáá²á· ááááááºááŒá¬ážááŸá¬ ááœá±ážááœá±ážá
áá¬ááœá± ááŸááá±ááŒá®ááá¯á· áááºáá«áááºá áá«ááŒá±á¬áá·áº á¡ááŒá¬ážáááºááŒááºáá°ááá»ááºááœá±ááᯠááŒáá¯ááá¯áá«áááºá
Conway's Law ááŸáá·áº áá¯ááºáááºážá á¡ááœá²á·á¡á ááºážááŸáá·áº ááááºážá¡áá»ááºá¡áááºá áá áºááá¯á·ááŒá¬áž áááºá ááºááŸá¯
áá áºááẠáá«ááá¯ážáá¬ážááẠáá«ááœáá·áºááŒá¯áá«áááº-
"á áá áºáá áºáá¯ááᯠáá®ááá¯ááºážáá±ážááœá²áá±á¬ áááºááá·áºá¡ááœá²á·á¡á ááºážáááᯠ(áá»ááºááŒáá·áºáá±á¬á¡áááá¹áá¬ááºááŒáá·áº) áá®ááá¯ááºážááᯠáááºáá¶áááŸááááºááŒá áºááŒá®áž ááá¯á¡ááœá²á·á¡á ááºážá¡ááœááºážááŸá á¡áááºážáá»á¬ážá ááœá²á·á ááºážáá¯á¶ááᯠáá¯á¶áá°áá°ážáá¬ážááá·áº áá®ááá¯ááºážááᯠáááŸááááºááŒá áºáááºá"
- Melvyn Conwayá 1967
áá»áœááºáá±á¬á·áºá¡ááŒááºá¡ááá±á¬á· áá®á¥ááá±áᬠááááºážá¡áá»ááºá¡áááºá áá áºáá²á· ááá¯ááºááá¯ááºááá¯ááºáá² á á®ážááœá¬ážáá±ážáá¯ááºáááºážáá áºáᯠá á®á ááºááá¯ááºááŒá±áá²á· áááºá ááºáá±áá«áááºá á¥ááá¬áá áºáá¯áá²á· ááŸááºážááŒáá«áá á±á áá¯ááºáááºážáá áºáá¯ááᯠá á¯á ááºážááẠá¡áááá¹áá«ááºááŸáááá·áº ááŸááºáá»á¬ážáá±á¬ áááºáááºážá ááºáááºážáá áºáá¯ááŸááá±á¬ áá»áŸáá»áŸáá áááºááŒáááºáá±á¬ á á®ážááœá¬ážáá±ážá¡ááœáá·áºá¡áááºážáá áºáá¯ááŸáááẠ(áá«á typo ááá¯ááºáá«á áá«áá±ááá·áº áá»áœááºáá±á¬áºááá¯ážáá°áá¬ážáá±á¬ á€á¡áá±á«áºá¡áá±á«áºááᯠáá»áœááºáá±á¬áº á¡ááœááºááŸá áºáááºáá«áááºá) ááá¬áá¡á¬ážááŒáá·áº á€áá¯ááºáááºážá áá¶á·ááá¯ážáá±ážááá·áºá áá áºá á€áá¯ááºáááºážá¡ááœáẠá¡ááœá²á·á¡á ááºážá¡ááá¯ááºááŸáá·áº áá¯ááºáááºážá ááºá¡ááá¯áẠááá¯ááºáá®ááŸá¯ááŸááá«áááºá
ááááºážá¡áá»ááºá¡áááºá áá áºáá»á¬ážáá á®ážááœá¬ážáá±ážáŠážáááºáá»ááº
á¥ááá¬áá
áºáá¯áá²á· ááŸááºážááŒáá«áá
á±á áá®áá¬áá±á¬ááºážáá²á·áá¯ááºáááºážááᯠá
á¯á
ááºážááá¯á· á
á®ážááœá¬ážáá±ážá¡ááœáá·áºá¡áááºážáá
áºáá¯ááŸááááºááá¯áá«á
áá¯á·á V1 áá¬ážááŸááºážááœáẠ(ááŒáá¯áááºá¡áá»ááºá¡áááºáᯠááá¯ááŒáá«á
áá¯á·)á áá¯áá¹ááá®ááẠáá®áá¬á ááœá±áá¬ážá
á¬áááºážááŸáá·áº ááá¯á·áá±á¬ááºáá±ážáááºáá±á¬ááºááŸá¯áá
áºáá¯ááŒá
áºáááºá á€áá¬ážááŸááºážááẠáááá·áºáá«ážáá±á¬ áááºáááºážáá»áẠááœá²ááœá²ááŸá¯ á¡ááŒá±á¡áá±áá»á¬ážááœáẠááŒá¬ááŸááºá
áœá¬ áá±ááá¯ááºáá²á·áááºá ááá¯á·áá±á¬áẠáá¬ážááŸááºáž 2 ááẠáááºážááᯠá¡á
á¬ážááá¯ážááẠááŒá
áºáá¬ááẠ- ááá¯ááá¯á¡ááá·áºááŒáá·áºááŒá®áž monolithic áááá¯áá¬ááŒáá·áº á
á®ážááœá¬ážáá±ážáá¯ááºáááºážá¡ááœáẠáááºážáá¡áááááœáẠááááºážá¡áá»ááºá¡áááºá
áá
áºáá
áºáá¯ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá ááŒá®ážáá±á¬á· áá®áá±áá¬ááŸá¬á áá»áœááºáá±á¬á·áºá¡ááŒááºá¡ááá±á¬á· monoliths ááœá±áá²á· áááºáááºááŒá®áž ááŒá±á¬ááºá
áá¬áá±á¬ááºážáá²á· áááá¬ážááŸá¯áá
áºáᯠááŸááá«áááºá monolithic áááá¯áá¬áááºáá¬ááẠdomain áá¯ááºáááºážáá¯á¶á
á¶ááŸáá·áº áááá¯ááºáá®áᯠá
áœááºá
áœá²áá¬ážáááºá. áá¯ááºáá²á·á áá®ááá¯áá¬ááá¯áááºá Conway áá²á· á¥ááá±áá²á· áá°áá®áá²á· á¡ááááá¬ážáá²á· ááá·áºáá»ááºááŒá®áž á
áá
áºá áá¯á¶ážáá¡áá¯ááºáá¯ááºááá¯ááºááŸá¬ ááá¯ááºáá«áá°ážá ááá¯ááºáá«á monolithic áááá¯áá¬ááẠá
á®ážááœá¬ážáá±ážááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á á€á¡ááá·áºááœáẠá
á®ážááœá¬ážáá±ážáá¯á¶á
á¶ááŸáá·áº á¡ááŒáá·áºá¡áááá¯ááºáá®ááẠ- áá»áœááºá¯ááºááẠá
áá
áºá¡á¬áž áááºáá®ážááŒá®áž áááºáááºáá¯ááºáá±á¬ááºááá·áºá¡ááá·áºááᯠááá¯ááá¯áá«áááºá áááá¯áá¬ááá¯ááºáᬠáá»ááºážáááºááŸá¯ áááºááá¯á·áááºááŸáá
á±áá¬áá°á áááºáá±á¬ááºááŸá¯ááᯠáŠážáááºáá±á¬ áááá¯áᬠáá¬ážááŸááºáž 3 ááŸáá·áº microservices áááá¯áᬠáá¬ážááŸááºáž N ááŸá
áºáá¯áá¯á¶ážááẠáá°áá®á
áœá¬ áá±á¬ááºážááœááºá
áœá¬ áá¯ááºáá±á¬ááºááá¯ááºááẠáá°áá±á¬ á¡áá»ááºááẠá¡á¶á·ááŒááœááºáá±á¬ááºážááŸáá«áááºá áááºážáá¬á áá¬áá²á
á¡áá¬áááºááááºáž á á®ážáááºážááŸá¯á á¡áá¬á¡á¬ážáá¯á¶áž ááŒá±á¬ááºážáá²áá±ááẠááá¯á·ááá¯áẠá¡áá±ážá á¬ážáááºáá±á¬ááºááŸá¯áá»á¬ážááẠááŸá¯ááºááœá±ážááŸá¯ááᯠááá¯ááºáá»ááºááẠáááºážáááºážáá áºáá¯áá¬ážá
áááºáááºááá¯ááºáá±á¬ááºáá®á ááá¯ááºáááá¯áá¬ážáá áºáááá¯áá¬ááá¯ááºáᬠá¡áááºá¡ááŒááºááœá²ááŸá¬ážááŸá¯á¡áá»áá¯á·ááᯠááŒáá·áºááŒáá«á áá¯á·á
microservice áá»ááºážáááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯ááá·áº á¡ááá¯ááŒá¯áá°áá»á¬ážááẠáááºáá±á¬ááºááŸá¯áá áºáá¯áá»ááºážá á®á áá¯ááºá¡ááŒá±áá¶ááᯠáá»áŸá±á¬á·áá»ááŒááºážááŒáá·áº microservices áá»á¬ážá¡ááœááºážááá¯á· monolith ááᯠáá»áá¯ážáá»ááºááŒááºážááẠááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážáá»ááºážáááºááŸá¯ááᯠááá¯ážááŸááºážá á±áááºáᯠáááŒá¬áá ááŒááºážáá¯á¶ááŒáááºá áá»áœááºáá±á¬á·áºá¡ááŒááºá¡ááá±á¬á· áá®ááŒá±á¬ááá¯áá»ááºáᬠáá¯á¶ážáááᯠá¡áááá¹áá«ááºáá²á·áá«áááºá áá±ážáá±ážáááºáááºá monolith ááŸáá·áº áá áºáá¬ážáááºážááŒá áºáááºáá±áá±á¬ áá¯ááºá¡ááœááºáž áááá¬áááºááŸá¬ážáá±á¬ á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯ááẠááŸá¯ááºááœá±ážáá±áá¯á¶ááááºá á¡áááºá á€á¡áá¬ááẠá¡ááŸááºááááºááŒá áºáá²á·áá«áá ááá±á¬áá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááẠáááŠážááœáẠá¡áá±ážá á¬ážáááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááŒá Ạáááºáá±á¬ááºááœá¬ážáááºááŒá áºááŒá®áž áááºááœá±á·ááœáẠmonolith á០microservices ááá¯á· ááœáŸá±á·ááŒá±á¬ááºážááŒááºážááẠááá¯áá¡ááŒá áºáá»á¬ážááŒá±á¬ááºáž áááºááœá±á·ááŒááá±áá»áááºááœááºááŒá áºáááºá ááŸá¯ááºááœá±ážááŸá¯ááẠáá»á±á¬ááºááœááºáááœá¬ážáá«á áááºážááẠáá áºáŠážáá»ááºážá á® module áá»á¬ážá០á¡ááºáá¬áá±á·á áºáá»á¬áž (áá±áá¬áááºá áºáá»á¬ážá RPCá APIs ááŸáá·áº á¡ááŒá¬ážáá±á¬ áááá¯ááá¯áá±á¬áá»á¬ážááŒá áºáá«á á±) ááŸáá·áº á á¯á ááºážááŸá¯á áá áºáá»á¬ážáá®ááá¯á· ááœá±á·áá»á¬ážáááºá ááŒá®ážáá±á¬á· áá«á áááºáááºá
ááœá²ááŒá¬ážáá±á¬ stack ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážáá¡á¬ážáá¬áá»ááºááá¯áááºážáá±ážááœááºážáá¯ááºá áá¬ááŒá áºáá«áááºá áá«ááááºáž ááŒá áºááá¯ááºáááºááá¯á· áá»áœááºáá±á¬áº ááŒááºážáá¯á¶ááŸá¬ ááá¯ááºáá«áá°ážá áá«áá±ááá·áº áááºááœá±á·ááŸá¬ ááŒá áºáá±á«áºáá¬áᬠááŸá¬ážáá«ááẠ(ááŒáá¯ááŒáá·áº - áá«á ááŒá áºááá·áºááẠ- áá«áá±ááá·áº á¡á¬ážáá¬áá»ááºááẠá¡áá»áá¯ážáááºá¡áá±áá²á·)á
áá¯ááºáá¯ááºáááá¶ááá¬ááŸáá·áº áááºáá±á¬ááºááŸá¯ááá ááºáááºáž
á¡áá±á«áºá áá¯á¶ááŒááºážááᯠáá±á¬ááºáá áºáᯠááŒáá·áºáá«á á á®ážááœá¬ážáá±ážáá¯ááºáááºážáá áºáá¯á áá®ážááŒá¬ážáá¬ážááŸááºážáá áºáá¯á ááá ááºáááºáž áá»áááºážáá¬áááºááᯠáá»áœááºá¯ááºáááááŒá¯áááááºááŸá¬ ááá¯ááºááá¯ááºááŸá¯ááá¯ááºáá« - áá±ááºáá áºá¡ááŒá±á¡áá±áá»á¬ážááœááºá áááºážááẠáááºážáá¡á±á¬ááºááŒááºááŸá¯á¡ááœáẠá¡áá¯á¶ážá¡ááŒááºáá±ážáá±á¬ áá¬ážááŸááºážáá»á¬ážááŒá¬ážá០áá¯ááºáááºážáá áºáá¯á á¡ááŸáááºá¡áá¯ááºááŒáá·áº áá°ážááŒá±á¬ááºážááŒááºážáááºááŒá áºáááºá áá¯ááºáá¯ááºáá áºáá¯áá¡á±á¬ááºááŒááºááŸá¯ááᯠáááºážááœááºááŸááá±á¬ áá¯ááºáááºážááá¯ááºáá¬áá°ááá»ááºáá»á¬ážááᯠá ááºážáááºááŒááºážá¡ááŸáááºááŒáá·áº áá¯á¶ážááŒááºáááºá. á€áá±áá¬ááœááºá áá»áœááºá¯ááºáá¡ááŒááºá¡áá microservice áááá¯áá¬áá¡áááá¡á¬ážáá¬áá»ááºááŸá¬ááŸááááºá áá«áá±ááá·áº ááá¯ááºááŒáá¡á±á¬ááºá
ááááºážá¡áá»ááºá¡áááºá áá áºáá»á¬ážá ááá·áºáá²ááŒá±á¬ááºážáá²ááŸá¯ááœáẠáá±á¬ááºá¡ááá·áºááá¯á· áááºááœá¬ážááŒáá«á áá¯á· - SOA á áááºáá±á¬ááºááŸá¯ááᯠáŠážáááºáá±á¬ áááá¯áá¬áááºáá¬ááá¯á· ááœá¬ážááŒáá«á áá¯á·á ááá¯á·ááŒá±á¬áá·áº á¡áá»áá¯á·áá±á¬á¡áá»áááºááœáẠáá»áœááºá¯ááºááá¯á·ááá¯ááºáá¯ááºááœáẠáá®ážáá±á¬ááºážááá¯ážááŒáá¬ážáá«áááºá áá¬ááŸááºáááºáá±á¬ááºááŸá¯áá»á¬áž - áá¯ááºáá¯ááºáá áºáá¯ááá¬ážááŸááºážáá»á¬ážááŒá¬ážááœáẠááœá±á·áá»á¬ážááá·áºá¡áá« áááºáá±á¬ááºááŸá¯ááááá¶ááá¬ááẠáá¯ááºáá¯ááºááá±á¬ááºáá¬ážááŸááºážáááá ááºáááºážááẠááá¯ááŸááºááá¯ááºáááºáᯠá¡áááá¹áá¬ááºááŒáá·áº ááŸá áºááŸááºááá»á¬ážáá±ááá¯ááºáá²á·áááºá á¡á²áá«ááœá±ááᯠáá¯á¶ážá áááŒá±á¬ááºážáá²áᬠáá¯áá¹ááááŸááááá·áºááẠ- áá«ááá¯á· á¡áá±ážááŒá®ážáá¬á áá±á¬ááºáá¬ážááŸááºážááᯠáá°ážááŒá±á¬ááºážááŸá¯á¡ááŸáááºáá«áá²á. ááá¯á·áá±á¬áº áá¶ááá±á¬ááºážá áœá¬áá²á áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá ááºáááºáááŒáẠá¡ááŒá±á¬ááºážá¡áá²áá¯ááºááẠááœááºážá¡á¬ážáá±ážáá¶áááŒá®áž á€áá±áá¬ááœáẠá¡áá¬á¡á¬ážáá¯á¶ážááẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠá¡áááºááŒá±áááºá DevOps á¡áá±á·á¡áá»áá·áºáá»á¬ážá ááœááºááááºáá¬ááŒá¯áá¯ááºááŒááºážá áááºááŒáá·áº - á áááºáá²áá±á«áºáá¬ááá»áŸá¡áá¬á¡á¬ážáá¯á¶ážááẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠá¡áááºááŒá±áá«áááºá ááá¯á·áá±á¬áº áááºážááá¯á·ááẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬áž ááá¯ááºáá±ážáá«á
ááŸá¯ááºááœá±ážááŸá¯ááᯠááá¯ááºáá»ááºááẠáááºážáááºážáá áºáá¯á¡áá±ááŒáá·áº ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬áž... ááœá²á·á ááºážááŸá¯ááá¯ááºáᬠá á®áá¶ááá·áºááœá²ááŸá¯
á€áá±áá¬ááœáẠáá±á¬ááºáá¯á¶ážááœáẠáá»áœááºá¯ááºááá¯á·ááẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážá á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºááá¹áááá¯á· áááºááœá¬ážááá¯ááºááẠ- á€áááºááŸá¬ áá¯ááºáá¯ááºááœá²á·á ááºážáá¯á¶á á®áá¶ááá·áºááœá²ááŸá¯ááᯠááá¯ážááŸááºážááœááºáá°á á±ááá·áº áá»ááºážáááºááŸá¯áá áºáá¯ááŒá áºáááºá á¡áá±ážá áááºááœááºá microservice áá áºáá¯á á®ááá¯ááºáá±á¬ááºáá»ááºááẠdomain model á¡á áá¯ááºáá¯ááºá¡ááœááºážááŸá áá¯ááºáááºážáá±á¬ááºáá¬áá»á¬ážááᯠá¡ááá¡áá»áá±á¬áºááŒááẠ- áááºážááá¯á·ááẠáááºáááºážááá¯áá¬ážááŸááºážááœááºááá¯ááºáá±á¬áºáááºáž áá±ááŸááºá á®ážááœá¬ážáá±ážá¡ááœáá·áºá¡áááºážáá áºáá¯ááœáẠááŸááá±áá±á¬á¡áá¬áá»á¬ážááŒá áºáááºá áá¯ááºáá¯ááºááá±á¬ááºááœááºáá¬ážááŸááºážááá¯á· áá°ážááŒá±á¬ááºážááŸá¯ááẠá á¬áá¬ážá¡ááá¯ááºážáááááá¬ážáááá²ááŒá áºááœá¬ážááẠ- áááºááẠmicroservice áá áºáá¯ááá¯ááŒá±á¬ááºáž/ááá·áºááá¯ááºáᬠáááºážááá¯á·á á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯á¡á á®á¡á ááºááᯠáá¯ááºááááºáááºááœá±á·ááá¯ááºáááŒá®áž áá¬ážááŸááºážáá»á¬ážááŒá¬ážááœáẠáááºáááºáá¯ááºáá±á«ááºáá±áá±á¬ ááŒáá¯ááºáááºáá»á¬ážááᯠá¡á±á¬áºáá áºááá¯ááá¯áᬠá¡áá¬áááºááœáẠáá»ááºáá áºáá²á·áááºá áááºážááá¯á·á monoliths ááᯠááŒáá¯áááºáááºááŸááºáá¬ážáá±á¬ á¡ááºáá¬áá±á·á áºáá»á¬ážááŸáá·áº áá¯ááºáááºážá áœááºážáá±á¬ááºáááºáá»á¬ážáá«ááŸááá±á¬ ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬áž ááá¬áá¡áá±á¬áºáá±ážááŒá®ážáá¬ážááŒá±á¬ááºáž á áááºáá°ážááŒáá·áºáá«á á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážá០ááá·áºáá¯ááºáá¯ááºá ááœá²á·á ááºážáá¯á¶ááᯠáá¬á á¥ááá¬- áá¯á¶áá áºáá¯á¶ááœá²áá¯á¶ááŒáá·áº áááºáá±á¬ááºáá«á áá¯ááºáá°áá«ááẠ- ááá·áºááŸá¬ ááááºáá±á¬ááºážáá áºáá¯ááŸáááŒá®áž á¡áᯠáááºááá¯ááºááá¯áẠá á®ážááœá¬ážáá±ážááᯠááœá²áá±á¬ááºááá¯ááºáá«ááŒá®á á¡áááºáááºáá»á¬áž á¡áááºáááºáá»á¬ážá
ááœá±á·ááŸááá»ááºáá»á¬áž
- á áá áºááááá¯áá¬áááºáá¬ááẠáááºážáá¡á áááºá¡ááá¯ááºážáá»á¬ážá áááá¶ááá¬ááŒáá·áº áá¯á¶ážááŒááºááá·áºáááºá á¡á áááºá¡ááá¯ááºážáá áºáá¯ááẠáá¯ááºáá¯ááºáá¬ážááŸááºážáá áºáá¯á¡ááœááºáž áá±ááá¯ááºáá«áá microservice áá»ááºážáááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº á áá áºá ááŸá¯ááºááœá±ážááŸá¯ááᯠááá¯ážá á±ááá·áºá¡áá»ááºáááŸááá«á
- Microservice áááá¯áá¬áááºáá¬ááẠááá¯ááááºážáá¯á¶á á¶áá±á«áºááœáẠá¡ááŒá±áá¶ááá·áºááẠ- áá¯ááºáááºážá¡ááœáá·áºá¡áááºážááẠáááºáááºážá¡ááŸááºáá¯á¶ážááá¯ááááºážááŒá áºáá±á¬ááŒá±á¬áá·áº ááŒá áºáááºá
- áá±ážááá¯á·ááŸá¯á¡áá±á·á¡áá»áá·áºáá»á¬áž (DevOps á¡áá±á·á¡áá»áá·áºáá»á¬áž) ááŸáá·áº á á¯á ááºážááŸá¯ááá¯á·ááẠááá¯ááºáááá¯áá¬ážáá áºáááá¯áá¬á¡ááœáẠá¡áá±ážááŒá®ážáá¯á¶ážáá»á¬ážáá²á០áá áºáá¯ááŒá áºááẠ- á¡á áááºá¡ááá¯ááºážáá»á¬ážá ááŒá±á¬ááºážáá²ááŸá¯ááŸá¯ááºáž ááá¯ážáá¬ááŒááºážááŒá±á¬áá·áº áá±ážááá¯á·ááŸá¯ááŒááºááŸá¯ááºážááŸáá·áº á¡áááºá¡ááœá±ážá¡áá±á«áº áá±á¬ááºážááá¯ááŸá¯áá»á¬áž ááá¯ážáá¬á á±áááºá
source: www.habr.com