Khibradayada abuurista API Gateway

Shirkadaha qaarkood, oo uu ku jiro macaamiisheena, ayaa ku horumariya badeecada iyada oo loo marayo shabakad shuraako ah. Tusaale ahaan, dukaamada waaweyn ee internetka ayaa lagu dhex daray adeegga gudbinta - waxaad dalbataa badeecad oo aad dhawaan hesho lambarka raadraaca ee xirmada. Tusaale kale waa marka aad iibsanayso caymis ama tigidh Aeroexpress ah oo ay weheliso tigidhka hawada.

Taas awgeed, hal API ayaa loo isticmaalaa, kaas oo ay tahay in la siiyo shuraakada API Gateway. Waxaan xallinay dhibaatadan. Maqaalkan waxaan kuugu sheegi doonaa faahfaahinta.

Siiyay: nidaamka deegaanka iyo marinka API oo leh is-dhexgal ay isticmaalayaashu ka diiwaan gashan yihiin, helaan macluumaadka, iwm. Waxaan u baahanahay inaan samayno kadin API ku haboon oo la isku halayn karo. Geedi socodka, waxaan u baahanahay inaan bixino

  • diiwaangelinta,
  • Xakamaynta xidhiidhka API,
  • la socodka sida isticmaalayaashu u isticmaalaan nidaamka dhamaadka,
  • xisaabinta tilmaamayaasha ganacsiga.

Khibradayada abuurista API Gateway

Maqaalka waxaan kaga hadli doonaa khibradeena abuurista API Gateway, inta lagu gudajiro taas oo aan xallinay hawlaha soo socda:

  • aqoonsiga isticmaalaha,
  • oggolaanshaha isticmaalaha,
  • wax ka beddelka codsiga asalka ah,
  • codsi wakiilnimo,
  • dib u habeynta jawaabta.


Waxaa jira laba nooc oo maamulka API ah:

1. Standard, kaas oo u shaqeeya sida soo socota. Kahor inta aan la xirin, isticmaaluhu wuxuu tijaabiyaa sifooyinka, ka dibna lacag ayuu bixiyaa oo ku dhejiyaa boggiisa. Inta badan waxaa loo isticmaalaa ganacsiyada yaryar iyo kuwa dhexdhexaadka ah.

2. Maamulka API B2B Large, marka ugu horeysa ee shirkadu ay samayso go'aan ganacsi oo ku saabsan isku xirka, waxay noqotaa shuraako shirkadda oo leh waajibaad qandaraas, ka dibna ku xidha API. Ka dib marka dhammaan sharciyada la dejiyo, shirkadu waxay helaysaa gelitaanka imtixaanka, waxay ku gudubtaa imtixaan waxayna aadaa wax soo saarka. Laakiin tani suurtogal ma aha la'aanteed go'aan maareyn oo lagu xiriirinayo.

Khibradayada abuurista API Gateway

Xalkayaga

Qaybtan, waxaan ka hadli doonaa abuurista API Gateway.

Isticmaalayaasha ugu dambeeya ee albaabka API ee la abuuray waa shuraakada macaamiishayada. Waxaan horeyba u haysanay qandaraasyada lagama maarmaanka u ah mid kasta oo iyaga ka mid ah. Waxaan kaliya u baahan doonaa inaan kordhino shaqeynta annagoo calaamadeynayna gelitaanka albaabka. Sidaas awgeed, isku xirka iyo habka maaraynta ayaa loo baahan yahay.

Dabcan, waxaa suurtagal ah in la qaato xal diyaar ah oo lagu xalinayo dhibaatada Maareynta API iyo abuurista API Gateway gaar ahaan. Tusaale ahaan, tani waxay noqon kartaa Azure API Management. Nooma ay habboonayn, sababtoo ah xaaladdeenna waxaan horey u haysannay portal API iyo nidaam deegaan oo weyn oo laga dhisay hareeraha. Dhammaan isticmaalayaasha horeba waa loo diiwaangeliyay, waxay hore u fahmeen halka iyo sida ay u heli karaan macluumaadka lagama maarmaanka ah. Isku xirka lagama maarmaanka ah ayaa horeyba uga jiray marinka API-ga, waxaan kaliya u baahnay kadinka API. Runtii, waxaan ku hawlannahay horumarinteeda.

Waxa aan ugu yeerno kadinka API waa nooc wakiil ah. Halkan waxaan mar kale yeelanay doorasho - waxaad qori kartaa wakiilkaaga, ama waxaad dooran kartaa shay diyaarsan. Xaaladdan oo kale, waxaan u marnay dariiqa labaad oo waxaan doorannay xirmada nginx + Lua. Waa maxay sababtu? Waxaan u baahanahay software la isku halayn karo, la tijaabiyay oo taageera ismiidaamin. Hirgelinta ka dib, ma aanan dooneynin inaan hubinno labadaba saxnaanta macquulka ganacsiga iyo saxnaanta wakiilnimada.

Seerfeer kastaa wuxuu leeyahay codsi ka baaraandega dhuumaha. Xaaladda nginx, waxay u egtahay sidan:

Khibradayada abuurista API Gateway

(jaantuska ka GitHub Lua Nginx)

Hadafkayagu waxa uu ahaa in aanu galno dhuumahaan meel aan wax ka bedeli karno codsigii asalka ahaa.

Waxaan rabnaa inaan abuurno wakiil hufan si codsigu u ahaado mid shaqeynaya sidii uu yimid. Waxaan kaliya xakameynaa gelitaanka API-ga kama dambaysta ah, ka caawi codsigu inuu gaaro. Haddii codsigu khalad ahaa, API-ga kama dambaysta ahi waa inuu muujiyaa khaladka, laakiin annaga maaha. Sababta kaliya ee aan u diidi karno codsiga waa sababtoo ah macmiilku ma heli karo.

Horeba u jiray nginx ballaarinta on Lua. Lua waa luqad qoraal ah, waa mid aad u fudud oo sahlan in la barto. Sidaa darteed, waxaan hirgelinay caqli-galkii lagama maarmaanka ahaa anagoo adeegsanayna Lua.

Qaabeynta nginx (oo la mid ah dariiqa codsiga), halkaas oo dhammaan shaqada la qabto, waa wax la fahmi karo. Waxaa xusid mudan halkan waa dardaarankii ugu dambeeyay - post_action.

location /middleware {
      more_clear_input_headers Accept-Encoding;
      lua_need_request_body on;
      rewrite_by_lua_file 'middleware/rewrite.lua';
      access_by_lua_file 'middleware/access.lua';
      proxy_pass https://someurl.com;
      body_filter_by_lua_file 'middleware/body_filter.lua';
      post_action /process_session;
}

Ka fiirso waxa ka dhacaya qaabayntan:
madax_input_badan_cad - waxay nadiifisaa qiimaha madaxyada lagu qeexay dardaaranka kadib.
lua_baahi_request_body - waxay xakameysaa in hay'adda codsiga asalka ah la akhriyo ka hor inta aan la fulin dardaaranka dib u qorida/helitaanka/helitaanka_by_lua iyo inkale. Sida caadiga ah, nginx ma akhriyo jidhka codsiga macmiilka, iyo haddii aad u baahan tahay inaad gasho, markaa dardaarankan waa in lagu dhejiyaa.
dib u qor_lua_file - jidka loo maro qoraalka, kaas oo qeexaya macquulka ah ee wax ka beddelka codsiga
gelid_by_lua_file - jidka loo maro qoraalka, kaas oo qeexaya caqli-galnimada hubinaysa helitaanka kheyraadka.
proxy_pass - url kaas oo codsiga loo ahaan doono wakiil.
shaandhaynta_jidhka_lua_file - jidka loo maro qoraalka, kaas oo qeexaya macquulka ah ee shaandhaynta codsiga ka hor inta aan loo celin macmiilka.
Ugu dambeyntii ficilka kadib - dardaaran rasmi ah oo aan sharciyeysnayn kaas oo aad ku samayn karto ficillo kale ka dib marka jawaabta la siiyo macmiilka.

Marka xigta, waxaan ku tilmaami doonaa sida aan u xalinay dhibaatooyinkeena.

Oggolaanshaha/xaqiijinta iyo wax ka beddelka codsiga

Oggolaanshaha

Waxaan dhisnay oggolaansho iyo xaqiijin annagoo adeegsanayna gelitaanka shahaadada. Waxaa jira shahaado xidid. Macmiil kasta oo cusub oo macmiil ah ayaa la soo saaray shahaadadiisa gaarka ah, kaas oo uu ku geli karo API-ga. Shahaadadan waxa lagu habeeyey qaybta server-ka ee goobaha nginx.

ssl on;
ssl_certificate /usr/local/openresty/nginx/ssl/cert.pem;
ssl_certificate_key /usr/local/openresty/nginx/ssl/cert.pem;
ssl_client_certificate /usr/local/openresty/nginx/ssl/ca.crt;
ssl_verify_client on;

Wax ka beddelka

Su'aal cadaalad ah ayaa soo bixi karta: maxaa lagu sameeyaa macmiil shahaado haysta haddii aan si lama filaan ah u dooneyno inaan ka saarno nidaamka? Dib ha u soo saarin shahaadooyinka dhammaan macaamiisha kale.

Markaa waxaan si habsami leh u wajahnay hawsha xigta - wax ka beddelka codsigii asalka ahaa. Codsiga bilowga ah ee macmiilka, guud ahaan hadalka, maaha mid sax ah nidaamka kama dambaysta ah. Mid ka mid ah hawlaha waa in lagu daro qaybaha maqan codsiga si loo saxo. Ujeedadu waa in xogta maqan ay ka duwan tahay macmiil kasta. Waxaan ognahay in macmiilku noogu yimaado shahaado aan ka qaadan karno faraha oo aan ka soo saarno xogta macmiilka lagama maarmaanka ah kaydka.

Haddii mar uun aad u baahan tahay inaad ka saarto macmiilka adeeggayaga, xogtiisu way ka tirtirmi doontaa kaydka mana awoodi doono inuu wax sameeyo.

La shaqaynta xogta macaamiisha

Waxaan u baahanahay inaan ka dhigno xalka si heer sare ah loo heli karo, gaar ahaan sida aan u helno xogta macaamiisha. Dhibtu waa in isha aasaasiga ah ee xogtani tahay adeeg dhinac saddexaad ah oo aan dammaanad qaadin xawaare sare oo ku filan.

Sidaa darteed, waxaan u baahanahay inaan hubinno helitaanka sare ee xogta macaamiisha. Qalab ahaan, waxaanu dooranay hazelcastkaas oo ina siinaya:

  • helitaanka degdeg ah xogta
  • Awoodda lagu abaabulo koox ka kooban dhowr nood oo leh xog lagu soo koobay noodhadh kala duwan.

Waxaan raacnay istaraatiijiyadda ugu fudud ee gaarsiinta xogta kaydka:

Khibradayada abuurista API Gateway

La shaqaynta nidaamka dhamaadka waxay ku dhacdaa fadhiyo gudahood waxaana jira xaddid tirada ugu badan. Haddii macmiilku aanu xidhin fadhiga, waa inaanu samaynaa tan.

Xogta fadhiga furan waxay ka imanaysaa nidaamka dhammaadka waxaana markii hore lagu farsameeyay dhinaca Lua. Waxaan go'aansanay inaan isticmaalno Hazelcast si aan ugu kaydino xogtan shaqo .NET ah. Ka dib, mararka qaarkood, waxaan hubineynaa xuquuqda nolosha ee fadhiyada furan waxaanan xireynaa kuwa qudhunka ah.

Ka gelitaanka Hazelcast ee labada Lua iyo .NET

Ma jiraan macaamiil Lua ah oo la shaqeeya Hazelcast, laakiin Hazelcast waxay leedahay API REST, kaas oo aan go'aansanay inaan isticmaalno. Wixii .NET ah waxaa jira macmiil, kaas oo aan qorsheynay inaan galno xogta Hazelcast dhinaca NET. Laakiin halkaas may ahayn.

Khibradayada abuurista API Gateway

Marka lagu kaydinayo xogta iyada oo loo marayo REST iyo dib u soo celinta xogta iyada oo loo marayo macmiilka NET, serializers kala duwan ayaa la isticmaalaa. Sidaa darteed, suurtagal maaha in xogta la dhex dhigo REST, laakiin ka hel macmiilka NET iyo lidkeeda.

Haddii ay jiraan xiiso, waxaan wax badan oo ku saabsan dhibaatadan kaaga sheegi doonaa maqaal gaar ah. Spoiler - on schematic ah.

Khibradayada abuurista API Gateway

Goynta iyo la socodka

Halbeegyada shirkadda ee ka soo gelida .NET waa Serilog, dhammaan diiwaannada waxay ku dhamaanayaan Elasticsearch, waxaanan ku falanqeyneynaa iyaga oo u sii maraya Kibana. Waxaan jeclaan lahaa inaan sameeyo wax la mid ah kiiskan. Midka kaliya macmiil in lagala shaqeeyo Elastic on Lua, kaas oo la helay, jabiyay baahidii ugu horaysay. Oo waxaan isticmaalnay Fluentd.

si fiican u yaqaan - xal il furan oo loogu talagalay bixinta hal lakab oo codsi ah. Kuu ogolanaya in aad ka soo ururiso diiwaannada lakabyada kala duwan ee codsiga, ka dibna ku baahiso hal il.

API Gateway wuxuu ka shaqeeyaa K8S, sidaa darteed waxaan go'aansanay inaan ku darno weel si fiican u yaqaan isla pody si aan ugu qorno logyada tcp-ka furan ee hadda jira.

Waxaan sidoo kale sahaminay sida faseexa ah ay u dhaqmi doonto haddii aysan lahayn wax xiriir ah Elasticsearch. Muddo laba maalmood ah, codsiyada ayaa si isdaba joog ah loogu diray albaabka, logu waxa loo diray si faseexa, laakiin faseexatada ayaa laga mamnuucay IP Elastic. Ka dib markii la soo celiyay isku xirka, si fiican ayaa u dhaafay gabi ahaanba dhammaan loguska Elastic.

gunaanad

Habka la doortay ee hirgelinta ayaa noo ogolaatay in aan gaarsiino badeecad dhab ah oo shaqaynaysa deegaanka dagaalka gudaha 2.5 bilood.

Haddi ay dhacdo in aad samayso waxyaalahan oo kale, waxa aanu kugula talinaynaa in aad marka hore si cad u fahanto dhibaatada aad xalinayso iyo agabka aad haysato. Ka digtoonow caqabadaha kakan ee ku milanka nidaamyada maaraynta API ee jira.

Naftaada u fahan waxa saxda ah ee aad horumarinayso - kaliya macquulka ganacsiga ee codsiyada socodsiinta, ama, sida ay noqon karto kiiskeena, wakiilka oo dhan. Ha iloobin in wax kasta oo aad adigu samayso ay tahay in si fiican loo tijaabiyo ka dib.

Source: www.habr.com

U soo iibso martigelin lagu kalsoonaan karo oo loogu talagalay bogagga leh ilaalinta DDoS, VPS VDS servers 🔥 Iibso martigelin degel oo lagu kalsoonaan karo oo leh ilaalinta DDoS, VPS VDS servers | ProHoster