áááºáá«ááá²áá²áá¯á¶ážááá¯ááºáá±á¬ á
á¬áá¬ážáá±á¬áºáááºááœáẠáá¯ááºá¡ááŒá
Ạá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠááá¯ááºá
á¬ážááŒá¯ááŒááºážááẠááŒáœááºáá»á¬ážááŸáá·áº áá±á¬ááŸá±á¬á
áá¬áááá¯áá±á¬ á
áá
áºáá»á¬ážá¡ááœáẠááá¯ážááŸááºážáá±á¬ á¡áá±á¬ááºážáá¯á¶ážá¡áá±á·á¡áá»áá·áºáá
áºáá¯ááŒá
áºáááºá á€á¡áá±á·á¡áá»áá·áºáááº-
Terraform ááŸáá·áº CloudFormation ááŸáá·áº á¡ááœá±á·á¡ááŒá¯á¶ááᯠááŸáá¯ááºážááŸááºááŒááºážá
ááá±á¬ááºáá®
Terraform ááẠááŒá±á¬ááºá áá¬áá±á¬ááºážáááºá
áá®áá¬áá±á¬á·ááºáá²
Terraform ááẠáá¬ážááŸááºáž 1.0 ááá¯ááẠááá¯ááºááŒááºááá±ážáá±á¬ááŒá±á¬áá·áº áááºážááᯠá¡áá¯á¶ážáááŒá¯ááẠá¡ááŒá±á¬ááºážááŒáá»ááºáá±á¬ááºážááŒá
áºáááºá ááááá¯á¶áž ááá¯ááºááá¯ááºá
ááºážááŒáá·áºááááºážá á¡áá»á¬ážááŒá®áž ááŒá±á¬ááºážáá²ááœá¬ážáá²á·áá±ááá·áº á¡á²áá®áá¯ááºážááá±á¬á· terraform apply
ááœááºážáá¶ááŸá¯áá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážááŒá®ážáá±á¬áẠááá¯á·ááá¯áẠááŸá
áºá¡áááºážáááºááŒá¬ á¡áá¯á¶ážááŒá¯ááŒá®ážáá±á¬áẠáá»ááºááœá¬ážáááºáááºá "á¡áá¯áá±á¬á· á¡á¬ážáá¯á¶ážá ááá°áá°áž" ááá¯á· ááŒá±á¬áá±ááá·áº... áá°ááá¯ááºážááŒá±á¬áá±ááŒáá¯á¶áá²á ááá¯ááºáá°ážáá¬áž? áááºážááá¯á·ááẠááá·áºáá»á±á¬áºáá±á¬áºáááºáž ááááºáá¬ážááŸááºážáá»á¬ážááŸáá·áº ááá¯ááºáá®ááŸá¯áááŸááá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááŸáááŒá®ážá á¡áááºážá¡ááŒá
áºá
ááá¯ážááá¯ááºáá»á¬ážá á¡áá¬ážá¡ááá¯ááŸáá·áº abstractions áá»á¬ážááẠááá¯áá»áœááºá¯ááºááá¯á·ááá¯á¡ááºáá±ááá·áºá¡áá¬áááºááŒá
áºááá²á·ááá¯á· áá¶á
á¬ážááááºá áá°áááá¬á ááá¯áá±á¬ááºážáá¬áá¯á¶ááááºá áá«áá±ááá·áº... :-0
á¡ááŒá¬ážáá áºáááºááœááºá AWS ááẠáá±á¬ááºááŒá±á¬ááºážááŒááºááá¯ááºáááºááŸá¯ááᯠááááºážááááºážáá¬ážááá·áº á¡áá¯ááºáá±á¬ááºážáá áºáá¯ááᯠáá¯ááºáá±á¬ááºáá¬ážáááºá áááºážááá¯á·á áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡ááœá²á·á¡á ááºážá¡ááœááºáž áááŒá¬áá á á±á·á á±á·á ááºá áẠá ááºážáááºááŒá®ážááŸáᬠá¡áááºááŒá±á¬ááºážáᬠáá¯ááºáá±ááŒááºážááŒá±á¬áá·áº ááŒá áºááá¯ááºáááºá áá«ááŒá±á¬áá·áº âáá°ááá¯á· ááŒáá¯ážá á¬ážáá²á·ááŒáááºâ ááá¯á· á¡áááá¹áá«ááºááá«áááºá AWS áá²á·ááá¯á· ááœá²ááŒá¬ážááŒá®áž ááŸá¯ááºááœá±ážááá·áº á áá áºáá áºáá¯á¡ááœáẠAPI áá»á¬ážááŸáá·áº áá±á¬ááºááŒááºááá¯ááºáááºááŸá¯ááᯠááááºážááááºážááŒááºážááẠááá¯á¶ááá¯ááºáá±á¬ááºá¡á±á¬áẠáááºáá²áááºá á¡áá»á¬ážáá°ááŸá¬á¡áá¯á¶ážááŒá¯áá±á¬ API áá»á¬ážááᯠááááºážááááºážáá¬ážáá°ážáá°ááá¯ááºáž ááŸá áºáá±á«ááºážáá»á¬ážá áœá¬ áááºáá»áŸáááºáá²áááºááᯠáá¬ážáááºááá·áºáááºá ááá¯á·áá±á¬áº áá»áœááºá¯ááºáááŸááºáá¬ááºáá²ááœáẠCloudFormation áá¡ááŒá¯á¡áá°ááẠááŸá áºáá»á¬ážáá áºáá»áŸá±á¬áẠáááºáá±á¬á¡áá«á០áááŒá±á¬ááºážáá²áá²á·áá«á
ááŒá±áá±á¬ááºáá²á·ááœá±á·áá«... á¡á²áá« áá»ááºáááºáá²á
áá»áœááºáá±á¬áºááááá±á¬ááºáá±á¬á· á¡áááºážá¡ááŒá áºááᯠáá»ááºááá¯ááºáá«á á¡ááŒááºáá° áááºá CF á¡á á¯á០CloudFormation stack ááẠáááŒá áºááá¯ááºáá«á Terraform ááŸá¬áááºáž á¡áá¬ážáá°áá«áá²á áááºážááẠááá·áºá¡á¬áž áááºá stack áá²ááá¯á· ááŸáááŒá®ážáá¬ážá¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºááœááºážááá¯ááºá á±áá«áááºá áá¯ááºáá±á¬ááºáá»ááºááẠá¡á¶á·á©á áá¬áᯠááá¯ááá¯ááºáá±á¬áºáááºáž ááŒá®ážáá¬ážáá±á¬ á áœááºážá¡á¬ážááŒáá·áº ááŒá®ážáá¬ážáá±á¬ áá¬ááẠááŸááá¬áá«áááºá áááºááẠstack ááá¯á· áááºážááŒá áºáá áºáá¯ááá·áºáááºáᬠááá¯á¡ááºááŒá®áž áááºááẠáááºá stack ááŸáá·áº áá¯ááºáá±á¬ááºáá±áá»áááºááœááºá áááºááẠá€á¡áááºážá¡ááŒá áºááᯠáá»ááºááŒááºáž ááá¯á·ááá¯áẠááŒá±á¬ááºážáá²ááŒááºáž áááŒá¯ááá¯ááºáá«á áá áºáá±á·áááááŒááºáááºáá¬áááºá Twitch ááœáẠáá áºáá±á·ááœáẠáá áºá á¯á¶áá áºáŠážááẠá¡ááŒá¬ážáá°áá áºáŠážá AWS áá¯á¶ááŒá¯á¶áá±ážá¡ááœá²á·á¡á¬áž áááºážááá¯á·áááá¯ááºááá¯áẠTerraform stack áá²ááá¯á· ááá±á¬áºáá áááºááœááºážáá²á·áááºá áá»áœááºáá±á¬áº command áá±á¬áºáá±á¬áºáá»á¬ážáá»á¬ážááᯠááá¯ááºááá·áºááá¯ááºááŒá®áž... áá¯á¶ááŒá¯á¶áá±ážá¡ááœá²á· (á¡áááºáááºážááŒá±á¬ááºážáá²á·á¡áá°) áá»á±á¬ááºááœá¬ážáááºá
Terraform á¡áááºážáá±á¬ááºážáááºá
áááŒáá·áºá á¯á¶áá±á¬ááŒááºáááºáá»á¬ážá០ááŒááºáááºááá°ááŒááºážá
áá áºáá«áá áºáá¶ááœáẠCloudFormation ááẠááŒááºáááºáá áºáá¯á០á¡ááŒá¬ážáá áºáá¯ááá¯á· áá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž áá°ážááŒá±á¬ááºážááẠáá»ááºááœááºáááºá áá áºáá»áááºáááºážááŸá¬ááẠáá°ááẠááááºáá áºáá¯ááá¯á· ááŒááºááœá¬ážááẠááŒáá¯ážá á¬ážáááá·áºáááºá áá«á á¡ááŒá²áááºážáááŒá áºááá¯ááºááá¯á· ááá¬ážá áá¬áá«á áá±á¬ááºááá¯ááºážááŸá¬ ááŒá áºáá»ááºáá²á·áá¬ááœá±ááᯠá¡ááŸá¬ážááŸá¬áᬠáá±á¬áºáá±á¬áºááŒá±á¬ááºá áá¬áá±á¬ááºážáá«ááẠ- CloudFormation á áááºážááᯠáááºááºáá¶ááá¬ááᯠáá»á±á¬áºááœáŸááºá á±ááŸá¬áá¬ážááá¯áᬠáááºáááááá¯ááºáá«áá°áž - á¡á²áá«ááᯠááŒááºááá¯á·áá² ááŒá áºáá«áááºá ááááºá¡ááŒá±á¡áá±ááá¯á· ááŒááºááœá¬ážááá¯ááºáááºááŒá áºá á± ááá¯á¶ážááŒááºááá¯ááºáááºááᯠáá°ááááºááááááᯠáá¯á¶ááŸááºá¡á¬ážááŒáá·áº á¡á¶á·ááœááºá¡ááŸá¯ááᯠáá¬áá®áá±á«ááºážáá»á¬ážá áœá¬ á á±á¬áá·áºááá¯ááºážáá±ááááºá
á¡ááŒá¬ážáá áºáááºááœááºá Terraform ááẠáá¡á±á¬ááºááŒááºáá±á¬á¡áá°ážá¡ááŒá±á¬ááºážáá»á¬ážá០ááá¯ááá±á¬ááºážááœááºá áœá¬ ááŒááºáááºáá±á¬ááºážááœááºáá¬áá±á·ááŸáááŒá®áž á¡ááá·áºááŒáá·áº á¡ááŸá¬ážááŸá¬ááŒááºáááááá¬áá»á¬ážááᯠáá±ážáá±á¬ááºáá«áááºá
á á¬ááœááºá á¬áááºážá¡ááŒá±á¡áá±ááá¯á· ááá¯ááá¯ááŸááºážáááºážá áœá¬ ááŒá±á¬ááºážáá²ááŸá¯áá»á¬áž
âáá±á¬ááºážááŒá®á áá»áááºááœááºáá»áŸá¬ááᯠááœá²áá»áá«á áááºážááŒá±á¬ááºážáá±ááŒá®á áá«áá±áááºá·áááºááá¯?"
â á áá¯ážááááºáá±á¬ á¡ááºáá»ááºáá®áá¬á âáááºáá¶â ááá¯ááºááᯠááŸáááºááẠá¡ááá·áºááŒá áºáá±áá«ááŒá®á
ááááºáááºážáá¶áá«ááºáá áºáá¯ááá·áºááŒááºáž ááá¯á·ááá¯áẠáá¯á¶ááŒá¯á¶áá±ážá¡ááœá²á·ááᯠááŒá±á¬ááºážáá²ááŒááºážáá²á·ááá¯á·áá±á¬ CloudFormation stack ááŸá load balancer ááŒáá·áº áá»áœááºážáá»ááºá áœá¬ ááá¯ááºááœááºáá¯ááºáá±á¬ááºááẠááá¯á¡ááºáá«áááºá ClouFormation ááẠááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠáá¶á·áá»ááºážá áœá¬ááŒááááºá áá»áœááºá¯ááºááẠááá¯á¡ááºáá±á¬á¡áá¬ááᯠáá»ááºááá áºáá² áááá¯á¡ááºáá±á¬á¡áá¬ááᯠáááá·áºáá¬ážááŒá±á¬ááºáž áá±áá»á¬á á±ááẠyaml ááá¯ááºááᯠáááºááŒáááºááŒááºá á áºáá±ážáá«á
Terraform ááẠá€ááá á¹á ááœáẠááá¯ááá¯ááœáá·áºáááºážáááºá ááá«ááᶠáá°ááẠá¡ááœááºááœáá·áºáááºážááẠ(áááºáááº- áá»ááºážá áá¬áá±á¬ááºážáááº)á áá¶áá±á¬ááºážáá±á¬ááºáá áœá¬á áá±á¬ááºáá¯á¶ážááœááºáá¬ážááŸááºážááœáẠááŒá±á¬ááºážáá²áá±áá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠá¡ááá¡áá»ááŒááºááá¯ááºá á±áááºá¡ááœáẠááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ áá»ááºááŸá¬ááŒááºáá»á¬áž áá«áááºáá«áááºá
ááŒá±á¬ááºážááœááºááŒááºááœááº
áá±á¬á·áá²ááᯠáá±á¬ááºááŒááºáá±ážáá«á
ááŒááºááŒááºáá¬ážáá¬ážááŒá±á¬ááá»áŸáẠáá¬ááŸááºáá¶áá±á¬á·ááºáá²ááºá á¡áá±ážááŒá®ážáá¯á¶ážááá¹ááá¬ááŸá¬ ááŒá±á¬ááºážáá²ááŸá¯ááᯠááá¯ááºáá»á±á¬áá®ááœá±ááŒá áºá¡á±á¬áẠáá¯ááºáá±á¬ááºááá¯ááºááŒááºážááŒá áºáááºá áááºááá·áºáá±á¬á·áá²ááºááá¯áááᯠáá±á¬ááºááŒááºáá±ážáá«á "ááá¯ážááŸááºážáá±á¬" áááºáá±á¬ááºááŸá¯ááá¯áá°ááŒááºážááŒáá·áº áá»áœááºá¯ááºááẠáááŒá¬ááááá¯áááᯠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠááŒá¯áá¯ááºáá²á·ááŒá®ážá ááá¯á·áá±á¬áẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠCloudFormation ááá¯á·ááá¯áẠTerraform á¡ááœááºáá áºáá¯áá²ááá¯á· á áááºááá·áºááœááºážáá²á·áááºá áá±áá»á¬áá«áááºá áá¡ááŒá¬ááœáẠáá»áœááºá¯ááºááẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠááŸá¬ážááœááºážá áœá¬ áá¬ážáááºáá²á·ááŒá±á¬ááºáž áá¯ááºáá±á¬áºááŒááá²á·ááŒá®ážá áááºáá±á¬ááºááŸá¯ááẠááááºáá±á¬á· áááá¯ážááŸááºážáá«á ááá¯áá° áá»áœááºá¯ááºááẠááŒá®ážáá¬ážáá±á¬ á¡á á¯á¡áá±ážááŒá®ážááᯠáá±ážáááºáá±á¬ á¡á áááºá¡ááá¯ááºážáá»á¬ážá¡ááŒá áºááá¯á· áá áºáááºážáááºážááŒáá·áº ááœá²ááẠááá¯á¡ááºáá«áááºá ááẠCloudFormation ááŸáá·áºá¡áá¯ááºáá¯ááºáá±á¬á¡áá«á ááŸáááŒá®ážáá¬áž stack ááᯠáŠážá áœá¬ááŒááºáááºáááºáá®ážááŒááºážááŒáá·áºáᬠáá¯ááºáá±á¬ááºááá¯ááºáá±á¬áºáááºáž áá»áœááºá¯ááºááá±áá¬áá±á·á áºáá»á¬ážááŸáá·áº áááºážááᯠáá»áœááºá¯ááºááá¯ááºáá«á á¡ááŒá¬ážáá áºáááºááœááºáá° Terraform ááẠá¡á á¯á¡áá±ážááᯠááœá²ááŒááºážá áááºááŒá¬á ááá¯ááá¯áá¬ážáááºááá¯ááºáá±á¬ áá±ážáááºáá±á¬á¡ááá¯ááºážáá»á¬ážá¡ááŒá áºááá¯á· ááœá²áá¯ááºááá¯ááºá á±áá²á·áááºá
git ááœáẠáá±á¬áºáá»á°ážáá»á¬áž
Terraform áá¯ááºááᯠstacks á¡áá»á¬ážá¡ááŒá¬ážááœááºáá»áŸáá±ááŒááºážááẠCloudFormation áá¯ááºááá¯áá»áŸáá±ááŒááºážáááºááá¯ááá¯ááœááºáá°áááºá Terraform ááŒáá·áºá áááºááẠáááºááá¯ááºááᯠgit repository ááœáẠááá·áºááœááºážááá¯ááºááŒá®áž semantic áá¬ážááŸááºážááááºážáá»á¯ááºááŸá¯ááŒáá·áº áááºážááᯠáááºáá±á¬ááºááá¯ááºáááºá á€ááá¯ááŸá±á¬ááºáááºážááá¯á·áááºáá±á¬ááºááœáá·áºááŸááá°ááá¯ááºážááẠáá»áŸáá±áá¬ážáá±á¬áá¯ááºááᯠááŒááºáááºá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá CloudFormation ááá®áá»áŸááŸá¯ááẠS3 ááŒá áºáááºá ááá¯á·áá±á¬áºáááºážáááºáá°áá®áá±á¬á¡áá»áá¯ážáá¶á á¬ážááœáá·áºáá»á¬ážáááŸááá«á á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áºáá»áœááºá¯ááºááá¯á·ááẠgit ááᯠS3 ááá»ááºááŸá¬áá¬á¡ááœááºáá¯á¶ážáá áœáá·áºááœáŸááºááá·áºááá·áºá¡ááŒá±á¬ááºážááŒáá»ááºáááŸááá«á
á¡ááœá²á·á¡á ááºážááẠááŒá®ážááœá¬ážáá¬ááŒá®áž áá¯á¶á¡á á¯á¡áá±ážáá»á¬ážááᯠáá»áŸáá±ááá¯ááºá áœááºážááẠá¡áá±ážááŒá®ážáá±á¬á¡ááá·áºááá¯á· áá±á¬ááºááŸáááœá¬ážáá«áááºá Terraform ááẠá€á¡áá¬á¡á¬ážáá¯á¶ážááᯠááœááºáá°ááŒá®áž ááá¬áááŒá áºá á±áááºá ááá¯á·áá±á¬áº CloudFormation ááẠá€áá²á·ááá¯á·áá¯ááºáá±á¬ááºááŒááºážáá»áá¯ážááááŸáááá¯ááºáá®ááœáẠááá·áºá¡á¬áž ááŒáá¯ážáá»á¬ážááŸáááá·áºáá¯ááºáááºá á±áááºááŒá áºáááºá
áá¯ááºá¡ááŒá Ạáá¯ááºáá±á¬ááºáá»ááºáá»á¬áž
âáá¬ááºááœáŸááºážáá±ážááŒáá¡á±á¬ááºáâ
Terraform á ááºáá®ážááᯠááá®ááœááºáá® á ááŸá áºá¡ááá¯ááœáẠá¡ááºáá»ááºáá®áá¬áá áºáŠážá
áá±á¬á·ááºáá²ááºááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŸáá·áºáááºáááºá Go ááá¯á·ááá¯áẠJava áááá¯ááááºááẠáá¯ááºáá áºáá¯áááºážááá¯ááºáá«á
áá¯ááºá¡ááŒá
áºáá¯ááº
áá¯ááºáá±á¬ááºáááá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáááºáž ááŸááá«áááºá
Code ááá¯á¡ááŒá
áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶
áá«áá±ááá·áº áá°á áááºááá¬áá¬áá²á áááºááá¯á á±á¬áá·áºááŒáá·áºáááá²á áááºážáá²á·áá¯ááºá áááºááŸá¬áá²á áá±á¬á·ááºáá²áá±ážáá¬ážáá°áá»á¬ážááẠá¡áá¯á¶ážááŒá¯ááœáá·áºááœáá·áºááŒá¯áá»áẠááá¯á¡ááºáá«ááá¬ážá
Code á¡ááŒá
Ạáá¯ááºáá±á¬ááºáá»ááºáá»á¬áž
áá±á¬á·ááºáá²ááºáá±ážáá¬ážáá°ááŒá áºáááŒááºážááẠáá¯ááºáá±ážááẠáááá¯ááá¯áá«á
AWS áá áºáá¯áááºážááá¯ááºáá«- áááºááẠá¡ááŒá¬ážáááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá±áá±áááºá SignalFxá PagerDuty ááá¯á·ááá¯áẠGithubá ááá·áºááœáẠCI/CD á¡ááœáẠá¡ááœááºážááá¯ááºáž Jenkins áá¬áá¬áá áºáᯠááá¯á·ááá¯áẠá¡ááœááºážááá¯ááºáž Grafana áááºááŸáºáá¯ááºáá áºáᯠááŸááá±á¬ááºážááŸáááá¯ááºáá«áááºá Infra as Code ááᯠááá°áá®áá±á¬ á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážááŒáá·áº ááœá±ážáá»ááºáá¬ážááŒá®áž áá áºáá¯á á®ááẠáá±á¬á·ááºáá²ááºááŸáá·áº áááºáááºááá·áº á¡áá¬á¡á¬ážáá¯á¶ážá¡ááœáẠá¡áá®á¡áá»áŸ á¡áá±ážááŒá®ážáá«áááºá
áá»áœááºáá±á¬áº Twitch ááŸá¬ á¡áá¯ááºáá¯ááºáá¯ááºážá Amazon áá²á· áá±á¬á ááºááá·áºááœááºážáá¬ážáá²á· AWS á áá áºááœá±áá²á· áááºáá±á¬ááºááŸá¯ááœá±ááᯠá¡ááŸáááºááŒáŸáá·áºáá²á·áá«áááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá±ážá á¬ážáááºáá±á¬ááºááŸá¯áá»á¬ážá áœá¬ááᯠáá¶á·ááá¯ážáá±ážáá²á·ááŒá®áž áá¯ááºáááºážáááºáááºááŸá¯áá¯ááºáá»á ááááºáá»á¬ážááᯠááá¯ážááŒáŸáá·áºáá²á·áááºá ááœá±ážááœá±ážááœá²áá»á¬ážááẠá€áá²á·ááá¯á· ááŒá áºááœá¬ážáááºá
- Я: ááá¯ááºáá«áááºá á¡á²áá«á ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá áºáᯠááᯠoverclock áá¯ááºááá¯á·á¡ááœáẠá¡áá°á¡áá¬ááœá±á¡áá»á¬ážááŒá®ážáá«á AWS á¡áá±á¬áá·áºáá áºáá¯áááºáá®ážááẠá€á¡ááŸáá¯ááºááá¯á¡áá¯á¶ážááŒá¯ááá«ááẠ(áá»áœááºá¯ááºááá¯á·áááºá¡áá±á¬áá·áº 2 áá¯ááá¯á·ááœá¬ážáá«áááºá ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯) ááá¯á·áá±á¬ááºááááá±ážáá»ááºáá»á¬ážáááºááŸááºáááºá á€áá áºáá¯áááºáá¯ááºááá¯ááŸá±á¬ááºááŸá¯á¡ááœááºá ááŸáá·áºá¡á®ážáá±ážááºá á¬áááºážáá áºáá¯á¡ááœááºá ááŸáá·áºá€áá áºáá¯...
- áá²: áá¬ááºááœáŸááºážáá±ážááŒáá¡á±á¬ááºá
- Я: áá±á¬ááºážááŒá®á áá«áá±ááá·áº áá¬ááºááœáŸááºážááá¯ááºááá¯ááºá ááŒá±á¬ááºážááœá¬ážáááá·áºáááºá ဠBuilt-in Amazon gizmos á¡á¬ážáá¯á¶ážááẠáá±ááºáá®ááŒá±á¬ááºáž á á áºáá±ážááẠáááºážáááºážáá áºáᯠááá¯á¡ááºáá«áááºá
- áá²: áá±á¬ááºážáá¬ážáá²á ááŒá®ážáá±á¬á· áá®á¡ááœáẠáá¬ááºááœáŸááºážáá±ážáááºá
- Я: ááá¯ááºáááº! ááŸáá·áº script ááẠparameters áá»á¬ážááá¯áááºááŸááºááẠááá¯á¡ááºáá±áá±ážáááºá áá°ááá¯á·ááᯠáááºáá¶ááŸá¬áá¬ážá
- áá²: ááœá¬ážáá±áᬠáá°á á±á
- Я: áá¯ááºáááºážá ááºááẠááŒá±á¬ááºážáá²ááá¯ááºááŒá®áž áá±á¬ááºááŒááºááá¯ááºáááºááŸá¯ áá»á±á¬ááºáá¯á¶ážááœá¬ážáá«áááºá á¡áá»áá¯á·áá±á¬ semantic áá¬ážááŸááºážááááºážáá»á¯ááºááŸá¯ ááá¯á¡ááºáá«áááá·áºáááºá
- áá²: á áááºáá°ážáá±á¬ááºážáááºá
- Я: áááááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá° á¡ááºáá¬áá±á·á áºá¡ááœááºážááœáẠááá¯ááºááá¯ááºááŒá±á¬ááºážáá²ááá¯ááºáááºá áá«ááᯠá á áºáá±ážááŒá®áž ááŒááºááá¯á· áááºážáááºážáá áºáᯠááá¯á¡ááºáá«áááá·áºáááºá
⊠3 ááŸá áºá¡ááŒá¬-
- áá²: ááŒá®ážáá±á¬á· áá«ááá¯á·á terraform ááááºá
áá¬ááºáááºážáááá¯ááºáá»áá·áºááá¬ážááẠáááºáááºáá»áŸáẠAmazon ááŸá¬ á¡áá¬áá¬ááá¯ááºážááᯠáá±á«ááºáá±á¬ááºááá¯ááºáá«ááááºááẠAWS ááŸááá¯ááºáá±á¬á¡áá¬áá áºáá¯áá¯ááá¯á¡áá¯á¶ážááŒá¯áá±áá²ááŒá áºááŒá®ážá ááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááẠááá¯ááŒááºáááºááá¯áááºáá°áá»á á±áááºááœá²á·á ááºážáá¯á¶áá¬áá¬á áá¬ážááá¯á¡áá¯á¶ážááŒá¯ááá·áºá¡ááŒá±á¡áá±áá áºáá¯ááŸááááºá
CloudFormation lambda ááŸáá·áº git modules terraform
lambda ááẠá
áááºááŒáá¯áẠlogic ááŒá¿áá¬á¡ááœáẠCloudFormation á ááŒá±ááŸááºážáá»ááºááŒá
áºáááºá lambda áá²á· áááºáá¯ááºááá¯ááºáá«áááºá
Classic Load Balancer ááŒáá·áº Elastic Beanstalk áááºáááºážáá»ááºá¡ááœáẠCanary deployment áá
áºáá¯ááᯠáááºáá®ážáá»ááºáá²á·áá°ážáááºááᯠáááááááááºá á¡ááœááºáá¯á¶ážáá¯ááºáá±á¬ááºáááá·áºá¡áá¬ááŸá¬ áá¯ááºáá¯ááºááŸá¯áááºáááºážáá»ááºáá±ážááŸá EB á¡ááœáẠáá¯áááááŒáá·áºáá»ááºááŸá¯áá
áºáá¯ááŒá¯áá¯ááºáááºááŒá
áºááŒá®áž áááºážááᯠáá±á¬ááºáááºáá
áºááŸááºážáááºááŸááºážááá¯ááºáá«- á¡á±á¬áºááá¯á
áá±ážáá»áááá¹ááá®ááŒáá·áºáá»ááºááŸá¯á¡ááœá²á·ááᯠáá¯ááºáá¯ááºááŸá¯áááºáááºážáá»ááºááá¯á· ááŒáá·áºáá»ááºáá¬ážááá·áº LB ááŸáá·áº áá±á«ááºážá
ááºáá¬ážáááºá Terraform ááá¯á¡áá¯á¶ážááŒá¯áááºááááºážá
áá»á¶á·ááœáá·áºááŸá¯ááᯠáá±á¬ááºážá áœá¬ááááŸáááá¯ááºáááºá
áááºááœá±á·ááááẠáá»áŸá±á¬áºááá·áºáá»ááºáá»á¬ážááŸáá·áº ááá¯ááºáá®ááŒá±á¬ááºáž áá±áá»á¬áá«á á±á
Terraform ááŒáá·áº ááá·áºááœáẠdrift detection á¡ááœáẠááá¯ááá¯á¡ááá·áºááŒáá·áºáá±á¬ lifecycle áá»áááºáá»á¬ážááŸááááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠcommand ááá¯ááá¯ááºááá·áºáá«á
CDK ááŸáá·áº CloudFormation áá¡áá¬áááº
CloudFormation ááẠááŒá®ážáá¬ážááŒá®áž á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ ááŒááºáá»á±á¬áºááŸá¯á
áá±ážáá»á¬ážááœáẠá
á®áá¶ááá·áºááœá²ááẠáááºáá²áááºá á€á¡áááºá¡áá²áá»á¬ážá
áœá¬ááᯠá¡ááá¡ááŸááºááŒá¯ááŒá®áž áááááá¬ááẠááá¯áá±á¬á¡áá¬áá»á¬áž ááá¯á¡ááºáá«áááºá
áá«á០Terraform ááá¯á áááºááá»ááºá á±áá«áá°ážá
áááºážááẠ"áá¯ááºáá áºáá¯á¡áá±ááŒáá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶" ááŒá áºááŒá®áž "á á¬áá¬ážá¡ááŒá áº" ááá¯ááºáá«á
Terraform áá²á· ááááá¯á¶áž áá¶á á¬ážáá»ááºá áá±á¬áºáá±á¬áºááá¯ážáááºá áá»ááºážáááºáá¬ááᯠáá¬ážááááºáá°ážáááºáááºá á¡ááºáá»ááºáá®áá¬á¡á¬ážáá¯á¶ážáá®ážáá«ážá áááºážááᯠá¡ááá¯ááŸááá±á¬ á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááŒá áºááá¯á· ááŒá±á¬ááºážáá²ááẠááá¯á¡ááºáá±á¬ á á¬áá¬ážáá±á¬áºáááºáá áºáá¯á¡ááŒá Ạáááá¯áá¬ážá¡ááºááŒá±á¬ááºáž ááááºááááŒáááºá á€áááºážááŒáá·áº ááá¯ááºáá«ááŸáá·áºá
áá±á¬ááºážááœááºáá±á¬áá±á¬á·ááºáá²ááºááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¡ááŸááºááá¬ážáá»á¬ážááẠTerraform ááŸáá·áºáááºážáááºááá¯ááºáá«áááºá
Terraform ááœáẠáá¯ááºáá±á¬ááºážáá»á¬ážáááºáá®ážááẠáá»áá·áºáá¯á¶ážááá·áº á¡áá±á·á¡áá»áá·áºáá»á¬ážá áœá¬ááᯠáá»áœááºá¯ááºááœá±á·áá²á·ááááºá áááá¯ááááºáá¬áá±á¬ááºážáá áºáá±á¬ááºááŒá áºááá¯á· ááŸá áºá¡áá±á¬áºááŒá¬á¡á±á¬áẠáááºáá±á·áá¬áá²á·áááºá ááẠTerraform ááŸáá·áºá¡áá¯ááºáá¯ááºáá±áá±á¬ááŒá±á¬áá·áº á€á¡ááœá±á·á¡ááŒá¯á¶ááᯠáááºááœáŸááºááá¶áá«ááŸáá·áºá áá±á¬ááºážááœááºáá±á¬áá±á¬á·ááºáá²ááºááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¡ááŸááºááá¬ážáá»á¬ážááẠTerraform ááŸáá·áºáááºááá¯ááºáááºá
áá¯ááºááᯠáááºááá¯á· ááŸááºáááºážáááºáá¬ážááá¯ááºáááºáááºážá
á á¬ááœááºá á¬áááºážá¡áá±á¬ááºá¡áá¬áž áá¯á¶ážááááŸááá±á¬ ááŒá®ážáá¬ážáá±á¬ Terraform stacks áá»á¬ážááᯠáá»áœááºá¯ááºááœá±á·áá²á·ááááºá á á¬ááœááºá á¬áááºážáááŸááá±á¬ á á¬áá»ááºááŸá¬áá»á¬ážááœáẠáá¯ááºááᯠáááºááá¯á·áá±ážááá¯ááºááááºážá áááºáááŸááºážááŒáá±á¬á á¬ááœááºá á¬áááºážááá¯ááá·áºáá«á áá¯áẠTerraform ("áá¯ááº" áá°áá±á¬ á áá¬ážáá¯á¶ážááᯠá¡áá±ážáá±ážáááº)á á€ááá¹áááẠá¡áááºááŒá±á¬áá·áº á€áá»áŸá¡áá±ážááŒá®ážááŒá®áž áááºáá¬áá¯ááºááááºážá
áá áºáá»áááºá áááºá() áá¯ááºáá±á¬ááºááŸá¯ááŒá®ážáá áºáá¯ááŒá áºááá·áº áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· áááºááá¯á·á¡áá¯á¶ážáá»ááá¯ááºáááºáááºážá
á¡ááœááºááŸá¯ááºááœá±ážáá±á¬ Terraform stacks áá»á¬ážááᯠmodule áá áºáá¯áááºážá¡ááŒá áºáááºááŒáá¬ážáááºááᯠáá»áœááºá¯ááºááœá±á·áá²á·ááááºá áá¬ááŒá±á¬áá·áº áá®áááºážáá²á· áá±á¬á·ááºáá²ááºááᯠááá¯á¶ážáá¬áá²á áá»áœááºá¯ááºááá¯á·ááẠááŒá®ážáá¬ážáá±á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡áá±ážáá»á¬ážá¡ááŒá áºááá¯á· á¡áááºááŒá±á¬áá·áº ááá¯ááºážááŒá¬ážááááºážá áá°áá®áá±á¬á¡ááŒá±áá»á¬ážááẠTerraform ááŸáá·áºáááºááá¯ááºáááºá ááá·áº module ááŒá®ážááœááºážáá«áá áááºážááᯠáá±ážáááºáá±á¬ module áá»á¬ážá¡ááŒá áºááá¯á· ááœá²áá¯ááºáááºááá¯á¡ááºáááºá
ááá·áºáá¯áá¹ááá®á á á¬ááŒáá·áºááá¯ááºááœá±ááᯠááá¯á¶ážáá°ážáá¬ážá
Terraform ááᯠá¡áá¯á¶ážááŒá¯á ááá±á¬áá»ááºá¡áá
áºáá
áºáá¯ááᯠá¡ááºáá»ááºáá®áá¬áá»á¬ážá ááŸáá·áºáááºáᬠá¡ááŒá¬ážááá±á¬áá»ááºáá»á¬ážá០ááŒá®ážáá¬ážáá±á¬á¡ááá¯ááºážáá»á¬ážááᯠáááºážááá¯á·áááá¯ááºááá¯ááºá¡ááŒá
áºááá¯á· áá¡á°áááẠáá±á¬áºáá®áá°ážááŒá®áž á¡áá¯ááºáá
ááá»ááºáž áááºážááá¯á·ááŸáá·áº áá±á«ááºážááá·áºáá¯á¶ááᯠááŒááºáá°ážáááºá ááá·áºáá¯áá¹ááá®ááœáẠ"ááá¯ááºááá¯ááºáá±áž" áá¯ááºááŒáá·áº á€áá²á·ááá¯á· áá¯ááºáá±á¬ááºááá¯ááºáá«ááá¬ážá áá»áœááºá¯ááºááá¯á·ááẠá
á¬ááŒáá·áºááá¯ááºáá»á¬ážááá¯áᬠááá¯á¶ážáá«á áá¯ááºáááºá
ááẠPEP8 ááá¯á·ááá¯áẠgofmt ááá¯á¶ážáá°ážáá¬ážá
áá¬áá¬á
áá¬ážá¡áá»á¬ážá
á¯ááœáẠá
á¶á áááºáá¶áá¬ážáá±á¬ áá±á¬áºáááºá¡á
á®á¡á
á¥áºááŸááááºá Python ááœáẠáááºážááẠPEP8 ááŒá
áºáááºá Go - gofmt ááœááºá Terraform ááœááºáááºážáááá¯ááºááá¯ááºááŸááááº- terraform fmt
. ááá·áºáá»ááºážáá¬áá±ážá¡ááœáẠáá»á±á¬áºááœáŸááºáá«á
á±á
JavaScript ááᯠááááá² React ááᯠáá¯á¶ážááŸá¬áá¬ážá
Terraform modules áá»á¬ážááẠáááºáááºáá®ážáá±á¬ ááŸá¯ááºááœá±ážáá±á¬ á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á á¡á áááºá¡ááá¯ááºážá¡áá»áá¯á·ááᯠááá¯ážááŸááºážá¡á±á¬ááºááŒá¯áá¯ááºááá¯ááºáááºá ááá¯á·áá±á¬áº áááºážááẠáááºážááᯠáááºáá¯á¶ážáááá¯ááºáá±á¬ááºááá¯ááºáᯠáááá¯ááá¯áá«á á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáá¬ážááááºáá² Terraform ááᯠááŸááºáááºá áœá¬ á¡áá¯á¶ážááŒá¯ááá¯áá«ááá¬ážá áááºááẠáá»ááºá á®ážááŒááºážááá¯á· áá±á¬ááºáááº- á¡áá»áááºáá¯ááºááœá¬ážáááºááŒá áºááŒá®áž áááºááẠTerraform ááᯠáááºáá±á¬á·á០áá»áœááºážáá»ááºáááºááá¯ááºáá«á
áááºááẠsingletons ááá¯á·ááá¯áẠdependency injection ááŒáá·áº áá¯ááºáá±ážáá±áá«ááá¬ážá
ááŸá®ááá¯ááŸá¯ááá¯ážáá±ážááẠáá±á¬á·ááºáá²ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááœáẠá¡ááá¡ááŸááºááŒá¯áá¬ážáá±á¬ á¡áá±á¬ááºážáá¯á¶ážá¡áá±á·á¡áá»áá·áºáá áºáá¯ááŒá áºááŒá®áž singletons áá»á¬ážááẠááá¯ááá¯ááŸá áºáááºáááºá áááºážááẠTerraform ááœáẠáááºááá¯á·á¡áá¯á¶ážáááºááááºážá áá±ážáá¶áá±á«ááºáá®áá±á¬á¡ááŒá±á¡áá±áá±á«áº áá°áááºá Terraform module áá»á¬ážááá¯ááœá±á·áá°ážáááºá áá±ážáá¶áá±á«ááºáá®áá±á¬á¡ááŒá±á¡áá±ááá¯ááá°ááá·áº module áá»á¬ážááá¯áá±ážááá·áºá¡á á¬áž parameters áá»á¬ážáá°áá±á¬ module áá áºáá¯ááá¯áá±ážáá«á ááá¯á·áá±á¬áẠá¡ááá¯áá« ááá·áºáááºáá»ááºáá»á¬ážááᯠáá±á¬áºáá»á°ážááá¯á· áá±ážááá¯á·áá«á
ááá·áºá á¬ááŒáá·áºááá¯ááºáá»á¬ážááẠá¡áá¬áááºáá¯ááᯠáá±á¬ááºážááœááºá áœá¬áá¯ááºáá±á¬ááºááá¯ááºáá«ááá¬áž ááá¯á·ááá¯áẠáá áºáá¯áá±á¬ááºážáá±á¬á¡áá¬áá áºáá¯áá¯ááºáá±á¬ááºáá«ááá¬ážá
á¡áá±á¬ááºážáá¯á¶ážáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ á á¬ááŒáá·áºááá¯ááºáá»á¬ážááẠáááºážááá¯á·á¡ááœááºáá±á¬ááºážááœááºá áœá¬áá¯ááºáá±á¬ááºááá¯ááºáá±á¬ á¡áá¯ááºáá áºáá¯ááᯠá¡á¬áá¯á¶á áá¯ááºáá¯ááºáá±á¬ááºááá·áºá¡áá¬áá»á¬ážááŒá áºáááºá á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá áºááŒáá¯ááºáááºáá¯ááºáá±á¬ááºááẠááŒáá¯ážá á¬ážáá±á¬ Terraform module ááŒá®ážáá»á¬ážááá¯áá±ážááá·áºá¡á á¬ážá áá áºáá¯áá¯ááᯠáá±á¬ááºážááœááºá áœá¬áá¯ááºáá±á¬ááºááá¯ááºááá·áº á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáááºáá±á¬ááºáá«á ááŒá®ážáá»áŸáẠááá¯á¡ááºáááᯠáá±á«ááºážá ááºáá«á
áá±á¬ááºááŒá±á¬ááºážááŒááºááá¯ááºáááºááŸá¯áááŸááá² á á¬ááŒáá·áºááá¯ááºáá»á¬ážááᯠáááºáááºááá¯á·ááŒá±á¬ááºážáá²áááºáááºážá
áá¯á¶ááŸááºá á¬ááŒáá·áºááá¯ááºáá²á·ááá¯á· áá¬áá¬ááºá á¬ááŒáá·áºááá¯ááºáá áºáá¯áá²á·ááá¯á· áá¬áá¬áẠTerraform module áá áºáá¯ááẠáá±á¬ááºááŒááºáááá¬ááááŒá áºáá² á¡áá¯á¶ážááŒá¯áá°áá»á¬ážáá¶ááá¯á· ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠáá áºáááºážáááºážááŒáá·áº áááºááœááºááẠááá¯á¡ááºáááºá á á¬ááŒáá·áºááá¯ááºáá»á¬ážááœáẠá€á¡ááŒá±á¬ááºážá¡áá²áá»á¬áž ááŒá áºáá±á«áºáá¬ááá·áºá¡áá« á áááºá¡ááŸá±á¬áá·áºá¡ááŸááºááŒá áºááŒá®áž Terraform modules ááœáẠáá±á¬ááºááŒááºáááá¯ááºááá¯ááºáá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠááŒá¯áá¯ááºááá·áºá¡áá«ááœááºáááºáž á áááºá¡ááŸá±á¬áá·áºá¡ááŸááºááŒá áºááá«áááºá Terraform modules ááá¯á¡áá¯á¶ážááŒá¯áá±á¬á¡áá« git tags ááŸáá·áº semver ááá¯á¡áá¯á¶ážááŒá¯ááẠá¡ááŒá¶ááŒá¯áá¬ážáááºá
ááá·áºáá¯ááºáá¯ááºááŸá¯áááºáá±á¬ááºááŸá¯ááᯠááá·áºáááºááºáá±á¬á·áá±á«áºááœáẠááá¯á·ááá¯áẠáá±áá¬á ááºáá¬ááœáẠáá¯ááºáá±á¬ááºáá±áá«ááá¬ážá
Hashicorp ááœááºáá²á·ááá¯á·áá±á¬áááááá¬áá»á¬ážááŸááááºá
á á¬áá±ážááœá²ááœá± ááá±ážáá°ážáá¬ážá
áá¯ááºááᯠá ááºážáááºááẠááá¯á¡ááºááŒá±á¬ááºáž á¡ááºáá»ááºáá®áá¬áá»á¬ážá á¡ááá¡ááŸááºááŒá¯áá±á¬áºáááºáž Terraform ááŸáá·áº áá¯ááºáá±á¬ááºáá±á¬á¡áá«ááœáẠáááºážááá¯á·ááá¯ááºááá¯áẠá ááºážáááºááẠáá±á·áá»á±á¬á·áá±áááºáááºá á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœááºá á€á¡áá¬ááẠáá á¹á á¬áá²á·áá±á¬á¡ááá¯ááºá¡ááá·áºáá»á¬ážááŸáá·áº ááŒáá·áºááŸááºáá±áááºá áá»áœááºá¯ááºáá¡ááŒá¶ááŒá¯áá»ááºááŸá¬ CI/CD áá¬áá¡ááœááºáž á ááºážáááºáááºá¡ááœáẠááŸááºáááºá áœá¬á¡áá¯á¶ážáá»ááá¯ááºáá±á¬ module áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯á "test" ááá¯á·ááá¯áẠ"á¥ááá¬áááºáá®ážáááº" stacks áá¯ááºááá¯á·áá«á
Terraform ááŸáá·áº microservices áá»á¬áž
ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá¯áá¹ááá®áá»á¬ážá á¡áááºááŸáá·áºáá±áá¯á¶ážááŸá¯ááẠááŒááºááŸá¯ááºážá áááºážáá áºáá®ááœááºááŸá¯á ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯á¡áá¯ááºá áááºááºá¡áá áºáá»á¬ážá á¡ááŸá±á¬áá·áºá¡ááŸááºáá»á¬ážáá±á«áºááœáẠáá°áááºáááºá
ááá¯ááºáááá¯áá¬ážáá
áºáááá¯áá¬áá»á¬ážááŸáá·áº áááºááœáŸááºááá·áº á¡áá¯á¶ážá¡áá»á¬ážáá¯á¶áž á¡áá¯ááºááá¹ááᬠá¡ááœááºá¡ááŒááºááẠáá¯ááºááá¯ááºáá² á¡áá¯ááºááŸáá·áº áááºá
ááºáá±áááºá Terraform ááᯠmicroservices áááá¯áá¬á á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áááºááœááºáᬠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááẠáááºážáááºážáá
áºáá¯á¡ááŒá
Ạáááºáá°ááá«áá ááá¯á·áá±á¬áẠá
áá
áºáá
á
áºááŸááºáá±á¬ á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážááᯠááœá²áá»á±á¬áºáá±áááºááŒá
áºáááºá á¡áá¯ááŒá
áºáá±ááŒá®á
source: www.habr.com