Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur
Krijimi i zinxhirit të parë DevOps në pesë hapa për fillestarët.

DevOps është bërë një panace për proceset e zhvillimit që janë shumë të ngadalta, të ndara dhe të tjera problematike. Por kërkohen njohuri minimale në DevOps. Këtu do të trajtohen koncepte si zinxhiri DevOps dhe si ta krijoni atë në pesë hapa. Kjo nuk është një udhëzues i plotë, por vetëm një "peshk", të cilin mund ta zgjeroni. Le të fillojmë me historinë.

Takimi im me DevOps

Njëherë kam punuar me re në Citi Group dhe kam zhvilluar një aplikacion IaaS për të menaxhuar infrastrukturën cloud të Citi, por gjithmonë më është interesuar si mund të optimizohet zinxhiri i zhvillimit dhe të përmirësohet kultura ndërmjet zhvilluesve. Greg Lavender, drejtori ynë teknik për arkitekturën dhe infrastrukturën e re, më rekomandoi një libër Projekti "Feniks". Ai shpjegon mrekullisht parimet e DevOps, ndërsa lexon si një roman.

Tabela në anën e prapme tregon se sa shpesh kompanitë nxjerrin versione të reja:

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Si arrijnë Amazon, Google dhe Netflix të nxjerrin kaq shumë? E gjithë kjo është e thjeshtë: ata e kuptuan se si të krijojnë një zinxhir të përafërt të përsosur DevOps.

Në Citi, gjithçka ishte krejtësisht ndryshe derisa kaluam në DevOps. Atëherë ekipi im kishte mjedise të ndryshme, por dërgimi në serverin e zhvillimit e bënim manualisht. Të gjithë zhvilluesit kishin akses vetëm në një server zhvillimi të bazuar në IBM WebSphere Application Server Community Edition. Me përpjekjen e njëkohshme për dërgesë, serveri "bjerë", dhe ne duhej të "negociojmë" me vështirësi çdo herë. Për më tepër, kishte mbulimi të pamjaftueshëm të kodit me teste, procesin e ngadalshëm manual të dërgesës, dhe asnjë mundësi për të ndjekur dërgesën e kodit sipas një detyre ose kërkese të klientit.

Ishte e qartë se duhej bërë diçka urgjente, dhe gjetëm një koleg me të njëjtin mendim. Ne vendosëm të krijonim së bashku zinxhirin e parë DevOps - ai konfiguronte një makinë virtuale dhe server aplikacionesh Tomcat, ndërsa unë merrem me Jenkins, integrimin me Atlassian Jira dhe BitBucket, si dhe mbulimin e kodit me teste. Projekti ishte i suksesshëm: ne automatizuam plotësisht zinxhirin e zhvillimit, arritëm një punë pothuajse 100% të papenguar të serverit të zhvillimit, mundëm të ndiqnim dhe përmirësonim mbulimin e kodit me teste, dhe dega Git mund të lidhej me dërgesën dhe detyrën Jira. Dhe pothuajse të gjitha mjetet me të cilat ndërtuam zinxhirin DevOps ishin me kod burimi të hapur.

Realistically, the chain was simplified, as we didn't even use advanced configurations with Jenkins or Ansible. But we succeeded. This might be a result of the principle Pareto (also known as the 80/20 rule).

A brief overview of the DevOps and CI/CD chain

DevOps has various definitions. Just like Agile, DevOps encompasses different disciplines. However, most would agree on the following definition: DevOps is a method or lifecycle of software development, where the main principle is to create a culture where developers and other staff are 'on the same wavelength', manual work is automated, everyone does what they're best at, the frequency of deliveries increases, productivity improves, and flexibility rises.

And although just having tools is not enough to create a DevOps environment, they are indispensable. The most crucial of these is Continuous Integration and Continuous Delivery (CI/CD). In the chain for each environment, there are different stages (for example, DEV (development), INT (integration), TST (testing), QA (quality assurance), UAT (user acceptance testing), STG (staging), PROD (production)), with manual tasks automated, allowing developers to write quality code, deliver it, and easily adapt.

This note describes how to create a DevOps chain in five steps, as shown in the image below, using open-source tools.

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Let's get to work.

Step 1: CI/CD platform

First, you need a CI/CD tool. Jenkins is an open-source CI/CD tool written in Java under the MIT license, which started the popularization of the DevOps movement and has de facto become the standard for CICD.

So, what is Jenkins? Imagine you have a magic remote control for various services and tools. The CI/CD tool itself, like Jenkins, is useless on its own, but with various tools and services, it becomes omnipotent.

In addition to Jenkins, there are many other open-source tools, choose any.

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

This is what the DevOps process looks like with a CI/CD tool

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

You have a CI/CD tool on your localhost, but there's not much to do yet. Let's move on to the next step.

Step 2: version control

Mënyra më e mirë (dhe ndoshta më e lehtë) për të testuar magjinë e mjetit CI/CD është të integrosh atë me mjetin e menaxhimit të versioneve (source control management, SCM). Pse nevojitet menaxhimi i versioneve? Supozoni se po krijoni një aplikacion. E shkruani atë në Java, Python, C++, Go, Ruby, JavaScript ose në ndonjë gjuhë tjetër, të cilat janë të shumta. Ajo që shkruani quhet kod burimor. Në fillim, sidomos nëse punoni vetëm, mund të ruani gjithçka në një dosje lokale. Por kur projekti zgjeron dhe i bashkohen më shumë persona, ju nevojitet një mënyrë për të ndarë ndryshimet në kod, por duke shmangur konflikte gjatë bashkimeve. Gjithashtu, ju nevojitet një mënyrë për të rikuperuar versionet e mëparshme pa përdorur kopje rezervë dhe pa aplikuar metodën e kopjo-ngjisë për skedarët e kodit.

Dhe këtu pa SCM nuk ka rrugë. SCM mban kodin në repozita, menaxhon versionet e tij dhe koordinon atë ndërmjet zhvilluesve.

Ka shumë mjete SCM, por standardi de facto me meritë është Git. Unë rekomandoj ta përdorni atë, por ka edhe mundësi të tjera.

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Kështu duket pipeline-i DevOps pas shtimit të SCM.

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Mjeti CI/CD mund të automatizojë ngarkimin dhe shkarkimin e kodit burimor dhe bashkëpunimin në ekip. Jo keq? Por si të bëni që kjo të jetë një aplikacion funksional, i dashur nga miliarda përdorues?

Hapi 3: Mjeti i automatizimit të ndërtimit

Gjithçka po shkon siç duhet. Mund të shkarkoni kodin dhe të regjistroni ndryshimet në sistemin e menaxhimit të versioneve, si dhe të ftoni miqtë të punoni me ju. Por ende nuk keni aplikacion. Që të jetë një aplikacion web, duhet ta ndërroni atë dhe ta vendosni në një paketë për shpërndarje ose ta nisni si një skedar ekzekutiv. (Një gjuhë programuese e interpretuar, si JavaScript ose PHP, nuk ka nevojë të ndërtohet.)

Përdorni mjetin e automatizimit të ndërtimit. Cili do qoftë mjeti që zgjidhni, ai do të ndërtojë kodin në formatin e nevojshëm dhe do të automatizojë pastrimin, ndërtimin, testimin dhe shpërndarjen. Ekzistojnë mjete ndërtimi të ndryshme në varësi të gjuhës, por shpesh përdoren këto opsione me kod të hapur.

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Mrekullisht! Tani le të vendosim skedarët e konfigurimit të mjetit të automatizimit të ndërtimit në sistemin e menaxhimit të versioneve, në mënyrë që mjeti CI/CD t'i mbledhë ato.

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Duket se gjithçka është në rregull. Por ku të zbulohet tani të gjitha këto?

Hapi 4: Serveri i aplikacioneve web

Pra ndodhet një skedar i paketuar, i cili mund të ekzekutohet ose të shpërndahet. Për të siguruar që aplikacioni të ketë vlerë, duhet të ketë një shërbim apo ndërfaqe, por duhet ta vendosni diku të gjithë këtë.

Një aplikacion web mund të vendoset në një server aplikacionesh. Serveri i aplikacioneve ofron një ambient ku mund të ekzekutoni logjikën e programit nga paketa, të realizoni vizatimin e ndërfaqes dhe të hapni shërbime web përmes soketëve. Ju nevojitet një server HTTP dhe disa ambjente të tjera (si një makinë virtuale, për shembull) për të instaluar serverin e aplikacioneve. Perr momentin, le të imagjinojmë se jeni në gjendje ta menaxhoni gjithë këtë (ndonëse do të flas për kontejnerët më poshtë).

Ekzistojnë disa serverë aplikacionesh me burim të hapur.

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Kemi krijuar pothuajse një zinxhir funksional DevOps. Punë e shkëlqyer!

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Në princip, mund të ndaloni këtu, më pas do të përballeni vetë, por është e dobishme të flitet gjithashtu për cilësinë e kodit.

Hapi 5: Mbulimi me teste

Testimi merr shumë kohë dhe përpjekje, por është më mirë të identifikoni gabimet menjëherë dhe të përmirësoni kodin për të kënaqur përdoruesit përfundimtarë. Ka shumë mjete të hapura për këtë që jo vetëm testojnë kodin, por gjithashtu sugjerojnë si ta përmirësoni. Shumica e mjeteve CI/CD mund të lidhen me këto mjete dhe të automatizojnë procesin.

Testimi ndahet në dy pjesë: çframework-et e testimit, për të shkruar dhe ekzekutuar testet, dhe mjetet me sugjerime për përmirësimin e cilësisë së kodit.

Kornizat e testimit

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Mjetet me sugjerime për cilësinë

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Shumica e këtyre mjeteve dhe çframework-eve janë shkruar për Java, Python dhe JavaScript, sepse C++ dhe C# janë pronësi (ndonëse GCC ka kod të hapur).

Ne kemi aplikuar mjete të mbulimit të testeve, dhe tani pipeline-i DevOps duhet të duket si në ilustrimin në fillim të udhëzuesit.

Hapat shtesë

Kontenierët

Siç kam thënë më parë, serveri i aplikacioneve mund të vendoset në një makinë virtuale ose server, por kontejnerët janë më të popullarizuar.

Çfarë janë kontejnerët? Вкратце, в виртуальной машине операционная система чаще всего занимает больше места, чем приложение, а контейнеру обычно достаточно нескольких библиотек и конфигурации. В некоторых случаях без виртуальных машин не обойтись, но контейнер вмещает приложение вместе с сервером без лишних затрат.

Për kontejnerët zakonisht përdoren Docker dhe Kubernetes, megjithëse ka dhe opsione të tjera.

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Lexoni artikujt mbi Docker dhe Kubernetes në Opensource.com:

Mjetet e automatizimit të ndërmjetësisë

Qëllimi ynë është të ndihmojmë në krijimin dhe dorëzimin e aplikacionit me një zinxhir DevOps, por me mjetet DevOps mund të bëni edhe shumë gjëra interesante të tjera. Për shembull, të përdorni mjete të quajtura "infrastrukturë si kod" (IaC), të njohura gjithashtu si mjete për automatizimin e softuerit të ndërmjetëm. Këto mjete ndihmojnë në automatizimin e instalimit, menaxhimit dhe detyrave të tjera për softuerin e ndërmjetëm. Për shembull, një mjet automatizimi mund të marrë aplikacione (serverin e aplikacioneve web, bazën e të dhënave, mjetet emonitorimit) me konfigurime të sakta dhe t'i zbatojë ato në serverin e aplikacioneve.

Këtu janë disa mundësi mjetesh të hapura për automatizimin e softuerit të ndërmjetëm:

Udhëzues për fillestarët: krijimi i zinxhirëve DevOps me ndihmën e mjeteve me kod të hapur

Detajet në artikujt në Opensource.com:

Dhe tani, çfarë?

Kjo është vetëm maja e ajsbergut. Zinxhiri DevOps mund të bëjë shumë më tepër. Filloni me një mjet CI/CD dhe zbuloni se çfarë tjetër mund të automatizoni për ta bërë punën tuaj më të lehtë. Mos harroni për mjetet e hapura të komunikimit për një bashkëpunim më efektiv.

Këtu janë disa artikuj të tjerë të mirë mbi DevOps për fillestarët:

Gjithashtu, mund të integrohet DevOps me mjetet e hapura për agile:

Burimi: habr.com

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster