Esimweni samamojula wezinsizakalo ezisebenzisanayo, umbuzo ongenakugwenywa uyavela: Ngabe ukuxhumana kwenzeka ngamiphi imithetho ? Emikhiqizweni ye-IT, "inkontileka" imelela ukuqonda okusemthethweni kokuthi iyiphi idatha egeleza phakathi kwezinhlelo nokuthi idluliselwa kanjani . Lokhu kuhlanganisa ifomethi yedatha (i-JSON, i-Protobuf, njll.), izakhi zesakhiwo (izinkambu, izinhlobo zedatha), iphrothokholi yokuxhumana (REST, gRPC, olayini bemilayezo), nokunye ukucaciswa.
Inkontileka iqinisekisa ukuvuleka (wonke umuntu uyazi ukuthi yini eyamukelwe futhi ithunyelwa), ukubikezela (singabuyekeza inkontileka futhi sigcine izinguqulo), nokwethembeka (isistimu yethu ngeke ihluleke uma senza izinguquko eziphethwe kahle).
Empeleni, nakuba wonke umuntu ekhuluma ngama-microservices, “izinkontileka” nama-API, sivame ukubona abantu besebenzisa le ndlela: “Kungani ungadali ithebula okwabelwana ngalo kusizindalwazi esikhundleni sokwakha ama-API?”
Ngakho-ke, ngenkathi ukusebenzisa ithebula okwabelwana ngalo ukushintshanisa idatha kungase kubonakale kusebenza kahle futhi kulungiselelwe imiphumela esheshayo, kukhiqiza izinselele ezihlukahlukene zobuchwepheshe nezokuhlela ngokuhamba kwesikhathi. Kodwa-ke, lapho amaqembu ekhetha amathebula okwabelwana ngawo ukuze ashintshisane ngedatha, angase abhekane nezinkinga eziningi phakathi nokuqaliswa.
Lapho amasevisi exhumana nge-REST/gRPC/GraphQL, anencazelo esemthethweni: I-OpenAPI (Swagger), ama-protobuf schema, noma ama-schema e-GraphQL. Lokhu kuchaza ngokuningiliziwe ukuthi yiziphi izinsiza (amaphoyinti okugcina) atholakalayo, yiziphi izinkambu ezilindelekile, izinhlobo zazo, kanye namafomethi esicelo/empendulo. Uma 'itafula okwabelwana ngalo' lisebenza njengenkontileka ayikho incazelo esemthethweni: Ayikho incazelo esemthethweni yenkontileka; i-schema yethebula kuphela (i-DDL) etholakalayo futhi nalokho akubhaliwe kahle. Noma yikuphi ukuguqulwa okuncane kwesakhiwo sethebula (isb, ukwengeza noma ukususa ikholomu, ukushintsha izinhlobo zedatha) kungase kuthinte amanye amaqembu afunda noma abhalele kuleli thebula.
Ukwenza inguqulo ye-API kuwumkhuba ovamile: Singase sibe ne-v1, v2, njalo njalo, futhi singagcina ukuhambisana okusemuva bese kancane kancane sithuthela amaklayenti ezinguqulweni ezintsha. Kumathebula esizindalwazi, sinemisebenzi ye-DDL kuphela (isb, ALTER TABLE
), ehlanganiswe ngokuqinile nenjini ethile ye-DB futhi edinga ukuphathwa ngokucophelela kokufuduka.
Alukho uhlelo oluphakathi nendawo olungathumela izexwayiso kubathengi mayelana nezinguquko ze-schema ezidinga ukuthi babuyekeze imibuzo yabo. Ngenxa yalokho, kungase kwenzeke amadili “angaphansi kwetafula” : Othile angathumela engxoxweni, “Kusasa, sishintsha ikholomu X ibe ngu-Y”, kodwa asikho isiqinisekiso sokuthi wonke umuntu uzobe elungile ngesikhathi.
Uma kune-API echazwe ngokucacile, kuyabonakala ukuthi ekabani: isevisi esebenza njengomshicileli we-API. Lapho amaqembu amaningi esebenzisa ithebula lesizindalwazi elifanayo kuba nokudideka mayelana nokuthi ubani ozonquma isakhiwo nokuthi yiziphi izinkambu okufanele zigcinwe nokuthi zichazwa kanjani. Ngenxa yalokho, ithebula lingase libe “impahla yomuntu,” futhi lonke ushintsho luba yimfuno: “Kudingeka sihlole nalelo qembu uma lisebenzisa ikholomu endala!”
Kunzima ukulandelela ukuthi ubani ongakwazi ukufunda nokubhala etafuleni uma amaqembu amaningi ekwazi ukufinyelela ku-DB. Kukhona ithuba lokuthi izinsiza ezingagunyaziwe zingafinyelela idatha nakuba ibingahloselwe zona. Kulula ukuphatha izindaba ezinjalo nge-API: Ungalawula amalungelo okufinyelela (ubani ongabiza ukuthi yiziphi izindlela), sebenzisa ukufakazela ubuqiniso nokugunyazwa, futhi ugade ukuthi ubani obize ini. Ngetafula, kuyinkimbinkimbi kakhulu.
Noma yikuphi ukuguqulwa kwangaphakathi kudatha (ukuhlela kabusha izinkomba, ukwahlukanisa ithebula, ukushintsha i-DB) kuba inkinga yomhlaba wonke. Uma ithebula lisebenza njengesixhumi esibonakalayo somphakathi, umnikazi akakwazi ukwenza izinguquko zangaphakathi ngaphandle kokufaka engozini bonke abafundi nababhali bangaphandle.
Lesi isici esibuhlungu kakhulu: Umuntu wenza kanjani ngokwazisa elinye iqembu ukuthi uhlelo luzoshintsha ngakusasa?
Uma amaqembu amaningi esebenzisa ithebula okwabelwana ngalo ukuze akhethe futhi abuyekeze idatha ebalulekile, ingaba kalula “inkundla yempi.” Umphumela uba ukuthi ingqondo yebhizinisi igcina ihlakazekile kumasevisi ahlukene, futhi akukho ukulawulwa okumaphakathi kobuqotho bedatha. Kuba nzima kakhulu ukwazi ukuthi kungani inkambu ethile igcinwa ngendlela ethile, ubani ongayibuyekeza, futhi kwenzekani uma ishiywa ingenalutho.
Ngokwesibonelo, ake sithi itafula liyaphuka: Ake sithi, kunedatha embi noma othile othathe ilokhi emigqeni ethile ebalulekile. Ukuhlonza umthombo wenkinga ngokuvamile kungadinga ukubuza lonke iqembu elinokufinyelela kwe-DB ukuze linqume ukuthi yimuphi umbuzo obangele inkinga. Ngokuvamile akubonakali: Lokhu kusho ukuthi kungenzeka ukuthi umbuzo weqembu elilodwa ukhiye isizindalwazi, kanti umbuzo welinye iqembu ukhiqiza iphutha elibonakalayo.
Isizindalwazi esabiwe siyiphuzu elilodwa lokwehluleka. Uma yehla, khona-ke izinkonzo eziningi zizokwehla nayo. Uma isizindalwazi sinezinkinga ngokusebenza ngenxa yemibuzo enzima yesevisi eyodwa, wonke amasevisi ahlangabezana nezinkinga. Kumodeli enama-API acacile kanye nobunikazi bedatha, ithimba ngalinye liyizingcweti zokutholakala nokusebenza kwesevisi yalo, ngakho ukwehluleka engxenyeni eyodwa akusabalalisi kwabanye.
Ukuvumelana okuvamile ukuthi: "Sizokunikeza ikhophi efundwayo kuphela ukuze ukwazi ukubuza ngaphandle kokuthikameze idatha yethu egciniwe." Ekuqaleni, lokho kungase kubhekane nezinkinga ezithile zokulayisha, kodwa:
Izinqubo zesimanje zokuklama (isibonelo, “API Okokuqala” noma “Inkontileka Okokuqala”) ziqala ngencazelo yokusebenzelana esemthethweni. Kusetshenziswa i-OpenAPI/Swagger, protobuf, noma i-GraphQL schemas. Ngale ndlela, kokubili abantu nemishini bayazi ukuthi yiziphi iziphetho ezitholakalayo, yiziphi izinkambu ezidingekayo, nokuthi yiziphi izinhlobo zedatha ezisetshenziswayo.
Kusakhiwo se-microservices (noma i-modular), ukucabanga ukuthi isevisi ngayinye ingumnikazi wedatha yayo ngokuphelele. Ichaza ukwakheka, isitoreji, kanye nengqondo yebhizinisi futhi inikeza i-API yakho konke ukufinyelela kwangaphandle kuleyo API. Akekho ongathinta isizindalwazi 'somunye umuntu': iziphetho ezisemthethweni kuphela noma imicimbi. Lokhu kwenza impilo ibe lula noma nini uma kukhulunywa ngezinguquko futhi kuhlale kucaca ukuthi ubani onecala.
GET /items
, POST /items
, njll., futhi amakhasimende enza izicelo ngohlelo lwedatha oluchazwe kahle (DTO).
Kungakhathaliseki ukuthi iyiphi imodeli, kuyenzeka futhi kubalulekile ukusebenzisa ukulawula inguqulo kusixhumi esibonakalayo. Ngokwesibonelo:
Umgomo obalulekile ukuthi ithimba elingumnikazi wedatha linquma ukuthi liyigcina kanjani futhi liyiphathe kanjani, kodwa akufanele linikeze ukufinyelela okuqondile kokubhala kwamanye amasevisi. Abanye kufanele badlule ku-API esikhundleni sokuhlela idatha yangaphandle. Lokhu kuveza ukusabalalisa kwesibopho okucace kakhudlwana: Uma isevisi A yephukile, kusho ukuthi kuwumthwalo wesevisi A ukuyilungisa hhayi omakhelwane bayo.
Uma uthi nhlá, uma yonke into iseqenjini elilodwa, kungani uhlanganisa izinto nge-API? Eqinisweni, ngisho noma unomkhiqizo owodwa ohlukaniswe waba amamojuli, ithebula okwabelwana ngalo lingaholela ezinkingeni ezifanayo.
Isibonelo, isevisi yama-oda ingumnikazi wethebula lama-oda, futhi isevisi Yokukhokha ayifinyeleli kulelo thebula ngokuqondile - yenza izingcingo eziya ekugcineni kwesevisi yama-oda ukuze ithole imininingwane ye-oda noma imake i-oda njengelikhokhelwe.
Ezingeni eliphezulu, lapho amaqembu amabili noma ngaphezulu anesibopho sezindawo ezihlukene, izimiso zihlala zifana. Ngokwesibonelo:
Uma Ithimba B libuza ngokuqondile ithebula elithi “Ikhathalogi” leThimba A, noma yiziphi izinguquko ze-schema zangaphakathi kokuthi A (isb., ukwengeza izinkambu, ukushintsha ukwakheka) kungase kuthinte Ithimba B.
Indlela efanele ukusebenzisa i-API: Ithimba A lihlinzeka ngamaphoyinti okugcina njenge GET /catalog/items
, GET /catalog/items/{id}
, njll., futhi Ithimba B lisebenzisa lezo zindlela. Uma u-A ekwazi ukusekela izinguqulo ezindala nezintsha, angakhulula /v2, okunikeza u-B isikhathi sokufuduka.
Ngenkontileka esemthethweni, zonke izinguquko ziyabonakala: ku-Swagger/OpenAPI, amafayela we-.proto, noma imibhalo yomcimbi. Noma isiphi isibuyekezo singaxoxwa kusengaphambili, sihlolwe kahle, futhi sihlelwe, ngamasu okuhambisana okusemuva njengoba kudingeka.
Izinguquko kusevisi eyodwa zinomthelela omncane kwezinye. Ithimba akufanele likhathazeke “ngokwephula” omunye umuntu uma liphatha kahle izinkambu ezintsha nezindala noma izindawo zokugcina, liqinisekisa uguquko olushelelayo.
Amasango e-API, ukuqinisekiswa, nokugunyazwa (JWT, OAuth) kuyindinganiso yezinsizakalo, kodwa cishe akunakwenzeka ngetafula okwabelwana ngalo. Kulula ukushuna kahle ukufinyelela (ubani ongabiza ukuthi yiziphi izindlela), gcina amalogi, ulandelele izibalo zokusetshenziswa, futhi ubeke ama-quota. Lokhu kwenza uhlelo luphephe futhi lubikezelwe.
Ithebula okwabelwana ngalo kusizindalwazi liwumniningwane wokuqaliswa esikhundleni sesivumelwano phakathi kwezinsizakalo ezingabhekwa njengenkontileka. Izinkinga eziningi (inguqulo eyinkimbinkimbi, izinguquko eziyisiphithiphithi, ubunikazi obungacacile, ukuphepha, nezingozi zokusebenza) zenza le ndlela ingasebenziseki ngokuhamba kwesikhathi.
Indlela efanele yiNkontileka Yokuqala okusho ukuchaza ukusebenzisana ngokuklama okusemthethweni nokulandela isimiso sokuthi isevisi ngayinye ihlala ingumnikazi wedatha yayo. Lokhu akusizi nje kuphela ukwehlisa isikweletu sobuchwepheshe kodwa futhi kukhulisa ukubonakala, kusheshisa ukuthuthukiswa komkhiqizo, futhi kunika amandla izinguquko eziphephile ngaphandle kokuzibandakanya ekucimeni umlilo ngokusebenzisa izikimu zesizindalwazi.
Kokubili kuyinkinga yezobuchwepheshe (indlela yokuklama nokuhlanganisa) kanye nenkinga yenhlangano (indlela amaqembu axhumana ngayo futhi alawule ngayo izinguquko). Uma ufuna umkhiqizo wakho ukhule ngaphandle kokubhekana nezimo eziphuthumayo ezingapheli mayelana nezikimu zesizindalwazi, kufanele uqale ukucabanga ngokwezinkontileka kunokufinyelela kusizindalwazi esiqondile.