ãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ãã£ã®éçºã«é¢é£ãããããžã§ã¯ãã«ãããŠãCI/CD ã¯æ¥œããæ©äŒã®ã«ããŽãªãŒããç·æ¥ã«å¿ èŠãªã«ããŽãªãŒã«ç§»è¡ããŠããŸãã èªåãã¹ãã¯ç¶ç¶ççµ±åã«äžå¯æ¬ ãªéšåã§ãããããŒã ã«å®¶æãå人ãšæ¥œããå€ãéããããšãã§ããæèœãªã¢ãããŒãã§ãã ããããªããšããããžã§ã¯ããå®äºããªãå±éºããããŸãã
ã¢ã㯠ãªããžã§ã¯ãã䜿çšããåäœãã¹ãã§ãã€ã¯ããµãŒãã¹ ã³ãŒãå šäœãã«ããŒããããšã¯å¯èœã§ãããããã§ã¯åé¡ã¯éšåçã«ãã解決ããããç¹ã«ããŒã¿ã䜿çšããäœæ¥ããã¹ãããå Žåã«ã¯å€ãã®çåãšå°é£ãæ®ããŸãã ãã€ãã®ããã«ãæãå·®ãè¿«ã£ãåé¡ã¯ããªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã§ã®ããŒã¿ã®æŽåæ§ã®ãã¹ããã¯ã©ãŠã ãµãŒãã¹ã§ã®äœæ¥ã®ãã¹ããã¢ã㯠ãªããžã§ã¯ããäœæãããšãã«èª€ã£ãä»®å®ãè¡ãããšã§ãã
ããããã¹ãŠãšãã以äžã®ããšã¯ãDocker ã³ã³ãããŒã§ãã€ã¯ããµãŒãã¹å šäœããã¹ãããããšã§è§£æ±ºã§ããŸãã ãã¹ãã®æå¹æ§ã確ä¿ããäžã§ã®çãã®ãªãå©ç¹ã¯ãå®çšŒåç°å¢ã«å ¥ãã®ãšåã Docker ã€ã¡ãŒãžããã¹ããããããšã§ãã
ãã®ã¢ãããŒãã®èªååã«ã¯å€ãã®åé¡ãçºçããŸãããã®è§£æ±ºçã«ã€ããŠã¯ä»¥äžã§èª¬æããŸãã
- åã Docker ãã¹ãå ã®äžŠåã¿ã¹ã¯ã®ç«¶åã
- ãã¹ãå埩äžã«ããŒã¿ããŒã¹å ã§èå¥åã®ç«¶åãçºçããã
- ãã€ã¯ããµãŒãã¹ã®æºåãæŽãã®ãåŸ ã£ãŠããŸãã
- ãã°ãããŒãžããŠå€éšã·ã¹ãã ã«åºåããŸãã
- çºä¿¡ HTTP ãªã¯ãšã¹ãããã¹ãããã
- Web ãœã±ããã®ãã¹ã (SignalR ã䜿çš)ã
- OAuth èªèšŒãšèªå¯ããã¹ãããŸãã
ãã®èšäºã¯ä»¥äžã«åºã¥ããŠããŸã
ãã®èšäºã§ã¯ãã¹ã¯ãªããã䜿çšããŠãã¹ã察象ã®ãµãŒãã¹ãããŒã¿ããŒã¹ãAmazon AWS ãµãŒãã¹ã Docker ã§å®è¡ããPostman ã§ãã¹ãããå®äºåŸã«äœæããã³ã³ãããåæ¢ããŠåé€ããæ¹æ³ã説æããŸãã ãã¹ãã¯ã³ãŒããå€æŽããããã³ã«å®è¡ãããŸãã ãã®ããã«ããŠãåããŒãžã§ã³ã AWS ããŒã¿ããŒã¹ããã³ãµãŒãã¹ã§æ£ããåäœããããšã確èªããŸãã
åãã¹ã¯ãªããããéçºè èªèº«ã® Windows ãã¹ã¯ããããšãLinux äžã® Gitlab CI ãµãŒããŒã®äž¡æ¹ã§å®è¡ãããŸãã
æ°ãããã¹ããå°å ¥ããããã«ãéçºè ã®ã³ââã³ãã¥ãŒã¿ãã³ãããã§ãã¹ããå®è¡ããããµãŒããŒã«è¿œå ã®ããŒã«ãã€ã³ã¹ããŒã«ããå¿ èŠã¯ãªãã¯ãã§ãããDocker ã¯ãã®åé¡ã解決ããŸãã
次ã®çç±ã«ããããã¹ãã¯ããŒã«ã« ãµãŒããŒã§å®è¡ããå¿ èŠããããŸãã
- ãããã¯ãŒã¯ã¯æ±ºããŠå®å
šã«ä¿¡é Œã§ãããã®ã§ã¯ãããŸããã XNUMX 件ã®ãªã¯ãšã¹ãã®ãã¡ XNUMX 件ã倱æããå¯èœæ§ããããŸãã
ãã®å Žåãèªåãã¹ãã¯æ©èœãããäœæ¥ãåæ¢ããããããã°ã§çç±ãæ¢ãå¿ èŠããããŸãã - äžéšã®ãµãŒãããŒã㣠ãµãŒãã¹ã§ã¯ãããŸãã«é »ç¹ãªãªã¯ãšã¹ããèš±å¯ãããŸããã
ããã«ã次ã®çç±ããã¹ã¿ã³ãã®äœ¿çšã¯æãŸãããããŸããã
- ã¹ã¿ã³ãã¯ããã®äžã§å®è¡ãããŠããäžæ£ãªã³ãŒãã ãã§ãªããæ£ããã³ãŒããåŠçã§ããªãããŒã¿ã«ãã£ãŠãå£ããå¯èœæ§ããããŸãã
- ãã¹ãäžã«è¡ããããã¹ãŠã®å€æŽãå ã«æ»ãããšã©ãã ãåªåããŠããäœãåé¡ãçºçããå¯èœæ§ããããŸã (ããã§ãªãå Žåããªããã¹ãããå¿ èŠããããŸãã?)ã
ãããžã§ã¯ããšããã»ã¹ã®çµç¹ã«ã€ããŠ
åœç€Ÿã¯ãAmazon AWS ã¯ã©ãŠãã® Docker ã§å®è¡ããããã€ã¯ããµãŒãã¹ Web ã¢ããªã±ãŒã·ã§ã³ãéçºããŸããã ãããžã§ã¯ãã§ã¯ãã§ã«åäœãã¹ãã䜿çšãããŠããŸããããåäœãã¹ãã§ã¯æ€åºãããªãã£ããšã©ãŒãé »ç¹ã«çºçããŸããã ããŒã¿ããŒã¹ãš Amazon ãµãŒãã¹ãšãšãã«ãã€ã¯ããµãŒãã¹å šäœããã¹ãããå¿ èŠããããŸããã
ãã®ãããžã§ã¯ãã§ã¯ãã³ãããããšã«ãã€ã¯ããµãŒãã¹ããã¹ãããããšãå«ããæšæºã®ç¶ç¶ççµ±åããã»ã¹ã䜿çšãããŸãã ã¿ã¹ã¯ãå²ãåœãŠãåŸãéçºè ã¯ãã€ã¯ããµãŒãã¹ã«å€æŽãå ããæåã§ãã¹ãããå©çšå¯èœãªãã¹ãŠã®èªåãã¹ããå®è¡ããŸãã å¿ èŠã«å¿ããŠãéçºè ã¯ãã¹ããå€æŽããŸãã åé¡ãèŠã€ãããªãå Žåã¯ããã®åé¡ã®ãã©ã³ãã«ã³ããããè¡ãããŸãã åã³ãããã®åŸããµãŒããŒäžã§ãã¹ããèªåçã«å®è¡ãããŸãã å ±éãã©ã³ããžã®ããŒãžãšãã®ãã©ã³ãã«å¯Ÿããèªåãã¹ãã®éå§ã¯ãã¬ãã¥ãŒãæåããåŸã«è¡ãããŸãã å ±æãã©ã³ãã®ãã¹ãã«åæ ŒãããšãAmazon Elastic Container Service (ãã³ã) ã®ãã¹ãç°å¢ã§ãµãŒãã¹ãèªåçã«æŽæ°ãããŸãã ã¹ã¿ã³ãã¯ãã¹ãŠã®éçºè ãšãã¹ã¿ãŒã«ââãšã£ãŠå¿ èŠãªãã®ã§ãããå£ãããšã¯ãå§ãã§ããŸããã ãã®ç°å¢ã®ãã¹ã¿ãŒã¯ãæåãã¹ããå®è¡ããŠä¿®æ£ãŸãã¯æ°æ©èœããã§ãã¯ããŸãã
ãããžã§ã¯ãã®ã¢ãŒããã¯ãã£
ã¢ããªã±ãŒã·ã§ã³ã¯ XNUMX ãè¶ ãããµãŒãã¹ã§æ§æãããŠããŸãã ãããã®äžéšã¯ .NET Core ã§æžãããŠãããäžéšã¯ NodeJs ã§æžãããŠããŸãã åãµãŒãã¹ã¯ãAmazon Elastic Container Service ã® Docker ã³ã³ããã§å®è¡ãããŸãã ããããã«ç¬èªã® Postgres ããŒã¿ããŒã¹ããããäžéšã«ã¯ Redis ãå«ãŸããŠããŸãã å ±éã®ããŒã¿ããŒã¹ã¯ãããŸããã è€æ°ã®ãµãŒãã¹ãåãããŒã¿ãå¿ èŠãšããå Žåããã®ããŒã¿ã¯å€æŽããããšãSNS (Simple Notice Service) ããã³ SQS (Amazon Simple Queue Service) çµç±ã§åãµãŒãã¹ã«éä¿¡ãããåãµãŒãã¹ã¯ãããç¬èªã®åå¥ã®ããŒã¿ããŒã¹ã«ä¿åããŸãã
SQSãšSNS
SQS ã䜿çšãããšãHTTPS ãããã³ã«ã䜿çšããŠã¡ãã»ãŒãžããã¥ãŒã«å ¥ãããããã¥ãŒããã¡ãã»ãŒãžãèªã¿åãããšãã§ããŸãã
è€æ°ã®ãµãŒãã¹ã XNUMX ã€ã®ãã¥ãŒãèªã¿åãå Žåãåã¡ãã»ãŒãžã¯ãã®ãã¡ã® XNUMX ã€ã«ã®ã¿å°çããŸãã ããã¯ãåããµãŒãã¹ã®è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ãå®è¡ããŠãããã®éã§è² è·ãåæ£ããå Žåã«äŸ¿å©ã§ãã
åã¡ãã»ãŒãžãè€æ°ã®ãµãŒãã¹ã«é ä¿¡ããå Žåã¯ãååä¿¡è ãç¬èªã®ãã¥ãŒãæã€å¿ èŠããããã¡ãã»ãŒãžãè€æ°ã®ãã¥ãŒã«è€è£œããããã« SNS ãå¿ èŠã§ãã
SNS ã§ã¯ããããã¯ãäœæããããããµãã¹ã¯ã©ã€ãããŸã (SQS ãã¥ãŒãªã©)ã ãããã¯ã«ã¡ãã»ãŒãžãéä¿¡ã§ããŸãã ãã®å Žåãã¡ãã»ãŒãžã¯ããã®ãããã¯ã«ãµãã¹ã¯ã©ã€ããããŠããåãã¥ãŒã«éä¿¡ãããŸãã SNSã«ã¯ã¡ãã»ãŒãžãèªãæ¹æ³ããããŸããã ãããã°ãŸãã¯ãã¹ãäžã«ãSNS ã«äœãéä¿¡ããããã調ã¹ãå¿ èŠãããå Žåã¯ãSQS ãã¥ãŒãäœæããç®çã®ãããã¯ã«ãµãã¹ã¯ã©ã€ãããŠããã¥ãŒãèªã¿åãããšãã§ããŸãã
APIã²ãŒããŠã§ã€
ã»ãšãã©ã®ãµãŒãã¹ã¯ã€ã³ã¿ãŒãããããçŽæ¥ã¢ã¯ã»ã¹ã§ããŸããã ã¢ã¯ã»ã¹ã¯ãã¢ã¯ã»ã¹æš©ããã§ãã¯ãã API ã²ãŒããŠã§ã€çµç±ã§è¡ãããŸãã ãããåœç€Ÿã®ãµãŒãã¹ã§ããããã¹ãããããŸãã
ãªã¢ã«ã¿ã€ã éç¥
ã¢ããªã±ãŒã·ã§ã³ã䜿çšããã®ã¯ã
ããç¥ããããã¹ãææ³
åäœãã¹ãã§ã¯ãããŒã¿ããŒã¹ãªã©ãã¢ã㯠ãªããžã§ã¯ãã«çœ®ãæããŸãã ããšãã°ããã€ã¯ããµãŒãã¹ãå€éšããŒã䜿çšããŠããŒãã«ã«ã¬ã³ãŒããäœæããããšãããšãã«ããã®ããŒã«ãã£ãŠåç §ãããã¬ã³ãŒããååšããªãå Žåããªã¯ãšã¹ãã¯å®äºã§ããŸããã åäœãã¹ãã§ã¯ãããæ€åºã§ããŸããã
Ð
ã€ã³ã¡ã¢ãª ããŒã¿ããŒã¹ã¯ãEntity Framework ã§ãµããŒãããã DBMS ã® XNUMX ã€ã§ãã ããã¯ãã¹ãçšã«ç¹å¥ã«äœæãããŸããã ãã®ãããªããŒã¿ããŒã¹å ã®ããŒã¿ã¯ãããã䜿çšããããã»ã¹ãçµäºãããŸã§ã®ã¿ä¿åãããŸãã ããŒãã«ãäœæããå¿ èŠã¯ãªããããŒã¿ã®æŽåæ§ããã§ãã¯ããŸããã
ã¢ã㯠ãªããžã§ã¯ãã¯ããã¹ãéçºè ããã®åäœæ¹æ³ãç解ããŠããç¯å²ã§ã®ã¿ã眮æ察象ã®ã¯ã©ã¹ãã¢ãã«åããŸãã
ãã¹ãã®å®è¡æã« Postgres ãèªåçã«èµ·åããŠç§»è¡ãå®è¡ããæ¹æ³ã«ã€ããŠã¯ãMicrosoft ã®èšäºã«ã¯èšèŒãããŠããŸããã ç§ã®ãœãªã¥ãŒã·ã§ã³ã¯ãããè¡ããããã«ããã€ã¯ããµãŒãã¹èªäœã«ãã¹ãå°çšã®ã³ãŒããè¿œå ããŸããã
解決çã«ç§»ããŸããã
éçºããã»ã¹äžã«ããã¹ãŠã®åé¡ãã¿ã€ã ãªãŒã«çºèŠããã«ã¯åäœãã¹ãã ãã§ã¯äžååã§ããããšãå€æããããããã®åé¡ã«å¥ã®è§åºŠããã¢ãããŒãããããšã«ããŸããã
ãã¹ãç°å¢ã®ã»ããã¢ãã
æåã®ã¿ã¹ã¯ã¯ããã¹ãç°å¢ãå±éããããšã§ãã ãã€ã¯ããµãŒãã¹ãå®è¡ããããã«å¿ èŠãªæé :
- ããŒã«ã«ç°å¢çšã«ãã¹ã察象ã®ãµãŒãã¹ãæ§æããç°å¢å€æ°ã§ããŒã¿ããŒã¹ãš AWS ã«æ¥ç¶ããããã®è©³çŽ°ãæå®ããŸãã
- Postgres ãèµ·åããLiquibase ãå®è¡ããŠç§»è¡ãå®è¡ããŸãã
ãªã¬ãŒã·ã§ãã« DBMS ã§ã¯ãããŒã¿ããŒã¹ã«ããŒã¿ãæžã蟌ãåã«ãããŒã¿ ã¹ããŒããã€ãŸãããŒãã«ãäœæããå¿ èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³ãæŽæ°ãããšãã¯ãã§ããã°ããŒã¿ã倱ããã«ãããŒãã«ãæ°ããããŒãžã§ã³ã§äœ¿çšããã圢åŒã«ããå¿ èŠããããŸãã ããã移è¡ãšåŒã³ãŸãã æåã¯ç©ºã®ããŒã¿ããŒã¹ã«ããŒãã«ãäœæããã®ã¯ã移è¡ã®ç¹æ®ãªã±ãŒã¹ã§ãã 移è¡ã¯ã¢ããªã±ãŒã·ã§ã³èªäœã«çµã¿èŸŒãããšãã§ããŸãã .NET ãš NodeJS ã®äž¡æ¹ã«ç§»è¡ãã¬ãŒã ã¯ãŒã¯ããããŸãã ç§ãã¡ã®å Žåãã»ãã¥ãªãã£äžã®çç±ããããã€ã¯ããµãŒãã¹ã¯ããŒã¿ ã¹ããŒããå€æŽããæš©å©ãå¥å¥ªãããŠããã移è¡ã¯ Liquibase ã䜿çšããŠå®è¡ãããŸãã - Amazon LocalStack ãèµ·åããŸãã ããã¯ãèªå® ã§å®è¡ããããã® AWS ãµãŒãã¹ã®å®è£ ã§ãã Docker Hub ã«ã¯ LocalStack çšã®æ¢è£œã®ã€ã¡ãŒãžããããŸãã
- ã¹ã¯ãªãããå®è¡ããŠãLocalStack ã«å¿ èŠãªãšã³ãã£ãã£ãäœæããŸãã ã·ã§ã« ã¹ã¯ãªãã㯠AWS CLI ã䜿çšããŸãã
ãããžã§ã¯ãã®ãã¹ãã«äœ¿çšãããŸã
èªåãã¹ãã¯ã©ã®ããã«æ©èœããŸãã?
ãã¹ãäžã¯ããã¹ã察象ã®ãµãŒãã¹ãPostgresã移è¡ããŒã«ãPostmanããããã¯ãã®ã³ã³ãœãŒã« ããŒãžã§ã³ã§ãã Newman ãªã©ããã¹ãŠã Docker ã§åäœããŸãã
Docker ã¯å€ãã®åé¡ã解決ããŸãã
- ãã¹ãæ§æããã®ç¬ç«æ§ã
- äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«: Docker 㯠Docker Hub ããã€ã¡ãŒãžãããŠã³ããŒãããŸãã
- ã·ã¹ãã ãå ã®ç¶æ ã«æ»ãã«ã¯ãã³ã³ãããåé€ããã ãã§ãã
Docker-compose ã³ã³ããããã€ã³ã¿ãŒãããããéé¢ãããä»®æ³ãããã¯ãŒã¯ã«çµ±åããŸãããã®ä»®æ³ãããã¯ãŒã¯ã§ã¯ãã³ã³ããã¯ãã¡ã€ã³åã«ãã£ãŠçžäºã«æ€çŽ¢ãããŸãã
ãã¹ãã¯ã·ã§ã« ã¹ã¯ãªããã«ãã£ãŠå¶åŸ¡ãããŸãã Windows ã§ãã¹ããå®è¡ããã«ã¯ãgit-bash ã䜿çšããŸãã ãããã£ãŠãWindows ãš Linux ã®äž¡æ¹ã« XNUMX ã€ã®ã¹ã¯ãªããã§ååã§ãã Git ãš Docker ã¯ããããžã§ã¯ãã®ãã¹ãŠã®éçºè ã«ãã£ãŠã€ã³ã¹ããŒã«ãããŸãã 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 ã€ã¡ãŒãžã䜿çšããããã«åºã¥ãã¹ã¯ãªãããå«ãã€ã¡ãŒãžãäœæããŸãã
䜿ãæ¹
ééããå¯èœæ§ã®ããåé¡
æºåãæŽãã®ãåŸ ã£ãŠããŸã
ãµãŒãã¹ãå«ãã³ã³ãããŒãå®è¡ãããŠããŠããæ¥ç¶ãåãå ¥ããæºåãã§ããŠããããšãæå³ããããã§ã¯ãããŸããã æ¥ç¶ãç¶è¡ããããŸã§åŸ ã€å¿ èŠããããŸãã
ãã®åé¡ã¯ã¹ã¯ãªããã䜿çšããŠè§£æ±ºã§ããå ŽåããããŸã
ãœãªã¥ãŒã·ã§ã³: SQS ãš SNS ã®äž¡æ¹ããã® 200 å¿çãåŸ æ©ãã LocalStack ããããžã§ãã³ã° ã¹ã¯ãªããã
䞊åã¿ã¹ã¯ã®ç«¶å
åã Docker ãã¹ãäžã§è€æ°ã®ãã¹ããåæã«å®è¡ã§ãããããã³ã³ãããŒåãšãããã¯ãŒã¯åã¯äžæã§ããå¿ èŠããããŸãã ããã«ãåããµãŒãã¹ã®ç°ãªããã©ã³ãããã®ãã¹ããåæã«å®è¡ã§ãããããåæ§æãã¡ã€ã«ã«ååãèšè¿°ããã ãã§ã¯ååã§ã¯ãããŸããã
ãœãªã¥ãŒã·ã§ã³: ã¹ã¯ãªãã㯠COMPOSE_PROJECT_NAME å€æ°ãäžæã®å€ã«èšå®ããŸãã
Windowsã®æ©èœ
Windows 㧠Docker ã䜿çšããå Žåããããã®çµéšã¯ãšã©ãŒãçºçããçç±ãç解ããããã«éèŠã§ãããããããã€ã泚æãããç¹ããããŸãã
- ã³ã³ããå
ã®ã·ã§ã« ã¹ã¯ãªããã«ã¯ Linux ã®è¡æ«ãå¿
èŠã§ãã
ã·ã§ã« CR ã·ã³ãã«ã¯æ§æãšã©ãŒã§ãã ãšã©ãŒ ã¡ãã»ãŒãžããã¯ããããäºå®ã§ãããã©ãããå€æããã®ã¯å°é£ã§ãã Windows ã§ãã®ãããªã¹ã¯ãªãããç·šéããå Žåã¯ãé©åãªããã¹ã ãšãã£ã¿ãŒãå¿ èŠã§ãã ããã«ãããŒãžã§ã³ç®¡çã·ã¹ãã ãé©åã«æ§æãããŠããå¿ èŠããããŸãã
git ã®èšå®æ¹æ³ã¯æ¬¡ã®ãšããã§ãã
git config core.autocrlf input
- Git-bash ã¯æšæºã® Linux ãã©ã«ããŒããšãã¥ã¬ãŒãããexe ãã¡ã€ã« (docker.exe ãå«ã) ãåŒã³åºããšãã«ãLinux ã®çµ¶å¯Ÿãã¹ã Windows ãã¹ã«çœ®ãæããŸãã ãã ããããŒã«ã« ãã·ã³äžã«ãªããã¹ (ãŸãã¯ã³ã³ããå ã®ãã¹) ã®å Žåãããã¯æå³ããããŸããã ãã®åäœãç¡å¹ã«ããããšã¯ã§ããŸããã
ãœãªã¥ãŒã·ã§ã³: ãã¹ã®å é ã«ã¹ã©ãã·ã¥ãè¿œå ããŸã: /bin ã®ä»£ããã« //binã Linux ã¯ãã®ãããªãã¹ãèªèãããããè€æ°ã®ã¹ã©ãã·ã¥ã¯ XNUMX ã€ãšåãã«ãªããŸãã ããããgit-bash ã¯ãã®ãããªãã¹ãèªèãããå€æããããšããŸããã
ãã°åºå
ãã¹ããå®è¡ãããšããNewman ãšãã¹ã察象ã®ãµãŒãã¹ã®äž¡æ¹ããã®ãã°ã確èªããããšæããŸãã ãããã®ãã°ã®ã€ãã³ãã¯çžäºã«é¢é£ããŠãããããXNUMX ã€ã®å¥ã ã®ãã¡ã€ã«ããã XNUMX ã€ã®ã³ã³ãœãŒã«ã«çµåããæ¹ãã¯ããã«äŸ¿å©ã§ãã ãã¥ãŒãã³ã¯çµç±ã§èµ·åããŸã docker-compose ã®å®è¡ãããã£ãŠããã®åºåã¯ã³ã³ãœãŒã«ã«è¡šç€ºãããŸãã æ®ã£ãŠããã®ã¯ããµãŒãã¹ã®åºåã確å®ã«ããã«éä¿¡ãããããã«ããããšã ãã§ãã
å ã®è§£æ±ºçã¯æ¬¡ã®ãšããã§ãã ããã«ãŒ - æ§æ ãã©ã°ããããŸãã -dãã ããã·ã§ã«æ©èœã䜿çšããŠããã®ããã»ã¹ãããã¯ã°ã©ãŠã³ãã«éä¿¡ããŸãã
docker-compose up <service> &
ããã¯ãDocker ãããµãŒãããŒãã£ã®ãµãŒãã¹ã«ãã°ãéä¿¡ããå¿ èŠããããŸã§ã¯æ©èœããŸããã ããã«ãŒ - æ§æ ã³ã³ãœãŒã«ãžã®ãã°åºåãåæ¢ããŸããã ããã§ãããŒã ã¯é 匵ã£ã ããã«ãŒã¢ã¿ããã¡ã³ã.
ãœãªã¥ãŒã·ã§ã³:
docker attach --no-stdin ${COMPOSE_PROJECT_NAME}_<ÑеÑвОÑ>_1 &
ãã¹ãå埩äžã®èå¥åã®ç«¶å
ãã¹ãã¯æ°åç¹°ãè¿ããŠå®è¡ãããŸãã ããŒã¿ããŒã¹ã¯ã¯ãªã¢ãããŸããã ããŒã¿ããŒã¹å ã®ã¬ã³ãŒãã«ã¯äžæã® ID ããããŸãã ãªã¯ãšã¹ãã«ç¹å®ã® ID ãæžãçãããšãXNUMX åç®ã®å埩ã§ç«¶åãçºçããŸãã
ãããåé¿ããã«ã¯ãID ãäžæã«ãããããã¹ãã«ãã£ãŠäœæããããã¹ãŠã®ãªããžã§ã¯ããåé€ããå¿ èŠããããŸãã èŠä»¶ã«ãããäžéšã®ãªããžã§ã¯ãã¯åé€ã§ããŸããã
ãœãªã¥ãŒã·ã§ã³: Postman ã¹ã¯ãªããã䜿çšã㊠GUID ãçæããŸãã
var uuid = require('uuid');
var myid = uuid.v4();
pm.environment.set('myUUID', myid);
次ã«ãã¯ãšãªã§ã·ã³ãã«ã䜿çšããŸã {{myUUID}}ãå€æ°ã®å€ã«çœ®ãæããããŸãã
LocalStack ãä»ããã³ã©ãã¬ãŒã·ã§ã³
ãã¹ã察象ã®ãµãŒãã¹ã SQS ãã¥ãŒã®èªã¿åããŸãã¯æžã蟌ã¿ãè¡ãå Žåããããæ€èšŒããã«ã¯ããã¹ãèªäœããã®ãã¥ãŒã§åäœããå¿ èŠããããŸãã
ãœãªã¥ãŒã·ã§ã³: Postman ãã LocalStack ãžã®ãªã¯ãšã¹ãã
AWS ãµãŒãã¹ API ã¯ææžåãããŠãããSDK ãªãã§ã¯ãšãªãå®è¡ã§ããŸãã
ãµãŒãã¹ããã¥ãŒã«æžã蟌ãå Žåããã¥ãŒãèªã¿åã£ãŠã¡ãã»ãŒãžã®å 容ã確èªããŸãã
ãµãŒãã¹ã SNS ã«ã¡ãã»ãŒãžãéä¿¡ããå Žåãæºå段é㧠LocalStack ããã¥ãŒãäœæãããã® SNS ãããã¯ããµãã¹ã¯ã©ã€ãããŸãã ããããã°ããã¹ãŠã¯äžã§èª¬æããããšã«ãªããŸãã
ãµãŒãã¹ããã¥ãŒããã¡ãã»ãŒãžãèªã¿åãå¿ èŠãããå Žåãåã®ãã¹ã ã¹ãããã§ãã®ã¡ãã»ãŒãžããã¥ãŒã«æžã蟌ã¿ãŸãã
ãã¹ã察象ã®ãã€ã¯ããµãŒãã¹ããçºä¿¡ããã HTTP ãªã¯ãšã¹ãã®ãã¹ã
äžéšã®ãµãŒãã¹ã¯ HTTP çµç±ã§ AWS 以å€ãšåäœããäžéšã® AWS æ©èœã¯ LocalStack ã«å®è£ ãããŠããŸããã
ãœãªã¥ãŒã·ã§ã³: ãã®ãããªå Žåã«åœ¹ç«ã¡ãŸã
OAuth èªèšŒãšèªå¯ã®ãã¹ã
ç§ãã¡ã¯OAuthã䜿çšããŠããã
ãµãŒãã¹ãš OAuth ãããã€ããŒã®éã®ãã¹ãŠã®å¯Ÿè©±ã¯ãXNUMX ã€ã®ãªã¯ãšã¹ãã«åž°çããŸãããŸããæ§æããªã¯ãšã¹ããããŸãã /.well-known/openid-æ§æã次ã«ãæ§æã®ã¢ãã¬ã¹ã§å ¬éã㌠(JWKS) ãèŠæ±ãããŸãã ããã¯ãã¹ãŠéçãªã³ã³ãã³ãã§ãã
ãœãªã¥ãŒã·ã§ã³: ç§ãã¡ã®ãã¹ã OAuth ãããã€ããŒã¯ãéçã³ã³ãã³ã ãµãŒããŒãšãã®äžã® XNUMX ã€ã®ãã¡ã€ã«ã§ãã ããŒã¯ã³ã¯äžåºŠçæãããGit ã«ã³ããããããŸãã
SignalR ãã¹ãã®ç¹åŸŽ
Postman 㯠WebSocket ã§ã¯æ©èœããŸããã SignalR ããã¹ãããããã«ç¹å¥ãªããŒã«ãäœæãããŸããã
SignalR ã¯ã©ã€ã¢ã³ãã¯åãªããã©ãŠã¶ãŒä»¥äžã®åœ¹å²ãæãããŸãã .NET Core ã«ã¯ãã®ããã®ã¯ã©ã€ã¢ã³ã ã©ã€ãã©ãªããããŸãã .NET Core ã§èšè¿°ãããã¯ã©ã€ã¢ã³ãã¯ãæ¥ç¶ã確ç«ããèªèšŒãããŠãç¹å®ã®äžé£ã®ã¡ãã»ãŒãžãåŸ ã¡ãŸãã äºæããªãã¡ãã»ãŒãžãåä¿¡ããå ŽåããŸãã¯æ¥ç¶ã倱ãããå Žåãã¯ã©ã€ã¢ã³ãã¯ã³ãŒã 1 ã§çµäºããŸããäºæãããæåŸã®ã¡ãã»ãŒãžãåä¿¡ããå Žåãã¯ã©ã€ã¢ã³ãã¯ã³ãŒã 0 ã§çµäºããŸãã
ãã¥ãŒãã³ã¯ã¯ã©ã€ã¢ã³ããšåæã«ä»äºãããŸãã ã¡ãã»ãŒãžãå¿ èŠãªå šå¡ã«é ä¿¡ãããããšã確èªããããã«ãããã€ãã®ã¯ã©ã€ã¢ã³ããèµ·åãããŸãã
è€æ°ã®ã¯ã©ã€ã¢ã³ããå®è¡ããã«ã¯ããªãã·ã§ã³ã䜿çšããŸã - èŠæš¡ docker-compose ã³ãã³ãã©ã€ã³ã§ã
Postman ã¹ã¯ãªããã¯å®è¡åã«ããã¹ãŠã®ã¯ã©ã€ã¢ã³ããæ¥ç¶ã確ç«ããã®ãåŸ
ã¡ãŸãã
æ¥ç¶ãåŸ
æ©ãããšããåé¡ã¯ãã§ã«çºçããŠããŸãã ããããããã«ã¯ãµãŒããŒããããããã«ã¯ã©ã€ã¢ã³ãããããŸãã å¥ã®ã¢ãããŒããå¿
èŠã§ãã
ãœãªã¥ãŒã·ã§ã³: ã³ã³ããå
ã®ã¯ã©ã€ã¢ã³ããã¡ã«ããºã ã䜿çšããŸã
HEALTHCHECK --interval=3s CMD if [ ! -e /healthcheck ]; then false; fi
ããŒã dockerinspect ã³ã³ããã®éåžžã®ã¹ããŒã¿ã¹ãå¥å šæ§ã¹ããŒã¿ã¹ãããã³çµäºã³ãŒãã衚瀺ããŸãã
Newman ãå®äºãããšãã¹ã¯ãªããã¯ã¯ã©ã€ã¢ã³ãã®ãã¹ãŠã®ã³ã³ãããã³ãŒã 0 ã§çµäºãããã©ããã確èªããŸãã
ãããã¹ã¯ååšãã
äžèšã®å°é£ãå æããåŸãäžé£ã®å®å®ããèµ°è¡ãã¹ããè¡ãããšãã§ããŸããã ãã¹ãã§ã¯ãåãµãŒãã¹ã¯åäžã®ãŠããããšããŠåäœããããŒã¿ããŒã¹ããã³ Amazon LocalStack ãšå¯Ÿè©±ããŸãã
ãããã®ãã¹ãã¯ã30 人以äžã®éçºè ãããªãããŒã ããé »ç¹ãªãããã€ã¡ã³ãã䌎ã 10 å以äžã®ãã€ã¯ããµãŒãã¹ã®è€éãªçžäºäœçšã«ããã¢ããªã±ãŒã·ã§ã³ã®ãšã©ãŒããä¿è·ããŸãã
åºæïŒ habr.com