Tip sareng sumber pikeun ngawangun aplikasi tanpa server

Tip sareng sumber pikeun ngawangun aplikasi tanpa server
Sanajan téknologi serverless geus gancang meunang popularitas di taun panganyarna, aya kénéh loba misconceptions sarta masalah pakait sareng aranjeunna. Katergantungan vendor, alat, manajemén biaya, mimiti tiis, ngawaskeun sareng siklus pangembangan sadayana mangrupikeun topik anu didebatkeun dina téknologi tanpa server. Dina artikel ieu, urang bakal ngajalajah sababaraha topik anu disebatkeun, ogé ngabagi tip sareng tautan ka sumber daya anu mangpaat pikeun ngabantosan pamula ngawangun aplikasi tanpa server anu kuat, fleksibel, sareng biaya-éféktif.

Misconceptions ngeunaan téknologi serverless

Seueur jalma percaya yén ngolah data tanpa server sareng tanpa server (Fungsi salaku Service a, FaaS) ampir sarua. Ieu ngandung harti yén bédana teu gede teuing jeung sia ngenalkeun produk anyar. Sanajan AWS Lambda éta salah sahiji béntang tina kebangkitan téhnologi serverless sarta salah sahiji elemen nu pang populerna di arsitéktur serverless, aya deui arsitéktur ieu ti FaaS.

Prinsip inti serverless nyaéta yén anjeun henteu kedah hariwang ngeunaan ngatur atanapi skala infrastruktur anjeun; anjeun ngan ukur mayar naon anu anjeun anggo. Seueur jasa anu cocog sareng kriteria ieu - AWS DynamoDB, S3, SNS atanapi SQS, Graphcool, Auth0, Now, Netlify, Firebase sareng seueur deui. Sacara umum, serverless hartosna ngagunakeun sagala kamampuan komputasi awan tanpa kedah ngatur sareng ngaoptimalkeun infrastruktur pikeun skala. Éta ogé hartosna yén kaamanan di tingkat infrastruktur henteu deui janten masalah anjeun, anu mangrupikeun kauntungan anu ageung upami sesah sareng pajeulitna nyumponan standar kaamanan. Tungtungna, anjeun henteu kedah mésér infrastruktur anu disayogikeun ka anjeun.

Tanpa server tiasa dianggap "kaayaan pikiran": mentalitas anu tangtu nalika ngarancang solusi. Hindarkeun pendekatan anu peryogi pangropéa infrastruktur naon waé. Kalayan pendekatan tanpa server, urang nyéépkeun waktos pikeun ngarengsekeun masalah anu langsung mangaruhan kana proyék sareng masihan nilai ka pangguna: nyiptakeun logika bisnis anu kuat, ngembangkeun antarmuka pangguna, sareng ngembangkeun API anu responsif sareng dipercaya.

Contona, upami kasebut nyaéta dimungkinkeun pikeun nyingkahan menata sarta ngajaga platform pilarian téks bébas, teras éta naon urang bakal ngalakukeun. Pendekatan ieu pikeun ngawangun aplikasi sacara dramatis tiasa nyepetkeun waktos ka pasar sabab anjeun henteu kedah mikir deui ngeunaan ngatur infrastruktur anu kompleks. Ngabébaskeun diri tina tanggung jawab sareng biaya manajemén infrastruktur sareng fokus kana ngawangun aplikasi sareng jasa anu diperyogikeun ku palanggan anjeun. Patrick Debois disebut pendekatan ieu 'jasa', istilah ieu ditarima di komunitas serverless. Fungsi kudu dianggap salaku lem nu ngiket jasa babarengan salaku modul deployable (tinimbang deploying hiji sakabéh perpustakaan atawa aplikasi wéb). Ieu nyayogikeun granularitas anu luar biasa pikeun ngatur panyebaran sareng parobihan kana aplikasi. Upami anjeun henteu tiasa nyebarkeun fungsi ku cara ieu, éta tiasa nunjukkeun yén fungsi éta ngalakukeun seueur teuing hal sareng kedah diréduksi deui.

Sababaraha urang bingung ku gumantungna vendor nalika ngembangkeun aplikasi awan. Hal anu sami leres sareng téknologi tanpa server, sareng ieu henteu sigana hasil tina salah paham. Dina pangalaman urang, ngawangun aplikasi tanpa server dina AWS, ditambah sareng kamampuan AWS Lambda pikeun ngahijikeun jasa AWS anu sanés, mangrupikeun bagian anu ngajantenkeun arsitektur tanpa server anu saé. Ieu mangrupikeun conto sinergi anu saé, nalika hasil tina kombinasi langkung ageung tibatan jumlah bagianna. Nyobian pikeun ngahindarkeun vendor konci-in tiasa nyababkeun langkung seueur masalah. Nalika damel sareng wadah, langkung gampang pikeun ngatur lapisan abstraksi anjeun nyalira antara panyadia awan. Tapi lamun datang ka solusi serverless, usaha moal mayar kaluar, utamana lamun mertimbangkeun ongkos-efektivitas ti mimiti. Pastikeun pikeun milari kumaha padagang nyayogikeun jasa. Sababaraha ladenan khusus ngandelkeun titik integrasi sareng padagang sanés sareng tiasa nyayogikeun konektipitas plug-and-play out of the box. Éta langkung gampang nyayogikeun telepon Lambda tina titik tungtung API gateway tibatan proksi pamundut ka sababaraha wadah atanapi conto EC2. Graphcool ngamungkinkeun pikeun konfigurasi gampang ngagunakeun Auth0, nu leuwih gampang ti ngagunakeun alat auténtikasi pihak katilu.

Milih vendor anu pas pikeun aplikasi tanpa server anjeun mangrupikeun kaputusan tingkat arsitéktur. Nalika anjeun nyiptakeun aplikasi, anjeun moal ngarep-ngarep hiji dinten uih deui pikeun ngatur server. Milih vendor awan teu béda ti milih ngagunakeun wadah atawa database, atawa malah basa program.

Pertimbangkeun:

  • jasa naon nu peryogi tur naha.
  • Ladenan naon anu disayogikeun ku panyadia awan sareng kumaha anjeun tiasa ngagabungkeun aranjeunna nganggo solusi FaaS anu anjeun pilih.
  • Naon basa program anu dirojong (dinamis atanapi statik diketik, disusun atanapi diinterpretasi, naon tolok ukurna, naon kinerja mimiti tiis, naon ékosistem open source, jsb.).
  • Naon syarat kaamanan anjeun (SLA, 2FA, OAuth, HTTPS, SSL, jsb.).
  • Kumaha carana ngatur CI / CD na siklus ngembangkeun software.
  • Solusi infrastruktur-sakumaha-kode anu anjeun tiasa mangpaatkeun?

Upami anjeun ngalegaan aplikasi anu tos aya sareng nambihan fungsi tanpa server sacara bertahap, ieu tiasa ngabatesan kamampuan anu sayogi. Sanajan kitu, ampir kabéh téknologi serverless nyadiakeun sababaraha jenis API (via REST atawa pesen antrian) nu ngidinan Anjeun pikeun nyieun ekstensi bebas tina inti aplikasi tur kalawan integrasi gampang. Milarian jasa sareng API anu jelas, dokuméntasi anu saé sareng komunitas anu kuat, sareng anjeun moal tiasa lepat. Gampang integrasi sering tiasa janten métrik konci, sareng kamungkinan salah sahiji alesan utama AWS parantos suksés ti saprak Lambda kaluar taun 2015.

Lamun serverless mangpaat?

Téknologi tanpa server tiasa dianggo ampir di mana waé. Nanging, kauntunganana henteu dugi ka ngan ukur metode aplikasi. Halangan pikeun asup pikeun komputasi awan ayeuna rendah pisan kusabab téknologi tanpa server. Upami pamekar gaduh ide, tapi aranjeunna henteu terang kumaha ngatur infrastruktur awan sareng ngaoptimalkeun biaya, maka aranjeunna henteu kedah milarian sababaraha insinyur pikeun ngalakukeunana. Upami hiji ngamimitian hoyong ngawangun platform tapi prihatin yén biaya tiasa dikadalikeun, aranjeunna tiasa kalayan gampang kéngingkeun solusi tanpa server.

Hatur nuhun kana penghematan biaya sareng betah skala, solusi tanpa server sami-sami tiasa dianggo pikeun sistem internal sareng éksternal, dugi ka aplikasi wéb kalayan panongton jutaan dolar. Akun diukur dina cents tinimbang euro. Nyéwa conto AWS EC2 pangbasajanna (t1.micro) salila sabulan bakal ngarugikeun € 15, malah lamun teu ngalakukeun nanaon jeung eta (anu geus kungsi poho mareuman?!). Pikeun ngabandingkeun, pikeun ngahontal tingkat belanja ieu dina waktos anu sami, anjeun kedah ngajalankeun Lambda 512 MB salami 1 detik kirang langkung 3 juta kali. Sareng upami anjeun henteu nganggo fitur ieu, anjeun moal mayar nanaon.

Kusabab serverless utamana didorong acara, éta cukup gampang pikeun nambahkeun infrastruktur serverless kana sistem warisan. Salaku conto, nganggo AWS S3, Lambda, sareng Kinesis, anjeun tiasa nyiptakeun jasa analitik pikeun sistem ritel warisan anu tiasa nampi data ngalangkungan API.

Kaseueuran platform tanpa server ngadukung sababaraha basa. Paling sering ieu Python, JavaScript, C #, Java jeung Go. Ilaharna, sadaya basa henteu ngagaduhan larangan dina pamakean perpustakaan, janten anjeun tiasa nganggo perpustakaan open source karesep anjeun. Nanging, disarankeun pikeun henteu nganggo kaleuleuwihan katergantungan supados fungsi anjeun tiasa dilaksanakeun sacara optimal sareng henteu ngabatalkeun kauntungan tina skalabilitas anu ageung tina aplikasi tanpa server anjeun. Langkung seueur bungkusan anu kedah dilebetkeun kana wadahna, langkung lami waktos mimiti tiis.

Mimiti anu tiis nyaéta nalika anjeun mimiti kedah ngamimitian wadahna, runtime, sareng panangan kasalahan sateuacan dianggo. Kusabab ieu, reureuh dina ngajalankeun fungsi tiasa dugi ka 3 detik, sareng ieu sanés pilihan anu pangsaéna pikeun pangguna anu teu sabar. Tapi, mimiti tiis lumangsung dina sauran munggaran saatos sababaraha menit fungsi dianggurkeun. Seueur anu nganggap ieu kasulitan minor anu tiasa dilereskeun ku rutin ping fungsina pikeun tetep ngaganggu. Atawa aranjeunna malire aspék ieu sakabehna.

Sanajan AWS dileupaskeun serverless database SQL Serverless AuroraSanajan kitu, database SQL henteu idéal pikeun jenis ieu pamakéan sabab ngandelkeun sambungan pikeun ngalakukeun transaksi, nu bisa gancang jadi bottleneck a lamun aya loba lalulintas dina AWS Lambda. Leres, pamekar terus-terusan ningkatkeun Serverless Aurora, sareng anjeun kedah ékspérimén sareng éta, tapi ayeuna solusi NoSQL sapertos DinamoDB. Nanging, teu aya ragu yén kaayaan ieu bakal robih pas.

Toolkit ogé maksakeun seueur watesan, khususna di daérah tés lokal. Sanaos aya solusi sapertos Docker-Lambda, DynamoDB Lokal sareng LocalStack, aranjeunna meryogikeun padamelan anu parah sareng jumlah konfigurasi anu signifikan. Nanging, sadaya proyék ieu aktip berkembang, janten ngan ukur sababaraha waktos sateuacan alat-alat ngahontal tingkat anu urang peryogikeun.

Dampak téknologi tanpa server dina siklus pangwangunan

Kusabab infrastruktur anjeun ngan saukur konfigurasi, anjeun tiasa ngartikeun sareng nyebarkeun kode nganggo skrip, sapertos skrip cangkang. Atawa anjeun bisa Resort ka konfigurasi-sakumaha-kode solusi kelas kawas AWS CloudFormation. Sanajan jasa ieu teu nyadiakeun konfigurasi pikeun sakabéh wewengkon, éta ngidinan Anjeun pikeun nangtukeun sumberdaya husus pikeun pamakéan salaku fungsi Lambda. Nyaéta, dimana CloudFormation gagal anjeun, anjeun tiasa nyerat sumberdaya anjeun nyalira (fungsi Lambda) anu bakal nutup jurang ieu. Ku cara ieu anjeun tiasa ngalakukeun nanaon, bahkan ngonpigurasikeun katergantungan di luar lingkungan AWS anjeun.

Kusabab éta sadayana ngan ukur konfigurasi, anjeun tiasa parameterkeun skrip panyebaran anjeun pikeun lingkungan, daérah, sareng pangguna khusus, khususna upami anjeun nganggo solusi infrastruktur-sakumaha-kode sapertos CloudFormation. Salaku conto, anjeun tiasa nyebarkeun salinan prasarana pikeun tiap cabang dina gudang supados anjeun tiasa nguji sacara lengkep dina isolasi nalika pangwangunan. Ieu sacara radikal nyepetkeun waktos pamekar nampi eupan balik nalika aranjeunna hoyong ngartos naha kodena ngalaksanakeun cekap dina lingkungan hirup. Pangurus henteu kedah hariwang ngeunaan biaya nyebarkeun sababaraha lingkungan sabab ngan ukur mayar kanggo panggunaan anu saleresna.

DevOps henteu kedah hariwang sabab ngan ukur kedah mastikeun yén pamekar gaduh konfigurasi anu leres. Taya deui ngatur instansi, balancers, atawa grup kaamanan. Ku alatan éta, istilah NoOps beuki dipaké, sanajan masih penting pikeun bisa ngonpigurasikeun infrastruktur, utamana lamun datang ka konfigurasi IAM jeung optimasi sumberdaya awan.

Aya alat monitoring sareng visibilitas anu kuat sapertos Epsagon, Thundra, Dashbird sareng IOPipe. Éta ngamungkinkeun anjeun ngawas kaayaan aplikasi tanpa server ayeuna, nyayogikeun log sareng jejak, néwak métrik kinerja sareng bottlenecks arsitéktur, ngalaksanakeun analisa biaya sareng ramalan, sareng seueur deui. Henteu ngan ukur masihan insinyur, pamekar, sareng arsiték DevOps pandangan anu komprehensif ngeunaan kinerja aplikasi, tapi aranjeunna ogé ngamungkinkeun para manajer pikeun kéngingkeun pisibilitas kana waktos nyata, belanja sumberdaya kadua-demi-detik sareng ramalan biaya. Éta langkung hese pikeun ngatur ieu sareng infrastruktur anu diurus.

Ngarancang aplikasi tanpa server langkung gampang sabab anjeun henteu kedah nyebarkeun server wéb, ngatur mesin virtual atanapi wadah, patch server, sistem operasi, gerbang Internét, jsb. bisnis jeung kabutuhan customer.

Sanaos alatna tiasa langkung saé (anu ningkat unggal dintenna), pamekar tiasa difokuskeun ngalaksanakeun logika bisnis sareng kumaha cara ngadistribusikaeun pajeulitna aplikasi dina sagala rupa jasa dina arsitéktur. Manajemén aplikasi tanpa server dumasar kana acara sareng diabstraksi ku panyadia awan (contona, SQS, acara S3 atanapi aliran DynamoDB). Ku alatan éta, pamekar ngan perlu nulis logika bisnis pikeun ngaréaksikeun kana acara nu tangtu, sarta teu kudu salempang ngeunaan kumaha pangalusna pikeun nerapkeun database na antrian pesen, atawa kumaha carana optimal dianggo kalayan data dina storages hardware husus.

Kodeu tiasa dieksekusi sareng di-debug sacara lokal, sapertos prosés pangwangunan. Uji unit tetep sami. Kamampuhan pikeun nyebarkeun sakabéh infrastruktur aplikasi ngagunakeun konfigurasi tumpukan custom ngamungkinkeun pamekar pikeun gancang meunang eupan balik penting tanpa salempang ngeunaan biaya nguji atawa dampak dina lingkungan junun mahal.

Alat sareng téknik pikeun ngawangun aplikasi tanpa server

Teu aya cara khusus pikeun ngawangun aplikasi tanpa server. Kitu ogé sakumpulan jasa pikeun tugas ieu. Pamingpin diantara solusi serverless kuat kiwari nyaéta AWS, tapi nengetan Google awan, waktu и Firebase. Upami anjeun nganggo AWS, maka kami tiasa nyarankeun salaku pendekatan pikeun ngumpulkeun aplikasi Modél Aplikasi Serverless (SAM), utamana lamun ngagunakeun C #, sabab Visual Studio boga parabot hébat. SAM CLI tiasa ngalakukeun sagalana Visual Studio bisa ngalakukeun, sangkan anjeun moal leungit nanaon lamun pindah ka IDE béda atawa pangropéa téksu. Tangtosna, SAM ogé tiasa dianggo sareng basa sanés.

Upami anjeun nyerat dina basa sanés, Serverless Framework mangrupikeun alat open source anu saé anu ngamungkinkeun anjeun pikeun ngonpigurasikeun naon waé nganggo file konfigurasi YAML anu kuat pisan. Serverless Framework ogé ngadukung sababaraha jasa awan, janten kami nyarankeun ka anu milari solusi multi-awan. Éta ngagaduhan komunitas anu ageung anu parantos nyiptakeun sakumpulan plugins pikeun kabutuhan naon waé.

Pikeun nguji lokal, alat open source Docker-Lambda, Serverless Lokal, DynamoDB Lokal sareng LocalStack cocog pisan. Téknologi tanpa server masih aya dina tahap awal pamekaran, sapertos alat pikeun aranjeunna, janten anjeun kedah kerja keras nalika nyetél skénario tés anu rumit. Sanajan kitu, ngan saukur deploying tumpukan di lingkungan jeung nguji éta aya tétéla incredibly mirah. Sareng anjeun henteu kedah ngadamel salinan lokal anu pasti tina lingkungan awan anjeun.

Anggo AWS Lambda Layers pikeun ngirangan ukuran pakét anu disebarkeun sareng nyepetkeun waktos ngamuat.

Anggo basa pamrograman anu leres pikeun tugas khusus. Basa anu béda-béda gaduh kaunggulan sareng kalemahan sorangan. Aya seueur tolok ukur, tapi JavaScript, Python, sareng C # (.NET Core 2.1+) mangrupikeun pamimpin dina hal kinerja AWS Lambda. AWS Lambda nembe ngenalkeun Runtime API anu ngamungkinkeun anjeun pikeun nangtukeun basa anu dipikahoyong sareng lingkungan runtime, janten ékspérimén.

Tetep ukuran pakét deployment leutik. Nu leuwih leutik aranjeunna, nu gancang aranjeunna dimuat. Hindarkeun ngagunakeun perpustakaan ageung, khususna upami anjeun nganggo sababaraha fitur ti aranjeunna. Upami anjeun nuju program dina JavaScript, paké alat ngawangun sapertos Webpack pikeun ngaoptimalkeun ngawangun anjeun sareng ngan ukur kalebet naon anu anjeun peryogikeun. .NET Core 3.0 ngawengku QuickJit na Tiered Kompilasi, nu ngaronjatkeun kinerja sarta greatly mantuan kalawan mimiti tiis.

Katergantungan fungsi tanpa server dina acara tiasa nyababkeun sesah pikeun koordinat logika bisnis dina mimitina. antrian pesen na mesin kaayaan bisa jadi incredibly mangpaat dina hal ieu. fungsi Lambda bisa nelepon silih, tapi ngan ngalakukeun ieu lamun teu nyangka respon a ("seuneu jeung poho") - anjeun teu hayang meunang ditagih keur ngantosan fungsi sejen pikeun ngalengkepan. Antrian pesen mangpaat pikeun ngasingkeun potongan logika bisnis, ngatur bottlenecks aplikasi, sareng ngolah transaksi (nganggo antrian FIFO). Fungsi AWS Lambda bisa ditugaskeun ka antrian SQS sakumaha antrian pesen nyangkut nu lagu pesen gagal pikeun analisis engké. AWS Step Functions (mesin kaayaan) pohara kapaké pikeun ngatur prosés kompléks nu merlukeun ranté tina fungsi. Gantina fungsi Lambda nelepon fungsi sejen, fungsi Step bisa koordinat transisi kaayaan, ngalirkeun data antara fungsi, sarta ngatur kaayaan global fungsi. Ieu ngidinan Anjeun pikeun nangtukeun kaayaan coba deui, atawa naon nu kudu lamun aya kasalahan husus - alat anu pohara kuat dina kaayaan nu tangtu.

kacindekan

Dina taun-taun ayeuna, téknologi tanpa server parantos ngembang dina laju anu teu pernah aya. Aya misconceptions tangtu pakait sareng shift paradigma ieu. Ku abstraksi infrastruktur sareng ngatur skalabilitas, solusi tanpa server nawiskeun kauntungan anu signifikan, tina pamekaran saderhana sareng prosés DevOps dugi ka pangurangan ageung biaya operasional.
Sanaos pendekatan tanpa server sanés kakuranganana, aya pola desain anu tiasa dipercaya anu tiasa dianggo pikeun nyiptakeun aplikasi tanpa server anu kuat atanapi ngahijikeun elemen tanpa server kana arsitéktur anu aya.

sumber: www.habr.com

Tambahkeun komentar