Salīdzinot lietojumprogrammu ieviešanu: vs. 2015 2005

Link: https://www.jamesward.com/2015/06/08/comparing-application-deployment-2005-vs-2015

Pēdējo 10 gadu laikā ir būtiski mainījusies veidos mēs būvējam un sniegt pieteikumus. Šķiet, tāpat kā liela daļa šo izmaiņu ir noticis pa nakti, bet neuztraucieties, tas ir pilnīgi normāli, uzmeklēt un jūtas apjukuši 2015 izvietošanas ainavā.

Šajā rakstā salīdzina izvietošanas 2005. gadā ar “moderno” ieviešanas tā, ka visi jaunie noteikumi un metodes būs jēga. Forewarning: Mana specialitāte ir galvenokārt Java / JVM, tāpēc es izmantoju šo terminoloģiju, bet censties idejas polyglot.

2005 = Multi-App konteineri / App serveri / monolīti Apps
2015 = Microservices / Dokers konteineri / Containerless Apps

atpakaļ 2005, daudzi no mums strādā pie projektiem, kas izraisīja karu failu-zip fails, kas satur Java web lietojumprogrammu un tās bibliotēka atkarības. Šī web lietojumprogramma varētu izvietot līdzās citām tīmekļa lietojumprogrammas uz vienu app serveri dažreiz sauc par “konteiners”, jo tas satur un ilga vienu vai vairākas lietojumprogrammas. App serveris sniedza ķekars kopējo web apps kā HTTP serveri, pakalpojumu katalogs un koplietojamās bibliotēkas pakalpojumus. Diemžēl vairāki progr viena konteinera izvietošanai radīja augstu berzes mērogošana, izvietošanas un resursu izlietojumu. App serveri vajadzēja izolēt app no tās pamatā esošās sistēmas atkarības, lai izvairītos no problēmām “tas strādā uz mana mašīna”, bet lietas bieži nestrādāja, kas vienmērīgi atšķirīgās sistēmas atkarības un konfigurācijas, kas dzīvoja ārpus app server / konteiners.

2015. gadā apps tiek izvietoti kā izolētā vienības, nozīmē, ka app ietver visu, kas tai ir palaist virs standartkopa sistēmas atkarības. Autonoma vienība detalizācijas atšķiras atkarībā no tā izvietošanas paradigmu. Java / JVM pasaules “containerless” app ir zip fails, kas ietver visu app vajadzībām papildus JVM. Modernākajiem JVM regulējumu ir pārgājuši uz šo containerless pieeja, tostarp, regulējuma spēlēt, Dropwizard un pavasarī Boot. Pirms dažiem gadiem es uzrakstīju sīkāk par kā app serveri ir fedings prom no monolīta starpprogrammatūras pārvietot uz microservices un mākonis pakalpojumus.

Pilnīgāku un portatīvie autonomie vienībai, konteineru sistēmas līmeņa tehnoloģijas, piemēram, Dokers un LXC saišķis app ar tās sistēmas atkarības. Nevis ķekars apps izvietošanu vienā traukā vienu app pievieno Dokers attēlu un izvietots uz vienu vai vairākiem serveriem. Par Heroku “Lode” ir līdzīga Dokers attēla fails.

Microservices loma šī jaunā ainava, jo izvietošanu visā microservices ir neatkarīgs, tā kā ar tradicionālo app serveri atsevišķiem app izvietošanas bieži iesaistīti visu serveri. Tas bija viens no iemesliem, kādēļ gliemeža tempā izvietošanas uzņēmumos-izvieto ārkārtīgi riskanti un bija jākoordinē mēnešus iepriekš pāri daudzām komandām. Karsti izvietošanai bija solījums, kas bija nekad nav realizēts ražošanas progr. Microservices ļauj atsevišķas grupas izvietot uz Vilu un tik bieži, cik viņi vēlas. Microservices prasa spēju ātri nodrošināt, izvietot un mēroga pakalpojumus, kuriem var būt tikai viens atbildību. Šīm prasībām labi piemērots infrastruktūras sniegto containerless apps darbojas Docker(ish) konteinerus.

2005 = izvietošanas rokasgrāmata
2015 = nepārtrauktas piegādes / pastāvīga izvietošana

App serveri 2005, kas ilga vairākas monolītās progr, kas apvienojumā ar manuālo slodzes līdzsvarotāja sastāvi lika programmu modernizācijai riskanti un sāpīga tā izvietošana parasti tika darīts taupīgi izraudzītās uzturēšana Windows. Toreiz tas bija diezgan nedzirdēts un ir cauruļvadu, pilnībā automatizēta piegādi no SCM ražošanas izvietojumu.

Šodien nepārtrauktu piegādi un nepārtrauktu izvietošanas ļauj izstrādātājiem, lai iegūtu kodu, pieturvietas un ražošanas dažreiz tik bieži, kā desmitiem vai pat simtiem reižu diennaktī. Pielāgojamiem ieviešanas cauruļvadi, sākot ar vienkāršu “git push heroku master” vairāk riska izvairās no cauruļvadu, kas ietver pievilkšanas pieprasījumus, nepārtrauktā integrācija inscenējums auto izvietošanas, manuālā veicināšana ar ražošanu, un, iespējams, Kanāriju Releases & līdzeklis karogi. Šos cauruļvadus ļauj uzņēmumiem pārvietoties ātri un risku izplatīt pa daudziem maziem relīzes.

Lai nepārtrauktu piegādi strādāt arī ir dažas papildu prasības:

Release rollbacks jābūt tūlītējā un vienkārši tāpēc, ka reizēm lietas gatavojas lauzt un ātri kļūst atpakaļ uz darba stāvoklī jābūt ātrai un nesāpīgai.
Ielāpu presei ir jābūt iespējai veikt SCM no ražošanas (izmantojot nepārtrauktas piegādes cauruļvadu) minūtēs.
Noslodzes balancers ir jāspēj rīkoties ar automātisko pārslēgšanos starp dažādiem laidieniem.
Datu bāzes shēmu izmaiņas būtu atdalīti no app atbrīvo citādi relīzes un rollbacks var tikt bloķēts.
App pakāpju serverus vajadzētu būt bezvalstnieks ar valsts dzīves ārējo datu citādi valsts veikalos būs bieži zaudēto un/vai pretrunīgi.

2005 = noturīgo serveriem / “Lūdzieties tā nekad iet uz leju”
2015 = negrozāma infrastruktūras / efemers serveriem

Ja serveris avarēja 2005 stuff parasti pārtrauca. Dažiem izmantotajiem sesijas replikāciju un servera radniecība, bet sesijas bija zaudēti un audzina jaunus gadījumus parasti ņēma diezgan daudz roku darba. Bieži vien netika veiktas izmaiņas ražošanas sistēmu caur SSH tādēļ ir grūti precīzi atveidot ražošanas vidē. Mežizstrādes parasti tika darīts uz lokālā diska, padarot to grūti redzēt, kas notiek visā serveru un slodzes balancers.

Serveri 2015 ir vienreizējas lietošanas, negrozāma un īslaicīgu piespiežot mums plānot viņiem iet uz leju. Rīkus, piemēram, Netflix ir haoss Monkey nejauši jāslēdz serveri, lai pārliecinātos, ka mēs gatavojam par avārijām. Noslodzes balancers un pārvaldības kopnēm strādāt kopā, lai sāktu un apturētu jaunus piemērus tērzēšanas ļautu strauji uzkrājusies gan augšup un lejup. Ir negrozāma mēs vairs varam noteikt ražošanas jautājumiem ar SSHing serverī, bet tagad ir viegli atkārtojami vidēs. Mežizstrādes pakalpojumi maršrutā STDOUT uz ārējo pakalpojumu, kas ļauj mums redzēt žurnāla straumi reālajā laikā, pāri visai sistēmai.

2005 = ops komanda
2015 = DevOps

2005. gadā bija komanda, kas varētu veikt kara failu ( vai citiem izvietojami artefaktu ) un ir atbildīgs par to izvietošanu, pārvaldot to un monitoringa. Tas bija jauki, jo attīstītājiem nav valkāt peidžeriem, bet galu galā Ops komanda bieži vien nevarētu darīt daudz, ja tur bija ražošanas jautājums pie 3 am. Lielākais negatīvie šīs bija, ka Ops kļuva par kredītriska mazināšanas programmatūras piegāde rada milzīgu palēnināšanos.

Mūsdienu tehnikas visu lielumu organizācijām ir avārijas nosēšanās Ops ātrums slepkava un padarot izstrādātājiem atbild par stuff viņi iegulda ražošanā. Pakalpojumus, piemēram, jaunu relikts, VictorOps un mīkstais palīdz izstrādātājiem, nepalaižot garām nevienu jaunu operatīvo pienākumiem. DevOps kultūra arī tieši incentivizes devs nedrīkst izvietot lietas, kas galu galā tos vai komandas loceklis, pat izejot pie 3 am. Galvenais indikators DevOps kultūra ir vai jauns grupas dalībnieks var saņemt kodu uz ražošanu, uz savu pirmo dienu. Dara, ka viena lieta tiesības nozīmē, ka dara tik daudz citu lietu tiesības, piemēram:

3 solis Dev Setup: nodrošināt sistēmas, kases kods, un palaist App
SCM / grupas pārskatam (piem., GitHub plūsma)
nepārtrauktā integrācija & nepārtraukts izvietošanas / piegādes
uzraudzība un ziņošana

DevOps var likties ļoti bailīgs, lai tradicionālās uzņēmējdarbības attīstītāji kā sevi. Taču no pieredzes varu apliecināt, ka valkājot peidžera (metaforiski) un mana izvieto tiešā riska uzņemšanos, ir devusi man daudz labāk izstrādātājs. Kvalitāti manu kodu un manas sajūtas piepildījumu ir palielinājies ar mana jaunā līmenī, īpašuma, kas atrodas ražošanas.

Uzziniet vairāk

es esam tikko pieskārās virsmas daudzi no izvietošanas izmaiņas pēdējos 10 gados, bet cerams, ka jums tagad ir labāka izpratne par kādu terminoloģiju, jūs varētu dzirdēt, konferencēs un blogus. Sīkāku informāciju par šiem un saistītām tēmām, izbraukšana divpadsmit faktors App un manu blogu nav sūkāt Java – tikai jūs izmantojat to nepareizi. Ļaujiet man zināt, ko tu domā!

Leave a Reply

Your email address will not be published. Required fields are marked *