ááá¯ááºáááá¯áá¬ážáá áºáááá¯áᬠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááá¯ááºáᬠááá±á¬áá»ááºáá»á¬ážááœáẠCI/CD ááẠáá¬áá¬áá±á¬á¡ááœáá·áºá¡áá±ážá¡áá»áá¯ážá¡á á¬ážá០á¡áá±ážáá±á«áºááá¯á¡ááºááŸá¯á¡áá»áá¯ážá¡á á¬ážááá¯á· ááœá±á·áá»á¬ážáááºá á¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŒááºážááẠá ááºáááºáááŒááºáá±á«ááºážá ááºááŒááºážá á¡ááááá»áá±á¬á¡á áááºá¡ááá¯ááºážááŒá áºááŒá®ážá á¡ááœá²á·á¡á¬áž áááá¬ážá á¯ááŸáá·áº áá°áááºáá»ááºážáá»á¬ážááŸáá·áºá¡áá° áá»á±á¬áºááœáŸááºááœááºááá»ááºážáá»á¬ážá áœá¬ááᯠáá±ážááá¯ááºááá·áº á¡áááºá¡áá»ááºážááŒáá·áºáá®áá±á¬áá»ááºážáááºááŸá¯áá áºáá¯ááŒá áºáááºá ááá¯ááºááẠááá±á¬áá»ááºá áááºáá±á¬á·á០ááŒá®ážááŒá±á¬ááºááŸá¬ ááá¯ááºáá°ážá
mock objects áá»á¬ážááŒáá·áº áá°áá áºá ááºážáááºááŸá¯áá»á¬ážááŒáá·áº microservice code áá áºáá¯áá¯á¶ážááᯠáá¯á¶ážá¡á¯ááºáá¬ážááá¯ááºáá±á¬áºáááºáž áááºážááẠááŒá¿áá¬ááᯠáá áºá áááºáá áºááá¯ááºážáᬠááŒá±ááŸááºážááá¯ááºááŒá®áž á¡áá°ážáááŒáá·áº áá±áá¬ááŒáá·áº á ááºážáááºááá·áºá¡áá«ááœáẠáá±ážááœááºážáá»á¬ážááŸáá·áº á¡áááºá¡áá²áá»á¬ážá áœá¬ááᯠáá»ááºáá¬ážáá²á·áááºá á¡ááŒá²ááá¯ááá¯á á¡ááŒááºážáááºáá¯á¶ážá¡áá¬áá»á¬ážááẠáááºá ááºáá±áá¬áá±á·á áºáá áºáá¯ááœáẠáá±áá¬áá®ááœááºááŸá¯ááᯠá ááºážáááºááŒááºážá cloud áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº á ááºážáááºááŒááºážáá»á¬ážááŸáá·áº ááŸá±á¬ááºááŒá±á¬ááºá¡áá¬ááá¹áá¯áá»á¬ážááᯠáá±ážáá¬ážááá·áºá¡áá« ááŸá¬ážááœááºážáá±á¬áá°ááá»ááºáá»á¬ážááᯠááŒá¯áá¯ááºááŒáááºá
Docker container ááœáẠmicroservice áá áºáá¯áá¯á¶ážááᯠá ááºážáááºááŒááºážááŒáá·áº á€á¡áá¬á¡á¬ážáá¯á¶ážááᯠááŸáá·áº á¡áááºážáááºááá¯á ááŒá±ááŸááºážááá¯ááºáá«áááºá á ááºážáááºááŸá¯áá»á¬ážáááá¬ážáááºááŸá¯ááá¯áá±áá»á¬á á±áááºá¡ááœááºáá¶áááááŸááá±á¬á¡á¬ážáá¬áá»ááºáá áºáá¯ááŸá¬áá¯ááºáá¯ááºááŸá¯ááœááºáá«áááºááá·áºáá°áá®áá±á¬ Docker áá¯á¶áá»á¬ážááá¯á ááºážáááºááŒááºážááŒá áºáááºá
á€áá»ááºážáááºááŸá¯á á¡ááá¯á¡áá»á±á¬ááºá áá áºááẠááŒá¿áá¬áá»á¬ážá áœá¬ááᯠáááºááŒáááºáá á¡á±á¬ááºááœááºáá±á¬áºááŒáá¬ážááá·áº ááŒá±ááŸááºážáááºážáááº
- áá°áá®áá±á¬ docker host ááŸá á¡ááŒáá¯ááºáá¯ááºáá±á¬ááºá áá¬áá»á¬áž áááááá¹ááá»á¬ážá
- á ááºážáááºááŸá¯ááŒá¯áá¯ááºáá±á ááºá¡ááœááºáž áá±áá¬áá±á·á áºááœáẠá¡áá±á¬ááºá¡áá¬ážááœá²ááœá²ááŸá¯áá»á¬ážá
- á¡áá±ážá á¬ážáááºáá±á¬ááºááŸá¯áá»á¬áž á¡áááºááá·áºááŒá áºááẠá á±á¬áá·áºáá»áŸá±á¬áºáá±áá«áááºá
- ááŒááºáá áá áºáá»á¬ážááá¯á· ááŸááºáááºážáá»á¬áž áá±á«ááºážá ááºážááŒááºážááŸáá·áº áá¯ááºáá±ážááŒááºážá
- ááœááºááœá¬ážáá±á¬ HTTP áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠá ááºážáááºááŒááºážá
- web socket á ááºážáááºááŒááºáž (SignalR ááá¯á¡áá¯á¶ážááŒá¯ááŒááºáž);
- OAuth á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŸáá·áº ááœáá·áºááŒá¯áá»ááºááᯠá ááºážáááºááŒááºážá
á€áá±á¬ááºážáá«ážááá¯á¡ááŒá±áá¶áááºá
á€áá±á¬ááºážáá«ážááœáẠá ááºážáááºááŸá¯á¡á±á¬ááºááœáẠáááºáá±á¬ááºááŸá¯ááᯠáá¯ááºáá±á¬ááºááẠscript ááᯠá¡áá¯á¶ážááŒá¯áááºážá Docker ááŸá áá±áá¬áá±á·á áºááŸáá·áº Amazon AWS áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá ááá¯á·áá±á¬áẠPostman ááœáẠá ááºážáááºááŸá¯áá»á¬áž ááŒá¯áá¯ááºááŒá®ážá áááºážááá¯á· ááŒá®ážá á®ážááŒá®ážáá±á¬ááºá áááºáá®ážáá¬ážáá±á¬ ááœááºááááºáá¬áá»á¬ážááᯠáááºááá·áºááŒá®áž áá»ááºáá áºááẠá€áá±á¬ááºážáá«ážááœáẠááá·áºá¡á¬áž ááŒá±á¬ááŒáá«áááºá áá¯ááºááŒá±á¬ááºážááá·áºá¡áá«ááá¯ááºáž á ááºážáááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá á€áááºážá¡á¬ážááŒáá·áºá áá¬ážááŸááºážáá áºáá¯á á®ááẠAWS áá±áá¬áá±á·á áºááŸáá·áº áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áºá¡áá° ááŸááºáááºá áœá¬á¡áá¯ááºáá¯ááºááŒá±á¬ááºáž áá±áá»á¬á á±áá«áááºá
áá°áá®áá±á¬ script ááᯠdeveloper áá»á¬ážááá¯ááºááá¯áẠáááºážááá¯á·á Windows desktop áá»á¬ážááœáẠááŸáá·áº Linux á¡á±á¬ááºááŸá Gitlab CI server ááá¯á·á០ááŸá áºáá»áá¯ážáá¯á¶áž áá¯ááºáá±á¬ááºáá«áááºá
ááá¬ážáá»áŸáááŸá¯ááŸáá á±áááºá á ááºážáááºááŸá¯á¡áá áºáá»á¬ážááᯠááááºáááºááŒááºážááẠdeveloper áááœááºáá»á°áá¬ááœááºááŒá áºá á± ááœááºááŒá°áá¬ááœááºááŒá áºá á± á ááºážáááºááŸá¯áá»á¬ážáá¯ááºáá±á¬ááºááá·áºáá¬áá¬ááœááºááŒá áºá á± áá±á¬ááºáááºáááááá¬áá»á¬ážáááºáááºáááºáááá¯á¡ááºááá·áºáá«á Docker ááẠá€ááŒá¿áá¬ááá¯ááŒá±ááŸááºážáá±ážáááºá
á¡á±á¬ááºáá±á¬áºááŒáá« á¡ááŒá±á¬ááºážáááºážáá»á¬ážááŒá±á¬áá·áº á ááºážáááºááŸá¯ááẠáá±áááœááºáž áá¬áá¬áá±á«áºááœáẠáá¯ááºáá±á¬ááºááááº-
- ááœááºáááºááẠáá¯á¶ážááá¯á¶ááŒááºá
áááºáá»ááááºááá¯ááºáá±á áá±á¬ááºážááá¯áá»ááºáá
áºáá±á¬ááºááŸá¬ áá
áºáá¯áá±á¬á· áá»ááŸá¯á¶ážááá¯ááºáá«áááºá
á€ááá á¹á ááœááºá á¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŸá¯á¡áá¯ááºááá¯ááºáá«á á¡áá¯ááºáááºááá·áºáááºááŒá áºááŒá®ážá ááŸááºáááºážáá»á¬ážááœááºá¡ááŒá±á¬ááºážáááºážááá¯áááºááŸá¬ááœá±ááááá·áºáááºá - áááŒá¬áááá±á¬ááºážááá¯ááŸá¯áá»á¬ážááẠá¡áá»áá¯á·áá±á¬ááŒááºááá¯áá¹ááá®áááºáá±á¬ááºááŸá¯áá»á¬ážá០ááœáá·áºáááŒá¯áá«á
ááá¯á·á¡ááŒááºá áááºáááºáááºááᯠá¡áá¯á¶ážááŒá¯ááẠáááá¯áá¬ážá¡ááºáá±á¬ááŒá±á¬áá·áº-
- áááºážááœáẠáááºáááºáá±áá±á¬ ááá±á¬ááºážáá²á· áá¯ááºááŒá±á¬áá·áºáá¬áá ááŸááºáááºáá±á¬áá¯ááºááᯠááá¯ááºáá±á¬ááºááá¯ááºáá±á¬ áá±áá¬ááŒá±á¬áá·áºáááºáž áááºáááºáááºááᯠáá»áá¯ážáá»ááºááá¯ááºáá«áááºá
- á ááºážáááºááŸá¯á¡ááœááºáž ááŒá¯áá¯ááºáá²á·áá±á¬ ááŒá±á¬ááºážáá²ááŸá¯á¡á¬ážáá¯á¶ážááᯠáá»áœááºá¯ááºááá¯á· áááºáá»áŸááẠáááºáááºáá²áá² ááŒááºááŒá±á¬ááºážááẠááŒáá¯ážá á¬ážáá±áá«á á±á áá áºá á¯á¶áá áºáᯠááŸá¬ážááœá¬ážááá¯ááºááẠ(ááá¯ááºááẠáá¬ááŒá±á¬áá·áº á ááºážáááºáááááºážá)
ááá±á¬áá»ááºááŸáá·áº áá¯ááºáááºážá áẠá¡ááœá²á·á¡á ááºážá¡ááŒá±á¬ááºáž
áá»áœááºá¯ááºááá¯á·ááá¯áá¹ááá®ááẠAmazon AWS cloud ááŸá Docker ááœááºá¡áá¯ááºáá¯ááºáá±á¬ microservice áááºá¡ááºááá®áá±ážááŸááºážááá¯áá®ááœááºáá²á·áááºá áá°áá áºá ááºážáááºááŸá¯áá»á¬ážááᯠááá±á¬áá»ááºááœáẠá¡áá¯á¶ážááŒá¯áá¬ážááŒá®ážááŒá áºáá±á¬áºáááºáž áá°áá áºá ááºážáááºááŸá¯áá»á¬ážááœáẠáááœá±á·áááá·áº á¡ááŸá¬ážá¡ááœááºážáá»á¬áž áááŒá¬áá ááŒá áºáá±á«áºáá±áá«áááºá áá±áá¬áá±á·á áºááŸáá·áº Amazon áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áºá¡áá° microservice áá áºáá¯áá¯á¶ážááᯠá ááºážáááºááẠááá¯á¡ááºáá«áááºá
ááá±á¬áá»ááºááẠáááááŒá¯áá»ááºááá¯ááºážááŸáá·áº á¡áá±ážá á¬ážáááºáá±á¬ááºááŸá¯ááᯠá ááºážáááºááŒááºáž á¡áá«á¡ááẠá á¶á ááºáááºáááŒáẠáá±á«ááºážá ááºááŸá¯áá¯ááºáááºážá ááºááᯠá¡áá¯á¶ážááŒá¯áááºá á¡áá¯ááºáá áºáá¯ááᯠáá¬áááºáá±ážááŒá®ážáá±á¬ááºá áá±á¬á·ááºáá²á¡ááºáá»ááºáá®áá¬ááẠááá¯ááºáááá¯áá¬ážáá áºááᯠá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááŒá¯áá¯ááºáᬠáááºážááᯠááá¯ááºááá¯ááºá ááºážáááºááŒá®áž áááŸáááá¯ááºáá±á¬ á¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºáááºá ááá¯á¡ááºáá«á developer ááẠá ááºážáááºááŸá¯áá»á¬ážááᯠááŒá±á¬ááºážáá²áá«áááºá ááŒá¿áá¬áááŸá¬áá«á á€ááá á¹á ááᯠáá¬áááœá²ááá¯á· áááááŒá¯áá«áááºá áá»á°ážááœááºááŸá¯áá áºáá¯á á®ááŒá®ážáá±á¬ááºá á ááºážáááºááŸá¯áá»á¬ážááᯠáá¬áá¬áá±á«áºááœáẠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºáááºá áá¯á¶áá¬áááœá²áá áºáá¯á¡ááŒá Ạáá±á«ááºážá ááºážááŒá®áž áááºážááœáẠá¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŸá¯áá»á¬ážááᯠá áááºáá¯ááºáá±á¬ááºááŒááºážááẠá¡á±á¬ááºááŒááºáá±á¬ááŒááºáááºáá¯á¶ážáááºááŒá®ážáá±á¬áẠááŒá áºáá±á«áºáá«áááºá áá»áŸáá±áá¬ážáá±á¬ áá¬áááœá²á០á á áºáá±ážááŸá¯áá»á¬ážááᯠáá»á±á¬áºááŒááºáá«áá áááºáá±á¬ááºááŸá¯ááᯠAmazon Elastic Container Service (áá¯á¶áááºážááŸááº) ááŸá á ááºážáááºáááºáááºážáá»ááºááœáẠá¡ááá¯á¡áá»á±á¬áẠá¡ááºááááºáá¯ááºáá«áááºá áá±á¬á·ááºáá²áá±ážáá¬ážáá°ááŸáá·áº á ááºážáááºáá°áá»á¬ážá¡á¬ážáá¯á¶ážá¡ááœáẠáááºáááºáá»ááºááẠááá¯á¡ááºááŒá®áž áááºážááᯠáá»áá¯ážáá»ááºááẠá¡ááŒá¶ááŒá¯ááá¯áá«áááºá á€áááºáááºážáá»ááºááŸá á ááºážáááºáá°áá»á¬ážááẠááá¯ááºááá¯ááºá ááºážáááºááŸá¯áá»á¬áž áá¯ááºáá±á¬ááºááŒááºážááŒáá·áº ááŒá¯ááŒááºááŸá¯ ááá¯á·ááá¯áẠá¡ááºá¹áá«áááºá¡áá áºááᯠá á áºáá±ážáá«á
ááá±á¬áá»ááºáááá¯áá¬
á¡ááá®áá±ážááŸááºážááœáẠáááºáá±á¬ááºááŸá¯ áááºáá¯áá»á±á¬áº áá«áááºáá«áááºá áááºážááá¯á·áá²á០á¡áá»áá¯á·ááᯠ.NET Core ááŒáá·áº áá±ážáá¬ážáá¬ážááŒá®áž á¡áá»áá¯á·ááŸá¬ NodeJs ááœáẠáá±ážáá¬ážáá¬ážáááºá áááºáá±á¬ááºááŸá¯áá áºáá¯á á®ááẠAmazon Elastic Container Service ááŸá Docker ááœááºááááºáá¬ááœáẠáá¯ááºáá±á¬ááºáááºá áá áºáá¯á á®ááœááºáááºážáááá¯ááºááá¯áẠPostgres áá±áá¬áá±á·á áºááŸáááŒá®ážá¡áá»áá¯á·ááœáẠRedis ááŸááááºá áá¯á¶áá±áá¬áá±á·á áºáá»á¬ážáááŸááá«á áááºáá±á¬ááºááŸá¯áá»á¬ážá áœá¬ááẠáá°áá®áá±á¬áá±áá¬ááá¯á¡ááºáá«á á€áá±áá¬ááᯠááŒá±á¬ááºážáá²ááá·áºá¡áá« SNS (Simple Notification Service) ááŸáá·áº SQS (Amazon Simple Queue Service) ááŸáá áºááá·áº á€áááºáá±á¬ááºááŸá¯áá áºáá¯á á®ááá¯á· áá±ážááá¯á·ááŒá®áž áááºáá±á¬ááºááŸá¯áá»á¬ážááẠáááºážááᯠáááºážááá¯á·á áá®ážááŒá¬ážáá±áá¬áá±á·á áºáá»á¬ážááœáẠááááºážáááºážáá«áááºá
SQS ááŸáá·áº SNS
SQS ááẠááá·áºá¡á¬áž HTTPS áááá¯ááá¯áá±á¬ááᯠá¡áá¯á¶ážááŒá¯á áááºážá á®ááŸá¯á¡ááœááºáž áááºáá±á·áá»áºáá»á¬ážááá·áºáááºááŸáá·áº áááºážá á®á០á á¬áá»á¬ážááᯠáááºááẠááœáá·áºááŒá¯áááºá
áááºáá±á¬ááºááŸá¯áá»á¬ážá áœá¬ááẠáááºážá á®áá áºáá¯ááᯠáááºáá«áá áááºáá±á·áá»áºáá áºáá¯á á®ááẠáááºážááá¯á·á¡áááºá០áá áºáá¯áᬠáá±á¬ááºááŸááááºá áááºážááá¯á·ááŒá¬ážááœáẠáááºááᯠááŒáá·áºáá±ááẠáá°áá®áá±á¬ áááºáá±á¬ááºááŸá¯áá»á¬ážá áœá¬ááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá« áááºážááẠá¡áá¯á¶ážáááºáááºá
áááºáá±á·áá»áºáá áºáá¯á á®ááᯠáááºáá±á¬ááºááŸá¯áá»á¬ážá áœá¬ááá¯á· ááá¯á·áá±á¬ááºááá¯áá«áá áááºáá¶áá°ááá¯ááºážááœáẠáááºážáááá¯ááºááá¯ááºáááºážá á®ááŸáááẠááá¯á¡ááºááŒá®áž áááºáá±á·áá»áºáá»á¬ážááᯠáááºážá á®áá»á¬ážá áœá¬ááá¯á· ááœá¬ážáááºá¡ááœáẠSNS ááá¯á¡ááºáá«áááºá
SNS ááœáẠáááºááẠá¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯ááᯠáááºáá®ážááŒá®áž áááºážááᯠá á¬áááºážááœááºážáá«á á¥ááá¬á SQS áááºážá á®áá áºáá¯á á¡ááŒá±á¬ááºážá¡áá¬ááá¯á· áááºáá±á·ááºá»ááá¯á·ááá¯ááºáááºá á€ááá á¹á ááœááºá á€á¡ááŒá±á¬ááºážá¡áá¬á¡ááœáẠá á¬áááºážááœááºážáá¬ážáá±á¬ áááºážá á®ááá¯ááºážááá¯á· áááºáá±á·áá»áºááᯠáá±ážááá¯á·áá«áááºá SNS ááœáẠáááºáá±á·áá»áºáá»á¬ážááᯠáááºááẠáááºážáááºážáááŸááá«á á¡ááŸá¬ážááŸá¬ááŒááºááŒááºáž ááá¯á·ááá¯áẠá ááºážáááºáá±á ááºááœáẠáááºááẠSNS ááá¯á· áá±ážááá¯á·ááá·áºá¡áá¬ááᯠááŸá¬ááœá±ááẠááá¯á¡ááºáá«áá áááºááẠSQS áááºážá á®áá áºáá¯ááᯠáááºáá®ážááá¯ááºáááºá áááºážááᯠááá¯áá»ááºáá±á¬á¡ááŒá±á¬ááºážá¡áá¬ááœáẠá á¬áááºážááœááºážááŒá®áž áááºážá á®ááŒááºážááᯠáááºááá¯ááºáááºá
API Gateway
áááºáá±á¬ááºááŸá¯á¡áá»á¬ážá á¯ááẠá¡ááºáá¬áááºá០ááá¯ááºááá¯ááºáá¯á¶ážá áœá²ááááá«á áááºáá±á¬ááºááœáá·áºááẠAPI Gateway ááŸáá áºááá·áº áááºáá±á¬ááºááœáá·áºááᯠá á áºáá±ážáá±ážáá«áááºá áááºážááẠáá»áœááºá¯ááºááá¯á·ááááºáá±á¬ááºááŸá¯áááºážááŒá áºááŒá®áž áááºážá¡ááœáẠá ááºážáááºááŸá¯áá»á¬ážáááºážááŸááááºá
á¡áá»áááºááŸáá·áºáááŒá±ážáá® á¡áááá±ážáá»ááºáá»á¬áž
á¡ááá®áá±ážááŸááºážááá¯á¡áá¯á¶ážááŒá¯áááºá
áá°áááá»á¬ážáá±á¬ á ááºážáááºááŒááºážáááºážáááºáž
áá°áá áºá ááºážáááºááŸá¯áá»á¬ážááẠáá±áá¬áá±á·á áºáá²á·ááá¯á·áá±á¬ á¡áá¬áá»á¬ážááᯠáá¯á¶á á¶áá°á¡áá¬ááá¹áá¯áá»á¬ážááŒáá·áº á¡á á¬ážááá¯ážáááºá á¥ááá¬á¡á¬ážááŒáá·áºá microservice áá áºáá¯ááẠááá¯ááºáá¶ááŒá¬ážáá±á¬á·ááŒáá·áº ááá¬ážáá áºáá¯ááœáẠááŸááºáááºážáá áºáá¯ááᯠáááºáá®ážááẠááŒáá¯ážá á¬ážáá±á¬áºáááºážá ááá¯áá±á¬á·ááŒáá·áº ááá¯ážáá¬ážáá¬ážáá±á¬ ááŸááºáááºáž áááŸááá«áá áá±á¬ááºážááá¯áá»ááºááẠááŒá®ážááŒá±á¬ááºááá¯ááºááẠááá¯ááºáá«á áá°áá áºá á áºáá±ážááŸá¯áá»á¬ážá áááºážááᯠáááœá±á·ááá¯ááºáá«á
Ð
In-memory database ááẠEntity Framework ááŸáá¶á·ááá¯ážáá±ážáá±á¬ DBMSs áá»á¬ážáá²ááŸáá áºáá¯ááŒá áºáááºá á ááºážáááºáááºá¡ááœáẠá¡áá°ážáááºáá®ážáá¬ážáááºá ááá¯ááá¯á·áá±á¬ áá±áá¬áá±á·á áºááœáẠáá±áá¬ááᯠáááºážááᯠá¡áá¯á¶ážááŒá¯ááá·áº áá¯ááºáááºážá ááºááᯠáááºá á²áááºá¡áááᬠááááºážáááºážáá¬ážáááºá áááºážááẠááá¬ážáá»á¬áž áááºáá®ážááẠáááá¯á¡ááºáá² áá±áᬠááá¯ááºáá¬ááŸá¯ááᯠá á áºáá±ážááŒááºáž áááŸááá«á
á¡áá¯á¡áá±á¬ááºá¡áá¬ááá¹áá¯áá»á¬ážááẠáááºážááá¯á·áááºááá¯á·á¡áá¯ááºáá¯ááºáá¯á¶ááᯠá ááºážáááºáá±á¬á·ááºáá²áá±ážáá¬ážáá° áá¬ážáááºááá·áºá¡ááá¯ááºážá¡áá¬á¡áá áááºážááá¯á·á¡á á¬ážááá¯ážáá±ááá·áº á¡áááºážááᯠáá¯á¶á á¶ááŒáá¬ážáááºá
Microsoft áá±á¬ááºážáá«ážááœáẠáááºá ááºážáááºááŸá¯áá áºáá¯ááᯠáá¯ááºáá±á¬ááºáá±á¬á¡áá«ááœáẠPostgres ááᯠá¡ááá¯á¡áá»á±á¬ááºá áááºáááºááŸáá·áº ááœáŸá±á·ááŒá±á¬ááºážááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááẠáááºááá¯á·ááŒá¯áá¯ááºááááºáááºážá áá»áœááºá¯ááºáááŒá±ááŸááºážáá»ááºááẠáááºážááá¯áá¯ááºáá±á¬ááºááŒá®áž ááá¯á·á¡ááŒááºá ááá¯ááºáááá¯áá¬ážáá áºááá¯ááºááá¯ááºá ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠá¡áá°ážáá¯ááºáá áºáá¯áá»áŸ ááá·áºááá¬ážáá«á
ááŒá±ááŸááºážáá»ááºáá® áááºááœá¬ážááŒáá¡á±á¬ááº
ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážáá¯ááºáááºážá ááºá¡ááœááºážá áá°áá áºá ááºážáááºááŸá¯áá»á¬ážááẠááŒá¿áá¬á¡á¬ážáá¯á¶ážááᯠá¡áá»áááºáá®ááŸá¬ááœá±ááẠááá¯á¶áá±á¬ááºááŒá±á¬ááºáž áááºááŸá¬ážáá¬áá±á¬ááŒá±á¬áá·áº á€ááŒá¿áá¬ááᯠááá°áá®áá±á¬ááŸá¯áá±á¬áá·áºá០áá»ááºážáááºááẠáá¯á¶ážááŒááºáá²á·áááºá
á ááºážáááºááŸá¯áááºáááºážáá»ááºááᯠáááºááŸááºááŒááºážá
ááááá¬áááºááŸá¬ á ááºážáááºááŸá¯áááºáááºážáá»ááºááᯠá¡áá¯á¶ážáá»áááºááŒá áºáááºá ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯ááᯠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºáá±á¬ á¡ááá·áºáá»á¬áž-
- áá±ááá¹áááááºáááºážáá»ááºá¡ááœáẠá ááºážáááºááŸá¯á¡á±á¬ááºááœáẠáááºáá±á¬ááºááŸá¯ááᯠá á®á ááºáááºááŸááºáá«á áá±áá¬áá±á·á áºááá¯á· áá»áááºáááºááŒááºážá¡ááœáẠá¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááᯠáááºááŸááºáá±ážáᬠáááºáááºážáá»áẠááááºážááŸááºáá»á¬ážááœáẠAWSá
- Postgres ááá¯á
áááºááŒá®áž Liquibase ááᯠrun ááŒááºážááŒáá·áº ááœáŸá±á·ááŒá±á¬ááºážááŒááºážááᯠáá¯ááºáá±á¬ááºáá«á
áááºá áẠDBMSs ááœááºá áá±áá¬áá±á·á áºáá²ááá¯á· áá±áá¬ááá±ážáá®á áá áºáááºážááá¯ááá±á¬áº ááá¬ážááœááºáá»á¬ážááᯠáááºáááºáá®ážááẠááá¯á¡ááºáááºá á¡ááºááá®áá±ážááŸááºážááᯠá¡ááºááááºáá¯ááºááá·áºá¡áá«á áá¬ážááŸááºážá¡áá áºá០á¡áá¯á¶ážááŒá¯ááá·áºáá¯á¶á á¶ááá¯á· ááá¬ážáá»á¬ážááᯠáá°áá±á¬ááºáá¬ááááºááŒá áºááŒá®ážá ááŒá áºááá¯ááºáá»áŸáẠáá±áá¬ááá¯á¶ážááŸá¯á¶ážá á±áá² ááŒá áºááá¯ááºáááºá áá«ááᯠmigration ááá¯á·áá±á«áºáááºá áááŠážá¡ááœááºáá±áá¬áá±á·á áºááœáẠááá¬ážáá»á¬ážáááºáá®ážááŒááºážááẠááœáŸá±á·ááŒá±á¬ááºážááŒááºážá á¡áá°ážááá á¹á áááºááŒá áºáááºá ááœáŸá±á·ááŒá±á¬ááºážááŒááºážááᯠá¡ááá®áá±ážááŸááºážááœáẠááá¯ááºááá¯ááºáááºáá±á¬ááºááá¯ááºáááºá .NET ááŸáá·áº NodeJS ááŸá áºáá¯áá¯á¶ážááœáẠááœáŸá±á·ááŒá±á¬ááºážááŒááºážááá¯ááºáᬠáá°áá±á¬ááºáá»á¬ážááŸááááºá áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá áá¯á¶ááŒá¯á¶áá±ážá¡ááŒá±á¬ááºážááŒáá»ááºááŒá±á¬áá·áºá microservices áá»á¬ážááẠdata schema ááá¯ááŒá±á¬ááºážáá²áááºá¡ááœáá·áºá¡áá±ážááá¯áááºááœááºáá¶ááŒá®áž migration ááᯠLiquibase ááá¯á¡áá¯á¶ážááŒá¯ááŒá®ážáá¯ááºáá±á¬ááºáááºá - Amazon LocalStack ááá¯ááœáá·áºáá«á áááºážááẠá¡áááºááœááºáááºáááºááẠAWS áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá áºáá¯ááŒá áºáááºá Docker Hub ááœáẠLocalStack á¡ááœáẠá¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ áá¯á¶áá áºáá¯ááŸááááºá
- LocalStack ááœáẠááá¯á¡ááºáá±á¬ á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáááºáá®ážááẠscript ááá¯ááœáá·áºáá«á Shell script áá»á¬ážááẠAWS CLI ááá¯á¡áá¯á¶ážááŒá¯áááºá
ááá±á¬áá»ááºááœáẠá
ááºážáááºááẠá¡áá¯á¶ážááŒá¯áááºá
á¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŸá¯áááºááá¯á¡áá¯ááºáá¯ááºááá²á
á ááºážáááºáá±á ááºá¡ááœááºáž á¡áá¬á¡á¬ážáá¯á¶ážááẠDocker ááœáẠá¡áá¯ááºáá¯ááºáááº- á ááºážáááºááŸá¯á¡á±á¬ááºááŸá áááºáá±á¬ááºááŸá¯á Postgresá ááœáŸá±á·ááŒá±á¬ááºážááŒááºážáááááá¬á ááŸáá·áº Postman ááá¯á·ááá¯áẠáááºážá ááœááºááá¯ážááºáá¬ážááŸááºáž - Newmaná
Docker ááẠááŒá¿áá¬áá»á¬ážá áœá¬ááᯠááŒá±ááŸááºážáá±ážáááº-
- á¡áááºááŸááºááœá²á·á ááºážáá¯á¶ááŸááœááºáááºááŸá¯;
- ááŸá®ááá¯ááŸá¯ááᯠááá·áºááœááºážááŒááºáž- Docker ááẠDocker Hub á០áá¯á¶áá»á¬ážááᯠáá±á«ááºážáá¯ááºáá¯ááºáááºá
- á áá áºá¡á¬áž áááºážááá°áá¡ááŒá±á¡áá±ááá¯á· ááŒááºáááºáá±á¬ááºááŸáá á±ááŒááºáž- ááœááºááááºáá¬áá»á¬ážááᯠáááºááŸá¬ážááá¯ááºáá«á
Docker-compose ááœááºááááºáá¬áá»á¬ážááᯠááá¯ááááºážá¡áááºáá»á¬ážááŒáá·áº á¡ááºáá¬áááºá០áá®ážááŒá¬ážááœá²áá¯ááºáá¬ážááá·áº ááœááºááááºáá¬áá»á¬ážááᯠvirtual network áá áºáá¯á¡ááŒá Ạáá±á«ááºážá ááºážáááºá
á ááºážáááºááŸá¯ááᯠshell script ááŒáá·áº ááááºážáá»á¯ááºáá¬ážáááºá Windows ááœááºá ááºážáááºááŸá¯ááá¯áá¯ááºáá±á¬ááºáááºáá»áœááºá¯ááºááá¯á·ááẠgit-bash ááá¯á¡áá¯á¶ážááŒá¯áááºá ááá¯á·ááŒá±á¬áá·áºá script áá áºáá¯ááẠWindows ááŸáá·áº Linux ááŸá áºáá¯áá¯á¶ážá¡ááœááºáá¯á¶áá±á¬ááºáááºá Git ááŸáá·áº Docker ááᯠááá±á¬áá»ááºááŸá developer áá»á¬ážá¡á¬ážáá¯á¶ážá ááá·áºááœááºážáá¬ážáááºá Windows ááœáẠGit ááᯠááá·áºááœááºážáá±á¬á¡áá«á git-bash ááᯠááá·áºááœááºážáá¬ážáá±á¬ááŒá±á¬áá·áº áá°ááá¯ááºážááœáẠááá¯áááºážáááºážáá±á¬ááºážáááºá
áá¬ááºááœáŸááºážááẠá¡á±á¬ááºáá«á¡ááá·áºáá»á¬ážááᯠáá¯ááºáá±á¬ááºáááº-
- docker áá¯á¶áá»á¬ážááá¯áááºáá±á¬ááºááŒááºážá
docker-compose build
- áá±áá¬áá±á·á
ááŸáá·áº LocalStack ááá¯ááœáá·áºááŒááºážá
docker-compose up -d <кПМÑейМеÑ>
- áá±áá¬áá±á·á
ẠááœáŸá±á·ááŒá±á¬ááºážááŒááºážááŸáá·áº LocalStack ááŒááºáááºááŸá¯
docker-compose run <кПМÑейМеÑ>
- á
ááºážáááºááŸá¯á¡á±á¬ááºááœáẠáááºáá±á¬ááºááŸá¯ááᯠá
áááºáá±áá«áááºá
docker-compose up -d <ÑеÑвОÑ>
- á ááºážáááºááŸá¯áá¯ááºáá±á¬ááºááŒááºáž (Newman)
- ááœááºááááºáá¬á¡á¬ážáá¯á¶ážááᯠáááºááá·áºááŒááºážá
docker-compose down
- Slack ááœáẠááááºáá»á¬ážááᯠááá¯á·á
áºáááºááŒááºážá
á¡á áááºážáá±á¬áẠá¡ááŸááºá¡áá¬áž ááá¯á·ááá¯áẠá¡áá®áá±á¬áẠááŒááºááŒá±áááºááŸáá·áº ááŸááºáááºážááá¯á· ááá·áºááºáá áºáá¯áá«áá±á¬ áááºáá±á·áá»ááºáá áºáᯠááŸááááºá
á¡á±á¬ááºáá« Docker áá¯á¶áá»á¬ážááẠá€á¡ááá·áºáá»á¬ážááœáẠáá«áááºáááº-
- á ááºážáááºáá±ááá·áº áááºáá±á¬ááºááŸá¯ááẠáá¯ááºáá¯ááºááŸá¯ááŸáá·áº áá°áá®áááºá á á áºáá±ážááŸá¯á¡ááœáẠááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááẠáááºáááºážáá»áẠááááºážááŸááºáá»á¬ážááŸáá áºááá·áº ááŒá áºáááºá
- Postgresá Redis ááŸáá·áº LocalStack á¡ááœáẠDocker Hub á០á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ áá¯á¶áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá Liquibase ááŸáá·áº Newman á¡ááœáẠá¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ áá¯á¶áá»á¬ážáááºáž ááŸááá«áááºá áá»áœááºá¯ááºááá¯á·ááẠáááºážááá¯á·áá¡ááá¯ážá á¯áá±á«áºááœáẠáá»áœááºá¯ááºááá¯á·áá¡ááá¯ážáá»á¬ážááá¯áááºáá±á¬ááºááŒá®áž áá»áœááºá¯ááºááá¯á·áááá¯ááºáá»á¬ážááᯠááá¯áá±áá¬ááœááºááá·áºáááºá
- LocalStack ááá¯ááŒááºáááºáááºá¡ááœáẠáááºááẠá¡ááá·áºáá¯ááºáá¬ážáá±á¬ AWS CLI áá¯ááºáá¯á¶ááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž áááºážá¡áá±á«áºá¡ááŒá±áá¶á script áá áºáá¯áá«ááŸááá±á¬ áá¯á¶áá áºáá¯ááᯠáááºáá®ážáá«á
á¡áá¯á¶ážááŒá¯ááŒááºáž
ááŒá¯á¶ááœá±á·ááá±á¬ ááŒá¿áá¬áá»á¬áž
á¡áááºááá·áºá á±á¬áá·áºáá±áááºá
áááºáá±á¬ááºááŸá¯áá áºáá¯áá«ááŸááá±á¬ ááœááºááááºáá¬áá áºáᯠáá¯ááºáá±á¬ááºáá±áá»áááºááœáẠáááºážááẠáá»áááºáááºááŸá¯áá»á¬ážááᯠáááºáá¶ááẠá¡ááá·áºááŒá áºáá±ááŒá®áᯠáááá¯ááá¯áá«á áá»áááºáááºááŸá¯ áááºáá¯ááºááẠá á±á¬áá·áºááá«áááºá
á€ááŒá¿áá¬ááᯠáá
áºáá«áá
áºáá¶ááœáẠáá¬ááºááœáŸááºážááŒáá·áº ááŒá±ááŸááºážááá¯ááºáááºá
áá¯á¶ážááŒááºáá»ááº- SQS ááŸáá·áº SNS ááŸá áºáá¯áá¯á¶ážá០áá¯á¶á·ááŒááºáá»áẠ200 ááá¯á á±á¬áá·áºááá¯ááºážáá±á¬ LocalStack á á®áá¶áá±á¬ááºááœááºáá±ážááá·áº script áá»á¬ážá
Parallel Task áááááá¹ááá»á¬áž
á ááºážáááºááŸá¯áá»á¬ážá áœá¬ááᯠáá°áá®áá±á¬ Docker host ááœáẠáá áºááŒáá¯ááºááẠáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ááŒá±á¬áá·áº ááœááºááááºáá¬ááŸáá·áº ááœááºáááºá¡áááºáá»á¬ážááẠáá áºáá°áá°ážááŒá¬ážáá±ááá«áááºá ááá¯á·á¡ááŒááºá áá°áá®áá±á¬áááºáá±á¬ááºááŸá¯á ááá°áá®áá±á¬á¡ááá¯ááºážá¡áááºáá»á¬ážá០á ááºážáááºááŸá¯áá»á¬ážááá¯áááºáž áá áºááŒáá¯ááºáááºáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ááŒá±á¬áá·áº á á¬ááœá²á·ááá¯ááºáá áºáá¯á á®ááœáẠáááºážááá¯á·áá¡áááºáá»á¬ážááᯠáá±ážáá¬ážááẠááá¯á¶áá±á¬ááºáá«á
áá¯á¶ážááŒááºáá»ááº: script ááẠCOMPOSE_PROJECT_NAME variable ááᯠáá°ážááŒá¬ážáá±á¬áááºááá¯ážá¡ááŒá ẠáááºááŸááºáááºá
Windows á¡ááºá¹áá«áááºáá»á¬áž
Windows ááœáẠDocker ááá¯á¡áá¯á¶ážááŒá¯áá¬ááœáẠá€á¡ááœá±á·á¡ááŒá¯á¶áá»á¬ážááẠá¡ááŸá¬ážá¡ááœááºážáá»á¬áž ááŒá áºáá±á«áºáá¬áááŒááºážááᯠáá¬ážáááºááẠá¡áá±ážááŒá®ážáá±á¬ááŒá±á¬áá·áº áá»áœááºá¯áẠáá±á¬ááºááŒááá¯ááá·áºá¡áá»ááºáá»á¬ážá áœá¬ááŸááá«áááºá
- ááœááºááááºáá¬áá
áºáá¯ááŸá Shell Script áá»á¬ážááœáẠLinux á
á¬ááŒá±á¬ááºážá¡áá¯á¶ážáá»á¬áž ááŸáááá«áááºá
shell CR áááºá¹áá±áááẠsyntax á¡ááŸá¬ážáá áºáá¯ááŒá áºáááºá error message á០ááŒá±á¬ááááºáááºá Windows ááœááºááá¯áá²á·ááá¯á·áá±á¬ script áá»á¬ážááá¯áááºážááŒááºáá±á¬á¡áá«á áááºáááºááŸááºáááºáá±á¬á á¬áá¬ážáááºážááŒááºáááºááá¯á¡ááºáááºá ááá¯á·á¡ááŒááºá áá¬ážááŸááºážááááºážáá»á¯ááºááŸá¯á áá áºá¡á¬áž áá±á¬ááºážááœááºá áœá¬ááŒááºáááºáááºááŸááºááá«áááºá
git ááᯠconfigure áá¯ááºáá¯á¶á áá®ááá¯áá«á
git config core.autocrlf input
- Git-bash ááẠáá¯á¶ááŸáẠLinux ááá¯ááºááœá²áá»á¬ážááᯠá¡áá¯áá°áᬠexe ááá¯áẠ(docker.exe á¡áá«á¡áááº) ááᯠáá±á«áºáá±á¬á¡áá«á Linux áááºážááŒá±á¬ááºážáá»á¬ážááᯠWindows áááºážááŒá±á¬ááºážáá»á¬ážááŒáá·áº á¡á á¬ážááá¯ážáááºá ááá¯á·áá±á¬áºá áááºážááẠá ááºááœááºážá áẠ(ááá¯á·ááá¯áẠááœááºááááºáá¬á¡ááœááºážááŸá áááºážááŒá±á¬ááºážáá»á¬áž) ááœááºáááŸááá±á¬ áááºážááŒá±á¬ááºážáá»á¬ážá¡ááœáẠá¡áááá¹áá«ááºáááŸááá«á á€á¡ááŒá¯á¡áá°ááᯠááááºáá¬ážááááá«á
áá¯á¶ážááŒááºáá»ááº: /bin á¡á á¬áž //bin áááºážááŒá±á¬ááºážáá¡á ááœáẠá¡ááá¯áá»á¥áºážá á±á¬ááºážáá áºáá¯ááᯠáá±á«ááºážááá·áºáá«á Linux ááẠááá¯áááºážááŒá±á¬ááºážáá»á¬ážááᯠáá¬ážáááºáááºá áááºážá¡ááœááºá áá»ááºážá á±á¬ááºážá¡áá»á¬ážá¡ááŒá¬ážááẠáá áºáá¯ááŸáá·áº áá°áá®áááºá ááá¯á·áá±á¬áº git-bash ááẠááá¯áááºážááŒá±á¬ááºážáá»á¬ážááᯠá¡ááá¡ááŸááºáááŒá¯áá² áááºážááá¯á·ááᯠááŒá±á¬ááºážáá²ááẠáááŒáá¯ážá á¬ážáá±á
ááŸááºáááºážá¡ááœááº
á ááºážáááºááŸá¯áá»á¬áž áá¯ááºáá±á¬ááºááá·áºá¡áá«á Newman ááŸáá·áº áááºáá±á¬ááºááŸá¯ááᯠá ááºážáááºáá±ááá·áº ááŸááºáááºážáá»á¬ážááᯠááŒáá·áºááá¯áá«áááºá á€ááŸááºáááºážáá»á¬ážá á¡ááŒá áºá¡áá»ááºáá»á¬ážááẠá¡ááŒááºá¡ááŸááºáá»áááºáááºáá¬ážáá±á¬ááŒá±á¬áá·áºá áááºážááá¯á·ááᯠááœááºááá¯ážááºáá áºáá¯ááœáẠáá±á«ááºážá ááºááŒááºážááẠáá®ážááŒá¬ážááá¯ááºááŸá áºáá¯ááẠáá»á¬ážá áœá¬ááá¯á á¡áááºááŒá±áá«áááºá Newman ááŸáááá·áº ááœáŸáá·áºáááºáááºá docker-compose run áá«áááá¯á·ááŒá±á¬áá·áº áááºážá output ááẠconsole ááœááºá¡áá¯á¶ážáááºááœá¬ážáááºá áá»ááºáá¬á¡á¬ážáá¯á¶ážá áááºáá±á¬ááºááŸá¯áá²á· output áááºážá¡á²áá®ááŸá¬ááœá¬ážáá±áááºááá¯áᬠáá±áá»á¬á¡á±á¬ááºáá«áá²á
áá°áááŒá±ááŸááºážáá»ááºá áá¯ááºáááŸá¬ ááẠdocker-compose á¡áá¶áááŸáá -dshell á áœááºážáááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á€áá¯ááºáááºážá ááºááᯠáá±á¬ááºáá¶ááá¯á· áá±ážááá¯á·áá«-
docker-compose up <service> &
Docker á០ááŸááºáááºážáá»á¬ážááᯠááŒááºááááºáá±á¬ááºááŸá¯áá áºáá¯ááá¯á· áá±ážááá¯á·ááẠááá¯á¡ááºááá·áºááá¯ááºá¡á±á¬áẠáááºážááẠá¡áá¯ááºáá¯ááºáááºá ááẠdocker-compose ááœááºááá¯ážááºááá¯á· ááŸááºáááºážáá»á¬áž áá¯ááºááŒááºážááᯠáááºááá¯ááºáááºá ááá¯á·áá±á¬áº á¡áááºážááẠá¡áá¯ááºááŒá áºáá²á·áááºá docker attach áá¯ááºáá«.
áá¯á¶ážááŒááºáá»ááº:
docker attach --no-stdin ${COMPOSE_PROJECT_NAME}_<ÑеÑвОÑ>_1 &
áááºáá±á¬ááºážá ááºážáááºááŸá¯áá»á¬áž ááŒá¯áá¯ááºáá±á áẠááœá²ááŒá¬ážáááºááŸááºááŸá¯ áááááá¹á
á ááºážáááºááŸá¯áá»á¬ážááᯠá¡ááŒáááºááŒáááºááŒá¯áá¯ááºáááºá áá±áá¬áá±á·á áºááᯠáááŸááºážáááºážáá«á áá±áá¬áá±á·á áºááŸá ááŸááºáááºážáá»á¬ážááœáẠáá®ážááá·áº ID áá»á¬ážááŸááááºá áá±á¬ááºážááá¯áá»ááºáá»á¬ážááœáẠáááá»áá±á¬ ID áá»á¬ážááᯠáá±ážááŸááºáá¬ážáá«áá áá¯áááá¡áá»á±á¬á·ááœáẠáááááá¹áááŒá áºáá«áááºá
áááºážááá¯ááŸá±á¬ááºááŸá¬ážáááºá ID áá»á¬ážááẠáá®ážááá·áºááŒá áºáááẠááá¯á·ááá¯áẠá ááºážáááºááŸá¯ááŸáááºáá®ážáá¬ážááá·áºá¡áá¬á¡á¬ážáá¯á¶ážááᯠáá»ááºáá áºááá«áááºá ááá¯á¡ááºáá»ááºáá»á¬ážááŒá±á¬áá·áº á¡áá»áá¯á·á¡áá¬ááá¹áá¯áá»á¬ážááᯠáá»ááºááááá«á
áá¯á¶ážááŒááºáá»ááº: Postman scripts áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯á GUID áá»á¬ážááá¯áááºáá®ážáá«á
var uuid = require('uuid');
var myid = uuid.v4();
pm.environment.set('myUUID', myid);
ááá¯á·áá±á¬áẠáá±ážááŒááºážááŸá¯ááœáẠáááºá¹áá±áááᯠá¡áá¯á¶ážááŒá¯áá«á {{myUUID}}variable ááááºááá¯ážááŸáá·áº á¡á á¬ážááá¯ážááá·áºá
LocalStack ááŸáááá·áº áá°ážáá±á«ááºážáá±á¬ááºááœááºááŒááºáž
á ááºážáááºáá±ááá·áº áááºáá±á¬ááºááŸá¯ááẠSQS áááºážá á®ááœáẠáááºááŒááºáž ááá¯á·ááá¯áẠá á¬áá±ážáá«áá áááºážááᯠá¡áááºááŒá¯áááºá á ááºážáááºááŸá¯ááá¯ááºááá¯ááºá á€áááºážá á®ááŸáá·áºáááºáž á¡áá¯ááºáá¯ááºááá«áááºá
áá¯á¶ážááŒááºáá»ááº: Postman á០LocalStack ááá¯á· áá±á¬ááºážááá¯áá»ááºáá»á¬ážá
AWS áááºáá±á¬ááºááŸá¯ API ááẠSDK ááá«áá² áá±ážááŒááºážááŸá¯áá»á¬ážááᯠááŒá¯áá¯ááºááœáá·áºááŒá¯áááºá
áááºáá±á¬ááºááŸá¯áá áºáá¯ááẠáááºážá á®ááẠá á¬áá±ážáá«á áááºážááá¯áááºááŒá®áž áááºáá±á·áá»áºá á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠá á áºáá±ážáá«á
áááºáá±á¬ááºááŸá¯ááẠSNS ááá¯á· áááºáá±á·áá»áºáá»á¬áž áá±ážááá¯á·áá«áá ááŒááºáááºááŸá¯á¡ááá·áºááœáẠLocalStack ááẠáááºážá á®ááŒááºážááᯠáááºáá®ážááŒá®áž ဠSNS áá±á«ááºážá ááºááᯠá á¬áááºážááœááºážáááºá áá«ááá¯áááºáá±á¬á· á¡á¬ážáá¯á¶ážá á¡áááºááŸá¬ áá±á¬áºááŒáá¬ážáá²á·á¡ááá¯ááºážáá«áá²á
áááºáá±á¬ááºááŸá¯ááẠáááºážá á®áá±ááá·áº áááºáá±á·áá»áºááᯠáááºááẠááá¯á¡ááºáá«áá ááá¯á·áá±á¬áẠááááºá ááºážáááºááŸá¯ á¡ááá·áºááœáẠá€á á¬ááᯠáááºážá á®ááẠáá±ážááá¯ááºáá«áááºá
á ááºážáááºáá² microservice ááŸá¡á ááŒá¯áá±á¬ HTTP áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠá ááºážáááºááŒááºážá
á¡áá»áá¯á·áááºáá±á¬ááºááŸá¯áá»á¬ážááẠAWS ááŸááœá²á á¡ááŒá¬ážá¡áá¬áá áºáá¯áá¯ááŒáá·áº HTTP ááŒáá·áº áá¯ááºáá±á¬ááºááŒááŒá®áž á¡áá»áá¯á·áá±á¬ AWS á¡ááºá¹áá«áááºáá»á¬ážááᯠLocalStack ááœáẠá¡áá±á¬ááºá¡áááºááá±á¬áºáá«á
áá¯á¶ážááŒááºáá»ááº: áá®ááá¯ááá
á¹á
ááœá±ááŸá¬ áá°áá®áá±ážááá¯ááºáá«áááºá
OAuth á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŸáá·áº ááœáá·áºááŒá¯áá»ááºááᯠá ááºážáááºááŒááºážá
áá»áœááºá¯ááºááá¯á·ááẠOAuth ááŸáá·áº á¡áá¯á¶ážááŒá¯áááºá
áááºáá±á¬ááºááŸá¯ááŸáá·áº OAuth áááºáá±á¬ááºááŸá¯áá±ážáá°ááŒá¬áž á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯á¡á¬ážáá¯á¶ážááẠáá±á¬ááºážááá¯áá»ááºááŸá áºáá¯á០áááºážáááºáá¬áááº- áááá ááœá²á·á ááºážáááºááŸááºááŸá¯ááᯠáá±á¬ááºážááá¯áá¬ážáááºá /.well-known/openid-configurationááá¯á·áá±á¬áẠá¡áá»á¬ážáá°ááŸá¬áá±á¬á· (JWKS) ááᯠá á®á ááºááœá²á·á ááºážááŸá¯á០ááááºá á¬ááœáẠáá±á¬ááºážááá¯áá¬ážáááºá á€á¡áá¬á¡á¬ážáá¯á¶ážááẠáááºááŒáááºáá±á¬á¡ááŒá±á¬ááºážá¡áá¬ááŒá áºáááºá
áá¯á¶ážááŒááºáá»ááº- áá»áœááºá¯ááºááá¯á·áá ááºážááẠOAuth áááºáá±á¬ááºááŸá¯áá±ážáá°ááẠáááºááŒáááºáá±á¬á¡ááŒá±á¬ááºážá¡áá¬áá¬áá¬ááŒá áºááŒá®áž áááºážááœááºááá¯ááºááŸá áºáá¯ááŸááááºá ááá¯áááºááᯠáá áºááŒáááºáá¯ááºáá±ážááŒá®áž Git ááá¯á· áááááŒá¯áá«áááºá
SignalR á ááºážáááºááŒááºážáá¡ááºá¹áá«áááºáá»á¬áž
á á¬ááá¯á·ááá¬ážááẠwebsocket áá»á¬ážááŸáá·áº á¡áá¯ááºááá¯ááºáá«á SignalR ááᯠá ááºážáááºááẠá¡áá°ážáááááá¬ááᯠáááºáá®ážáá¬ážáááºá
SignalR client ááẠbrowser áá áºáá¯áááºáá ááŒá áºááá¯ááºáááºá .NET Core á¡á±á¬ááºááœáẠáááºážá¡ááœáẠclient á á¬ááŒáá·áºááá¯ááºáá áºáᯠááŸááá«áááºá .NET Core ááŒáá·áºáá±ážáá¬ážáá¬ážáá±á¬ client ááẠáá»áááºáááºááŸá¯áá áºáá¯ááá¯áááºáá±á¬ááºááŒá®áž á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒá®áž áááá»áá±á¬á á¬ááá¯áá»á¬ážá¡á á®á¡á á¥áºááá¯á á±á¬áá·áºááá¯ááºážáá±áááºá ááá»áŸá±á¬áºááá·áºáá¬ážáá±á¬ áááºáá±á·áá»áºááᯠáááºáá¶áááŸáááẠááá¯á·ááá¯áẠáá»áááºáááºááŸá¯ áá»á±á¬ááºáá¯á¶ážááœá¬ážáá«áá client ááẠ1 ááá¯ááºááŒáá·áº ááœááºáá«áááºá áá±á¬ááºáá¯á¶ážáá»áŸá±á¬áºááá·áºáá¬ážááá·áº áááºáá±á·áá»áºááᯠáááºáá¶áááŸááá«áá client ááẠ0 áá¯ááºááŒáá·áº ááœááºáá«áááºá
Newman ááẠclient ááŸáá·áºáá áºááŒáá¯ááºáááºá¡áá¯ááºáá¯ááºáááºá áááºáá±á·áá»áºáá»á¬ážááᯠááá¯á¡ááºáá°ááá¯ááºážáᶠáá±ážááá¯á·áá¬ážááŒá±á¬ááºáž á á áºáá±ážáááºá¡ááœáẠáá¯á¶ážá áœá²áá°á¡áá»á¬ážá¡ááŒá¬ážááᯠá áááºáá±á¬ááºááœááºáá«áááºá
client á¡áá»á¬ážá¡ááŒá¬ážááá¯áááºáááºááẠoption ááá¯á¡áá¯á¶ážááŒá¯áá«á --á áá±áž docker-compose command line ááœááºá
ááá¯ááºáá±á¬ááºáá®á Postman script ááẠáá»áááºáááºááŸá¯áá»á¬ážááᯠáááºáá±á¬ááºááẠclient á¡á¬ážáá¯á¶ážááᯠá
á±á¬áá·áºáááºá
áá»áááºáááºááŸá¯ááᯠá
á±á¬áá·áºááá¯ááºážáááá·áº ááŒá¿áá¬ááᯠáá»áœááºá¯ááºááá¯á· ááŒá¯á¶ááœá±á·áá±ááááºá áá«áá±ááá·áº áá¬áá¬ááœá±ááŸááá²á·áááºá áá«á client áá«á ááœá²ááŒá¬ážááŒá¬ážáá¬ážáá±á¬áá»ááºážáááºááŸá¯ááá¯á¡ááºáááºá
áá¯á¶ážááŒááºáá»ááº: ááœááºááááºáá¬ááŸá client ááẠááá¹ááá¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá
HEALTHCHECK --interval=3s CMD if [ ! -e /healthcheck ]; then false; fi
á¡ááœá²á· docker á á áºáá±ážááŒááºážá áá¯á¶ááŸááºá¡ááŒá±á¡áá±á áá»ááºážáá¬áá±ážá¡ááŒá±á¡áá±ááŸáá·áº ááœááºááááºáá¬á¡ááœáẠááœááºáá±á«ááºáá¯ááºááᯠááŒáááºá
Newman ááŒá®ážáá¯á¶ážááŒá®ážáá±á¬ááºá áá¯áẠ0 ááŒáá·áº client áá«ááŸáááá·áº ááœááºááááºáá¬á¡á¬ážáá¯á¶ážááᯠáááºááá¯ááºážááŒá±á¬ááºáž script á á á áºáá±ážáááºá
áá»á±á¬áºááœáŸááºááŸá¯ááœá± ááŸááá±áááºá
á¡áááºááœááºáá±á¬áºááŒáá¬ážáá±á¬á¡áááºá¡áá²áá»á¬ážááá¯áá»áœááºá¯ááºááá¯á·áá»á±á¬áºááŒááºááŒá®ážáá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠáááºááŒáááºáá±á¬á¡ááŒá±ážá ááºážáááºááŸá¯á¡á á¯á¶ááá¯áááŸááá²á·áá«áááºá á ááºážáááºááŸá¯áá»á¬ážááœááºá áááºáá±á¬ááºááŸá¯áá áºáá¯á á®ááẠáá±áá¬áá±á·á áºááŸáá·áº Amazon LocalStack ááá¯á·ááŸáá·áº á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážááŒá¯ááá·áº áá°áá áºáá áºáá¯áááºážá¡ááŒá Ạáá¯ááºáá±á¬ááºáááºá
á€á ááºážáááºááŸá¯áá»á¬ážááẠáááŒá¬áá ááŒáá·áºáá»ááºááŸá¯áá»á¬ážááŸáá·áºá¡áá° 30+ microservices áá»á¬ážá ááŸá¯ááºááœá±ážáá±á¬ á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯ááŒáá·áº á¡ááºááá®áá±ážááŸááºážááœáẠáá±á¬á·ááºáá²á¡ááºáá»ááºáá®áᬠ10+ áá¡ááœá²á·áá áºááœá²á·ááᯠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážá០áá¬ááœááºáá±ážáá«áááºá
source: www.habr.com