ื‘ื“ื™ืงื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืฉื™ืจื•ืชื™ ืžื™ืงืจื• ื‘-Docker ืœืื™ื ื˜ื’ืจืฆื™ื” ืจืฆื™ืคื”

ื‘ืคืจื•ื™ืงื˜ื™ื ื”ืงืฉื•ืจื™ื ืœืคื™ืชื•ื— ืืจื›ื™ื˜ืงื˜ื•ืจืช ืžื™ืงืจื•-ืฉื™ืจื•ืช, CI/CD ืขื•ื‘ืจ ืžืงื˜ื’ื•ืจื™ื” ืฉืœ ื”ื–ื“ืžื ื•ืช ื ืขื™ืžื” ืœืงื˜ื’ื•ืจื™ื” ืฉืœ ืฆื•ืจืš ื“ื—ื•ืฃ. ื‘ื“ื™ืงื” ืื•ื˜ื•ืžื˜ื™ืช ื”ื™ื ื—ืœืง ื‘ืœืชื™ ื ืคืจื“ ืžื”ืฉื™ืœื•ื‘ ื”ืžืชืžืฉืš, ืฉื’ื™ืฉื” ืžื•ื›ืฉืจืช ืืœื™ื” ื™ื›ื•ืœื” ืœื”ืขื ื™ืง ืœืฆื•ื•ืช ื”ืจื‘ื” ืขืจื‘ื™ื ื ืขื™ืžื™ื ืขื ืžืฉืคื—ื” ื•ื—ื‘ืจื™ื. ืื—ืจืช, ื”ืคืจื•ื™ืงื˜ ืžืกืชื›ืŸ ืฉืœืขื•ืœื ืœื ื™ื•ืฉืœื.

ืืคืฉืจ ืœื›ืกื•ืช ืืช ื›ืœ ืงื•ื“ ื”-microservice ื‘ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ืขื ืื•ื‘ื™ื™ืงื˜ื™ื ืžื“ื•ืžื™ื, ืื‘ืœ ื–ื” ืคื•ืชืจ ืจืง ื—ืœืงื™ืช ืืช ื”ื‘ืขื™ื” ื•ืžืฉืื™ืจ ื”ืจื‘ื” ืฉืืœื•ืช ื•ืงืฉื™ื™ื, ื‘ืžื™ื•ื—ื“ ื‘ื‘ื“ื™ืงืช ืขื‘ื•ื“ื” ืขื ื ืชื•ื ื™ื. ื›ืžื• ืชืžื™ื“, ื”ื“ื•ื—ืงื™ื ื‘ื™ื•ืชืจ ื”ื ื‘ื“ื™ืงืช ืขืงื‘ื™ื•ืช ื ืชื•ื ื™ื ื‘ืžืกื“ ื ืชื•ื ื™ื ื™ื—ืกื™, ื‘ื“ื™ืงืช ืขื‘ื•ื“ื” ืขื ืฉื™ืจื•ืชื™ ืขื ืŸ ื•ื”ื ื—ืช ื”ื ื—ื•ืช ืฉื’ื•ื™ื•ืช ื‘ืขืช ื›ืชื™ื‘ืช ืื•ื‘ื™ื™ืงื˜ื™ื ืžื“ื•ืžื™ื.

ืืช ื›ืœ ื–ื” ื•ืขื•ื“ ืงืฆืช ืืคืฉืจ ืœืคืชื•ืจ ืขืœ ื™ื“ื™ ื‘ื“ื™ืงืช ื”ืžื™ืงืจื•-ืฉื™ืจื•ืช ื›ื•ืœื• ื‘ืงื•ื ื˜ื™ื™ื ืจ ืฉืœ Docker. ื™ืชืจื•ืŸ ืœืœื ืกืคืง ืœื”ื‘ื˜ื—ืช ืชืงืคื•ืช ื”ื‘ื“ื™ืงื•ืช ื”ื•ื ืฉืื•ืชืŸ ืชืžื•ื ื•ืช Docker ืฉื ื›ื ืกื•ืช ืœื™ื™ืฆื•ืจ ื ื‘ื“ืงื•ืช.

ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ื’ื™ืฉื” ื–ื• ืžืฆื™ื’ื” ืžืกืคืจ ื‘ืขื™ื•ืช, ืฉื”ืคืชืจื•ืŸ ืœื”ืŸ ื™ืชื•ืืจ ืœื”ืœืŸ:

  • ื”ืชื ื’ืฉื•ื™ื•ืช ืฉืœ ืžืฉื™ืžื•ืช ืžืงื‘ื™ืœื•ืช ื‘ืื•ืชื• ืžืืจื— docker;
  • ื”ืชื ื’ืฉื•ื™ื•ืช ืžื–ื”ื™ื ื‘ืžืกื“ ื”ื ืชื•ื ื™ื ื‘ืžื”ืœืš ืื™ื˜ืจืฆื™ื•ืช ื‘ื“ื™ืงื”;
  • ืžื—ื›ื” ืœืฉื™ืจื•ืชื™ ืžื™ืงืจื• ืœื”ื™ื•ืช ืžื•ื›ื ื™ื;
  • ืžื™ื–ื•ื’ ื•ืคืœื˜ ื™ื•ืžื ื™ื ืœืžืขืจื›ื•ืช ื—ื™ืฆื•ื ื™ื•ืช;
  • ื‘ื“ื™ืงืช ื‘ืงืฉื•ืช HTTP ื™ื•ืฆืื•ืช;
  • ื‘ื“ื™ืงืช ืฉืงืขื™ ืื™ื ื˜ืจื ื˜ (ื‘ืืžืฆืขื•ืช SignalR);
  • ื‘ื“ื™ืงืช ืื™ืžื•ืช ื•ื”ืจืฉืื” ืฉืœ OAuth.

ืžืืžืจ ื–ื” ืžื‘ื•ืกืก ืขืœ ื”ื ืื•ื ืฉืœื™ ื‘-SECR 2019. ืื– ืœืžื™ ืฉืžืชืขืฆืœ ืœืงืจื•ื, ื”ื ื” ื”ืงืœื˜ื” ืฉืœ โ€‹โ€‹ื”ื ืื•ื.

ื‘ื“ื™ืงื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืฉื™ืจื•ืชื™ ืžื™ืงืจื• ื‘-Docker ืœืื™ื ื˜ื’ืจืฆื™ื” ืจืฆื™ืคื”

ื‘ืžืืžืจ ื–ื” ืืกืคืจ ืœื›ื ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ืกืงืจื™ืคื˜ ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช ื”ืฉื™ืจื•ืช ื”ื ื‘ื“ืง, ืžืกื“ ื ืชื•ื ื™ื ื•ืฉื™ืจื•ืชื™ Amazon AWS ื‘-Docker, ืœืื—ืจ ืžื›ืŸ ื‘ื“ื™ืงื•ืช ืขืœ Postman ื•ืœืื—ืจ ื”ืฉืœืžืชื, ืœืขืฆื•ืจ ื•ืœืžื—ื•ืง ืืช ื”ืงื•ื ื˜ื™ื™ื ืจื™ื ืฉื ื•ืฆืจื•. ื‘ื“ื™ืงื•ืช ืžื‘ื•ืฆืขื•ืช ื‘ื›ืœ ืคืขื ืฉื”ืงื•ื“ ืžืฉืชื ื”. ื‘ื“ืจืš ื–ื•, ืื ื• ืžื•ื•ื“ืื™ื ืฉื›ืœ ื’ืจืกื” ืคื•ืขืœืช ื›ื”ืœื›ื” ืขื ืžืกื“ ื”ื ืชื•ื ื™ื ื•ื”ืฉื™ืจื•ืชื™ื ืฉืœ AWS.

ืื•ืชื• ืกืงืจื™ืคื˜ ืžื•ืคืขืœ ื”ืŸ ืขืœ ื™ื“ื™ ื”ืžืคืชื—ื™ื ืขืฆืžื ืขืœ ืฉื•ืœื—ื ื•ืช ื”ืขื‘ื•ื“ื” ืฉืœ Windows ื•ื”ืŸ ืขืœ ื™ื“ื™ ืฉืจืช Gitlab CI ืชื—ืช ืœื™ื ื•ืงืก.

ื›ื“ื™ ืœื”ื™ื•ืช ืžื•ืฆื“ืง, ื”ืฆื’ืช ื‘ื“ื™ืงื•ืช ื—ื“ืฉื•ืช ืœื ืฆืจื™ื›ื” ืœื“ืจื•ืฉ ื”ืชืงื ื” ืฉืœ ื›ืœื™ื ื ื•ืกืคื™ื ืœื ืขืœ ื”ืžื—ืฉื‘ ืฉืœ ื”ืžืคืชื— ืื• ืขืœ ื”ืฉืจืช ืฉื‘ื• ื”ื‘ื“ื™ืงื•ืช ืžื•ืคืขืœื•ืช ืขืœ commit. Docker ืคื•ืชืจ ื‘ืขื™ื” ื–ื•.

ื”ื‘ื“ื™ืงื” ื—ื™ื™ื‘ืช ืœืคืขื•ืœ ื‘ืฉืจืช ืžืงื•ืžื™ ืžื”ืกื™ื‘ื•ืช ื”ื‘ืื•ืช:

  • ื”ืจืฉืช ืืฃ ืคืขื ืœื ืืžื™ื ื” ืœื—ืœื•ื˜ื™ืŸ. ืžืชื•ืš ืืœืฃ ื‘ืงืฉื•ืช, ืื—ืช ืขืœื•ืœื” ืœื”ื™ื›ืฉืœ;
    ื‘ืžืงืจื” ื–ื”, ื”ื‘ื“ื™ืงื” ื”ืื•ื˜ื•ืžื˜ื™ืช ืœื ืชืขื‘ื•ื“, ื”ืขื‘ื•ื“ื” ืชื™ืคืกืง, ื•ืชืฆื˜ืจืš ืœื—ืคืฉ ืืช ื”ืกื™ื‘ื” ื‘ื™ื•ืžื ื™ื;
  • ื‘ืงืฉื•ืช ืชื›ื•ืคื•ืช ืžื“ื™ ืื™ื ืŸ ืžื•ืจืฉื•ืช ืขืœ ื™ื“ื™ ื—ืœืง ืžืฉื™ืจื•ืชื™ ืฆื“ ืฉืœื™ืฉื™.

ื‘ื ื•ืกืฃ, ืœื ืจืฆื•ื™ ืœื”ืฉืชืžืฉ ื‘ืžืขืžื“ ืžื›ื™ื•ื•ืŸ:

  • ืžืขืžื“ ื™ื›ื•ืœ ืœื”ื™ืฉื‘ืจ ืœื ืจืง ืขืœ ื™ื“ื™ ืงื•ื“ ืจืข ืฉืจืฅ ืขืœื™ื•, ืืœื ื’ื ืขืœ ื™ื“ื™ ื ืชื•ื ื™ื ืฉื”ืงื•ื“ ื”ื ื›ื•ืŸ ืœื ื™ื›ื•ืœ ืœืขื‘ื“;
  • ืœื ืžืฉื ื” ื›ืžื” ื ื ืกื” ืœื”ื—ื–ื™ืจ ืืช ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ืฉื‘ื•ืฆืขื• ืขืœ ื™ื“ื™ ื”ื‘ื“ื™ืงื” ื‘ืžื”ืœืš ื”ื‘ื“ื™ืงื” ืขืฆืžื”, ืžืฉื”ื• ื™ื›ื•ืœ ืœื”ืฉืชื‘ืฉ (ืื—ืจืช, ืžื” ื”ื˜ืขื ื‘ื‘ื“ื™ืงื”?).

ืขืœ ื”ืคืจื•ื™ืงื˜ ื•ืืจื’ื•ืŸ ื”ืชื”ืœื™ืš

ื”ื—ื‘ืจื” ืฉืœื ื• ืคื™ืชื—ื” ืืคืœื™ืงืฆื™ื™ืช ืื™ื ื˜ืจื ื˜ ืžื™ืงืจื•-ืฉื™ืจื•ืช ื”ืคื•ืขืœืช ื‘-Docker ื‘ืขื ืŸ AWS ืฉืœ ืืžื–ื•ืŸ. ื›ื‘ืจ ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ื‘ืคืจื•ื™ืงื˜, ืืš ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื”ืชืจื—ืฉื• ืฉื’ื™ืื•ืช ืฉื‘ื“ื™ืงื•ืช ื”ื™ื—ื™ื“ื” ืœื ื–ื™ื”ื•. ื”ื™ื” ืฆื•ืจืš ืœื‘ื“ื•ืง ืžื™ืงืจื•-ืฉื™ืจื•ืช ืฉืœื ื™ื—ื“ ืขื ืžืกื“ ื”ื ืชื•ื ื™ื ื•ืฉื™ืจื•ืชื™ ืืžื–ื•ืŸ.

ื”ืคืจื•ื™ืงื˜ ืžืฉืชืžืฉ ื‘ืชื”ืœื™ืš ืื™ื ื˜ื’ืจืฆื™ื” ืžืชืžืฉืš ืกื˜ื ื“ืจื˜ื™, ื”ื›ื•ืœืœ ื‘ื“ื™ืงืช ื”ืžื™ืงืจื•-ืฉื™ืจื•ืช ืขื ื›ืœ ื”ืชื—ื™ื™ื‘ื•ืช. ืœืื—ืจ ื”ืงืฆืืช ืžืฉื™ืžื”, ื”ืžืคืชื— ืžื‘ืฆืข ืฉื™ื ื•ื™ื™ื ื‘ืฉื™ืจื•ืช ื”ืžื™ืงืจื•, ื‘ื•ื“ืง ืื•ืชื• ื‘ืื•ืคืŸ ื™ื“ื ื™ ื•ืžืจื™ืฅ ืืช ื›ืœ ื”ื‘ื“ื™ืงื•ืช ื”ืื•ื˜ื•ืžื˜ื™ื•ืช ื”ื–ืžื™ื ื•ืช. ื‘ืžื™ื“ืช ื”ืฆื•ืจืš, ื”ื™ื–ื ืžืฉื ื” ืืช ื”ื‘ื“ื™ืงื•ืช. ืื ืœื ื ืžืฆืื• ื‘ืขื™ื•ืช, ืžืชื‘ืฆืขืช ื”ืชื—ื™ื™ื‘ื•ืช ืœืกื ื™ืฃ ืฉืœ ื ื•ืฉื ื–ื”. ืœืื—ืจ ื›ืœ commit, ื‘ื“ื™ืงื•ืช ืžื•ืคืขืœื•ืช ืื•ื˜ื•ืžื˜ื™ืช ื‘ืฉืจืช. ืžื™ื–ื•ื’ ืœืกื ื™ืฃ ืžืฉื•ืชืฃ ื•ื”ืฉืงืช ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ืขืœื™ื• ืžืชืจื—ืฉื™ื ืœืื—ืจ ืกืงื™ืจื” ืžื•ืฆืœื—ืช. ืื ื”ื‘ื“ื™ืงื•ืช ื‘ืกื ื™ืฃ ื”ืžืฉื•ืชืฃ ืขื•ื‘ืจื•ืช, ื”ืฉื™ืจื•ืช ืžืชืขื“ื›ืŸ ืื•ื˜ื•ืžื˜ื™ืช ื‘ืกื‘ื™ื‘ืช ื”ื‘ื“ื™ืงื” ื‘- Amazon Elastic Container Service (ืกืคืกืœ). ื”ืžืขืžื“ ื”ื›ืจื—ื™ ืœื›ืœ ื”ืžืคืชื—ื™ื ื•ื”ื‘ื•ื“ืงื™ื, ื•ืœื ื›ื“ืื™ ืœืฉื‘ื•ืจ ืื•ืชื•. ื‘ื•ื“ืงื™ื ื‘ืกื‘ื™ื‘ื” ื–ื• ื‘ื•ื“ืงื™ื ืชื™ืงื•ืŸ ืื• ืชื›ื•ื ื” ื—ื“ืฉื” ืขืœ ื™ื“ื™ ื‘ื™ืฆื•ืข ื‘ื“ื™ืงื•ืช ื™ื“ื ื™ื•ืช.

ืืจื›ื™ื˜ืงื˜ื•ืจืช ืคืจื•ื™ืงื˜

ื‘ื“ื™ืงื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืฉื™ืจื•ืชื™ ืžื™ืงืจื• ื‘-Docker ืœืื™ื ื˜ื’ืจืฆื™ื” ืจืฆื™ืคื”

ื”ืืคืœื™ืงืฆื™ื” ืžื•ืจื›ื‘ืช ืžื™ื•ืชืจ ืžืขืฉืจื” ืฉื™ืจื•ืชื™ื. ื—ืœืงื ื›ืชื•ื‘ื™ื ื‘-.NET Core ื•ื—ืœืงื ื‘-NodeJs. ื›ืœ ืฉื™ืจื•ืช ืคื•ืขืœ ื‘ืงื•ื ื˜ื™ื™ื ืจ Docker ื‘- Amazon Elastic Container Service. ืœื›ืœ ืื—ื“ ื™ืฉ ืžืกื“ ื ืชื•ื ื™ื Postgres ืžืฉืœื•, ื•ืœื—ืœืงื ื™ืฉ ื’ื Redis. ืื™ืŸ ืžืกื“ื™ ื ืชื•ื ื™ื ื ืคื•ืฆื™ื. ืื ืžืกืคืจ ืฉื™ืจื•ืชื™ื ื–ืงื•ืงื™ื ืœืื•ืชื ื ืชื•ื ื™ื, ืื–ื™ ื”ื ืชื•ื ื™ื ื”ืœืœื•, ื›ืืฉืจ ื”ื ืžืฉืชื ื™ื, ืžื•ืขื‘ืจื™ื ืœื›ืœ ืื—ื“ ืžื”ืฉื™ืจื•ืชื™ื ื”ืœืœื• ื‘ืืžืฆืขื•ืช SNS (Simple Notification Service) ื•-SQS (Amazon Simple Queue Service), ื•ื”ืฉื™ืจื•ืชื™ื ืฉื•ืžืจื™ื ืื•ืชื ื‘ื‘ืกื™ืกื™ ื ืชื•ื ื™ื ื ืคืจื“ื™ื ืžืฉืœื”ื.

SQS ื•-SNS

SQS ืžืืคืฉืจ ืœืš ืœื”ื›ื ื™ืก ื”ื•ื“ืขื•ืช ืœืชื•ืจ ื•ืœืงืจื•ื ื”ื•ื“ืขื•ืช ืžื”ืชื•ืจ ื‘ืืžืฆืขื•ืช ืคืจื•ื˜ื•ืงื•ืœ HTTPS.

ืื ืžืกืคืจ ืฉื™ืจื•ืชื™ื ืงื•ืจืื™ื ืชื•ืจ ืื—ื“, ืื– ื›ืœ ื”ื•ื“ืขื” ืžื’ื™ืขื” ืจืง ืœืื—ื“ ืžื”ื. ื–ื” ืฉื™ืžื•ืฉื™ ื‘ืขืช ื”ืคืขืœืช ืžืกืคืจ ืžื•ืคืขื™ื ืฉืœ ืื•ืชื• ืฉื™ืจื•ืช ื›ื“ื™ ืœืคื–ืจ ืืช ื”ืขื•ืžืก ื‘ื™ื ื™ื”ื.

ืื ืืชื” ืจื•ืฆื” ืฉื›ืœ ื”ื•ื“ืขื” ืชื•ืขื‘ืจ ืœืžืกืคืจ ืฉื™ืจื•ืชื™ื, ืœื›ืœ ื ืžืขืŸ ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืชื•ืจ ืžืฉืœื•, ื•ื™ืฉ ืฆื•ืจืš ื‘-SNS ื›ื“ื™ ืœืฉื›ืคืœ ื”ื•ื“ืขื•ืช ืœืžืกืคืจ ืชื•ืจื™ื.

ื‘-SNS ื™ื•ืฆืจื™ื ื ื•ืฉื ื•ื ืจืฉืžื™ื ืืœื™ื•, ืœืžืฉืœ, ืชื•ืจ SQS. ืืชื” ื™ื›ื•ืœ ืœืฉืœื•ื— ื”ื•ื“ืขื•ืช ืœื ื•ืฉื. ื‘ืžืงืจื” ื–ื”, ื”ื”ื•ื“ืขื” ื ืฉืœื—ืช ืœื›ืœ ืชื•ืจ ืฉื ืจืฉื ืœื ื•ืฉื ื–ื”. ืœ-SNS ืื™ืŸ ืฉื™ื˜ื” ืœืงืจื™ืืช ื”ื•ื“ืขื•ืช. ืื ื‘ืžื”ืœืš ืื™ืชื•ืจ ื‘ืื’ื™ื ืื• ื‘ื“ื™ืงื” ืืชื” ืฆืจื™ืš ืœื‘ืจืจ ืžื” ื ืฉืœื— ืœ-SNS, ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืชื•ืจ SQS, ืœื”ื™ืจืฉื ืืœื™ื• ืœื ื•ืฉื ื”ืจืฆื•ื™ ื•ืœืงืจื•ื ืืช ื”ืชื•ืจ.

ื‘ื“ื™ืงื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืฉื™ืจื•ืชื™ ืžื™ืงืจื• ื‘-Docker ืœืื™ื ื˜ื’ืจืฆื™ื” ืจืฆื™ืคื”

ืฉืขืจ API

ืจื•ื‘ ื”ืฉื™ืจื•ืชื™ื ืื™ื ื ื ื’ื™ืฉื™ื ื™ืฉื™ืจื•ืช ืžื”ืื™ื ื˜ืจื ื˜. ื”ื’ื™ืฉื” ื”ื™ื ื“ืจืš API Gateway, ืฉื‘ื•ื“ืง ื–ื›ื•ื™ื•ืช ื’ื™ืฉื”. ื–ื” ื’ื ื”ืฉื™ืจื•ืช ืฉืœื ื•, ื•ื’ื ืœื–ื” ื™ืฉ ื‘ื“ื™ืงื•ืช.

ื”ืชืจืื•ืช ื‘ื–ืžืŸ ืืžืช

ื”ืืคืœื™ืงืฆื™ื” ืžืฉืชืžืฉืช ืื•ืช R.ื›ื“ื™ ืœื”ืฆื™ื’ ื”ื•ื“ืขื•ืช ื‘ื–ืžืŸ ืืžืช ืœืžืฉืชืžืฉ. ื–ื” ืžื™ื•ืฉื ื‘ืฉื™ืจื•ืช ื”ื”ืชืจืื•ืช. ื”ื•ื ื ื’ื™ืฉ ื™ืฉื™ืจื•ืช ืžื”ืื™ื ื˜ืจื ื˜ ื•ื‘ืขืฆืžื• ืขื•ื‘ื“ ืขื OAuth, ื›ื™ ื”ืชื‘ืจืจ ืฉื–ื” ืœื ืžืขืฉื™ ืœื‘ื ื•ืช ืชืžื™ื›ื” ืขื‘ื•ืจ ืฉืงืขื™ Web ื‘-Gateway, ืœืขื•ืžืช ืฉื™ืœื•ื‘ OAuth ื•ืฉื™ืจื•ืช ื”ื”ืชืจืื•ืช.

ื’ื™ืฉืช ื‘ื“ื™ืงื” ื™ื“ื•ืขื”

ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื•ืช ืžื—ืœื™ืคื•ืช ื“ื‘ืจื™ื ื›ืžื• ืžืกื“ ื”ื ืชื•ื ื™ื ื‘ืื•ื‘ื™ื™ืงื˜ื™ื ืžื“ื•ืžื™ื. ืื ืžื™ืงืจื•-ืฉื™ืจื•ืช, ืœืžืฉืœ, ืžื ืกื” ืœื™ืฆื•ืจ ืจืฉื•ืžื” ื‘ื˜ื‘ืœื” ืขื ืžืคืชื— ื–ืจ, ื•ื”ืจืฉื•ืžื” ืฉืืœื™ื” ื”ืžืคืชื— ืžืชื™ื™ื—ืก ืœื ืงื™ื™ืžืช, ืœื ื ื™ืชืŸ ืœื‘ืฆืข ืืช ื”ื‘ืงืฉื”. ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ืœื ื™ื›ื•ืœื•ืช ืœื–ื”ื•ืช ื–ืืช.

ะ’ ืžืืžืจ ืžื‘ื™ืช ืžื™ืงืจื•ืกื•ืคื˜ ืžื•ืฆืข ืœื”ืฉืชืžืฉ ื‘ืžืกื“ ื ืชื•ื ื™ื ื‘ื–ื™ื›ืจื•ืŸ ื•ืœื™ื™ืฉื ืื•ื‘ื™ื™ืงื˜ื™ื ืžื“ื•ืžื™ื.

ืžืกื“ ื ืชื•ื ื™ื ื‘ื–ื™ื›ืจื•ืŸ ื”ื•ื ืื—ื“ ืžืžืขืจื›ื•ืช ื”-DBMS ื”ื ืชืžื›ื•ืช ืขืœ ื™ื“ื™ ื”-Entity Framework. ื–ื” ื ื•ืฆืจ ื‘ืžื™ื•ื—ื“ ืœื‘ื“ื™ืงื”. ื ืชื•ื ื™ื ื‘ืžืกื“ ื ืชื•ื ื™ื ืฉื›ื–ื” ื ืฉืžืจื™ื ืจืง ืขื“ ืœืกื™ื•ื ืชื”ืœื™ืš ื”ืฉื™ืžื•ืฉ ื‘ื•. ื”ื•ื ืื™ื ื• ืžืฆืจื™ืš ื™ืฆื™ืจืช ื˜ื‘ืœืื•ืช ื•ืื™ื ื• ื‘ื•ื“ืง ืืช ืฉืœืžื•ืช ื”ื ืชื•ื ื™ื.

ืื•ื‘ื™ื™ืงื˜ื™ื ืžื“ื•ืžื™ื ืžื“ื’ืžื™ื ืืช ื”ืžื—ืœืงื” ืฉื”ื ืžื—ืœื™ืคื™ื ืจืง ื‘ืžื™ื“ื” ืฉืžืคืชื— ื”ื‘ื“ื™ืงื” ืžื‘ื™ืŸ ืื™ืš ื–ื” ืขื•ื‘ื“.

ื›ื™ืฆื“ ืœื’ืจื•ื ืœ-Postgres ืœื”ืชื—ื™ืœ ื•ืœื‘ืฆืข ื”ืขื‘ืจื•ืช ืื•ื˜ื•ืžื˜ื™ืช ื‘ืขืช ื”ืคืขืœืช ื‘ื“ื™ืงื” ืœื ืžืฆื•ื™ืŸ ื‘ืžืืžืจ ืฉืœ Microsoft. ื”ืคืชืจื•ืŸ ืฉืœื™ ืขื•ืฉื” ื–ืืช, ื•ื‘ื ื•ืกืฃ, ืื™ื ื• ืžื•ืกื™ืฃ ืฉื•ื ืงื•ื“ ืกืคืฆื™ืคื™ ืœื‘ื“ื™ืงื•ืช ืœืžื™ืงืจื•-ืฉื™ืจื•ืช ืขืฆืžื•.

ื ืขื‘ื•ืจ ืœืคืชืจื•ืŸ

ื‘ืžื”ืœืš ืชื”ืœื™ืš ื”ืคื™ืชื•ื— ื”ืชื‘ืจืจ ืฉืœื ื“ื™ ื‘ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ื›ื“ื™ ืœืžืฆื•ื ืืช ื›ืœ ื”ื‘ืขื™ื•ืช ื‘ื–ืžืŸ, ื•ืœื›ืŸ ื”ื•ื—ืœื˜ ืœื’ืฉืช ืœื ื•ืฉื ื–ื” ืžื–ื•ื•ื™ืช ืื—ืจืช.

ื”ืงืžืช ืกื‘ื™ื‘ืช ื‘ื“ื™ืงื”

ื”ืžืฉื™ืžื” ื”ืจืืฉื•ื ื” ื”ื™ื ืคืจื™ืกืช ืกื‘ื™ื‘ืช ื‘ื“ื™ืงื”. ื”ืฉืœื‘ื™ื ื”ื ื“ืจืฉื™ื ืœื”ืคืขืœืช ืžื™ืงืจื•-ืฉื™ืจื•ืช:

  • ื”ื’ื“ืจ ืืช ื”ืฉื™ืจื•ืช ื”ื ื‘ื“ืง ืขื‘ื•ืจ ื”ืกื‘ื™ื‘ื” ื”ืžืงื•ืžื™ืช, ืฆื™ื™ืŸ ืืช ื”ืคืจื˜ื™ื ืœื—ื™ื‘ื•ืจ ืœืžืกื“ ื”ื ืชื•ื ื™ื ื•ืœ-AWS ื‘ืžืฉืชื ื™ ื”ืกื‘ื™ื‘ื”;
  • ื”ืคืขืœ ืืช Postgres ื•ื‘ืฆืข ืืช ื”ื”ื’ื™ืจื” ืขืœ ื™ื“ื™ ื”ืคืขืœืช Liquibase.
    ื‘-DBMSs ื™ื—ืกื™, ืœืคื ื™ ื›ืชื™ื‘ืช ื ืชื•ื ื™ื ืœืžืกื“ ื”ื ืชื•ื ื™ื, ืขืœื™ืš ืœื™ืฆื•ืจ ืกื›ื™ืžืช ื ืชื•ื ื™ื, ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ื˜ื‘ืœืื•ืช. ื‘ืขืช ืขื“ื›ื•ืŸ ืืคืœื™ืงืฆื™ื” ื™ืฉ ืœื”ื‘ื™ื ื˜ื‘ืœืื•ืช ืœื˜ื•ืคืก ื”ืžืฉืžืฉ ืืช ื”ื’ืจืกื” ื”ื—ื“ืฉื”, ื•ืจืฆื•ื™, ืžื‘ืœื™ ืœืื‘ื“ ื ืชื•ื ื™ื. ื–ื” ื ืงืจื ื”ื’ื™ืจื”. ื™ืฆื™ืจืช ื˜ื‘ืœืื•ืช ื‘ืžืกื“ ื ืชื•ื ื™ื ืจื™ืง ื‘ืชื—ื™ืœื” ื”ื™ื ืžืงืจื” ืžื™ื•ื—ื“ ืฉืœ ื”ื’ื™ืจื”. ื ื™ืชืŸ ืœื‘ื ื•ืช ื”ื’ื™ืจื” ื‘ืืคืœื™ืงืฆื™ื” ืขืฆืžื”. ื’ื ืœ-.NET ื•ื’ื ืœ-NodeJS ื™ืฉ ืžืกื’ืจื•ืช ื”ื’ื™ืจื”. ื‘ืžืงืจื” ืฉืœื ื•, ืžืกื™ื‘ื•ืช ืื‘ื˜ื—ื”, ื ืฉืœืœืช ืžืฉื™ืจื•ืชื™ ื”ืžื™ืงืจื• ืืช ื”ื–ื›ื•ืช ืœืฉื ื•ืช ืืช ืกื›ื™ืžืช ื”ื ืชื•ื ื™ื, ื•ื”ื”ืขื‘ืจื” ืžืชื‘ืฆืขืช ื‘ืืžืฆืขื•ืช Liquibase.
  • ื”ืคืขืœ ืืช Amazon LocalStack. ื–ื”ื• ื™ื™ืฉื•ื ืฉืœ ืฉื™ืจื•ืชื™ AWS ืœื”ืคืขืœื” ื‘ื‘ื™ืช. ื™ืฉ ืชืžื•ื ื” ืžื•ื›ื ื” ืขื‘ื•ืจ LocalStack ื‘- Docker Hub.
  • ื”ืคืขืœ ืืช ื”ืกืงืจื™ืคื˜ ื›ื“ื™ ืœื™ืฆื•ืจ ืืช ื”ื™ืฉื•ื™ื•ืช ื”ื“ืจื•ืฉื•ืช ื‘-LocalStack. ืกืงืจื™ืคื˜ื™ื ืฉืœ ืžืขื˜ืคืช ืžืฉืชืžืฉื™ื ื‘-AWS CLI.

ืžืฉืžืฉ ืœื‘ื“ื™ืงื” ืขืœ ื”ืคืจื•ื™ืงื˜ ื“ื•ื•ืจ. ื–ื” ื”ื™ื” ืงื™ื™ื ื‘ืขื‘ืจ, ืื‘ืœ ื”ื•ื ื”ื•ืฉืง ื™ื“ื ื™ืช ื•ื‘ื“ืง ืืคืœื™ืงืฆื™ื” ืฉื›ื‘ืจ ื ืคืจืกื” ื‘ื“ื•ื›ืŸ. ื›ืœื™ ื–ื” ืžืืคืฉืจ ืœืš ืœื‘ืฆืข ื‘ืงืฉื•ืช HTTP(S) ืฉืจื™ืจื•ืชื™ื•ืช ื•ืœื‘ื“ื•ืง ื”ืื ื”ืชื’ื•ื‘ื•ืช ืชื•ืืžื•ืช ืืช ื”ืฆื™ืคื™ื•ืช. ืฉืื™ืœืชื•ืช ืžืฉื•ืœื‘ื•ืช ืœืื•ืกืฃ, ื•ื ื™ืชืŸ ืœื”ืคืขื™ืœ ืืช ื›ืœ ื”ืื•ืกืฃ.

ื‘ื“ื™ืงื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืฉื™ืจื•ืชื™ ืžื™ืงืจื• ื‘-Docker ืœืื™ื ื˜ื’ืจืฆื™ื” ืจืฆื™ืคื”

ื›ื™ืฆื“ ืคื•ืขืœืช ื”ื‘ื“ื™ืงื” ื”ืื•ื˜ื•ืžื˜ื™ืช?

ื‘ืžื”ืœืš ื”ื‘ื“ื™ืงื” ื”ื›ืœ ืขื•ื‘ื“ ื‘-Docker: ื”ืฉื™ืจื•ืช ื”ื ื‘ื“ืง, Postgres, ื›ืœื™ ื”ื”ื’ื™ืจื” ื•-Postman, ืื• ื™ื•ืชืจ ื ื›ื•ืŸ, ื’ืจืกืช ื”ืงื•ื ืกื•ืœื” ืฉืœื• - ื ื™ื•ืžืŸ.

Docker ืคื•ืชืจ ืžืกืคืจ ื‘ืขื™ื•ืช:

  • ืขืฆืžืื•ืช ืžืชืฆื•ืจืช ื”ืžืืจื—;
  • ื”ืชืงื ืช ืชืœื•ืช: Docker ืžื•ืจื™ื“ ืชืžื•ื ื•ืช ืž- Docker Hub;
  • ื”ื—ื–ืจืช ื”ืžืขืจื›ืช ืœืžืฆื‘ื” ื”ืžืงื•ืจื™: ืคืฉื•ื˜ ื”ื•ืฆืืช ื”ืžื™ื›ืœื™ื.

ื“ื•ืงืจ-ืœื—ืŸ ืžืื—ื“ ืงื•ื ื˜ื™ื™ื ืจื™ื ืœืจืฉืช ื•ื™ืจื˜ื•ืืœื™ืช, ืžื‘ื•ื“ื“ืช ืžื”ืื™ื ื˜ืจื ื˜, ืฉื‘ื” ืงื•ื ื˜ื™ื™ื ืจื™ื ืžื•ืฆืื™ื ื–ื” ืืช ื–ื” ืœืคื™ ืฉืžื•ืช ื“ื•ืžื™ื™ืŸ.

ื”ื‘ื“ื™ืงื” ื ืฉืœื˜ืช ืขืœ ื™ื“ื™ ืกืงืจื™ืคื˜ ืžืขื˜ืคืช. ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช ื”ื‘ื“ื™ืงื” ืขืœ Windows ืื ื• ืžืฉืชืžืฉื™ื ื‘-git-bash. ืœืคื™ื›ืš, ืกืงืจื™ืคื˜ ืื—ื“ ืžืกืคื™ืง ื’ื ืขื‘ื•ืจ Windows ื•ื’ื ืขื‘ื•ืจ ืœื™ื ื•ืงืก. Git ื•-Docker ืžื•ืชืงื ื™ื ืขืœ ื™ื“ื™ ื›ืœ ื”ืžืคืชื—ื™ื ื‘ืคืจื•ื™ืงื˜. ื‘ืขืช ื”ืชืงื ืช Git ืขืœ Windows, git-bash ืžื•ืชืงืŸ, ื›ืš ืฉื’ื ืœื›ื•ืœื ื™ืฉ ืืช ื–ื”.

ื”ืกืงืจื™ืคื˜ ืžื‘ืฆืข ืืช ื”ืฉืœื‘ื™ื ื”ื‘ืื™ื:

  • ื‘ื ื™ื™ืช ืชืžื•ื ื•ืช Docker
    docker-compose build
  • ื”ืคืขืœืช ืžืกื“ ื”ื ืชื•ื ื™ื ื•-LocalStack
    docker-compose up -d <ะบะพะฝั‚ะตะนะฝะตั€>
  • ื”ื’ื™ืจื” ืฉืœ ืžืกื“ื™ ื ืชื•ื ื™ื ื•ื”ื›ื ืช LocalStack
    docker-compose run <ะบะพะฝั‚ะตะนะฝะตั€>
  • ื”ืฉืงืช ื”ืฉื™ืจื•ืช ื”ื ื‘ื“ืง
    docker-compose up -d <ัะตั€ะฒะธั>
  • ื”ืคืขืœืช ื”ืžื‘ื—ืŸ (ื ื™ื•ืžืŸ)
  • ืขืฆื™ืจืช ื›ืœ ื”ืžื›ื•ืœื•ืช
    docker-compose down
  • ืคืจืกื•ื ืชื•ืฆืื•ืช ื‘-Slack
    ื™ืฉ ืœื ื• ืฆ'ืื˜ ืฉื‘ื• ืขื•ื‘ืจื•ืช ื”ื•ื“ืขื•ืช ืขื ืกื™ืžืŸ ื‘ื™ืงื•ืจืช ื™ืจื•ืง ืื• ืฆืœื‘ ืื“ื•ื ื•ืงื™ืฉื•ืจ ืœื™ื•ืžืŸ.

ื”ืชืžื•ื ื•ืช ื”ื‘ืื•ืช ืฉืœ Docker ืžืขื•ืจื‘ื•ืช ื‘ืฉืœื‘ื™ื ืืœื”:

  • ื”ืฉื™ืจื•ืช ื”ื ื‘ื“ืง ื”ื•ื ืื•ืชื” ืชืžื•ื ื” ื›ืžื• ืœื™ื™ืฆื•ืจ. ื”ืชืฆื•ืจื” ืฉืœ ื”ื‘ื“ื™ืงื” ื”ื™ื ื‘ืืžืฆืขื•ืช ืžืฉืชื ื™ ืกื‘ื™ื‘ื”.
  • ืขื‘ื•ืจ Postgres, Redis ื•-LocalStack, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืชืžื•ื ื•ืช ืžื•ื›ื ื•ืช ืž- Docker Hub. ื™ืฉ ื’ื ืชืžื•ื ื•ืช ืžื•ื›ื ื•ืช ืขื‘ื•ืจ Liquibase ื•-Newman. ืื ื—ื ื• ื‘ื•ื ื™ื ืืช ืฉืœื ื• ืขืœ ื”ืฉืœื“ ืฉืœื”ื, ืžื•ืกื™ืคื™ื ืฉื ืืช ื”ืงื‘ืฆื™ื ืฉืœื ื•.
  • ื›ื“ื™ ืœื”ื›ื™ืŸ ืืช LocalStack, ืืชื” ืžืฉืชืžืฉ ื‘ืชืžื•ื ืช AWS CLI ืžื•ื›ื ื” ื•ื™ื•ืฆืจ ืชืžื•ื ื” ื”ืžื›ื™ืœื” ืกืงืจื™ืคื˜ ื”ืžื‘ื•ืกืก ืขืœื™ื”.

ืฉื™ืžื•ืฉ ื›ืจื›ื™ื, ืื™ื ืš ืฆืจื™ืš ืœื‘ื ื•ืช ืชืžื•ื ืช Docker ืจืง ื›ื“ื™ ืœื”ื•ืกื™ืฃ ืงื‘ืฆื™ื ืœืžื™ื›ืœ. ืขื ื–ืืช, ื ืคื—ื™ื ืื™ื ื ืžืชืื™ืžื™ื ืœืกื‘ื™ื‘ื” ืฉืœื ื• ื›ื™ ืžืฉื™ืžื•ืช Gitlab CI ืขืฆืžืŸ ืคื•ืขืœื•ืช ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื. ืืชื” ื™ื›ื•ืœ ืœืฉืœื•ื˜ ื‘-Docker ืžืžื™ื›ืœ ื›ื–ื”, ืื‘ืœ ืืžืฆืขื™ ืื—ืกื•ืŸ ืขื•ืœื™ื ืจืง ืชื™ืงื™ื•ืช ืžื”ืžืขืจื›ืช ื”ืžืืจื—ืช, ื•ืœื ืžืžื™ื›ืœ ืื—ืจ.

ื‘ืขื™ื•ืช ืฉืืชื” ืขืœื•ืœ ืœื”ื™ืชืงืœ ื‘ื”ืŸ

ืžื—ื›ื” ืœืžื•ื›ื ื•ืช

ื›ืืฉืจ ืงื•ื ื˜ื™ื™ื ืจ ืขื ืฉื™ืจื•ืช ืคื•ืขืœ, ื–ื” ืœื ืื•ืžืจ ืฉื”ื•ื ืžื•ื›ืŸ ืœืงื‘ืœ ื—ื™ื‘ื•ืจื™ื. ืขืœื™ืš ืœื”ืžืชื™ืŸ ืขื“ ืฉื”ื—ื™ื‘ื•ืจ ื™ืžืฉื™ืš.

ื‘ืขื™ื” ื–ื• ื ืคืชืจืช ืœืคืขืžื™ื ื‘ืืžืฆืขื•ืช ืกืงืจื™ืคื˜ wait-for-it.sh, ืฉืžื—ื›ื” ืœื”ื–ื“ืžื ื•ืช ืœื™ืฆื•ืจ ื—ื™ื‘ื•ืจ TCP. ืขื ื–ืืช, LocalStack ืขืฉื•ื™ ืœื–ืจื•ืง ืฉื’ื™ืืช 502 Bad Gateway. ื‘ื ื•ืกืฃ, ื”ื•ื ืžื•ืจื›ื‘ ืžืฉื™ืจื•ืชื™ื ืจื‘ื™ื, ื•ืื ืื—ื“ ืžื”ื ืžื•ื›ืŸ, ื–ื” ืœื ืื•ืžืจ ื›ืœื•ื ืขืœ ื”ืื—ืจื™ื.

ื”ื—ืœื˜ื”: ืกืงืจื™ืคื˜ื™ื ืœื”ืงืฆืืช LocalStack ืฉืžื—ื›ื™ื ืœืชื’ื•ื‘ื” ืฉืœ 200 ืž-SQS ื•ื’ื ืž-SNS.

ื”ืชื ื’ืฉื•ื™ื•ืช ืžืฉื™ืžื•ืช ืžืงื‘ื™ืœื•ืช

ื‘ื“ื™ืงื•ืช ืžืจื•ื‘ื•ืช ื™ื›ื•ืœื•ืช ืœืคืขื•ืœ ื‘ื•-ื–ืžื ื™ืช ืขืœ ืื•ืชื• ืžืืจื— Docker, ื›ืš ืฉืฉืžื•ืช ื”ืžื›ื™ืœื™ื ื•ื”ืจืฉืช ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ื™ื™ื—ื•ื“ื™ื™ื. ื™ืชืจื” ืžื›ืš, ื‘ื“ื™ืงื•ืช ืžืกื ื™ืคื™ื ืฉื•ื ื™ื ืฉืœ ืื•ืชื• ืฉื™ืจื•ืช ื™ื›ื•ืœื™ื ืœืจื•ืฅ ื’ื ื‘ื• ื–ืžื ื™ืช, ื›ืš ืฉืœื ืžืกืคื™ืง ืœื›ืชื•ื‘ ืืช ืฉืžื ื‘ื›ืœ ืงื•ื‘ืฅ ื—ื™ื‘ื•ืจ.

ื”ื—ืœื˜ื”: ื”ืกืงืจื™ืคื˜ ืžื’ื“ื™ืจ ืืช ื”ืžืฉืชื ื” COMPOSE_PROJECT_NAME ืœืขืจืš ื™ื™ื—ื•ื“ื™.

ืชื›ื•ื ื•ืช Windows

ื™ืฉื ื ืžืกืคืจ ื“ื‘ืจื™ื ืฉืื ื™ ืจื•ืฆื” ืœืฆื™ื™ืŸ ื‘ืขืช โ€‹โ€‹ื”ืฉื™ืžื•ืฉ ื‘-Docker ื‘-Windows, ืžื›ื™ื•ื•ืŸ ืฉื—ื•ื•ื™ื•ืช ืืœื• ื—ืฉื•ื‘ื•ืช ืœื”ื‘ื ืช ืžื“ื•ืข ืžืชืจื—ืฉื•ืช ืฉื’ื™ืื•ืช.

  1. ืกืงืจื™ืคื˜ื™ื ืฉืœ ืžืขื˜ืคืช ื‘ืžื™ื›ืœ ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ืขื ืกื™ื•ืžืช ืฉื•ืจื” ืฉืœ ืœื™ื ื•ืงืก.
    ืกืžืœ ื”ืžืขื˜ืคืช CR ื”ื•ื ืฉื’ื™ืืช ืชื—ื‘ื™ืจ. ืงืฉื” ืœื“ืขืช ืžื”ื•ื“ืขืช ื”ืฉื’ื™ืื” ืฉื–ื” ื”ืžืฆื‘. ื‘ืขืช ืขืจื™ื›ืช ืกืงืจื™ืคื˜ื™ื ื›ืืœื” ื‘-Windows, ืืชื” ืฆืจื™ืš ืขื•ืจืš ื˜ืงืกื˜ ืžืชืื™ื. ื‘ื ื•ืกืฃ, ืžืขืจื›ืช ื‘ืงืจืช ื”ื’ืจืกืื•ืช ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ืžื•ื’ื“ืจืช ื›ื”ืœื›ื”.

ื›ืš ืžื•ื’ื“ืจ git:

git config core.autocrlf input

  1. Git-bash ืžื—ืงื” ืชื™ืงื™ื•ืช ืœื™ื ื•ืงืก ืกื˜ื ื“ืจื˜ื™ื•ืช, ื•ื›ืืฉืจ ืงื•ืจืื™ื ืœืงื•ื‘ืฅ exe (ื›ื•ืœืœ docker.exe), ืžื—ืœื™ืฃ ื ืชื™ื‘ื™ ืœื™ื ื•ืงืก ืžื•ื—ืœื˜ื™ื ื‘ื ืชื™ื‘ื™ Windows. ืขื ื–ืืช, ื–ื” ืœื ื”ื’ื™ื•ื ื™ ืขื‘ื•ืจ ื ืชื™ื‘ื™ื ืฉืื™ื ื ื‘ืžื›ื•ื ื” ื”ืžืงื•ืžื™ืช (ืื• ื ืชื™ื‘ื™ื ื‘ืžื™ื›ืœ). ืœื ื ื™ืชืŸ ืœื”ืฉื‘ื™ืช ื”ืชื ื”ื’ื•ืช ื–ื•.

ื”ื—ืœื˜ื”: ื”ื•ืกืฃ ืœื•ื›ืกืŸ ื ื•ืกืฃ ืœืชื—ื™ืœืช ื”ื ืชื™ื‘: //bin ื‘ืžืงื•ื /bin. ืœื™ื ื•ืงืก ืžื‘ื™ื ื” ื ืชื™ื‘ื™ื ื›ืืœื”; ืขื‘ื•ืจื”, ืžืกืคืจ ืœื•ื›ืกื ื™ื ื–ื”ื™ื ืœืื—ื“. ืื‘ืœ git-bash ืœื ืžื–ื”ื” ื ืชื™ื‘ื™ื ื›ืืœื” ื•ืœื ืžื ืกื” ืœื”ืžื™ืจ ืื•ืชื.

ืคืœื˜ ื™ื•ืžืŸ

ื‘ืขืช ื”ืคืขืœืช ื‘ื“ื™ืงื•ืช, ื”ื™ื™ืชื™ ืจื•ืฆื” ืœืจืื•ืช ื™ื•ืžื ื™ื ื’ื ืžื ื™ื•ืžืŸ ื•ื’ื ืžื”ืฉื™ืจื•ืช ื ื‘ื“ืงื™ื. ืžื›ื™ื•ื•ืŸ ืฉื”ืื™ืจื•ืขื™ื ืฉืœ ื™ื•ืžื ื™ื ืืœื• ืงืฉื•ืจื™ื ื–ื” ื‘ื–ื”, ืฉื™ืœื•ื‘ื ื‘ืงื•ื ืกื•ืœื” ืื—ืช ื”ื•ื ื”ืจื‘ื” ื™ื•ืชืจ ื ื•ื— ืžืฉื ื™ ืงื‘ืฆื™ื ื ืคืจื“ื™ื. ื ื™ื•ืžืŸ ืžืฉื™ืง ื“ืจืš ื”ืคืขืœืช docker-compose, ื•ื›ืš ื”ืคืœื˜ ืฉืœื• ืžืกืชื™ื™ื ื‘ืงื•ื ืกื•ืœื”. ื›ืœ ืžื” ืฉื ื•ืชืจ ื”ื•ื ืœื•ื•ื“ื ืฉื”ืชืคื•ืงื” ืฉืœ ื”ืฉื™ืจื•ืช ืžื’ื™ืขื” ื’ื ืœืฉื.

ื”ืคืชืจื•ืŸ ื”ืžืงื•ืจื™ ื”ื™ื” ืœืขืฉื•ืช docker-compose ืœืžืขืœื” ืœืœื ื“ื’ืœ -d, ืื‘ืœ ื‘ืืžืฆืขื•ืช ื™ื›ื•ืœื•ืช ื”ืžืขื˜ืคืช, ืฉืœื— ืืช ื”ืชื”ืœื™ืš ื”ื–ื” ืœืจืงืข:

docker-compose up <service> &

ื–ื” ืขื‘ื“ ืขื“ ืฉื”ื™ื” ืฆื•ืจืš ืœืฉืœื•ื— ื™ื•ืžื ื™ื ืž-Docker ืœืฉื™ืจื•ืช ืฉืœ ืฆื“ ืฉืœื™ืฉื™. docker-compose ืœืžืขืœื” ื”ืคืกื™ืง ืœื”ื•ืฆื™ื ื™ื•ืžื ื™ื ืœืงื•ื ืกื•ืœื”. ืขื ื–ืืช, ื”ืฆื•ื•ืช ืขื‘ื“ ืžืฆื•ืจืฃ.

ื”ื—ืœื˜ื”:

docker attach --no-stdin ${COMPOSE_PROJECT_NAME}_<ัะตั€ะฒะธั>_1 &

ื”ืชื ื’ืฉื•ืช ืžื–ื”ื” ื‘ืžื”ืœืš ืื™ื˜ืจืฆื™ื•ืช ื‘ื“ื™ืงื”

ื‘ื“ื™ืงื•ืช ืžื•ืคืขืœื•ืช ื‘ืžืกืคืจ ืื™ื˜ืจืฆื™ื•ืช. ืžืกื“ ื”ื ืชื•ื ื™ื ืื™ื ื• ืžื ื•ืงื”. ืœืจืฉื•ืžื•ืช ื‘ืžืกื“ ื”ื ืชื•ื ื™ื ื™ืฉ ืžื–ื”ื™ื ื™ื™ื—ื•ื“ื™ื™ื. ืื ื ืจืฉื•ื ื–ื™ื”ื•ื™ื™ื ืกืคืฆื™ืคื™ื™ื ื‘ื‘ืงืฉื•ืช, ื ืงื‘ืœ ื”ืชื ื’ืฉื•ืช ื‘ืื™ื˜ืจืฆื™ื” ื”ืฉื ื™ื™ื”.

ื›ื“ื™ ืœื”ื™ืžื ืข ืžื›ืš, ื”ืžื–ื”ื™ื ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ื™ื™ื—ื•ื“ื™ื™ื, ืื• ืฉื™ืฉ ืœืžื—ื•ืง ืืช ื›ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืฉื ื•ืฆืจื• ืขืœ ื™ื“ื™ ื”ื‘ื“ื™ืงื”. ืœื ื ื™ืชืŸ ืœืžื—ื•ืง ื—ืœืง ืžื”ืื•ื‘ื™ื™ืงื˜ื™ื ืขืงื‘ ื“ืจื™ืฉื•ืช.

ื”ื—ืœื˜ื”: ืฆื•ืจ GUIDs ื‘ืืžืฆืขื•ืช ืกืงืจื™ืคื˜ื™ื ืฉืœ Postman.

var uuid = require('uuid');
var myid = uuid.v4();
pm.environment.set('myUUID', myid);

ืœืื—ืจ ืžื›ืŸ ื”ืฉืชืžืฉ ื‘ืกืžืœ ื‘ืฉืื™ืœืชื” {{myUUID}}, ืฉื™ื•ื—ืœืฃ ื‘ืขืจืš ื”ืžืฉืชื ื”.

ืฉื™ืชื•ืฃ ืคืขื•ืœื” ื‘ืืžืฆืขื•ืช LocalStack

ืื ื”ืฉื™ืจื•ืช ื”ื ื‘ื“ืง ืงื•ืจื ืื• ื›ื•ืชื‘ ืœืชื•ืจ SQS, ืื– ื›ื“ื™ ืœื•ื•ื“ื ื–ืืช, ื”ื‘ื“ื™ืงื” ืขืฆืžื” ื—ื™ื™ื‘ืช ืœืขื‘ื•ื“ ื’ื ืขื ื”ืชื•ืจ ื”ื–ื”.

ื”ื—ืœื˜ื”: ื‘ืงืฉื•ืช ืž-Postman ืœ-LocalStack.

ื”-API ืฉืœ ืฉื™ืจื•ืชื™ AWS ืžืชื•ืขื“, ื•ืžืืคืฉืจ ืœื‘ืฆืข ืฉืื™ืœืชื•ืช ืœืœื SDK.

ืื ืฉื™ืจื•ืช ื›ื•ืชื‘ ืœืชื•ืจ, ืื ื• ืงื•ืจืื™ื ืื•ืชื• ื•ื‘ื•ื“ืงื™ื ืืช ืชื•ื›ืŸ ื”ื”ื•ื“ืขื”.

ืื ื”ืฉื™ืจื•ืช ืฉื•ืœื— ื”ื•ื“ืขื•ืช ืœ-SNS, ื‘ืฉืœื‘ ื”ื”ื›ื ื” LocalStack ื’ื ื™ื•ืฆืจ ืชื•ืจ ื•ื ืจืฉื ืœื ื•ืฉื ื”-SNS ื”ื–ื”. ื•ืื– ื”ื›ืœ ืžืกืชื›ื ื‘ืžื” ืฉืชื•ืืจ ืœืขื™ืœ.

ืื ื”ืฉื™ืจื•ืช ืฆืจื™ืš ืœืงืจื•ื ื”ื•ื“ืขื” ืžื”ืชื•ืจ, ืื– ื‘ืฉืœื‘ ื”ื‘ื“ื™ืงื” ื”ืงื•ื“ื ื ื›ืชื•ื‘ ื”ื•ื“ืขื” ื–ื• ืœืชื•ืจ.

ื‘ื“ื™ืงืช ื‘ืงืฉื•ืช HTTP ืฉืžืงื•ืจืŸ ื‘ืฉื™ืจื•ืช ื”ืžื™ืงืจื• ื”ื ื‘ื“ืง

ืฉื™ืจื•ืชื™ื ืžืกื•ื™ืžื™ื ืขื•ื‘ื“ื™ื ืขืœ HTTP ืขื ืžืฉื”ื• ืื—ืจ ืžืœื‘ื“ AWS, ื•ื—ืœืง ืžืชื›ื•ื ื•ืช AWS ืื™ื ืŸ ืžื™ื•ืฉืžื•ืช ื‘-LocalStack.

ื”ื—ืœื˜ื”: ื‘ืžืงืจื™ื ืืœื• ื–ื” ื™ื›ื•ืœ ืœืขื–ื•ืจ MockServer, ืฉื™ืฉ ื‘ื• ืชืžื•ื ื” ืžื•ื›ื ื” ืจื›ื–ืช ื“ื•ืงืจ. ื‘ืงืฉื•ืช ืฆืคื•ื™ื•ืช ื•ืชื’ื•ื‘ื•ืช ืœื”ืŸ ืžื•ื’ื“ืจื•ืช ืขืœ ื™ื“ื™ ื‘ืงืฉืช HTTP. ื”-API ืžืชื•ืขื“, ื•ืœื›ืŸ ืื ื• ืคื•ื ื™ื ื‘ืงืฉื•ืช ืž-Postman.

ื‘ื“ื™ืงืช ืื™ืžื•ืช ื•ื”ืจืฉืื” ืฉืœ OAuth

ืื ื• ืžืฉืชืžืฉื™ื ื‘-OAuth ื• ืกืžืœื™ ืื™ื ื˜ืจื ื˜ ืฉืœ JSON (JWT). ื”ื‘ื“ื™ืงื” ื“ื•ืจืฉืช ืกืคืง OAuth ืฉื ื•ื›ืœ ืœื”ืจื™ืฅ ื‘ืื•ืคืŸ ืžืงื•ืžื™.

ื›ืœ ืื™ื ื˜ืจืืงืฆื™ื” ื‘ื™ืŸ ื”ืฉื™ืจื•ืช ืœืกืคืง ื”-OAuth ืžืกืชื›ืžืช ื‘ืฉืชื™ ื‘ืงืฉื•ืช: ืจืืฉื™ืช, ื”ืชืฆื•ืจื” ืžืชื‘ืงืฉืช /.well-known/openid-configuration, ื•ืœืื—ืจ ืžื›ืŸ ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ (JWKS) ืžืชื‘ืงืฉ ื‘ื›ืชื•ื‘ืช ืžื”ืชืฆื•ืจื”. ื›ืœ ื–ื” ื”ื•ื ืชื•ื›ืŸ ืกื˜ื˜ื™.

ื”ื—ืœื˜ื”: ืกืคืง ื”-OAuth ืœื‘ื“ื™ืงื” ืฉืœื ื• ื”ื•ื ืฉืจืช ืชื•ื›ืŸ ืกื˜ื˜ื™ ื•ืฉื ื™ ืงื‘ืฆื™ื ืขืœื™ื•. ื”ืืกื™ืžื•ืŸ ื ื•ืฆืจ ืคืขื ืื—ืช ื•ืžื—ื•ื™ื‘ ืœ-Git.

ืชื›ื•ื ื•ืช ืฉืœ ื‘ื“ื™ืงืช SignalR

Postman ืœื ืขื•ื‘ื“ ืขื websockets. ื›ืœื™ ืžื™ื•ื—ื“ ื ื•ืฆืจ ืœื‘ื“ื™ืงืช SignalR.

ืœืงื•ื— SignalR ื™ื›ื•ืœ ืœื”ื™ื•ืช ื™ื•ืชืจ ืžืกืชื ื“ืคื“ืคืŸ. ืงื™ื™ืžืช ืขื‘ื•ืจื• ืกืคืจื™ื™ืช ืœืงื•ื— ืชื—ืช .NET Core. ื”ืœืงื•ื—, ืฉื ื›ืชื‘ ื‘-.NET Core, ื™ื•ืฆืจ ื—ื™ื‘ื•ืจ, ืžืื•ืžืช ื•ืžื—ื›ื” ืœืจืฆืฃ ืžืกื•ื™ื ืฉืœ ื”ื•ื“ืขื•ืช. ืื ืžืชืงื‘ืœืช ื”ื•ื“ืขื” ืœื ืฆืคื•ื™ื” ืื• ืฉื”ื—ื™ื‘ื•ืจ ืื‘ื“, ื”ืœืงื•ื— ื™ื•ืฆื ืขื ืงื•ื“ ืฉืœ 1. ืื ื”ื”ื•ื“ืขื” ื”ืฆืคื•ื™ื” ื”ืื—ืจื•ื ื” ืžืชืงื‘ืœืช, ื”ืœืงื•ื— ื™ื•ืฆื ืขื ืงื•ื“ ืฉืœ 0.

ื ื™ื•ืžืŸ ืขื•ื‘ื“ ื‘ืžืงื‘ื™ืœ ืขื ื”ืœืงื•ื—. ืžืกืคืจ ืœืงื•ื—ื•ืช ืžื•ืฉืงื™ื ืœื‘ื“ื•ืง ืฉื”ื”ื•ื“ืขื•ืช ืžื•ืขื‘ืจื•ืช ืœื›ืœ ืžื™ ืฉืฆืจื™ืš.

ื‘ื“ื™ืงื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืฉื™ืจื•ืชื™ ืžื™ืงืจื• ื‘-Docker ืœืื™ื ื˜ื’ืจืฆื™ื” ืจืฆื™ืคื”

ื›ื“ื™ ืœื”ืคืขื™ืœ ืžืกืคืจ ืœืงื•ื—ื•ืช ื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ืช --ืกื•ึผืœึธื ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื” docker-compose.

ืœืคื ื™ ื”ืคืขืœืชื•, ื”ืชืกืจื™ื˜ ืฉืœ Postman ืžืžืชื™ืŸ ืขื“ ืฉื›ืœ ื”ืœืงื•ื—ื•ืช ื™ื™ืฆื•ืจ ืงืฉืจื™ื.
ื›ื‘ืจ ื ืชืงืœื ื• ื‘ื‘ืขื™ื” ืฉืœ ื”ืžืชื ื” ืœื—ื™ื‘ื•ืจ. ืื‘ืœ ื”ื™ื• ืฉืจืชื™ื, ื•ื”ื ื” ื”ืœืงื•ื—. ื“ืจื•ืฉื” ื’ื™ืฉื” ืื—ืจืช.

ื”ื—ืœื˜ื”: ื”ืœืงื•ื— ื‘ืžื™ื›ืœ ืžืฉืชืžืฉ ื‘ืžื ื’ื ื•ืŸ ื‘ื“ื™ืงืช ื‘ืจื™ืื•ืชื›ื“ื™ ืœื™ื™ื“ืข ืืช ื”ืชืกืจื™ื˜ ื‘ืžืืจื— ืขืœ ืžืฆื‘ื•. ื”ืœืงื•ื— ื™ื•ืฆืจ ืงื•ื‘ืฅ ื‘ื ืชื™ื‘ ืžืกื•ื™ื, ืœืžืฉืœ /healthcheck, ื‘ืจื’ืข ืฉื”ื—ื™ื‘ื•ืจ ื ื•ืฆืจ. ืกืงืจื™ืคื˜ HealthCheck ื‘ืงื•ื‘ืฅ docker ื ืจืื” ื›ืš:

HEALTHCHECK --interval=3s CMD if [ ! -e /healthcheck ]; then false; fi

ืงื‘ื•ืฆื” ื“ื•ืงืจ ืœื‘ื“ื•ืง ืžืฆื™ื’ ืืช ื”ืžืฆื‘ ื”ืจื’ื™ืœ, ืžืฆื‘ ื”ื‘ืจื™ืื•ืช ื•ืงื•ื“ ื”ื™ืฆื™ืื” ืฉืœ ื”ืžื›ื•ืœื”.

ืœืื—ืจ ื”ืฉืœืžืช ื ื™ื•ืžืŸ, ื”ืกืงืจื™ืคื˜ ื‘ื•ื“ืง ืฉื›ืœ ื”ืงื•ื ื˜ื™ื™ื ืจื™ื ืขื ื”ืœืงื•ื— ื”ืกืชื™ื™ืžื•, ืขื ืงื•ื“ 0.

ื”ืืคื™ื ืก ืงื™ื™ื

ืœืื—ืจ ืฉื”ืชื’ื‘ืจื ื• ืขืœ ื”ืงืฉื™ื™ื ืฉืชื•ืืจื• ืœืขื™ืœ, ื”ื™ื” ืœื ื• ืกื˜ ืฉืœ ืžื‘ื—ื ื™ ืจื™ืฆื” ื™ืฆื™ื‘ื™ื. ื‘ื‘ื“ื™ืงื•ืช, ื›ืœ ืฉื™ืจื•ืช ืขื•ื‘ื“ ื›ื™ื—ื™ื“ื” ืื—ืช, ืชื•ืš ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืžืกื“ ื”ื ืชื•ื ื™ื ื•ืขื Amazon LocalStack.

ื‘ื“ื™ืงื•ืช ืืœื• ืžื’ื ื•ืช ืขืœ ืฆื•ื•ืช ืฉืœ 30+ ืžืคืชื—ื™ื ืžืคื ื™ ืฉื’ื™ืื•ืช ื‘ืืคืœื™ืงืฆื™ื” ืขื ืื™ื ื˜ืจืืงืฆื™ื” ืžื•ืจื›ื‘ืช ืฉืœ 10+ ืฉื™ืจื•ืชื™ ืžื™ืงืจื• ืขื ืคืจื™ืกื•ืช ืชื›ื•ืคื•ืช.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”