ืžื“ืจื™ืš ืœืžืชื—ื™ืœื™ื: ื™ืฆื™ืจืช ืฆื™ื ื•ืจ DevOps

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

ืžื“ืจื™ืš ืœืžืชื—ื™ืœื™ื: ื™ืฆื™ืจืช ืฆื™ื ื•ืจ DevOps

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

ืžืกืข ื”-DevOps ืฉืœื™

ืขื‘ื“ืชื™ ื‘ืขื‘ืจ ื‘ืฆื•ื•ืช ื”ืขื ืŸ ืฉืœ ืงื‘ื•ืฆืช Citi ื‘ืคื™ืชื•ื— ืืคืœื™ืงืฆื™ื™ืช ืื™ื ื˜ืจื ื˜ ื‘-Infrastructure-as-a-Service (IaaS) ืœื ื™ื”ื•ืœ ืชืฉืชื™ืช ื”ืขื ืŸ ืฉืœ Citi, ืืš ืชืžื™ื“ ื”ืชืขื ื™ื™ื ืชื™ ื›ื™ืฆื“ ืœื”ืคื•ืš ืืช ืชื”ืœื™ืš ื”ืคื™ืชื•ื— ืœื™ืขื™ืœ ื™ื•ืชืจ ื•ืœื”ื‘ื™ื ืœืฉื™ื ื•ื™ ืชืจื‘ื•ืชื™ ื—ื™ื•ื‘ื™. ืฆื•ื•ืช ืคื™ืชื•ื—. ืžืฆืืชื™ ืืช ื”ืชืฉื•ื‘ื” ื‘ืกืคืจ ืฉื”ื•ืžืœืฅ ืขืœ ื™ื“ื™ ื’ืจื’ ืœื‘ื ื“ืจ, CTO ืฉืœ Cloud Architecture and Infrastructure ื‘-Citi. ื”ืกืคืจ ื ืงืจื ืคืจื•ื™ืงื˜ ืขื•ืฃ ื”ื—ื•ืœ (ืคืจื•ื™ืงื˜ ื”ืคื ื™ืงืก), ื•ื”ื•ื ืžืกื‘ื™ืจ ืืช ื”ืขืงืจื•ื ื•ืช ืฉืœ DevOps, ืื‘ืœ ื”ื•ื ืงื•ืจื ื›ืžื• ืจื•ืžืŸ.

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

ืืžื–ื•ืŸ: 23 ืœื™ื•ื
ื’ื•ื’ืœ: 5 ืœื™ื•ื
ื ื˜ืคืœื™ืงืก: 500 ืœื™ื•ื
ืคื™ื™ืกื‘ื•ืง: ืคืขื ื‘ื™ื•ื
ื˜ื•ื•ื™ื˜ืจ: 3 ืคืขืžื™ื ื‘ืฉื‘ื•ืข
ื—ื‘ืจื” ื˜ื™ืคื•ืกื™ืช: ืื—ืช ืœ-9 ื—ื•ื“ืฉื™ื

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

ื”ื™ื™ื ื• ืจื—ื•ืงื™ื ืžื–ื” ืขื“ ืฉื”ื˜ืžืขื ื• DevOps ื‘-Citi. ืื–, ืœืฆื•ื•ืช ืฉืœื™ ื”ื™ื• ืกื‘ื™ื‘ื•ืช ืฉื•ื ื•ืช, ืื‘ืœ ื”ืคืจื™ืกื” ื‘ืฉืจืช ื”ืคื™ืชื•ื— ื”ื™ื™ืชื” ื™ื“ื ื™ืช ืœื—ืœื•ื˜ื™ืŸ. ืœื›ืœ ื”ืžืคืชื—ื™ื ื”ื™ื™ืชื” ื’ื™ืฉื” ืœืฉืจืช ืคื™ืชื•ื— ืื—ื“ ื‘ืœื‘ื“ ื”ืžื‘ื•ืกืก ืขืœ IBM WebSphere Application Server Community Edition. ื”ื‘ืขื™ื” ื”ื™ื™ืชื” ืฉื”ืฉืจืช ื ืกื’ืจ ื‘ื›ืœ ืคืขื ืฉืžืกืคืจ ืžืฉืชืžืฉื™ื ื ื™ืกื• ืœืคืจื•ืก ื‘ื• ื–ืžื ื™ืช, ื›ืš ืฉื”ืžืคืชื—ื™ื ื ืืœืฆื• ืœืชืงืฉืจ ืืช ื›ื•ื•ื ื•ืชื™ื”ื ื–ื” ืœื–ื”, ื•ื–ื” ื”ื™ื” ื“ื™ ื›ืื‘. ื‘ื ื•ืกืฃ, ื”ื™ื• ื‘ืขื™ื•ืช ืขื ื›ื™ืกื•ื™ ืงื•ื“ ื‘ื“ื™ืงื” ื‘ืจืžื” ื ืžื•ื›ื”, ืชื”ืœื™ื›ื™ ืคืจื™ืกื” ื™ื“ื ื™ื™ื ืžืกื•ืจื‘ืœื™ื ื•ื—ื•ืกืจ ื™ื›ื•ืœืช ืœืขืงื•ื‘ ืื—ืจ ืคืจื™ืกืช ื”ืงื•ื“ ื”ืžืฉื•ื™ืš ืœืžืฉื™ืžื” ืื• ืกื™ืคื•ืจ ืžืฉืชืžืฉ ืกืคืฆื™ืคื™.

ื”ื‘ื ืชื™ ืฉืฆืจื™ืš ืœืขืฉื•ืช ืžืฉื”ื• ื•ืžืฆืืชื™ ืขืžื™ืช ืฉื—ื•ืฉื‘ ื›ืžื•ื”ื•. ื”ื—ืœื˜ื ื• ืœืฉืชืฃ ืคืขื•ืœื” ื‘ื‘ื ื™ื™ืช ืฆื™ื ื•ืจ DevOps ื”ืจืืฉื•ื ื™ - ื”ื•ื ื”ืงื™ื ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ืฉืœ Tomcat ื•ืฉืจืช ื™ื™ืฉื•ืžื™ื ื‘ื–ืžืŸ ืฉืขื‘ื“ืชื™ ืขืœ Jenkins, ืฉื™ืœื‘ืชื™ ืืช Atlassian Jira ื•-BitBucket ื•ืขื‘ื“ืชื™ ืขืœ ื›ื™ืกื•ื™ ืงื•ื“ ื‘ื“ื™ืงื”. ืคืจื•ื™ืงื˜ ืฆื“ ื–ื” ื”ืฆืœื™ื— ืžืื•ื“: ืื•ื˜ืžื ื• ืชื”ืœื™ื›ื™ื ืจื‘ื™ื ื›ืžืขื˜ ืœื—ืœื•ื˜ื™ืŸ, ื”ืฉื’ื ื• ื›ืžืขื˜ 100% ื–ืžืŸ ืคืขื•ืœื” ื‘ืฉืจืช ื”ืคื™ืชื•ื— ืฉืœื ื•, ืกื™ืคืงื ื• ืžืขืงื‘ ื•ื›ื™ืกื•ื™ ื‘ื“ื™ืงื•ืช ืžืฉื•ืคืจ ืฉืœ ื”ืงื•ื“, ื•ื”ื•ืกืคื ื• ืืช ื”ื™ื›ื•ืœืช ืœืงืฉืจ ืืช ืกื ื™ืคื™ Git ืœื‘ืขื™ื•ืช ืื• ืคืจื™ืกื•ืช ืฉืœ Jira. ืจื•ื‘ ื”ื›ืœื™ื ืฉื‘ื”ื ื”ืฉืชืžืฉื ื• ืœื‘ื ื™ื™ืช ืฆื™ื ื•ืจ DevOps ืฉืœื ื• ื”ื™ื• ืงื•ื“ ืคืชื•ื—.

ืขื›ืฉื™ื• ืื ื™ ืžื‘ื™ืŸ ื›ืžื” ืคืฉื•ื˜ ื”ื™ื” ืฆื™ื ื•ืจ DevOps ืฉืœื ื•: ืœื ื”ืฉืชืžืฉื ื• ื‘ื”ืจื—ื‘ื•ืช ื›ืžื• ืงื‘ืฆื™ Jenkins ืื• Ansible. ืขื ื–ืืช, ื”ืฆื™ื ื•ืจ ื”ืคืฉื•ื˜ ื”ื–ื” ืขื‘ื“ ื”ื™ื˜ื‘, ืื•ืœื™ ื‘ืฉืœ ืขืงืจื•ืŸ ืคืืจื˜ื• (ื”ื™ื“ื•ืข ื’ื ื‘ืชื•ืจ ื›ืœืœ 80/20).

ืžื‘ื•ื ืงืฆืจ ืœ-DevOps ื•ืœ-CI/CD Pipeline

ืื ืชืฉืืœื• ืžืกืคืจ ืื ืฉื™ื, "ืžื” ื–ื” DevOps?", ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉืชืงื‘ืœื• ืžืกืคืจ ืชืฉื•ื‘ื•ืช ืฉื•ื ื•ืช. DevOps, ื‘ื“ื•ืžื” ืœ-Agile, ื”ืชืคืชื—ื” ื•ืžืชืคืจืฉืช ืขืœ ืคื ื™ ื“ื™ืกืฆื™ืคืœื™ื ื•ืช ืจื‘ื•ืช ื•ืฉื•ื ื•ืช, ืื‘ืœ ืจื•ื‘ ื”ืื ืฉื™ื ื™ืกื›ื™ืžื• ืขืœ ื›ืžื” ื“ื‘ืจื™ื: DevOps ื”ื•ื ืคืจืงื˜ื™ืงืช ืคื™ืชื•ื— ืชื•ื›ื ื” ืื• ืžื—ื–ื•ืจ ื—ื™ื™ื ืฉืœ ืคื™ืชื•ื— ืชื•ื›ื ื” (SDLC) ืฉื”ืขื™ืงืจื•ืŸ ื”ืžืจื›ื–ื™ ืฉืœื• ื”ื•ื ืžืฉื ื” ืืช ื”ืชืจื‘ื•ืช ืฉื‘ื” ืžืคืชื—ื™ื ื•ืฉืื™ื ื ืžืคืชื—ื™ื ืงื™ื™ืžื™ื ื‘ืกื‘ื™ื‘ื” ืฉื‘ื”:

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

ื‘ืขื•ื“ ืฉื›ืœื™ ื”ืชื•ื›ื ื” ื”ื ื›ื•ื ื™ื ืื™ื ื ื”ื“ื‘ืจ ื”ื™ื—ื™ื“ ืฉืืชื” ืฆืจื™ืš ื›ื“ื™ ืœื™ืฆื•ืจ ืกื‘ื™ื‘ืช DevOps, ื—ืœืง ืžื”ื›ืœื™ื ื—ื™ื•ื ื™ื™ื. ื›ืœื™ ืžืคืชื— ื”ื•ื ืื™ื ื˜ื’ืจืฆื™ื” ืžืชืžืฉื›ืช ื•ืคืจื™ืกื” ืžืชืžืฉื›ืช (CI/CD). ื‘ืฆื ืจืช ื–ื•, ืœืกื‘ื™ื‘ื•ืช ื™ืฉ ืฉืœื‘ื™ื ืฉื•ื ื™ื (ืœืžืฉืœ DEV, INT, TST, QA, UAT, STG, PROD), ืคืขื•ืœื•ืช ืจื‘ื•ืช ื”ืŸ ืื•ื˜ื•ืžื˜ื™ื•ืช, ื•ืžืคืชื—ื™ื ื™ื›ื•ืœื™ื ืœื›ืชื•ื‘ ืงื•ื“ ื‘ืื™ื›ื•ืช ื’ื‘ื•ื”ื”, ืœื”ืฉื™ื’ ื–ืจื™ื–ื•ืช ืคื™ืชื•ื— ื•ืงืฆื‘ื™ ืคืจื™ืกื” ื’ื‘ื•ื”ื™ื.

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

ืฉืœื‘ 1: ืฉื™ื˜ื•ืช CI/CD

ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉืืชื” ืฆืจื™ืš ื”ื•ื ื›ืœื™ CI/CD. Jenkins, ื›ืœื™ ืงื•ื“ ืคืชื•ื— ื”ืžื‘ื•ืกืก ืขืœ Java ื•ืžื•ืจืฉื” ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT, ื”ื•ื ื”ื›ืœื™ ืฉื”ืคืš ืืช DevOps ืœืคื•ืคื•ืœืจื™ ื•ื”ืคืš ืœืกื˜ื ื“ืจื˜ ื“ื” ืคืงื˜ื•.

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

Jenkins ื”ื•ื ืจืง ืื—ื“ ืžื›ืœื™ ืงื•ื“ ืคืชื•ื— ืจื‘ื™ื ืฉืœ CI/CD ืฉื‘ื”ื ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื›ื“ื™ ืœื‘ื ื•ืช ืฆื™ื ื•ืจ DevOps ืฉืœืš.

ื’'ื ืงื™ื ืก: Creative Commons ื•-MIT
Travis CI: MIT
ื‘ืงืจืช ืฉื™ื•ื˜: BSD
Buildbot: GPL
Apache Gump: Apache 2.0
ืงืื‘ื™: ื’ื ื•

ื›ืš ื ืจืื™ื ืชื”ืœื™ื›ื™ DevOps ืขื ื›ืœื™ CI/CD:

ืžื“ืจื™ืš ืœืžืชื—ื™ืœื™ื: ื™ืฆื™ืจืช ืฆื™ื ื•ืจ DevOps

ื™ืฉ ืœืš ื›ืœื™ CI/CD ืคื•ืขืœ ืขืœ ื”ืžืืจื— ื”ืžืงื•ืžื™ ืฉืœืš, ืื‘ืœ ืื™ืŸ ื”ืจื‘ื” ืฉืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช ื›ืจื’ืข. ื‘ื•ืื• ื ืขื‘ื•ืจ ืœืฉืœื‘ ื”ื‘ื ืฉืœ ืžืกืข ื”-DevOps.

ืฉืœื‘ 2: ื ื™ื”ื•ืœ ืžืขืจื›ื•ืช ื‘ืงืจืช ืžืงื•ืจ

ื”ื“ืจืš ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ (ื•ืื•ืœื™ ื”ืงืœื” ื‘ื™ื•ืชืจ) ืœื•ื•ื“ื ืฉื›ืœื™ ื”-CI/CD ืฉืœืš ื™ื›ื•ืœ ืœืขืฉื•ืช ืืช ื”ืงืกื ืฉืœื• ื”ื™ื ืฉื™ืœื•ื‘ ืขื ื›ืœื™ ื‘ืงืจืช ืงื•ื“ ืžืงื•ืจ (SCM). ืœืžื” ืืชื” ืฆืจื™ืš ื‘ืงืจืช ืžืงื•ืจ? ื ื ื™ื— ืฉืืชื” ืžืคืชื— ืืคืœื™ืงืฆื™ื”. ื‘ื›ืœ ืคืขื ืฉืืชื” ื™ื•ืฆืจ ื™ื™ืฉื•ื, ืืชื” ืžืชื›ื ืช, ื•ื–ื” ืœื ืžืฉื ื” ืื ืืชื” ืžืฉืชืžืฉ ื‘-Java, Python, C++, Go, Ruby, JavaScript, ืื• ื‘ื›ืœ ืื—ืช ืžืžื™ืœื™ื•ื ื™ ืฉืคื•ืช ื”ืชื›ื ื•ืช. ื”ืงื•ื“ ืฉืืชื” ื›ื•ืชื‘ ื ืงืจื ืงื•ื“ ืžืงื•ืจ. ื‘ื”ืชื—ืœื”, ื‘ืžื™ื•ื—ื“ ื›ืฉืืชื” ืขื•ื‘ื“ ืœื‘ื“, ื›ื ืจืื” ืฉื–ื” ื‘ืกื“ืจ ืœืฉื™ื ื”ื›ืœ ื‘ืกืคืจื™ื™ื” ืžืงื•ืžื™ืช. ืื‘ืœ ื›ื›ืœ ืฉื”ืคืจื•ื™ืงื˜ ื’ื“ืœ ื•ืืชื” ืžื–ืžื™ืŸ ืื ืฉื™ื ืื—ืจื™ื ืœืฉืชืฃ ืคืขื•ืœื”, ืืชื” ืฆืจื™ืš ื“ืจืš ืœืžื ื•ืข ืงื•ื ืคืœื™ืงื˜ื™ื ืชื•ืš ืฉื™ืชื•ืฃ ื™ืขื™ืœ ืฉืœ ืฉื™ื ื•ื™ื™ื. ืืชื” ื’ื ืฆืจื™ืš ื“ืจืš ืœืฉื—ื–ืจ ื’ืจืกืื•ืช ืงื•ื“ืžื•ืช, ื›ื™ ื™ืฆื™ืจืช ื’ื™ื‘ื•ื™ื™ื ื•ื”ืขืชืงื”/ื”ื“ื‘ืงื” ืœืชื•ื›ื ื”ื•ืคื›ืช ืœืžื™ื•ืฉื ืช. ืืชื” (ื•ื—ื‘ืจื™ ื”ืฆื•ื•ืช ืฉืœืš) ืฆืจื™ื›ื™ื ืžืฉื”ื• ื˜ื•ื‘ ื™ื•ืชืจ.

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

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

Git: GPLv2 ื•-LGPL v2.1
ื—ืชืจื ื•ืช: Apache 2.0
ืžืขืจื›ืช ื’ืจืกืื•ืช ื‘ืžืงื‘ื™ืœ (CVS): GNU
ื•ืกื˜ื”: LGPL
Mercurial: GNU GPL v2+

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

ืžื“ืจื™ืš ืœืžืชื—ื™ืœื™ื: ื™ืฆื™ืจืช ืฆื™ื ื•ืจ DevOps

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

ืฉืœื‘ 3: ืฆื•ืจ ื›ืœื™ ืœื‘ื ื™ื™ืช ืื•ื˜ื•ืžืฆื™ื”

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

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

ืฉื
ืจื™ืฉื™ื•ืŸ
ืฉืคืช ืชื›ื ื•ืช

Maven
Apache 2.0
Java

ื ืžืœื”
Apache 2.0
Java

ืกืœืข
Apache 2.0
Java

ื–ืœ
Apache 2.0
Java

ืœืขืฉื•ืช
ื’ื ื”
N / A

ืœึดื ึฐื—ื•ึนืจ
MIT
JavaScript

ื’ืืœืค
MIT
JavaScript

ื‘ึผื•ึนื ึถื”
ืึทืคึธึผืฉื
ืื•ึนื“ึถื

ืœึดื’ืจื•ึนืฃ
MIT
ืื•ึนื“ึถื

AAP
ื’ื ื”
ืคื™ืชื•ืŸ

SCons
MIT
ืคื™ืชื•ืŸ

BitBake
GPLv2
ืคื™ืชื•ืŸ

ืขื•ึผื’ึธื”
MIT
C#

ASDF
Expat (MIT)
ืœื™ืกืค

ืงึฐื ื•ึผื ึดื™ึธื”
BSD
ื”ืืกืœ

ื’ื“ื•ืœ! ืืชื” ื™ื›ื•ืœ ืœื”ื›ื ื™ืก ืืช ืงื‘ืฆื™ ื”ืชืฆื•ืจื” ืฉืœ ื›ืœื™ ื”ืื•ื˜ื•ืžืฆื™ื” ืœื‘ื ื•ืช ืœืชื•ืš ืžืขืจื›ืช ื‘ืงืจืช ื”ืžืงื•ืจ ืฉืœืš ื•ืœืชืช ืœื›ืœื™ ื”-CI/CD ืฉืœืš ืœื—ื‘ืจ ื”ื›ืœ ื‘ื™ื—ื“.

ืžื“ืจื™ืš ืœืžืชื—ื™ืœื™ื: ื™ืฆื™ืจืช ืฆื™ื ื•ืจ DevOps

ื”ื›ืœ ื‘ืกื“ืจ, ืœื? ืื‘ืœ ื”ื™ื›ืŸ ืœืคืจื•ืก ืืช ื”ืืคืœื™ืงืฆื™ื” ืฉืœืš?

ืฉืœื‘ 4: ืฉืจืช ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜

ืœืขืช ืขืชื”, ื™ืฉ ืœืš ืงื•ื‘ืฅ ืืจื•ื– ืฉื™ื›ื•ืœ ืœื”ื™ื•ืช ื‘ืจ ื”ืคืขืœื” ืื• ืœื”ืชืงื ื”. ื›ื“ื™ ืฉื›ืœ ื™ื™ืฉื•ื ื™ื”ื™ื” ืฉื™ืžื•ืฉื™ ื‘ืืžืช, ื”ื•ื ื—ื™ื™ื‘ ืœืกืคืง ืฉื™ืจื•ืช ืื• ืžืžืฉืง ื›ืœืฉื”ื•, โ€‹โ€‹ืื‘ืœ ืืชื” ืฆืจื™ืš ืžื™ื›ืœ ื›ื“ื™ ืœืืจื— ืืช ื”ื™ื™ืฉื•ื ืฉืœืš.

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

ื™ืฉื ื ืžืกืคืจ ืฉืจืชื™ ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜ ื‘ืงื•ื“ ืคืชื•ื—.

ืฉื
ืจื™ืฉื™ื•ืŸ
ืฉืคืช ืชื›ื ื•ืช

ื—ืชื•ืœ ื‘ืจ
Apache 2.0
Java

ืžื–ื—
Apache 2.0
Java

WildFly
GNU Lesser Public
Java

ื“ื’ ื–ื›ื•ื›ื™ืช
CDDL & GNU ืคื—ื•ืช ืฆื™ื‘ื•ืจื™
Java

ื’'ื ื’ื•
3-ืกืขื™ืฃ BSD
ืคื™ืชื•ืŸ

ื˜ื•ืจื ื“ื•
Apache 2.0
ืคื™ืชื•ืŸ

ื’ื•ื ื™ืงื”ื•ืจืŸ
MIT
ืคื™ืชื•ืŸ

ืคื™ืชื•ืŸ
MIT
ืคื™ืชื•ืŸ

ืจื™ื™ืœืก
MIT
ืื•ึนื“ึถื

Node.js
MIT
Javascript

ืฆื™ื ื•ืจ DevOps ืฉืœืš ื›ืžืขื˜ ืžื•ื›ืŸ ืœืฉื™ืžื•ืฉ. ืขื‘ื•ื“ื” ื˜ื•ื‘ื”!

ืžื“ืจื™ืš ืœืžืชื—ื™ืœื™ื: ื™ืฆื™ืจืช ืฆื™ื ื•ืจ DevOps

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

ืฉืœื‘ 5: ื›ื™ืกื•ื™ ื‘ื“ื™ืงืช ืงื•ื“

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

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

ืžืขืจื›ื•ืช ื‘ื“ื™ืงืช ืงื•ื“

ืฉื
ืจื™ืฉื™ื•ืŸ
ืฉืคืช ืชื›ื ื•ืช

JUnit
ืจื™ืฉื™ื•ืŸ
Java

EasyMock
ืึทืคึธึผืฉื
Java

ืžื•ืงื™ื˜ื•
MIT
Java

PowerMock
Apache 2.0
Java

ืคื™ื˜ืกื˜
MIT
ืคื™ืชื•ืŸ

ื”ืฉืขืจื”
ืžื•ื–ื™ืœื”
ืคื™ืชื•ืŸ

ื˜ื•ืงืก
MIT
ืคื™ืชื•ืŸ

ืžืขืจื›ื•ืช ื”ืžืœืฆื•ืช ืœืฉื™ืคื•ืจ ืงื•ื“

ืฉื
ืจื™ืฉื™ื•ืŸ
ืฉืคืช ืชื›ื ื•ืช

ืกื™ืงื•ืจ
ื’ื ื”
Java

CodeCover
Eclipse Public (EPL)
Java

Coverage.py
Apache 2.0
ืคื™ืชื•ืŸ

ืืžื”
ืจื™ืฉื™ื•ืŸ ืฆื™ื‘ื•ืจื™ ืžืฉื•ืชืฃ
Java

ื’'ืงื•ืงื•
ืจื™ืฉื™ื•ืŸ
Java

ื”ืฉืขืจื”
ืžื•ื–ื™ืœื”
ืคื™ืชื•ืŸ

ื˜ื•ืงืก
MIT
ืคื™ืชื•ืŸ

ื™ึทืกืžึดื™ืŸ
MIT
JavaScript

ืงืืจืžื”
MIT
JavaScript

ืžื•ืงื”
MIT
JavaScript

ื™ืฉ
MIT
JavaScript

ืฉื™ืžื• ืœื‘ ืฉืจื•ื‘ ื”ื›ืœื™ื ื•ื”ืžืกื’ืจื•ืช ืฉื”ื•ื–ื›ืจื• ืœืขื™ืœ ื ื›ืชื‘ื• ืขื‘ื•ืจ Java, Python ื•-JavaScript, ืฉื›ืŸ C++ ื•-C# ื”ืŸ ืฉืคื•ืช ืชื›ื ื•ืช ืงื ื™ื™ื ื™ื•ืช (ืื ื›ื™ GCC ื”ื•ื ืงื•ื“ ืคืชื•ื—).

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

ืฉืœื‘ื™ื ื ื•ืกืคื™ื

ืžื™ื›ืœื™ื

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

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

ืืžื ื ื™ืฉ ืืคืฉืจื•ื™ื•ืช ืžื›ื•ืœื” ืื—ืจื•ืช, ืื‘ืœ ื”ืคื•ืคื•ืœืจื™ื•ืช ื‘ื™ื•ืชืจ ื”ืŸ Docker ื•-Kubernetes.

ื“ื•ืงืจ: Apache 2.0
Kubernetes: Apache 2.0

ื›ืœื™ ืื•ื˜ื•ืžืฆื™ื” ื‘ื™ื ื•ื ื™ื™ื

ืฆื™ื ื•ืจ ื”-DevOps ืฉืœื ื• ืžืชืžืงื“ ื‘ืขื™ืงืจ ื‘ื™ืฆื™ืจื” ื•ื‘ืคืจื™ืกื” ืžืฉื•ืชืคืช ืฉืœ ื™ื™ืฉื•ืžื™ื, ืื‘ืœ ื™ืฉ ื“ื‘ืจื™ื ืจื‘ื™ื ืื—ืจื™ื ืฉื ื™ืชืŸ ืœืขืฉื•ืช ืขื ื›ืœื™ DevOps. ืื—ื“ ืžื”ื ื”ื•ื ื”ืฉื™ืžื•ืฉ ื‘ื›ืœื™ื ืฉืœ Infrastructure as Code (IaC), ื”ื™ื“ื•ืขื™ื ื’ื ื‘ืชื•ืจ ื›ืœื™ ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืชื•ื›ื ื•ืช ื‘ื™ื ื™ื™ื. ื›ืœื™ื ืืœื” ืขื•ื–ืจื™ื ืœื”ืคื•ืš ื”ืชืงื ื”, ื ื™ื”ื•ืœ ื•ืžืฉื™ืžื•ืช ืื—ืจื•ืช ืœืื•ื˜ื•ืžื˜ื™ื•ืช ืขื‘ื•ืจ ืชื•ื›ื ืช ื‘ื™ื ื™ื™ื. ื›ืš, ืœืžืฉืœ, ื›ืœื™ ืื•ื˜ื•ืžืฆื™ื” ื™ื›ื•ืœ ืœื—ืœืฅ ื™ื™ืฉื•ืžื™ื ื›ืžื• ืฉืจืช ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜, ืžืกื“ ื ืชื•ื ื™ื ื•ื›ืœื™ ื ื™ื˜ื•ืจ ืขื ื”ืชืฆื•ืจื•ืช ื”ื ื›ื•ื ื•ืช ื•ืœืคืจื•ืก ืื•ืชื ืœืฉืจืช ื”ื™ื™ืฉื•ืžื™ื.

ืœื”ืœืŸ ื›ืžื” ื›ืœื™ ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืชื•ื›ื ืช ื‘ื™ื ื™ื™ื ื‘ืงื•ื“ ืคืชื•ื—:

Ansible: GNU Public
SaltStack: Apache 2.0
ืฉืฃ: Apache 2.0
ื‘ื•ื‘ื”: ืืคืืฆ'ื™ ืื• GPL

ืžื“ืจื™ืš ืœืžืชื—ื™ืœื™ื: ื™ืฆื™ืจืช ืฆื™ื ื•ืจ DevOps

ื’ืœื” ืคืจื˜ื™ื ืขืœ ืื™ืš ืœื”ืฉื™ื’ ืžืงืฆื•ืข ืžื‘ื•ืงืฉ ืžืืคืก ืื• Level Up ืžื‘ื—ื™ื ืช ืžื™ื•ืžื ื•ื™ื•ืช ื•ืฉื›ืจ ืขืœ ื™ื“ื™ ืœืงื™ื—ืช ืงื•ืจืกื™ื ืžืงื•ื•ื ื™ื ื‘ืชืฉืœื•ื ืž-SkillFactory:

ืงื•ืจืกื™ื ื ื•ืกืคื™ื

ืฉื™ืžื•ืฉื™

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

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