Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

19 Septambra tao Moskoa nitranga ny fihaonana voalohany amin'ny lohahevitra HUG (Highload++ User Group), izay natokana ho an'ny microservices. Nisy ny famelabelaran-kevitra hoe “Miasa Microservices: Zava-dehibe ny habeny, na dia manana Kubernetes aza ianao,” izay nizaranay ny traikefan'i Flant tamin'ny tetik'asa miasa miaraka amin'ny maritrano microservice. Voalohany indrindra, mahasoa ho an'ny mpamorona rehetra izay mieritreritra ny hampiasa io fomba io amin'ny tetikasany ankehitriny na ho avy.

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Fampidirana video ny tatitra (50 minitra, mampahafantatra bebe kokoa noho ny lahatsoratra), ary koa ny tena nalaina tao amin'ny endrika lahatsoratra.

NB: Misy ihany koa ny horonan-tsary sy ny famelabelarana amin'ny faran'ity lahatsoratra ity.

fampidirana

Matetika ny tantara tsara dia manana fiandohana, tetika fototra ary fanapahan-kevitra. Ity tatitra ity dia toy ny santatra kokoa, ary iray mampalahelo amin'izany. Zava-dehibe ihany koa ny manamarika fa manome fomba fijery ivelany momba ny microservices. fitrandrahana.

Hanomboka amin'ity tabilao ity aho, ny mpanoratra azy (tamin'ny 2015) lasa nanjary Martin Fowler:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Izany dia mampiseho ny fomba, amin'ny tranga fampiharana monolithic izay mahatratra ny sanda iray, manomboka mihena ny vokatra. Ny microservices dia tsy mitovy amin'ny hoe ny vokatra voalohany miaraka amin'izy ireo dia ambany, fa rehefa mitombo ny fahasarotana, dia tsy hita ho azy ireo ny fahasimban'ny fahombiazana.

Hanampy an'ity tabilao ity aho momba ny fampiasana Kubernetes:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Nahoana no tsara kokoa ny fampiharana miaraka amin'ny microservices? Satria ny maritrano toy izany dia mametraka fepetra lehibe ho an'ny maritrano, izay voarakotra tanteraka amin'ny fahaizan'ny Kubernetes. Amin'ny lafiny iray, ny sasany amin'ireo fiasa ireo dia ilaina amin'ny monolith, indrindra satria ny monolith mahazatra ankehitriny dia tsy monolith mihitsy (ny antsipiriany dia ho hita ao amin'ny tatitra).

Araka ny hitanao, ny kisary farany (rehefa samy ao amin'ny fotodrafitrasa miaraka amin'i Kubernetes ny fampiharana monolithic sy microservice) dia tsy mitovy amin'ilay tany am-boalohany. Avy eo dia hiresaka momba ny fampiharana ampiasaina amin'ny Kubernetes isika.

Microservices mahasoa sy manimba

Ary izao no hevi-dehibe:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Inona ny ara-dalàna rafitra microservice? Tokony hitondra tombontsoa tena izy izany, hampitombo ny fahombiazan'ny asanao. Raha miverina amin'ny grafika isika dia izao:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Raha miantso azy ianao ilaina, dia eo amin'ny lafiny ilany amin'ny grafika dia hisy mampidi-doza microservices (manelingelina ny asa):

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Miverina amin'ny "hevi-dehibe": tokony hatoky ny traikefako ve aho? Hatramin'ny fiandohan'ity taona ity dia nijery aho 85 tetikasa. Tsy izy rehetra ireo dia microservices (eo amin'ny ampahatelony ka hatramin'ny antsasany eo ho eo no nanana rafitra toy izany), saingy mbola betsaka izany. Izahay (orinasa Flant) amin'ny maha-mpivarotra azy dia afaka mahita karazana rindranasa marobe novolavolaina na amin'ny orinasa madinika (miaraka amin'ny developer 5) na amin'ny lehibe (~ 500 developers). Ny tombony fanampiny dia ny fahitanay ireo fampiharana ireo miaina sy mivoatra mandritra ny taona maro.

Nahoana no microservices?

Ny fanontaniana momba ny tombotsoan'ny microservice dia misy valiny voafaritra tsara avy amin'i Martin Fowler efa voalaza:

  1. fetra mazava ny modularity;
  2. fametrahana tsy miankina;
  3. fahalalahana hisafidy ny teknolojia.

Niresaka betsaka tamin'ny mpanao mari-trano sy mpamorona rindrambaiko aho ary nanontany ny antony ilana microservices. Ary nanao ny lisitry ny zavatra andrasan'izy ireo aho. Izao no nitranga:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Raha mamaritra ny sasany amin'ireo teboka "amin'ny fahatsapana" isika, dia:

  • fetra mazava amin'ny maodely: eto dia manana monolith mahatsiravina isika, ary izao dia halamina tsara ao amin'ny tahiry Git ny zava-drehetra, izay "eo amin'ny talantalana" ny zava-drehetra, tsy mifangaro ny mafana sy malefaka;
  • fahaleovan-tena amin'ny fametrahana: ho afaka hamoaka serivisy tsy miankina isika mba handroso haingana kokoa (mamoaka endri-javatra vaovao mifanitsy);
  • fahaleovan-tena amin'ny fampandrosoana: afaka manome an'io microservice io ho an'ny ekipa iray / developer isika, ary ny iray ho an'ny iray hafa, izay ahafahantsika mivoatra haingana kokoa;
  • боazo ianteherana bebe kokoa: raha misy fahasimbana amin'ny ampahany (milatsaka ny microservice iray amin'ny 20), bokotra iray ihany no hitsahatra tsy hiasa, ary hanohy hiasa ny rafitra manontolo.

Ny maritrano microservice mahazatra (manimba).

Mba hanazavana hoe nahoana no tsy araka ny antenaintsika ny zava-misy, dia hasehoko azy iombonana sarin'ny maritrano microservice mifototra amin'ny traikefa avy amin'ny tetikasa maro samihafa.

Ohatra iray amin'izany ny fivarotana an-tserasera abstract izay hifaninana amin'ny Amazon na farafaharatsiny OZON. Ny maritrano microservice dia toa izao:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Noho ny antony maromaro, ireto microservice ireto dia nosoratana tamin'ny sehatra samihafa:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Satria ny microservice tsirairay dia tsy maintsy manana fahaleovan-tena, maro amin'izy ireo no mila ny angon-drakitra sy ny cache. Ny rafitra farany dia toy izao manaraka izao:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Inona no vokany?

Manana izany koa i Fowler misy lahatsoratra - momba ny "fandoavana" amin'ny fampiasana microservices:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Ary hojerentsika raha tanteraka ny nantenainay.

Faritra mazava ny mody...

fa firy ny microservices tena mila amboarina?hanongotra ny fanovana? Afaka mamantatra ny fomba fiasan'ny zava-drehetra ve isika raha tsy misy tracer zaraina (na izany aza, ny fangatahana rehetra dia karakarain'ny antsasaky ny microservices)?

Misy modely"vongan-tany lehibe“, ary eto dia hita fa vongan-tany nozaraina. Mba hanamafisana izany dia indro misy fanoharana eo amin'ny fandehan'ny fangatahana:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Fahaleovantenan'ny fampielezana...

Ara-teknika, vita izany: afaka manodina mitokana ny microservice tsirairay. Saingy amin'ny fampiharana dia mila raisina an-tsaina fa mihodina foana izy io microservices maro, ary mila mandinika isika ny filaharan'ny fandefasana azy ireo. Amin'ny fomba tsara, amin'ny ankapobeny dia mila mitsapa amin'ny fizaran-tany misaraka isika raha manodina ny famoahana amin'ny filaharana marina.

Fahalalahana hisafidy ny teknolojia...

Izy dia. Tsarovy fotsiny fa ny fahafahana dia matetika manamorona ny fandikan-dalàna. Tena zava-dehibe eto ny tsy mifidy teknolojia mba "hilalao" amin'izy ireo fotsiny.

Fahaleovantenan’ny fampandrosoana...

Ahoana no hanaovana tsipika fitsapana ho an'ny fampiharana iray manontolo (miaraka amin'ny singa marobe)? Saingy mbola mila mitazona azy io hatrany ianao. Izany rehetra izany dia mitarika ho amin'izany tena isan'ny faritra fitsapana, izay azontsika atao amin'ny fitsipika, mivadika ho kely indrindra.

Ahoana ny amin'ny fanaparitahana izany rehetra izany eto an-toerana?.. Hita fa matetika ny developer no manao ny asany tsy miankina, fa "tsy misy dikany", satria voatery miandry mandra-pahafahan'ny faritra hanaovana fitiliana.

Fanamafisana misaraka...

Eny, saingy voafetra amin'ny faritry ny DBMS ampiasaina. Ao amin'ny ohatra maritrano nomena, Cassandra dia tsy hanana olana, fa MySQL sy PostgreSQL.

Боazo itokisana kokoa...

Tsy vitan'ny hoe ny tsy fahombiazan'ny microservice iray raha ny tena izy dia matetika manapaka ny fampandehanana tsara ny rafitra manontolo, fa misy olana vaovao ihany koa: Sarotra be ny manao ny fandeferana ny fahadisoan'ny microservice rehetra. Satria ny microservices dia mampiasa teknolojia samihafa (memcache, Redis, sns.), Ho an'ny tsirairay dia mila mieritreritra ny zava-drehetra ianao ary mampihatra izany, izay mazava ho azy fa azo atao, saingy mitaky loharanon-karena goavana.

Fandrefesana entana...

Tena tsara izany.

Ny "maivan'ny" microservices...

Tsy vitan'ny hoe manana lehibe isika tamba-jotra ambony (mihamaro ny fangatahana DNS, sns.), fa noho ny subqueries maro natomboka ihany koa mamerina ny angona (fitehirizam-bokatra), izay nitarika fitehirizana be dia be.

Ary izao no vokatry ny fanatanterahana ny andrandrainay:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Tsy izay ihany anefa!

Satria:

  • Azo inoana fa mila fiara fitateram-bahoaka izahay.
  • Ahoana no hanaovana backup tsy tapaka amin'ny fotoana irina? Irery ihany tena izy safidy dia ny hamono ny fifamoivoizana noho izany. Ahoana anefa no hanaovana izany amin'ny famokarana?
  • Raha resaka fanohanana faritra maromaro no resahina, dia asa be ny fandaminana ny faharetana ao amin'ny tsirairay amin'izy ireo.
  • Mipoitra ny olana amin'ny fanaovana fanovana ifotony. Ohatra, raha mila manavao ny dikan-teny PHP isika dia mila manolo-tena amin'ny tahiry tsirairay (ary misy am-polony izy ireo).
  • Ny fitomboan'ny fahasarotana amin'ny fampandehanana dia, tsy mitsaha-mitombo.

Inona no hatao amin'izany rehetra izany?

Manomboka amin'ny fampiharana monolithic. Ny traikefan'i Fowler miteny fa saika ny fampiharana microservice mahomby rehetra dia nanomboka tamin'ny monolith izay nanjary lehibe loatra ary tapaka avy eo. Mandritra izany fotoana izany, saika ny rafitra rehetra natsangana ho microservices hatrany am-piandohana na ho ela na ho haingana dia niaina olana lehibe.

Hevitra manan-danja iray hafa dia ny hoe raha te hahomby ny tetikasa misy maritrano microservice dia tsy maintsy fantatrao tsara sy ny lohahevitra, ary ny fomba fanaovana microservices. Ary ny fomba tsara indrindra hianarana faritra iray dia ny fanaovana monolith.

Ahoana anefa raha efa ao anatin’izany toe-javatra izany isika?

Ny dingana voalohany amin'ny famahana ny olana rehetra dia ny manaiky izany ary mahatakatra fa olana izany, ka tsy te hijaly intsony isika.

Raha toa ka misy monolith be loatra (rehefa lany ny fahafahana mividy loharano fanampiny ho azy), dia tapaka izany, dia amin'ity tranga ity dia miseho ny tantara mifanohitra: rehefa tsy manampy intsony ny microservices be loatra, fa manakana - tapaho ny tafahoatra ary ampitomboy!

Ohatra, ho an'ny sary iombonana resahina etsy ambony...

Esory ny microservices mampiahiahy indrindra:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Atambatra ny microservices rehetra tompon'andraikitra amin'ny famoronana frontend:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

... ho microservice iray, nosoratana tamin'ny fiteny/rafitra iray (maoderina sy mahazatra, araka ny eritreritrao):

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Hanana ORM iray (DBMS iray) ary fampiharana roa voalohany:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

... fa amin'ny ankapobeny dia afaka mamindra bebe kokoa any ianao, mahazo izao vokatra manaraka izao:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Ankoatra izany, ao amin'ny Kubernetes dia ataontsika amin'ny tranga samihafa izany rehetra izany, izay midika fa mbola afaka mandrefy ny enta-mavesatra isika ary manitsy azy ireo misaraka.

Raha fintinina

Jereo ny sary lehibe kokoa. Matetika, ireo olana rehetra amin'ny microservices dia mipoitra satria misy olona nandray ny asany, saingy te "hilalao amin'ny microservices".

Ao amin'ny teny hoe "microservices" ny ampahany "micro" dia tsy ampy.. Izy ireo dia "micro" fotsiny satria kely noho ny monolith lehibe. Fa aza mihevitra azy ireny ho zavatra kely.

Ary ho eritreritra farany, andao hiverina amin'ny tabilao voalohany:

Microservices: zava-dehibe ny habeny, na dia manana Kubernetes aza ianao

Naoty voasoratra eo (ambony havanana) mirona amin'ny hoe ny fahaiza-manaon'ny ekipa izay manao ny tetikasanao dia voalohany indrindra - handray anjara lehibe amin'ny safidinao eo anelanelan'ny microservices sy monolith izy ireo. Raha tsy manana fahaiza-manao ampy ny ekipa, fa manomboka manao microservice, dia ho faty tokoa ny tantara.

Horonantsary sy sary mihetsika

Lahatsary avy amin'ny lahateny (~50 minitra; indrisy, tsy mampita ny fihetseham-pon'ireo mpitsidika, izay tena namaritra ny fihetseham-pon'ny tatitra, fa izany no izy):

Fampisehoana ny tatitra:

Sal

Tatitra hafa ao amin'ny bilaoginay:

Mety ho liana amin'ireto boky ireto koa ianao:

Source: www.habr.com

Add a comment