» »

Kako in kam deployati lastne aplikacije

Kako in kam deployati lastne aplikacije

i33a ::

Pozdravljeni,
v zadnjem času sem razvil nekaj aplikacj iz jih moram nekje gostiti. Zahteve so naslednje:
- ena spletna stran
- 3 enostavni web scraperji
- 3 podatkovne baze (dokaj majhne)
- 2 REST API-ja

Zanima me kje in na kakšen način priporočate da to deployam?
Do sedaj sem se vedno loteval le razvoja, za deployanje pa nisem preveč dobro skrbel - imam en Droplet na digital oceanu, to je pa tudi vse.
Kakšne so kaj dobre prakse? Vsaka aplikacija v svojem docker containerju? Kako poenostaviti deploy ob spremembah aplikacije?
Kje svetujete za gostovanje, da ni pretirano veliko dela / EUR na mesec.

Lep pozdrav in hvala za vse odgovore
  • spremenil: i33a ()

Ahim ::

Najbolj poceni gostvanje za "naredi si sam" (= dobro za izkusnje) je najbrz se vedno Hetzner.

Najmanj dela ... za neko majhno stvar sploh ne vem kako bi lahko bilo vec/manj dela, kjerkoli se lotis, ga bo priblizno enako.

Glede deployanja je pa premalo informacij. Kljucno je predvsem ali je to nek hobi projekt ali je zadaj kak SLA, in ce kaksen ... pa koliko se bo projekt selil, kaksen je plan za skaliranje, kaksnim regulativam mora ustrezati, kako so delcki med seboj povezani oziroma kako morajo biti izolirani, kaksen stack poganja vse skupaj, kako je s podatki (varnost, backup, itd.) ...

secops ::

Možnosti imaš ogromno, od managed storitev na AWS kot so EKS, ECS... do bare metal virtualk na Hetznerju. Predvsem je važno za kaj točno se gre, kakšno rast se pričakuje in tako naprej.

Glede deploya sprememb pa je čist odvisno kako zastaviš. Lahko imaš na serverju lokalni git repozitorij in nato samo pullaš spremembe, lahko vsakič zbuildaš svoj Docker image in na serverju nato pullaš ta image. Ne glede na to, za kaj se odločiš, lahko postopek avtomatiziraš z nekim CI/CD orodjem kot je Jenkins ali Gitlab CI.

OrkAA ::

Kot so že rekli zgoraj, najprej se moraš vprašat kaj je glavna prioriteta. Je to cena? Zanesljivost? Čim manj dela na dolgi rok?

Pri ceni boš definitivno zmagal z raznimi hetznerji in podobnimi VMji, je pa res da boš na dolgi rok skuril veliko časa z vzdrževanjem in upgrejdi.

Če te pa mika bolj sodoben pristop, ki je bolj "managed" in z manj vzdrževanja, potem imaš pri cloud providerjih veliko opcij. Na pamet mi padejo:
- Google Cloud Run
- AWS App Runner ali celo Lambda
- Digital ocean app platform
- Heroku

Vsi zgornji ponujajo tudi managed baze, ki ti ponavadi prihranijo največ vzdrževanja.

Deploy tudi zelo enostavno skonfiguriras, ker se znajo vsi povezat direktno na github (in podobne source controle) in sprožit deploy ob pushu v branch.

i33a ::

Super, najlepša hvala vsem za odgovore!

Da vam malo bolje opišem situacijo. Vse stvari so brez SLA-jev, saj gre za hobi oz. pri nekaterih tudi pol-hobi projekte.

- Najpomembnejša sta mi 2 projekta. Oba sta še v fazi razvoja in tu mi je pomembno, da bi lahko hitro deployal stvari v produkcijo, saj se bo dodajalo precej novih funkcionalnosti.
V kolikor kateri od projektov bolj uspe, bi bilo pa tudi super, če bi ga lahko enostavno scalal brez pretiranih težav.

- spletna stran in web scraperji so manj pomembni (ne kurijo veliko resursov, le morajo laufati na nekem serverju nekje in da me to ne stane preveč dela in denarja).

V službi sem že upravljal neke EC2 instance na AWS (in bom v prihodnje imel še kar nekaj taskov povezanih z AWS). Se je glede na to najbolje usmeriti kar na AWS ali so toliko dražji, da se bolj splača nekatere stvari narediti sam / na drugih ponudnikih)?

OrkAA ::


V službi sem že upravljal neke EC2 instance na AWS (in bom v prihodnje imel še kar nekaj taskov povezanih z AWS). Se je glede na to najbolje usmeriti kar na AWS ali so toliko dražji, da se bolj splača nekatere stvari narediti sam / na drugih ponudnikih)?


Iskreno povedano je AWS kar komplicirana gmota vseh možnih servisev in je prekleto težko razumet, koliko te bo kaj na koncu stalo. Obstaja pa veliko načinov, da stroške zelo oklestiš - free tier, avtomatizacija, da ti stvari tečejo le ko jih rabiš, savings plani, etc. Če ti to znanje pride prav tudi v službi, potem se mi zdi super ideja, da se malo poglobiš v AWS z osebnimi projekti. Ne pozabi si nastavit alarma v Cloudwatch, ki te opozori, če stroški narastejo nad določeno vrednost. :)

i33a ::

Super, hvala. Kaj pa predlagate, če se ne odločim za AWS (zaradi cene/kompliciranosti)?

DePalmo ::

Nekaj let nazaj sem si postavil deployanje na shared hosting kjer je laufal cPanel. Tako da če se ti da hecat, greš lahko to pot. Sicer sem takrat imel kar nekaj dela da sem vse vzpostavil, a ko je delalo nisem rabil nič več tikat.

Drugače imam osebno najraje Forge (Laravel) za server management, BitBucket za git in Digital Ocean droplets, kjer lahko namečem projekte/strani po želji. Ampak je to moje osebno mnenje, vsak ti bo podal svojega.

Trenutno pa probavam še ploi.io kot alternativo Forgeju, ampak mi delujejo da niso resni in da so dobri za kake hobi projekte. Podpora je počasna (sicer sem na free računu, ampak da čakaš dneve na odziv, dan danes ni resno), pa čakam na konkreten odgovor zakaj se mi je ustvaril drugi račun, ko sem hotel povezati BitBucket z njihovimi storitvami.

macoma ::

Ce gledas free je na Azuru free server meanagmenet, git po izbiri (Bitbucket recimo), namesto digital ocean pa je bil kako leto nazaj cenejsi in hitrejsi UpCloud.

Ahim ::

i33a je izjavil:

Super, najlepša hvala vsem za odgovore!

Da vam malo bolje opišem situacijo. Vse stvari so brez SLA-jev, saj gre za hobi oz. pri nekaterih tudi pol-hobi projekte.

- Najpomembnejša sta mi 2 projekta. Oba sta še v fazi razvoja in tu mi je pomembno, da bi lahko hitro deployal stvari v produkcijo, saj se bo dodajalo precej novih funkcionalnosti.
V kolikor kateri od projektov bolj uspe, bi bilo pa tudi super, če bi ga lahko enostavno scalal brez pretiranih težav.

- spletna stran in web scraperji so manj pomembni (ne kurijo veliko resursov, le morajo laufati na nekem serverju nekje in da me to ne stane preveč dela in denarja).

V službi sem že upravljal neke EC2 instance na AWS (in bom v prihodnje imel še kar nekaj taskov povezanih z AWS). Se je glede na to najbolje usmeriti kar na AWS ali so toliko dražji, da se bolj splača nekatere stvari narediti sam / na drugih ponudnikih)?

Meni se zdi se vedno premalo informacij, zato sem bom omejil na to, kar sem razbral iz odgovora (neki web scaperji, hobi projekti, hitro deployanje):

Sicer ni nemogoce aplikacij kakrsni so scaperji, ki tecejo s tvoje strani (torej ne cakajo na zunanji request in potem nekaj nardijo) poganjat v kontejnerjih, je pa na zacetku nekaj vec dela da vse pravilno postavis (npr. s supervisord, crond). Tudi skalirat jih ni tako komplicirano kot servise, ki reagirajo na zunanje requeste, ker lahko svoje delo opravljajo preko kateregakoli porta, ne rabijo ingressa itd. Jaz bi torej zanje za cas razvoja naredil nek enostaven setup, kjer ti deploy skripta pobere iz gita zadnjo verzijo in jo zazene ko ugasne staro.

Nek pipelined build, pushanje containerja v repo, deployanje kontejnerjev ... se mi zdi overkill za tako zadevo, razen ce te tematika veseli (je zelo zanimivo, in zeloooo zamudno takoj ko gre nekaj narobe).

keworkian ::

AWS Apigateway, mogoce python lambda, dynamodb.
Jaz sem postavil nekaj podobnega samo da je bil se cognito vstet zaradi federated identities (google, facebook), cca. ~20$/mesec. Dynamodb pay per request, lambda je tudi smesno poceni, webscraper se da pa tudi zvezat z cloudwatch event rules in se terraform zraven, ez.
Obscenities in B-Flat

keworkian ::

keworkian je izjavil:

AWS Apigateway, mogoce python lambda, dynamodb.
Jaz sem postavil nekaj podobnega samo da je bil se cognito vstet zaradi federated identities (google, facebook), cca. ~20$/mesec. Dynamodb pay per request, lambda je tudi smesno poceni, webscraper se da pa tudi zvezat z cloudwatch event rules in se terraform zraven, ez.

Ker slo-tech popravi ne dela as expected je tole se dodano:

sem spregledal del da so aplikacije ze razvite, ECS fargate in nastimas capacity provider FARGATE SPOT. Trudit se z EC2 instancami je fun ce imas kaksen video recording ali pa kaksen third party software ali pa ce res rabis explicitno dolocat kaj rabis (ECS ima ze preconfigured kaksen cpu/memory) ampak spet odvisno kaksen heavy duty stuff bos delal.

Moje izkusnje z AWS so super (ko si enkrat nadrkan in znas napamet njihovo dokumentacijo). Racunaj pa ~100-200e (vpc,ecs,...), razen ce bos delal kaksno kombinacijo in neki hibrid, AWS je playground izberes tisto igracko, ki ti najbolj ustreza.
Obscenities in B-Flat

Zgodovina sprememb…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Pohitritev delovanja strežnika (azure/aws)

Oddelek: Strojna oprema
322155 (1582) Ales
»

Nepovezljivost NodeMCU na AWS serverje

Oddelek: Omrežja in internet
11806 (596) OrkAA
»

AWS EC2 - dostop preko RDP in Windows firewall

Oddelek: Operacijski sistemi
6686 (536) c3p0
»

Hosting/virtualke: kje najceneje

Oddelek: Programiranje
7923 (714) jeremenen
»

Linux strežnik z redundanco

Oddelek: Strojna oprema
403960 (3200) Daedalus

Več podobnih tem