áá»áœááºá¯ááºááá¯á·ááááºážááá¬áá«ááá¯ááºáá¬ááá±á¬ááºáá¯á¶ážááœááºáááá·áºááœááºážáá»á¬ážááá¯á¡ááŒá±áá¶á áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºááᯠá
áááºáá¯ááºáá±áá«áááºá
áá±á áá ááẠááœá±ážááœá±ážááœá²
áá
áºáá¬áá®á¡áá»áááºááŒá¯ááºážááá¯á·á¡ááœáá·áºá¡áá±ážááááº
Docker ááŒáá·áº á ááºáááºáááŒáẠááá¯á·áá±á¬ááºááŒááºážá
á¡á±á¬ááºááœáẠá ááºáááºáááŒááºáá±ážááá¯á· Git repository á០á¡ááá®áá±ážááŸááºážáá¯ááºááẠáá¯ááºáá¯ááºááŸá¯ááá¯á· áŠážá áœá¬áá±á¬ááºááŸáááŒá®ážáá±á¬áẠááŸááºáááºážááœááºá¡áá¯á¶ážáááºááœá¬ážááá·áºá¡ááœáẠá¡ááŒá áºá¡áá»ááºáá»á¬ážáááœááºážáááºááᯠáá»áœááºá¯ááºááá¯á·áá¬ážáááºáá«áááºá á€áá¯á¶áááº- Git â Build â Test â Release â Operate.
á¡á
á®áááºáá¶á
á¬á¡áá»á¬ážá
á¯ááᯠáááºáá±á¬ááºááá·áºá¡ááá·áº (áá»áŸá±á¬ááºááœáŸá¬á
á¯á
ááºážááŸá¯) ááœáẠá¡á¬áá¯á¶á
áá¯ááºáá¬ážááŒá®áž áá¯ááºáá±ááŸá¯ááŸáá·áº áááºáááºááŸá¯á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠá¡áá»ááºážáá»á¯á¶ážáá±á¬áºááŒáááºááŒá
áºáááºá áááºážááá¯á·ááᯠááŒá±ááŸááºážááá¯ááºá
á±ááá·áº ááŒá¿áá¬áá»á¬ážááŸáá·áº áá¯á¶á
á¶áá»á¬ážá¡ááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á· ááœá±ážááœá±ážáááºááŒá
áºááŒá®ážá á€áá¯á¶á
á¶áá»á¬ážááᯠáá®ážááŒá¬ážá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážááŸá¬ ááœá²ááŒá¬ážááá¯ááºáá«áááºá
Docker ááẠá€áá±áá¬ááœáẠá¡áááºááŒá±á¬áá·áº ááá¯á¡ááºááááºážá ဠOpen Source áááááá¬á áááºá ááºááŸá¯ááœáẠá ááºáááºáááŒáẠáá±ážááá¯á·ááŒááºážááá¯ááºáᬠá¡áá±á·á¡áá»áá·áºáá»á¬ážá¡ááŒá±á¬ááºáž ááœá±ážááœá±ážááẠáá¯á¶ážááŒááºáá²á·ááŒááºážááẠáááºááá·áºá¡ááœááºáá»áŸ ááá¯ááºáá«á á¡á á®áááºáá¶á á¬áá áºáá¯áá¯á¶ážááᯠáááºážáá¡áá¯á¶ážááŒá¯ááŸá¯á¡ááœáẠá¡á¬áá¯á¶á áá¯ááºáá¬ážáá±á¬áºáááºážá á¡ááá®áá±ážááŸááºážáá¯ááºáá¯ááºááŒááºážá á¡ááááá¯á¶á á¶ááᯠááá·áºááœááºážá ááºážá á¬ážááá·áºá¡áá« á¡ááŒá±á¬ááºážáááºážáá»á¬ážá áœá¬ááᯠáá¯ááºáá±á¬áºááŒááá¬ážáááºá
áááºááá¯ááºááœáŸáá·áºááŸá¯áá¯á¶á á¶
ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááºááá®áá±ážááŸááºážá áá¬ážááŸááºážá¡áá áºáá»á¬ážááᯠááœáŸáá·áºáááºáá±á¬á¡áá«ááœáẠáá»áœááºá¯ááºááá¯á· áááºááá¯ááºááŒá¯á¶ááœá±á·ááááºááŸá¬ áá±áá»á¬áá«áááºá á ááºáááºááŒááºážááŒá¿áá¬áá¯ááºáá¯ááºááŸá¯áá¬áá¬ááᯠááŒá±á¬ááºážáá±á áẠáá¯ááºáá±ážáááºá á¡ááá®áá±ážááŸááºážá áá¬ážááŸááºážáá±á¬ááºážá០á¡áá áºááá¯á· áááºážááŒá±á¬ááºážááŒá±á¬ááºážááŒááºážááᯠáá»ááºáá»ááºážáááŒá±á¬ááºážááá¯ááºáá«- áŠážá áœá¬ áá»áœááºá¯ááºááá¯á·ááẠáá¬ážááŸááºážá¡áá áºááᯠá¡á±á¬ááºááŒááºá áœá¬áá±á«ááºážáá¯ááºáá¯ááºáá¯á¶áá¬áá âáá°ááœá±ážáá¬áááºâ áááºážááŒá áºááẠ(ááá¯ááá¯áááºááŸá¬ áá±á¬ááºážááá¯áá»ááºáá»á¬ážááᯠáá±á¬ááºááœááºáá±ážááẠáá¯á¶ážáá¡áááºááá·áºááŒá áºáá±ááŒá±á¬ááºáž áá±áá»á¬á á±ááááº)á
ááá¯á·ááŒá±á¬áá·áºá á¡ááá®áá±ážááŸááºážááá¬ážááŸááºáž (á¡áá±á¬ááºážááŸáá·áºá¡áá
áº) ááŸá
áºáá¯áá¯á¶ážááẠá¡áá»áááºá¡áááºááŒá¬á¡á±á¬áẠáááŒáá¯ááºáááºáááºáž áá¯ááºáá±á¬ááºááá¯ááºáááºááŒá
áºáááºá á¡ááá¯á¡áá»á±á¬áẠááá¯á·áá±á¬ááºáá±ážáá±á¬ áá»áŸáá±áá¬ážáá±á¬ á¡áááºážá¡ááŒá
áºáááááá¹á: ááœááºáááºá ááá¯ááºá
áá
áºá IPC á
áááŒáá·áº Docker ááŒáá·áºá áá°áá®áá±á¬ host (server/virtual machine) ááœáẠá¡áááºážá¡ááŒá
Ạáá®ážááŒá¬ážááœá²áá¯ááºááŒááºážááᯠá¡á¬ááá¶ááá·áº áá®ážááŒá¬ážááœááºááááºáá¬áá»á¬ážááœáẠá¡ááá®áá±ážááŸááºážá áá¬ážááŸááºážá¡áá»áá¯ážáá»áá¯ážááᯠáá¯ááºáá±á¬ááºááŒááºážááŒáá·áº á€ááŒá¿áá¬ááᯠá¡ááœááºááá° ááŒá±ááŸááºážááá¯ááºáááºá áá±áá»á¬áá«áááºá áá»áŸááºáá¬ááá«áá²á· ááŸáá·áºááœááºááá»áá¯á·áá²á· ááŒááºáááºážááá¯ááºáá±ááá·áº á¡áááºááá·áºáá¯ááºáá¬ážááŒá®áž á¡áááºááŒá±áá²á·áááááá¬áá
áºáá¯ááŸáááẠáá»á
áºáá»á°áááŸá¯ááá¯á· ááá·áºáá»ááºáááºá¡ááŒá±á¬ááºážááŒáá»ááºááŸááá«áááºá
Containerization ááẠá¡áá¯á¶ážááŒá¯áá±á¬á¡áá«ááœáẠá¡ááŒá¬ážáá±á¬ á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážá áœá¬ááᯠáá±ážáá«áááºá áááºááá·áºáá»áŸá±á¬ááºááœáŸá¬á¡áá±á«áº áá°ááẠáá®ážááŒá¬ážáá¬ážááŸááºáž (ááá¯á·ááá¯áẠáá¬ážááŸááºážá¡ááá¯ááºážá¡ááŒá¬áž) á áá¬ážááŒááºá modules/extensions áá»á¬ážáááŸáááá¯ááºááŸá¯ á áááºááá¯á·á¡ááŒáẠáááºážááá¯á·ááá¬ážááŸááºážáá»á¬ážá áááºážááẠáá»ááºáá»ááºážáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ áááºáááºážáá»ááºááŸáá·áºáá¬ááá á¡áá«á¡ááẠáááºáááºážáá»ááºáá áºáá¯áá¯á¶ážááŸáá·áºáááºáž áááºááá¯ááºáá«áááºá á áá áºáá±á¬á·ááºáá² ááŸáá·áº áááºážááá¬ážááŸááºáž ( Linux ááŒáá·áºáá»á®áá¬ááœáẠá¡áá¯á¶ážááŒá¯ááá·áºá¡áá)á ááœááºááááºáá¬áá»á¬ážááœáẠá¡ááá®áá±ážááŸááºážáá¯ááºáá¬áá ááá¯á¡ááºáá±á¬áá¬ážááŸááºážáá»á¬ážá ááŒáá¯áááºááá·áºááœááºážáá¬ážáá±á¬ á áá áºááŸáá·áº á¡ááá®áá±ážááŸááºážáá±á¬á·ááºáá²áá»á¬ážáá«ááŸáááá·áºá¡áá»ááºááŒá±á¬áá·áº áááºááẠááŸá®ááá¯ááŸá¯ááá¯ááºáᬠááŒá¿áá¬áá»á¬ážááᯠáá±á·ááœá¬ážááá¯ááºáááºá
á¡ááŒááºážáá»ááºážááŒáá·áºáá¡á±á¬áẠáááºááá¯ááºááá·áºáá¯á¶á ᶠá¡á±á¬ááºáá«á¡áá»ááºáá»á¬ážááᯠááá·áºááœááºážá ááºážá á¬ážá áá¬ážááŸááºážá¡áá áºáá»á¬áž
- á¡á ááá¯ááºážááœááºá á¡ááá®áá±ážááŸááºážá áá¬ážááŸááºážáá±á¬ááºážááẠáááááœááºááááºáá¬ááœáẠá¡áá¯ááºáá¯ááºáááºá
- ááá¯á·áá±á¬áẠáá¬ážááŸááºážá¡áá áºááᯠáá¯ááºááŒá®áž áá¯áááááœááºááááºáá¬ááœáẠ"ááœá±áž" áááºá á€áá¬ážááŸááºážá¡áá áºááá¯ááºááá¯ááºá á¡ááºááááºáá¯ááºáá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážáá¯ááºáá¬áá áááºážáááŸá®ááá¯ááŸá¯áá»á¬ážá¡ááŒáẠá áá áºá¡á áááºá¡ááá¯ááºážáá»á¬áž (á¥ááá¬á OpenSSL áá¬ážááŸááºážá¡áá Ạááá¯á·ááá¯áẠááŒáá·áºááŒá°ážááŸá¯áá áºáá¯áá¯á¶áž) ááá¯áá« áááºáá±á¬ááºááœá¬ážááá¯ááºáááºááŸá¬ ááŸááºáá¬ážááœááºáá±á¬ááºážáááºá
- áá¬ážááŸááºážá¡áá áºááẠáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáá±á¬ááºááœááºáá±ážáááºá¡ááœáẠá¡ááŒáá·áºá¡áá¡áááºááá·áºááŒá áºáá±á¬á¡áá«á á¡ááœá¬ážá¡áá¬áá»á¬ážááẠáááááœááºááááºáá¬á០áá¯áááááá¯á· ááŒá±á¬ááºážááœá¬ážáá«áááºá
- áá¬ážááŸááºážáá±á¬ááºážááᯠáááºááá·áºááá¯ááºáá«ááŒá®á
áá®ážááŒá¬ážááœááºááááºáá¬áá»á¬ážááœáẠá¡ááá®áá±ážááŸááºážá ááá°áá®áá±á¬áá¬ážááŸááºážáá»á¬ážááᯠá¡áá¯á¶ážáá»ááŒááºážá á€áá»ááºážáááºáááºážááẠá¡ááŒá¬ážá¡áááºááŒá±á á±áááº- á¡ááŒááºááŒááºááŸáá·áºáá«á áá¬ážááŸááºážá¡áá±á¬ááºážááá¯á· (á¡á¬ážáá¯á¶ážááŒá®ážáá±á¬ááºá ááá¯áá»ááºáá±á¬ááœááºááááºáá¬ááá¯á·áááºážááŒá±á¬ááºážááŒá±á¬ááºážáááºáá¯á¶áá±á¬ááºáááº)á
áá±á¬ááºáá¯á¶áž ááá á¡ááŒá¶ááŒá¯áá»ááºááŸá¬ ááá¯ááºááŒá®ážáá±á¬ááºá០á¡ááŒá
áºááŸá¬ááá¯á· ááááá¯ááºáá²á· á¡áá¬áá
áºáá¯ááᯠááŒá
áºáá±áááº- "[Docker ááŒáá·áº á
ááºáááºáááŒáẠááá¯á·áá±á¬ááºááŸá¯ááᯠá
á®á
ááºáá±á¬á¡áá«] Docker ááá¯áá¯á¶ážáá«á [áááºážáá±ážáááºááá¯áá¬ážáááºáá«]â á€á¡áá¬ááẠááŒá¿áá¬ááá¯ááºážááᯠááŒá±ááŸááºážáá±ážááá·áº ááœá±áá±á¬ááºáá»ááºáááºááá¯ááºáá±á¬áºáááºáž á¡á¶á·ááŒááœááºá¡ááŒá±áá¶á¡á¯ááºááŒá
áºááᯠáá¶á·ááá¯ážáá±ážááá·áº áááááá¬áá
áºáá¯ááŒá
áºááŒá±á¬ááºáž áááááá«á
áá»áá¯ážááœá¬ážááá¯ááºááŒááºáž
"ááŒááºááœá¬ážááá¯ááºááŸá¯" á¡á¬ážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠá¡ááºááá®áá±ážááŸááºážáá»á¬ážáááºáááºáá±á¬á¡áá«ááœáẠááŒá¯á¶ááœá±á·ááá±á¬ áá±áá°áá»ááŒá¿áá¬áá»á¬ážááᯠááá¯ááá¯áá«áááºá áá»áœááºá¯ááºááá¯á·ááẠááá¯ááá¯á·áá±á¬ááá á¹á áá»á¬ážá¡ááŒá±á¬ááºáž ááŒá±á¬áá±áá«áááºá
- á¡ááá·áºáááºááŸááºááŒááºážá¡ááœáẠá¡áááºá¡ááœá±ážáá¬áá០á á áºáá±ážáá¬ážáá±á¬ Script áá»á¬ážááᯠáá¯ááºáá¯ááºááŸá¯ááœáẠáááá»á áœá¬ ááŒááºáá¯ááºáá±ážááá«áááºá
- á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠááá°áá®áá±á¬ repository mirrors áá»á¬ážá០áááºáá±á·áá»áºáá»á¬áž áááºáá¶áááŸáááá¯ááºáá±á¬ áá¬áá¬áá»á¬ážáá±á«áºááœáẠááœáŸáá·áºáááºááẠ(á¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸ áááºážááá¯á·ááᯠá¡ááºááááºáá¯ááºáᬠááá·áºááœááºážáá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážá áá¬ážááŸááºážáá»á¬ážááŸáá·áºá¡áá°)á
- "á¡áá¬áá¬á áá«á·á¡ááœáẠááŒááºááœááºážááŸá¬ á¡áááºááŒá±áááº!" (...ááŸáá·áº developer áá»á¬ážááᯠáá¯ááºáá¯ááºááœáá·áºáááŒá¯áá«á)
- á¡áá±á¬ááºáž (archived) áá¬ážááŸááºážááœáẠáá áºáá¯áá¯ááᯠá á áºáá±ážááẠááá¯á¡ááºáááºá
- ...
áááºážááá¯á·á áá±áá¯áá»á¡ááŸá áºáá¬áááŸá¬ á¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ áááºáááºážáá»ááºá á¡ááŒáá·áºá¡áááá¯ááºáá¬ááŸá¯ (á¡ááŒáẠáá°á·á¡áá»ááºáááŸáááŒááºáž) ááá¯á¡ááºáááºáá°áá±á¬á¡áá»ááºááŒá±á¬áá·áº áááºážááá¯á·á áá±áá¯áá»á¡ááŸá áºáá¬áááẠá¡áá»ááºážáááºáá«áááºá áá»áá¯ážááœá¬ážááŒááºážááᯠáá»áœááºá¯ááºááá¯á· áááºááá¯á·á¡á¬ááá¶ááá¯ááºáááºáááºážá Docker áá¯á¶áá»á¬ážááŒá¯áá¯ááºáá«á Git ááŸáá¯ááºááá¯á¡ááŒá±áá¶á áááºááá·áºá¡áá¯ááºá¡ááœááºáááᯠáááºážááá¯á·ááá¯á¡áá¯á¶ážááŒá¯áá«- á ááºážáááºááá¯ááºáá»á¬ážá áá¯ááºáá¯ááºáá±ážááœááºá áááá¯ááááºáá¬áá»á¬ážá áá±áááœááºážá ááºáá»á¬ážááœááº... áá áºáá»áááºáááºážááœáẠáá¯ááºáá±á¬ááºááá·áºáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá»áŸá±á¬á·áá»ááẠá¡áá±ážááŒá®ážáá«áááºá пПÑле áá¯ááºáá¯á¶ááᯠá á¯á ááºážááŒááºáž- ááá¯ááá¯ážááŸááºážáá±á á¡ááŸá¬ážá¡ááœááºážáá»á¬áž ááŒá áºááá¯ááºááŒá±áááºážáá±ááŒá áºáááºá
Infrastructure á Code áá«á
á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠááá¯á¡ááºáá»ááºáá»á¬áž (áá¬áá¬áá±á¬á·ááºáá²á áááºážááá¬ážááŸááºážá áááºááŒáá·áº) ááá¯ááá¬ážáááºáá¯ááºáá±á¬ááºááŒá®áž âáááá¯ááááºááœááºážáá¶áá¬ážááŒááºážâ ááá¯ááºáá«áá áááºááá·áºá¡ááá®áá±ážááŸááºážá¡ááºááááºááá¯áááᯠááœáŸáá·áºáááºááŒááºážááẠááá¯ážááœá¬ážáá±á¬á¡áá»áá¯ážáááºáá»á¬ážááᯠááŒá áºáá±á«áºá á±ááá¯ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá¬ááºáá¯á¶ááœáẠáááºááẠPHP 7.0 ááá¯á·ááŒá±á¬ááºážááŒá®áž áá¯ááºááᯠááá¯ááºáá»á±á¬áá®ááœá± ááŒááºáááºáá±ážáá¬ážááŒá®ážááŒá áºááẠ- ááá¯á·áá±á¬áẠá¡áá»áá¯á·áá±á¬ PHP (5.5) á¡áá±á¬ááºážáá»á¬ážááŒáá·áº áá¯ááºáá¯ááºáá¬ážááá·áº áááºážáá¡ááœááºá¡ááŒááºááẠáá áºá á¯á¶áá áºáŠážááᯠá¡á¶á·á¡á¬ážááá·áºá á±áááºááŒá áºáááºá á áá¬ážááŒááºáá¬ážááŸááºážááœáẠááŒá®ážáá¬ážáá±á¬ááŒá±á¬ááºážáá²ááŸá¯áá áºáá¯ááᯠáááºááá±á·ááá¯ááºáá±á¬áºáááºáž "á¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááœáẠáá¬ááºáááºááẠááŸááá±áááº" ááŒá áºáááº- á¡á¶á·á¡á¬ážááá·áºá áá¬ááŸá¬ áááºááá·áºááŸá®ááá¯ááŸá¯áá¡áá±ážá¡ááœá²ááœááºážáá¶ááŸá¯ááœáẠááŒá áºááá¯ááºáááºá
áá®ááŒá¿áá¬ááᯠááŒá±ááŸááºážááá¯á· áá»ááºážáááºáááºážááá¯á· áá±á«áºáááºá IaC (Infrastructure as Codeá âInfrastructure as Codeâ) ááŸáá·áº á¡ááá®áá±ážááŸááºážáá¯ááºááŸáá·áºá¡áá° á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááá¯ááºáᬠááá¯á¡ááºáá»ááºáá»á¬ážááᯠááááºážáááºážááŒááºáž áá«áááºáááºá áááºážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº developer áá»á¬ážááŸáá·áº DevOps áá»áœááºážáá»ááºáá°áá»á¬ážááẠáá°áá®áá±á¬ Git á¡ááá®áá±ážááŸááºážááá¯ááŸá±á¬ááºáá¯á¶ááŒáá·áº áá¯ááºáá±á¬ááºááá¯ááºáá±á¬áºáááºáž áááºážáááá°áá®áá±á¬á¡á áááºá¡ááá¯ááºážáá»á¬ážááœáẠáá¯ááºáá±á¬ááºááá¯ááºáááºá á€áá¯ááºá០Docker áá¯á¶ááᯠGit ááœáẠáááºáá®ážáá¬ážááŒá®áž á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á áá®ážááŒá¬ážá¡áá»ááºá¡á¬ážáá¯á¶ážááᯠááá·áºááœááºážá ááºážá á¬ážáᬠá¡ááá®áá±ážááŸááºážááᯠá¡áá¯á¶ážááŒá¯áá¬ážáááºá ááá¯ážááá¯ážááŸááºážááŸááºážááŒá±á¬ááá»áŸááºá áá¯á¶áá»á¬ážá á¯á ááºážááŸá¯á¡ááœáẠscripts (á ááºážáááºážáá»á¬áž) áá»á¬ážááẠsource code ááŸáá·áºáá°áá®áá±á¬ repository ááœááºááŸáááá·áºááŒá®áž áá±á«ááºážá ááºáá¬ážáááºá
á¡ááœáŸá¬áá±á«ááºážá
á¯á¶ á¡ááá®áá±ážááŸááºážáááºáá±á¬ááºáá¯á¶áááºáá±á¬ááºáá¯á¶ááœáẠ- á¥ááá¬á¡á¬ážááŒáá·áºá Docker ááœááºááááºáá¬á¡ááœááºáž áá¯ááºáá±á¬ááºáá±áá±á¬ á¡ááá®áá±ážááŸááºážáá
áºáá¯áááŸá±á·ááœáẠnginx ááŸáááẠ- Docker áá¯á¶áá»á¬ážááᯠá¡ááœáŸá¬áá
áºáá¯á
á®á¡ááœáẠGit ááŸá áá¯ááºá០áááºáá®ážááá«áááºá ááá¯á·áá±á¬áẠááááá¯á¶ááœáẠá
áá¬ážááŒááºááŸáá·áº á¡ááŒá¬áž "á¡áá®ážáááº" ááŸá®ááá¯ááŸá¯áá»á¬ážáá«ááŸááá±á¬ á¡ááºááºáá
áºáá¯áá«áááºáááºááŒá
áºááŒá®áž áá¯ááááá¯á¶ááœáẠáá±á
á®ážááŒá±á¬ááºáž nginx áá«áááºáááºááŒá
áºáááºá
Docker áá¯á¶áá»á¬ážá Git ááŸáá·áº áááºááœááºááŸá¯
áá»áœááºá¯ááºááá¯á·ááẠGit ááŸá á¯áá±á¬ááºážáá¬ážáá±á¬ Docker áá¯á¶á¡á¬ážáá¯á¶ážááᯠá¡áá»áá¯ážá¡á á¬ážááŸá áºáá¯á¡ááŒá Ạáá¬áá®ááŸáá·áº áá¯ááºááœáŸááºáááºá áá¬áá®áá¯á¶áá»á¬áž Git ááŸá áá¬áááœá²á á¡áááºááŒáá·áº áááºáá¯ááºáá¬ážáá±á¬á áá±á¬ááºáá áºááŒááẠááœááºááá·áºááŒáá·áº áá±ážáááºááá¯ááºááŒá®áž á¡á ááºážááŒáá·áºááŸá¯áááºá¡ááœááºáᬠ(áá¯ááºáá¯ááºáááºááá¯ááº) áá¯ááºáá±ážáá«áááºá á€áááºááŸá¬ áá¯ááºáá±áá°áá»á¬ážááŸáá·áº áááºážááá¯á·á á¡áááááœá¬ááŒá¬ážáá»ááºááŒá áºáááº- áááºážááá¯á·ááœáẠáááºááá·áºáááá»áá±á¬ áááááááºááŒá áºáááºááᯠáááºááááá«á
áá¬áá®áá¯á¶áá»á¬ážá¡ááŒá Ạá á¯áá±á¬ááºážááẠá¡áááá¹áá¬ááºááŸááá«áááº- áá¬á áá¬áá¬áááœá² (áá¬á áá¬á áááºááŸááá¬ážááŸááºážááᯠá¡áááºáááŒááºááŒáá·áºááŸá¯ááá¯ááºá á±ááẠáá®ážááŒá¬ážááá¯ááºáá áºáá¯ááá¯á· á¡ááá¯á¡áá»á±á¬áẠááŸááá·áºáá¯ááºááá¯ááºáááº)á áá¯ááºáá±ááŸá¯áá»á¬ážáá«ááŸáááá·áº á¡ááá¯ááºážá¡áááºáá»á¬ážá áá®ážááŒá¬ážáááºážáá áºáá®ááœááºááŸá¯á¡ááá¯ááºážá¡áááºáá»á¬ážá
áá¬áá®áá¯ááºáá¯á¶áá»á¬ážááᯠá¡á
ááºážááŒáá·áºááŸá¯ááŒá®ážáá±á¬áẠáá¯ááºáá¯ááºáá±ážááá¯á· áá¬áá¬ááŒááºááẠááá¯á¡ááºáá¬áá±á¬á¡áá«á developer áá»á¬ážááẠá¡áá»áá¯á·áá±á¬ tag áá
áºáá¯ááᯠááá·áºááœááºážáá²á·áááºá Tag ááŒáá·áº á¡ááá¯á¡áá»á±á¬áẠá
á¯áá±á¬ááºážáááºá áá¯á¶ááááºááá¯áá¯ááºáá«á (áááºážá tag ááẠGit á០tag ááŸáá·áº ááá¯ááºáá®áááº) ááŸáá·áº á¡ááá·áºááá¯á· ááŸááá·áºááá¯ááºáá«áááºá á¡áááºá¡ááœá±ážááŒáá·áºáá®áá±á¬áá¬áá០á¡á±á¬ááºá¡á±á¬ááºááŒááºááŒáẠá
á
áºáá±ážááŒá®ážáá«á áá¯ááºáá¯ááºááŸá¯ááá¯á· áá±á¬ááºááœá¬ážáááºááŒá
áºáááºá
dapp
áá±á¬áºááŒáá¬ážááá·áºá¡áá¬á¡á¬ážáá¯á¶ážááᯠ(á áááºááŒáá·áºáá»áááŒááºážá áá¯ááºáá¯á¶á á¯á ááºážááŸá¯á áá±á¬ááºáááºááœá²ááááºážááááºážááŸá¯) ááẠBash script áá»á¬ážááŸáá·áº á¡ááŒá¬áž "improvised" áááááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááœááºáááºá áœá¬ á¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºáá«áááºá áá«áá±ááá·áº áá«ááá¯áá¯ááºááẠáá áºáá»áááºáá»áááºááŸá¬ á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á ááŒá®ážá áœá¬áá±á¬ ááŸá¯ááºááœá±ážááŸá¯ááœá±áá²á· ááááºážáá»á¯ááºááá¯ááºááŸá¯ áá¶á·áá»ááºážááŸá¯ááᯠááŒá áºáá±á«áºá á±áá«áááá·áºáááºá áá«ááá¯áá¬ážáááºááá±á¬áá±á«ááºááŒá®áž CI/CD áááºáá±á¬ááºááá¯á·á¡ááœáẠáá»áœááºá¯ááºááá¯á·áá²á·ááá¯ááºááá¯áẠá¡áá°ážááŒá¯ Workflow utility ááᯠáááºáá®ážááá¯á· áá¬áá²á·áá«áááºá dapp.
áááºážáá¡áááºážá¡ááŒá
áºáá¯ááºááᯠRuby ááŒáá·áºáá±ážáá¬ážáá¬ážááŒá®ážá open source ááŸáá·áºáá¯ááºáá±áááºá
á©áá¯ááºá 13á 2019 ááœáẠá¡ááºááááºáá¯ááºáá¬ážáááº- áááºááŸá ááá±á¬áá»ááºáá
áºáá¯áá«á dapp á¡áááºááŒá±á¬ááºážáá²á·áááºá
Kubernetes
ááá±á¬áºáááºááŸááºááẠáááºáááºážáá»ááºááœáẠáááá¬áááºááŸá¬ážáá±á¬ á¡ááá¡ááŸááºááŒá¯ááŸá¯ áááŸááá¬ážááŒá®ážááŒá áºááá·áº á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ Open Source áááááá¬áá áºáá¯ááŒá áºáááºá KubernetesDocker á á®áá¶ááá·áºááœá²ááŸá¯á¡á á¯á¡áá±ážáá áºáá¯á Docker áá±á«áºááœááºáááºáá±á¬ááºáá¬ážáá±á¬ááá±á¬áá»ááºáá»á¬ážááááºáááºááŸá¯ááœááºáááºážáá¡áá¯á¶ážááŒá¯ááŸá¯á¡ááŒá±á¬ááºážá¡áá¬áááºá¡á á®áááºáá¶á á¬ááá±á¬ááºááá¯áá»á±á¬áºááœááºáá±á¬ááŒá±á¬áá·áºáááºááŒáá»ááºáááºá áááºáááºá á¬ážá áá¬áá±á¬ááºážáá±á¬á¡ááºá¹áá«áááºá¡áá»áá¯á·áááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááºááá¯ááá·áºáááºáá¬ážáááºá
ááŒáá·áºáá»ááááºá¡ááœáẠKubernetes á áááºážááŸááºážáááº-
- á¡áááºááá·áºá á áºáá±ážááŒááºáž â á¡ááá®áá±ážááŸááºážááá¬ážááŸááºážá¡áá áºá á¡áááºááá·áºá¡á¬ážá á áºáá±ážááŒááºáž (áááºážááá¯á·áááºážááŒá±á¬ááºážááŒá±á¬ááºážáááº);
- rolling update - ááœááºááááºáá¬á¡á á¯á¡áá±ážááœáẠáááºááá¯ááºáá¯ááºáá¯á¶ááœááºážáá¶ááŒááºáž (ááááºááŒááºážá á¡ááºááááºáá¯ááºááŒááºážá á áááºááŒááºážá¡ááœáẠááŒááºáááºááŒááºážá áááºážááŒá±á¬ááºážááŒá±á¬ááºážááŒááºáž)
- synchronous update - ááœá²ááŒá¬ážáá±á¬áá»ááºážáááºááŸá¯ááŒáá·áº á¡á á¯á¡áá±ážáá áºáá¯á¡ááœááºáž áá¯ááºáá¯á¶áá áºáá¯á¶ááᯠá¡ááºááááºáá¯ááºááŒááºáž- áááááá¯ááºážááœáẠááœááºááááºáá¬áá áºáááºááœááºá
- Canary áá¯ááºáá±ááŸá¯áá»á¬áž - ááœá²ááœá²áá»ááºáá»á¬ážááᯠá á±á¬áá·áºááŒáá·áºááẠááá·áºáááºáá¬ážáá±á¬ (á¡áá±áž) ááœááºááááºáá¬áá»á¬ážáá±á«áºááœáẠáá¯á¶á¡áá áºááᯠá áááºááŒááºážá
á ááºáááºáááŒáẠááá¯á·áá±á¬ááºááŒááºážááẠáá¬ážááŸááºážá¡áá áºááᯠáá¯ááºáá±áá¯á¶áá¬ááá Kubernetes ááœáẠáá±á¬ááºáááºááœá² á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ ááŒá¯ááŒááºááááºážááááºážááŸá¯á¡ááœáẠá áœááºážáááºáá»á¬ážá áœá¬ ááŸááááº- ááœááºááááºáá¬á¡á¬ážáá¯á¶ážá¡ááœáẠáááºáááºáá¬ážáá±á¬ á á±á¬áá·áºááŒáá·áºááŒááºážááŸáá·áº ááŸááºáááºážááœááºážááŒááºážá á¡ááá¯á¡áá»á±á¬áẠá¡ááá¯ááºážá¡áá¬áá»á²á·ááŒááºáž á áááºááŒáá·áº á¡á¬ážáá¯á¶ážááẠá¡áá¯ááºááŒá áºáá±ááŒá®ááŒá áºááŒá®áž ááá·áºáá»á±á¬áºáá±á¬á á±á¬áá·áºááá¯ááºážáá±áá¯á¶áá¬ááŒá áºáááºá ááá·áºáá¯ááºáááºážá ááºáá»á¬ážááœáẠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážá
áá±á¬ááºáá¯á¶ážá¡ááŒá¶ááŒá¯áá»ááºáá»á¬áž
- Docker ááá¯áá¯á¶ážáá«á
- ááá·áºááá¯á¡ááºáá»ááºá¡á¬ážáá¯á¶ážá¡ááœáẠDocker áá¯á¶áá»á¬ážááᯠáááºáá®ážáá«á
- âInfrastructure is codeâ áá°áá±á¬áá°ááᯠááá¯ááºáá¬áá«á
- Git ááᯠDocker ááá¯á· ááá·áºááºáá»áááºáá«á
- ááŒáá·áºáá»áááŸá¯á¡á á®á¡á á¥áºááᯠááááºážááŸááá«á
- á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ ááááºáá±á¬ááºáž (Kubernetes ááá¯á·ááá¯áẠá¡ááŒá¬áž) ááá¯áá¯á¶ážáá«á
áá®áá®ááá¯áá»á¬ážááŸáá·áº áááá¯ááºáá»á¬áž
áá»á±á¬áºááŒá±ááœá²á០áá®áá®ááᯠ(áá
áºáá¬áá®ááá·áº)
á¡á
á®áááºáá¶á
á¬áááºááŒáá»ááº-
PS
áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºááŸá á¡ááŒá±á¬ááºážá¡áá¬ááá¯ááºáᬠá¡ááŒá¬ážá¡á á®áááºáá¶á á¬áá»á¬áž-
- «
werf - Kubernetes ááŸá CI/CD á¡ááœáẠáá»áœááºá¯ááºááá¯á·ááááááᬠ(ááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááºááŸáá·áº áá®áá®ááá¯á¡á á®áááºáá¶á á¬) » (Dmitry Stolyarov; áá±á 27 áááºá 2019 áá¯ááŸá ẠDevOpsConf ááœááº); - «
áá±áá¬áá±á·á áºáá»á¬ážááŸáá·áº Kubernetes » (Dmitry Stolyarov; ááá¯áááºáᬠ8á 2018 ááœáẠHighLoad++); - «
Kubernetes ááŸáá·áº GitLab ááŒáá·áº á¡áá±á¬ááºážáá¯á¶áž á¡áá±á·á¡áá»áá·áºáá»á¬áž CI/CD » (Dmitry Stolyarov; ááá¯áááºáᬠ7á 2017 ááœáẠHighLoad++); - «
ááá±á¬áá»ááºáááºáá»á¬ážááœáẠKubernetes ááŸáá·áº áá»áœááºá¯ááºááá¯á·áá¡ááœá±á·á¡ááŒá¯á¶ » (Dmitry Stolyarov; ááœááºá 6á 2017 ááœáẠRootConf).
source: www.habr.com