áááºá¹ááá¬áá« Habr áá®áá±á·áá±á¬á· áááºáááºážá¡áá
áºáá
áºáá¯á
ááá¯á· á¡áá°ážááááºáá±ážáá¬ážáá²á· á
á¬á¡á¯ááºá
á¬áááºážááœá±ááᯠáááºááá¯ááºáá¯ááºáá±áá«áááºá
áááá«ááºáž
áááá¯áá¬á ááá¯ááºáẠááœá±ážáá»ááºááŸá¯ááẠá¡áá»ááºá¡áááºá áá áºáá áºáᯠáááºáá±á¬ááºáá¬ááœáẠá¡ááŒá±áá¶áá»áá±á¬ áááºážááá¬ááá¯ááºáᬠáá¯á¶ážááŒááºáá»ááºáá»á¬ážáá²á០áá áºáá¯ááŒá áºáááºá á€áá±á¬ááºážáá«ážá¡ááœá²ááá¯ááºááœááºá áá±á¬ááºáá¯ááºáá±ážáá¯ááºáááºážáá¯á¶ážá¡ááœáẠáá±áááºážá¡á á¬ážáá¯á¶áž áááá¯áá¬áá¯á¶á á¶áá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááŒá®áž áááºááá·áºáááá¯áá¬á ááá¯ááºááᯠááá¯ááŸá áºáááºááááºážáá°áá±á¬ áá±ážááœááºážááᯠááŒá±ááẠá¡ááá¯ááŒá¯áá«áááºá áááºáááºááŸá¯áá¯ááºáááºážá ááºááœááºá monoliths á០microservices á¡áá áááá¯áá¬áá¯á¶á á¶áá»á¬áž ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠááŸááºážááŒááá·áº áá¯áá¹ááááœááºážáááºáá áºáá¯ááœá²ááẠááŒáá¯ážá á¬ážáá«áááºá
Ð
áá®áá
áºáá«áá±á¬á· modules/libraries (component-oriented architecture) áá«ááŸááá¯áẠservices (service-oriented architecture) á¡á
á¯á¡áá±ážáá
áºáá¯á¡áá±áá²á· system áá
áºáá¯ááᯠá
á¯á
ááºážááá¯á· ááŒá
áºááá¯ááºáá»á±ááœá±á¡ááŒá±á¬ááºáž ááœá±ážááœá±ážááá¯á· á¡ááŒá¶ááŒá¯áá»ááºáá«áááºá
á¡á áááºá¡ááá¯ááºážáááºáá²á· áááá¯áá¬ááá¬
á¡á áááºá¡ááá¯ááºáž-áááºáá±á¬ áááá¯áá¬áááºáá¬ááẠáááºááŸáááŸáá·áº á¡áá¬áááºááá±á¬áá»ááºáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº á¡á áááºá¡ááá¯ááºážáá»á¬ážá¡á á¯áá áºáá¯á¡áá±ááŒáá·áº á áá áºáá áºáá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºáž áá«áááºáááºá á áá áºáá áºáá¯á¡á¬áž á¡á áááºá¡ááá¯ááºážáá»á¬ážá¡ááŒá Ạááœá²ááŒááºážááá¯ááºáá±á¬á¡áá« á¡á±á¬ááºáá«ááá¯á·ááᯠááá·áºááœááºážá ááºážá á¬ážáááº- áááºážááá¯á·á ááŒááºáááºá¡áá¯á¶ážááŒá¯ááá¯ááºááŸá¯á áááºážááá¯á·á á¡á á¬ážááá¯ážááá¯ááºááŸá¯á áááºá ááºááŸá¯ ááœááºáááºááŸá¯á áá»á²á·ááœááºááá¯ááºááŸá¯á áááºááºááœá²ááŸá¯ááŸáá·áº ááœááºáááºááŸá¯ááá¯á·ááᯠááá·áºááœááºážá ááºážá á¬ážáááºá
á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠááá·áºáá»á±á¬áºá áœá¬á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áºá "áá¯ááºáá±á¬áá¯á¶ážááŒá®áž" (á¡ááœááºá¡á á¬ážááŒá®áž + ááŒáá·áºáá¬ážáá±á¬áá»áááºáááºááŸá¯) áááŒá¿áá¬ááᯠááŒá±ááŸááºážááá¯ááºááŒá®áž á¡á áááºá¡ááá¯ááºážáá»á¬ážááẠáááºáááºáá°áá áºáá»á¬áž (áá±á¬áºáá»á°ážáá»á¬ážá á á¬ááŒáá·áºááá¯ááºáá»á¬áž) ááŸáá·áº ááŒáá·áºáá»ááºáá°áá áºáá»á¬áž (áááºáá±á¬ááºááŸá¯áá»á¬áž) ááŸá áºáá»áá¯ážáá¯á¶ážááŒá áºááá¯ááºáá«áááºá ááŒáá·áºáá»ááºáá°áá áºáá»á¬ážááᯠáááºáááºáá±ááá·áº áá¯ááºáááºážá ááºááœáẠá¡ááŒá²áááºáž áá¯á¶áá±á¬áºáá¬ážááŒááºážáááŸááá«- á¥ááá¬á áááºá¡ááá®áá±ážááŸááºážáá áºáá¯ááŸáá·áº áá±áá¬áá±á·á áºáá áºáá¯ááᯠá¡áá°ááᜠááŒáá·áºáá»ááºáá¬ážáááºá
á¡áá»á¬ážá á¯ááŸá¬ monoliths áá»á¬ážááᯠmodule á¡á á¯áá áºáá¯á¡ááŒá Ạáá®ááœááºááŒáááºá á€áá»ááºážáááºááŸá¯ááẠááœááºáááºáá±á¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠáŠážáááºáá±á¬áºáááºáž ááœááºáááºáá±á¬ á¡ááá¯ááºážá¡áá¬ááŸáá·áº ááŒáá·áºáá»ááºááŸá¯ááá¯ááºáᬠááŒá¿áá¬áá»á¬ážá á¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠáá¶ááá¯ááºáááºááŸáááŸá¯ááŸáá·áº á¡áá¯á¶ážá á¯á¶áááºážááá¬á¡á á¯á¡áá±ážá០á¡ááŸá®á¡ááá¯áááºážááŸá¯ ááŒá¿áá¬áá»á¬áž áá»ááºááŸááá±áá«áááºá ááá¯á·ááŒá±á¬áá·áº module ááẠáá áºá áááºáá áºááá¯ááºáž ááœááºáááºáá±á¬ á¡á áááºá¡ááá¯ááºážáá áºáá¯ááŒá áºáááºá
ááá¯áá²á·ááá¯á·áá±á¬ monolith áá¡ááŒá®ážáá¬ážáá¯á¶ážááŒá¿áá¬ááŸá¬ modules áá»á¬ážá¡ááŒá áºááá¯á·ááœá²áá±ááŒááºážáááºáá¯áá¹áááááºáááºááŒá áºááŒá®áž developer áá»á¬ážááŸá¡ááœááºááá°áá»áá¯ážáá±á¬ááºááá¯ááºááŒááºážááŒá±á¬áá·áºááŒá áºáááºá á¡ááŸáá¯ááºáá¯á¶ážá¡ááŒá áºááá¯á· áááŒááºážááŒááºážááŒá±á¬ááºážáá²ááœá¬ážááá·áº core module áá áºáᯠáá±á«áºáá¬ááá¯ááºáááºá modules áá»á¬ážááŒá¬ážááœáẠááŸá®ááá¯ááŸá¯ááááºáá»á¬áž ááŒá®ážááœá¬ážáá¬ááá¯ááºáááºá á¡á ááŸááááºááŒáá·áºá ááá¯ááá¯á·áá±á¬ááŒá¿áá¬áá»á¬ážááá¯ááŸá±á¬ááºááŸá¬ážáááºá ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠá¡ááœááºááá·áºáá»ááºáá±á¬á¡ááœá²á·áá áºáá¯ááŸááŒá áºá á± ááá¯á·ááá¯áẠá¡áá»áááºááŒáá·áºáá¯ááºááŒááºáááºáá¯á¶ážáááºááŒááºážááœáẠáá«áááºáá±áá±á¬ âáááá¯áá¬ááá¬ááŸááºâ á áááºážááœáŸááºááŸá¯á¡á±á¬ááºááœáẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠáá¯áá¹áááááºážáá»áá±á¬áááºáá±á¬ááºááŸá¯áá¯á¶á á¶ááá¯áá»áá¯ážáá±á¬ááºáá±á¬ developer áá»á¬ážáááºáá²ááá¯á· áá»á±á¬áºááœáŸá¬ážááá¯ááºáááºááŒá áºáááºá
"ideal" monolith ááẠáá¯áá¹áááááºážáá»áá» ááá¯ááºážááŒá¬ážáá¬ážáá±á¬ module á¡á á¯áá áºáá¯ááŒá áºááŒá®áž áá áºáá¯áá»ááºážá á®ááẠáááºážáááá¯ááºááá¯ááºáá±áá¬áá±á·á áºááá¯á· ááŒáá·áºááŸá¯áááºá
áááºáá±á¬ááºááŸá¯ááᯠáŠážáááºáá±á¬ áááá¯áá¬ááá¬
á¡áááºá á áá áºá¡á¬áž áááºáá±á¬ááºááŸá¯á¡á á¯áá áºáá¯á áá¯á¶á á¶ááŒáá·áº ááœá²á·á ááºážáá¬ážáááºááá¯áá«áá áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á¬ááºááŸá¯ááᯠáŠážáááºáá±á¬ áááá¯áá¬áá áºáá¯á¡ááŒá±á¬ááºáž ááŒá±á¬áá±áá«áááºá áááºážáá¡ááŒá±áá¶áá°áá»á¬ážááŸá¬ á¡áá¯á¶ážááŒá¯áá°áááá¯ááŒá¯ á¡ááºááºáá®áá±ážááŸááºáž á¡ááŒááºá¡ááŸááºáá¯ááºáá±á¬ááºááá¯ááºááŸá¯á áá¯ááºáááºážáááºáá±á¬ááºááŸá¯ááŒááºáááºá¡áá¯á¶ážááŒá¯ááŸá¯á áááºážááá¬á¡á á¯á¡áá±áž ááœááºáááºááŸá¯ááŸáá·áº ááá¯ááºááá¯ááºá¡á¯ááºáá»á¯ááºááœáá·áº (ááœááºáááºáá±á¬ááá·áºáá²ááŒá áºá ááºá áá»á²á·ááœááºááá¯ááºááŸá¯ááŸáá·áº á¡áá¯á¶ážáá»ááŸá¯) ááá¯á·ááŒá áºáááºá
Service-oriented architecture (SOA = service oriented architecture) ááẠmonolith á ááœá²ááŒá¬ážáááºááŸááºáá¬ážáá±á¬ ááŒá¿áá¬á¡á¬ážáá¯á¶ážááᯠááŒá±ááŸááºážáá±ážáááº- á¡ááŒá±á¬ááºážá¡áá²áá áºáá¯ááŒá áºáá±á«áºááá·áºá¡áá« áááºáá±á¬ááºááŸá¯áá áºáá¯áᬠááááá¯ááºááá¯ááºááŒá®áž áá±á¬ááºážá áœá¬áááºááŸááºáá¬ážáá±á¬ API ááẠá¡á áááºá¡ááá¯ááºážáá»á¬ážá áááºááºáá±á«ááºážááᯠáá±á¬ááºážáá±á¬ááºážáá¶á·ááá¯ážáá±ážáá«áááºá
ááá¯á·áá±á¬áº á¡áá¬á¡á¬ážáá¯á¶ážááẠá€áá»áŸáá»á±á¬ááœá±á·áááºááá¯ááºáá±- SOA ááẠááŒá¿áá¬á¡áá áºáá»á¬ážááᯠáááºáá®ážáá±ážáááºá á¡áá±ážááááºážáá¯ááºážáá±á«áºááá¯ááŸá¯áá»á¬ážááẠáá±ááá¹áááá¯ááºážáá»á¬ážááẠááá¯á á»á±ážááŒá®ážááŒá®áž á¡á áááºá¡ááá¯ááºážáá»á¬ážááŒá¬ážááœáẠáá¬áááºááœá²áá±áá±ážááŒááºážááẠáááááá¬áᬠááá¯á á»á±ážááŒá®ážáá¬áááºá
á áá¬ážáá ááºá á¡ááŸá®á¡ááá¯áááºážá áœá¬ ááŒáá·áºáá»ááºááá¯ááºááŒá±ááẠáááºáá±á¬ááºááŸá¯á á¡ááœááºá¡áá±ážááŒá®ážáá±á¬ á¡ááºá¹áá«áááºáá áºáá¯ááŒá áºáááºá áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡áá°ááᜠá¡áá¯á¶ážáá»ááááºááá¯áá»áŸáẠááá¯á·ááá¯áẠá¡áá»áá¯á·áá±á¬ á¡á á®á¡á ááºáá áºáá¯ááœááºá áááºážá áá áºá¡á¬áž áááºáá±á¬ááºááŸá¯ááᯠáŠážáááºáááºáᯠááá°áááá¯ááºáá«á á€ááá á¹á ááœááºá áááºážááá¯á·ááẠááŒáá·áºáá±áá¬ážáá±á¬ monolith á¡ááŒá±á¬ááºáž (SOA áá¡ááŒááºááœááºáá¬áá microservice áááá¯áá¬á¡ááŒááºááœááºáááºáž ááá·áºáá»ááºááá·áºáá¯á¶á á¶áᯠáá°áááŒáááº)á
áááºáá±á¬ááºááŸá¯ááᯠáŠážáááºáá±á¬ áááá¯áá¬áááºáá¬ááᯠáááá¯áá¬á¡ááá¯ááºážá¡ááá¯ááºážááŸáá·áº áá±á¬ááºážáá»áá°áá»á¬ážá០áá±á¬ááºážá áœá¬áá¶á·ááá¯ážáá¬ážáááºá áááºážááẠáááºáááºážáá»á¬ážááŸáá·áº á¡á±á¬ááºáááºááŸááºáá»á¬ážá áá±á¬ááºážááœááºá áœá¬ áá®ááœááºáá¬ážáá±á¬ áá¯á¶á á¶áá»á¬áž á¡áá»á¬ážá¡ááŒá¬áž ááŸááá±ááŒááºážááᯠááá¯ááá¯áááºá á¥ááá¬á áá°áááá»á¬ážáá±á¬ áá¯ááºáááºážáááºáá±á¬ááºááŸá¯áááºá Ạ(ESB = áá¯ááºáááºážáááºáá±á¬ááºááŸá¯áááºá áº) áá«áááºáááºá áá áºáá»áááºáááºážááŸá¬ááẠESB ááẠáá±á¬ááºážáá»áá°áá»á¬ážáá¶á០á¡áááºáá áºáá¯á¶ážááŒá áºááŒá®áž SOA ááœáẠá¡áá¯á¶ážááŒá¯áááºáááá¯á¡ááºáá«á
áááºáá±á¬ááºááŸá¯áŠážáááºáá±á¬ áááá¯áá¬áááºáá¬áá»á¬ážá áá°ááŒáá¯ááºáá»á¬ážááŸá¯ááẠ2008 áá¯ááŸá áºáááºážáá»ááºááœáẠá¡ááœááºá¡ááááºááá¯á·áá±á¬ááºááŸáááœá¬ážááŒá®áž áá±á¬ááºááá¯ááºážááœáẠáááºážááẠáá»áááºážáá¬áᬠmicroservices (~2015) ááœááºážáá¬ážáá¬ááŒá®ážáá±á¬áẠáááá¬áááºááŸá¬ážá áœá¬ áááá¬áááºááŸá¬ážáá¬áá²á·áááºá
áá±á¬ááºáá»ááº
áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº áá±á¬áºáá»á°ážáá»á¬ážáá¯á¶á á¶ááŒáá·áº ááááºážá áá áºáá»á¬áž á á¯á ááºážááŒááºážááá¯ááºáᬠááŒá áºááá¯ááºááŒá±áá»á¬ážááᯠááœá±ážááœá±ážááŒá®ážáá±á¬ááºá áá±á¬ááºáá¯á¶ážááœáẠmicroservice áááá¯áá¬á á¡ááŒá±áá¶áá°áá»á¬ážááᯠáááºáááºáá¯ááºáá±á¬ááºááŒá®áž áá±á¬ááºá¡ááá¯ááºážááœáẠmicroservice architecture ááŸáá·áº service-oriented architecture á¡ááŒá¬áž ááŒá¬ážáá¬ážáá»ááºááᯠá¡áá°ážá¡á¬áá¯á¶á áá¯ááºááẠá¡ááá¯ááŒá¯áá«áááºá
source: www.habr.com