Yiyan ara ayaworan (apakan 1)

Hello, habr. Iforukọsilẹ fun ṣiṣan dajudaju tuntun ṣii ni bayi ni OTUS "Oluṣakoso Software". Ni aṣalẹ ti ibẹrẹ ikẹkọ, Mo fẹ lati pin pẹlu rẹ nkan atilẹba mi.

Ifihan

Yiyan ara ayaworan jẹ ọkan ninu awọn ipinnu imọ-ẹrọ ipilẹ nigbati o ba kọ eto alaye kan. Ninu jara ti awọn nkan yii, Mo daba lati ṣe itupalẹ awọn aṣa ayaworan olokiki julọ fun awọn ohun elo kikọ ati dahun ibeere ti igba wo ni aṣa ayaworan ni o dara julọ. Ninu ilana igbejade, Emi yoo gbiyanju lati fa pq ọgbọn kan ti o ṣalaye idagbasoke ti awọn aza ayaworan lati awọn monoliths si awọn iṣẹ microservices.

A bit ti itan

Ti o ba gbiyanju lati beere lọwọ awọn olupilẹṣẹ: “Kini idi ti a nilo awọn iṣẹ microservices?”, Iwọ yoo gba ọpọlọpọ awọn idahun. Iwọ yoo gbọ pe awọn microservices ṣe ilọsiwaju scalability, jẹ ki koodu rọrun lati ni oye, mu ifarada aṣiṣe dara, ati nigba miiran iwọ yoo gbọ pe wọn gba ọ laaye lati "sọ koodu rẹ di mimọ." Jẹ ki a wo itan-akọọlẹ lati ni oye idi ti o wa lẹhin ifarahan ti awọn iṣẹ microservices.

Ni kukuru, awọn microservices ninu oye wa lọwọlọwọ dide bi atẹle: ni ọdun 2011, James Lewis, ṣe itupalẹ iṣẹ ti awọn ile-iṣẹ lọpọlọpọ, fa ifojusi si ifarahan ti ilana “micro-app” tuntun kan, eyiti o ṣe iṣapeye SOA ni awọn ofin ti isare imuṣiṣẹ ti awọn iṣẹ. Ni diẹ lẹhinna, ni ọdun 2012, ni apejọ faaji kan, apẹrẹ naa ti tun lorukọ mii microservice. Nitorinaa, ibi-afẹde akọkọ ti iṣafihan awọn iṣẹ microservice ni lati mu ilọsiwaju si olokiki akoko lati ta ọja.

Awọn iṣẹ microservices wa lori igbi aruwo ni ọdun 2015. Gẹgẹbi diẹ ninu awọn ijinlẹ, kii ṣe apejọ kan ṣoṣo ti o pari laisi ijabọ lori koko-ọrọ ti awọn iṣẹ microservices. Pẹlupẹlu, diẹ ninu awọn apejọ jẹ iyasọtọ si awọn iṣẹ microservices. Ni ode oni, ọpọlọpọ awọn iṣẹ akanṣe bẹrẹ lilo aṣa ayaworan yii, ati pe ti iṣẹ akanṣe naa ba ni awọn toonu ti koodu ohun-ini, lẹhinna iṣiwa si awọn iṣẹ microservices ṣee ṣe ni itara.

Pelu gbogbo awọn ti o wa loke, nọmba kekere ti awọn olupilẹṣẹ tun le ṣalaye imọran ti “iṣẹ microservice”. Ṣugbọn a yoo sọrọ nipa eyi diẹ diẹ nigbamii ...

Monolith

Ara ayaworan ti o ṣe iyatọ si awọn microservices jẹ monolith (tabi gbogbo-ni-ọkan). O ṣee ṣe ko ni oye lati sọ kini monolith jẹ, nitorinaa Emi yoo ṣe atokọ lẹsẹkẹsẹ awọn aila-nfani ti ara ayaworan yii, eyiti o bẹrẹ idagbasoke siwaju ti awọn aṣa ayaworan: iwọn, Asopọmọra, imuṣiṣẹ, scalability, igbẹkẹle ati rigidity. Ni isalẹ Mo daba lati wo kọọkan ninu awọn ailagbara lọtọ.

iwọn

Awọn monolith jẹ gidigidi tobi. Ati pe o maa n sọrọ pẹlu ibi ipamọ data ti o tobi pupọ. Ohun elo naa tobi ju fun idagbasoke kan lati loye rara. Nikan awọn ti o ti lo akoko pupọ lati ṣiṣẹ lori koodu yii le ṣiṣẹ daradara pẹlu monolith, lakoko ti awọn olubere yoo lo akoko pupọ lati gbiyanju lati ṣawari monolith ati pe ko si iṣeduro pe wọn yoo ṣawari rẹ. Nigbagbogbo, nigbati o ba n ṣiṣẹ pẹlu monolith kan, nigbagbogbo diẹ ninu awọn oga “ipo” ti o mọ monolith diẹ sii tabi kere si daradara ati lilu ọwọ awọn olupilẹṣẹ tuntun miiran laarin ọdun kan ati idaji. Nipa ti ara, iru agba agba ni ipo ikuna kan ṣoṣo, ati ilọkuro rẹ le ja si iku monolith.

Asopọmọra

Awọn monolith jẹ "bọọlu nla ti pẹtẹpẹtẹ", awọn iyipada ninu eyiti o le ja si awọn abajade airotẹlẹ. Nipa ṣiṣe awọn ayipada ni ibi kan, o le ba monolith jẹ ni omiiran (kanna “o ti ge eti rẹ, * @ ṣubu”). Eyi jẹ nitori otitọ pe awọn paati ninu monolith ni eka pupọ ati, pataki julọ, awọn ibatan ti kii ṣe kedere.

Imuṣiṣẹ

Gbigbe monolith kan, nitori awọn ibatan idiju laarin awọn paati rẹ, jẹ ilana gigun pẹlu irubo tirẹ. Irú ààtò ìsìn bẹ́ẹ̀ kì í sábà ní ìwọ̀ntúnwọ̀nsì délẹ̀délẹ̀, a sì máa ń ṣe “ní ẹnu.”

Scalability

Awọn modulu Monolith le ni awọn iwulo orisun ti o fi ori gbarawọn, to nilo adehun lati ṣe ni awọn ofin ti ohun elo. Fojuinu pe o ni monolith ti o ni awọn iṣẹ A ati B. Iṣẹ A n beere lori iwọn dirafu lile, ati pe iṣẹ B n beere lori Ramu. Ni ọran yii, boya ẹrọ ti o ti fi sori ẹrọ monolith gbọdọ ṣe atilẹyin awọn ibeere ti awọn iṣẹ mejeeji, tabi iwọ yoo ni lati ni ọwọ, mu ọkan ninu awọn iṣẹ naa ṣiṣẹ.

Apeere miiran (Ayebaye diẹ sii): iṣẹ A jẹ olokiki pupọ ju iṣẹ B lọ, nitorinaa o fẹ ki awọn iṣẹ 100 wa A, ati awọn iṣẹ 10 B. Lẹẹkansi, awọn aṣayan meji: boya a gbe 100 monoliths kikun-fledged, tabi lori diẹ ninu lẹhinna Awọn iṣẹ B yoo ni alaabo pẹlu ọwọ.

Dede

Niwọn igba ti gbogbo awọn iṣẹ wa papọ, ti monolith ba ṣubu, lẹhinna gbogbo awọn iṣẹ ṣubu ni ẹẹkan. Ni otitọ, eyi le ma buru bẹ, o kere kii yoo si awọn ikuna apa kan ninu eto pinpin, ṣugbọn ni apa keji, nitori kokoro kan ninu iṣẹ ṣiṣe ti o lo nipasẹ 0.001% awọn olumulo, o le padanu gbogbo awọn olumulo. ti eto rẹ.

Inertia

Nitori iwọn monolith, o nira lati yipada si awọn imọ-ẹrọ tuntun. Bi abajade, idaduro oga agba ipo pupọ han lati jẹ iṣẹ-ṣiṣe lọtọ. Akopọ imọ-ẹrọ ti a yan ni ibẹrẹ iṣẹ akanṣe le di bulọọki ti o ṣe idiwọ idagbasoke ọja naa.

ipari

Nigbamii ti a yoo sọrọ nipa bii eniyan ṣe gbiyanju lati yanju awọn iṣoro wọnyi nipa gbigbe si awọn paati ati SOA.

Yiyan ara ayaworan (apakan 1)

Ka siwaju:

orisun: www.habr.com

Fi ọrọìwòye kun