paint-brush
Ku tlhantlha Xiphiqo xa ‘Swi Tirha Eka Muchini Wa Mina’hi@gabrielpoeta
349 ku hlayiwa
349 ku hlayiwa

Ku tlhantlha Xiphiqo xa ‘Swi Tirha Eka Muchini Wa Mina’

hi Gabriel Poeta5m2024/09/05
Read on Terminal Reader

Ku leha ngopfu; Ku hlaya

Vercel yi tiveka swinene hi ku tirhisiwa ka yona ka zero config. Hi ku tikhoma ko hlayanyana ntsena u nga va na xitirhisiwa xa wena lexi tirhisiwaka.
featured image - Ku tlhantlha Xiphiqo xa ‘Swi Tirha Eka Muchini Wa Mina’
Gabriel Poeta HackerNoon profile picture
0-item
1-item
2-item

Loko ku fika nkarhi wo tirhisa xitirhisiwa ndzi ringetile AWS, kambe ku vula ntiyiso ndzi ve muxaka wa bummed out hi nhlayo ya vuxokoxoko na vukorhokeri lebyi va byi nyikaka, naswona ndzi lave ngopfu ku vona xitirhisiwa xa mina ehandle kwalaho ekhwatini. Hiloko ndzi hlangana na Vercel. Ehenhla ka sweswo, ndzi vile ndzi dyondza hi Docker naswona a ndzi lava ku tirhisa leswi ndzi swi dyondzeke ku fikela sweswi, leyi a ku ri nkarhi lowu faneleke.


Vercel yi tiveka swinene hi ku tirhisiwa ka yona ka zero config. Hi ku tikhoma ko hlayanyana ntsena u nga va na xitirhisiwa xa wena lexi tirhisiwaka. U nga ha tlhela u hlanganisa vuhlayiselo bya wena naswona Vercel yi ta hatlisa yi aka no tirhisa phurojeke ya wena endzhaku ka ku tinyiketela kun’wana na kun’wana. A swi nga ta swi kota ku kuma swo olova ku tlula sweswo 😀 . Xivangelo xin’wana lexi ndzi nga hlawula Vercel ku tlula AWS a ku ri ntirho wa vona wa ‘serverless’, lowu ndzi wu tirhiseke ku hundzuluxela ti-documento ku suka eka database ya mina hi ku tirhisa Express API. Ku vula ntiyiso, a ndzi nge vileli hi vutirheli bya vona. A ndzi si tshama ndzi va na timhaka na project ya mina hambi swi ri tano. Mhaka laha hileswaku a ndzi lava ku dyondza swo tala hi backend ya application ya mina naswona ndzi ehlekete leswaku ku twisisa ku tirhisiwa ka yona swi nga ndzi pfuna eka sweswo. Ndzi vone vanhu vo tala va hlawula AWS ku tlula Vercel hikwalaho ka pulani ya vona ya nxavo. A swi tirhi eka mhaka ya mina tani hi leswi xikombelo xa mina xi nga riki na traffic yo tala swonghasi naswona ngopfu-ngopfu ndzi xi tirhisa hi xikongomelo xo dyondza. Kambe i swinene ku boxa leswaku Vercel yi na “mhaka” ya ku tlakuka loko swi ta eka ku veka nxavo.


Xitirhisiwa xa Toronto Food Basket xi nga avanyisiwa hi swiphemu swinharhu swo hambana:

  • Webscraper yo hlengeleta rungula eka xitolo xa swakudya xa kwalaho

  • Express API leyi hlela mahungu naswona yi nga endla matirhelo ya tinhlayo ku endla tano.

  • React app leyi humesaka application na vuxokoxoko hinkwabyo lebyi lavekaka.


Sweswi ndzi tirhisa ntsena Webscraper eka AWS tani hi leswi ndza ha lavaka ku dyondza swo tala hi tisevha na tindlela to tirhisa Express API na app ya React. Ku sungula ndzi sungule xikombiso xa AWS EC2 naswona ndzi veke alamu ya mpimanyeto leswaku nkarhi wun’wana na wun’wana ku tirhisiwa ka mali eka xikombiso xa mina ku tlula $0.01 ndzi kuma xitiviso - ndzi dyondze leswaku hi ndlela yo tika endzhaku ko hakeriwa xikombiso xa DocumentDB lexi ndzi nga xi tsutsuma eka akhawunti ya mina ku sukela hi December /2023 naswona a nga ri na miehleketo 😂. Amazon yi nyika ti tiers ta mahala leti nga na 750 wa tiawara ta t2.micro (kumbe t3.micro eka Swifundzha leswi t2.micro yi nga kumekiki eka swona), 30Gib ya vuhlayiselo bya EBS, 2 wa timiliyoni ta ti-IO, 1 GB ya swifaniso swa xihatla na 100 GB ya bandwidth eka inthanete.


Loko ndzi ri karhi ndzi dyondza ndlela yo tirhisa xitirhisiwa xa mina lexi dockerized eka AWS ndzi xiye leswaku ku na kwalomu ka maendlelo mambirhi yo hambana - ku nga ha va na man’wana:


  1. aka xikhomela xa docker laha kaya naswona u rhumela ntsena xikhomela ehenhla eka AWS.

  2. rhumela hinkwaswo eka AWS u aka xigwitsirisi xa mina hi le kule.


Ndzi hlawurile ndlela ya vumbirhi hikuva a ndzi lava ku va na ntokoto wo tirha ekule hi ku helela eka xitirhisiwa xa mina loko ndzi boheka ku endla tano. A ndzi tshama ndzi ri eka khompyuta ya mina naswona ku va na xitirhisiwa xa mina eka xikombiso xa EC2 swi nga va swi pfuna hakunene eka swiyimo sweswo. Nakambe, a ndzi ta boheka ku tirha na Vim, ku nga nchumu lowu a ndzi ri karhi ndzi lava ku wu endla. Loko ndzi nga si rhumela ehenhla ka tifayela eka xikombiso xa mina xa EC2 ndzi lunghiselele ndhawu ya mina ya le kule hi ku nghenisa Node.js na Docker.


Leswaku ndzi rhumela tifayela eka xikombiso xa mina xa EC2 ndzi tirhise Secure Copy Protocol (scp). Xileriso lexi a xi languteka hi ndlela leyi:

scp -i ubuntu.pem -r LOCAL_DIRECTORY [email protected]:/home/ubuntu/downloads/webscraperdockeraws


  • -i ubuntu.pem : Mujeko lowu wu hlamusela fayili ya vutivi (xilotlelo xa le xihundleni) ku tirhisiwa eka ku tiyisisiwa ka xilotlelo xa mani na mani. Eka xiyimo lexi, ubuntu.pem i fayili ya xilotlelo xa le xihundleni leyi tirhisiwaka ku tiyisisa eka sevha ya le kule.
  • -r : Mujeko lowu wu kombisa leswaku ntirho wu fanele ku va wa ku vuyelela, leswi vulaka leswaku wu ta kopa tidayirekitara na leswi nga endzeni ka tona hi ku vuyelela.
  • [email protected]:/home/ubuntu/downloads/webscraperdockeraws : Lexi i xihlawulekisi xa ndhawu yo ya eka yona. Yi katsa vito ra mutirhisi ( ubuntu ) na adirese ya IP ( 35.183.21.127 ) ya sevha ya le kule, ku landzela ndlela ya vukorhokeri ( /home/ubuntu/downloads ) laha tifayela ti nga ta kopiwa kona.


Loko tifayela hinkwato ti hundziseriwe eka xikombiso xa mina xa EC2 ndzi swi kotile ku tlhela ndzi aka xikhomela-ndhawu xa mina xa docker. Naswona laha switsotswana swi sunguleke - yay! Layiburari ya nkoka swinene ya Webscraper ya mina i Puppeteer, leyi nyikaka API ya xiyimo xa le henhla ku lawula Chrome/Chromium eka DevTools Protocol. Puppeteer yi famba hi ndlela yo pfumala nhloko, leswi endlaka leswaku ku dlayiwa ka yona ku hatlisa. Kambe loko ndzi ringeta ku dockerize application ya mina ndzi hlangane na timhaka tin'wana:


  • Hi ku tiyimisela, loko Puppeteer yi nghenisiwile yi dawuniloda Chrome for Testing na binary ya chrome-headless-shell. Xihlamusela-marito xi dawunilodiwile eka folda ya $HOME/.cache/puppeteer. Xiphiqo hi leswaku AWS a yi katsi ku katsa $HOME/.cache eka xikombiso xa yona xa Ubuntu. Ndzi kume mhaka leyi endzhaku ka ndzavisiso wo karhi, naswona ku tlhantlha hinkwaswo leswi a ndzi fanele ku swi endla a ku ri ku yisa folda ya /.cache eka root directory - mhaka leyi yi tsariwile kahle eka Puppeteers's npm portal.


Xifaniso xa ndlela ya mina leyintshwa yo tumbuluxa API


  • Xin'wana lexi nga erivaleni lexi ndzi nga xi xiyangiki a ku ri leswaku ku fikela sweswi a ndzi tirhisa application ya mina eka OS ku fana na Windows na MacOs.. Kambe sweswi a ndzi tirhana na Ubuntu. Futhi hikuva a ku ri instance leyi nga riki na nchumu a yi nga ri na package/app leyi nga pre-installed, leswi hi swona swi endleke leswaku ndzi nghenisa node na docker hi ku hatlisa loko ndzi tsutsuma instance ro sungula. Kambe a ndzi rivala xitirhisiwa xa nkoka hakunene xa leswaku Webscraper ya mina yi tirha: Google Chrome. U tsundzuka leswi ndzi swi vuleke hi Puppeteer khale? Phela, a ndzi fanele ndzi tiyiseka leswaku ndzi ni vuhundzuluxeri lebyi faneleke bya Chromium eka xikombiso xa mina . Vuhundzuluxi byin’wana na byin’wana lebyikulu bya Node.js byi akiwile ehenhla ka vuhundzuluxeri bya Debian, naswona vuhundzuluxeri byebyo bya Debian byi ta na vuhundzuluxeri bya khale bya Chromium, lebyi minkarhi yin’wana byi nga fambisaniki na vuhundzuluxeri bya sweswinyana bya Puppeteer. Endzhaku ka ndzavisiso wo karhi ndzi kume leswaku ndzi fanele ku katsa xileriso eka Dockerfile ya mina leswaku vuhundzuluxeri lebyi faneleke bya Chromium byi ta kota ku dawunilodiwaka Docker yi nga si nghenisa swilo hinkwaswo leswi titshegeke hi app ya mina ivi yi yi tirhisa. Fayili ya mina ya Docker a yi languteka hi ndlela leyi:


Xifaniso xa ndlela ya mina leyintshwa yo tumbuluxa API


Xifaniso xa ndlela ya mina leyintshwa yo tumbuluxa API


  • Endzhaku ko lunghisa mhaka leyi hundzeke ku humelele yin’wana. Sweswi rungula ra xihoxo ri ri: “No usable sandbox”. Ku swi lulamisa hinkwaswo leswi a ndzi fanele ku swi endla a ku ri ku cinca khodi ya mina no katsa –no-sandbox argument eka puppeteer.launch() function eka xin’wana na xin’wana xa switirhisiwa swa mina swa grocery.


Xifaniso xa ndlela ya mina leyintshwa yo tumbuluxa API


Endlile. Sweswi Webscraper ya mina yi tirha eka xigwitsirisi eka xikombiso xa mina xa AWS EC2. It wont scrape all 65 products though.. Endzhaku ka product ya vuntlhanu app yi tshoveka. Ndzi tshemba leswaku swi na swo karhi leswi fambelanaka na switirhisiwa leswi nga kona leswi ndzi nga na swona eka xikombiso lexi - a ndzi langutane na xiphiqo lexi fanaka loko ndzi fambisa scraper hi swiendlo swa github. Hambi swi ri tano, xikongomelo xa mina a ku ri ku sungula xikombiso xa AWS EC2 naswona ndzi va na xitirhisiwa xa mina lexi tirhaka hi le kule, naswona ndzi endlile tano. Swilo swo tala swi ta ta!


Xifaniso xa ndlela ya mina leyintshwa yo tumbuluxa API


Xifaniso xa ndlela ya mina leyintshwa yo tumbuluxa API