Sunucusuz nedir?


42

Tüm bulut sağlayıcıları "sunucusuz" çözümlerini pazarlıyorlar. Buradaki söz, sunucusuzun, geliştiricilerin şu anda yazılımlarını geliştirmelerinin yerine geçeceği ve operasyonların üretimde yönettiği şeklinde olacak.

"Sunucusuz" nedir? Kişi bunun hakkında nereden daha fazla bilgi edinebilir ve bugün nasıl kullanılabilir?


serverless computing "sunucu daha az" bir "tavuk burger" olarak şahsen tavukla tanışmadığınız gibi vegan
Sai Addanki

Yanıtlar:


43

Wikipedia'nın sunucusuz bilgi işlem makalesi konuyla ilgili iyi bir giriş yapmasını sağlar:

Hizmet olarak işlev (FaaS) olarak da bilinen sunucusuz bilgi işlem, bulut sağlayıcının, bir işlevin bir konteyner platformunun bir hizmet olarak (PaaS) istekleri ve istekleri yerine getirmesi için gerektiği şekilde hizmet olarak başlatılmasını ve durdurulmasını tamamen yönettiği bir bulut bilgi işlem kodu yürütme modelidir. sanal makine başına değil, saat başına isteği yerine getirmek için gereken kaynakların soyut bir ölçüsü ile faturalandırılır.

Buradaki fikir, geliştiricinin sunucu altyapısına hiç dikkat etmemesi gerektiğidir . Bulut sağlayıcı, fiziksel sunucuları, kullanılan işletim sistemini ve bir sunucuyu çalıştırmakla ilgili tüm geleneksel zorlukları yönetir.

Sunucusuz bilgi işlem, mimarinizi, hangi makinelerin hangi fonksiyonların yaptığı hakkında yaptıklarını düşünmekten değiştirir . AWS Lambda akla gelen bir örnektir - aşağıda ne tür bir fiziki altyapının çalıştığından söz etmeden, fonksiyonları öder ve çalıştırırsınız . Azure İşlevleri gibi rakipsiz sunucusuz ana bilgisayarlar da var (veya bunlardan herhangi biriyle ilgilenmiyorsanız kolayca arama yapabilirsiniz).

Sunucusuz için bir kaç avantajı vardır (bazı durumlarda alışkın olduğunuzdan biraz farklı bir şekilde yazmanıza gerek yoktur, çünkü tamamen farklı bir mimaridir):

  • Ölçeklenebilirlik esasen ücretsizdir - yalnızca bir işlevi çalıştırmak için ödeme yaptığınız için bulut sağlayıcısı, kodunuzu çalıştırmak için gerektiğinde daha fazla donanımı kolayca ayırabilir. Ayrıca, uygulamanızın bir kez mi yoksa bir milyon kez mi kullanıldığına bağlı olarak sabit bir oran ödemek yerine, talep arttıkça potansiyel olarak ölçeklendirme yapabilirsiniz.

  • Sunucu yazılımı ve donanımın artık bir geliştirici tarafından yönetilmesi gerekmiyor - bulut sağlayıcı bunu yapıyor. Bir sunucuda Arch gibi bir şey kullandıysanız, kritik bir paketi silmenin ve her şeyi kırmanın ne kadar kolay olduğunu bilirsiniz!

  • Geliştiricileri, kodda neyin iyi olduğuna odaklanmaları için özgürleştirir . Çoğu geliştirici muhtemelen hem sunucu altyapısı büyük olmayacak ve programlama - Sunucusuz sadece denklemin dışına bir sorun sürer.


msgstr "sunucu altyapısına hiç dikkat etmemelisiniz" Bu gerçekten iyi bir şey çünkü benim deneyimlerime göre, feci sonuçları olan / çok / çok / çok fazlası!
Phill W.

15

Martin Fowler iyi bir genel bakışa sahip:
https://martinfowler.com/articles/serverless.html

TL; DR
"Sunucusuz", altyapının geçici olduğu uygulamaları tasarlayan , konteyner tabanlı olma eğiliminde oldukları ve dinamik bir ölçeklendirme mekanizmasına dayanarak "gelip gidebilecekleri" anlamına gelen uygulama geliştirme ve mimariyi tanımlar . Bu, dağıtılmış teknolojilere (anahtar / değer depoları gibi) bağlı olan vatansız mimarilerin kullanılmasını öngörür.


2
Sadece geçici değil, aynı zamanda tamamen soyutlanmış. Pek çok modern sunucusuz kurulumda (AWS EC2 ASG'ler gibi) altyapı da geçicidir; ASG'deki bir EC2 örneği herhangi bir zamanda sonlandırılabilir.
Adrian

14

Alanımızdaki birçok şey gibi, 'sunucusuz' aşırı bir terim haline geliyor .. ama genellikle "İşlevsel olarak, Mimarimiz bir sunucunun sağlanmasına veya devam eden bakımına bağlı değil" anlamına geliyor.

Akla gelen ilk örnek, yerel depolamayı kullanan ve Amazon S # veya Github Pages (ya da herhangi bir statik site - bunlar sadece yaygın örneklerdir) gibi bir şeyde depolanan tek sayfalık bir javascript uygulamasıdır. Tamamen tarayıcınızda çalışan 'yapılacaklar' veya 'yapılması gerekenler' tarzı bir uygulama düşünün. Tarayıcınız kodu indirmek için S3 gibi bir hizmete isabet eder ve kaydettiğiniz öğelerin tümü tarayıcınızda yerel depolamada saklanır. Bunun için sakladığınız hiçbir sunucu yok.

İkinci örnek ve biraz daha karmaşık (ve aynı zamanda 'sunucusuz' terimini popülerleştiren örnek) AWS Lambda gibi bir hizmet kullanıyor. Bunu çözdüğü sorunu sunarak açıklayayım:

Kariyerim boyunca defalarca, bir müşteri için, belirli aralıklarla çıkartma, dönüştürme ve yükleme yapan (genellikle bir komisyon görevi olarak yazılan) bazı yakut kodlarından biraz daha fazlasını içeren bir iş problemini çözdüm. Bir kez çözüldüğünde genellikle cron ile otomatikleştirirdim. Sonra sorun, 'saatte bir kez çalışan bu şeyi nerede barındırırım?' Olur. Bazı müşteriler için mevcut altyapılarında bir sunucu kurduk. Diğerleri için, zamanın% 99'u boşta olsa bile bir EC2 örneği kurduk. Her iki durumda da, sağlama, düzeltme eki, izleme, güncelleme vb. Gerektiren bir sunucu var.

Amazon Lambda ile bu komisyon görevini yerine getirip saf bir 'işlev' olarak hizmetlerinde çalıştırabilirim. Programlayabilirim. Artık müşterinin saatte bir bu kadar basit bir şey için bir altyapıya ihtiyacı olmaz.

'Sunucusuz' ile hala bir sunucu var, tıpkı 'bulut'la olduğu gibi hala bir bilgisayar var. Bunun üzerine sadece sizin için çevresel sorumlulukların bir kısmını alan bir soyutlama var.


Genelde bir EC2'ye ihtiyaç duyan, saatte bir defada yaptığım işin gerçek hayat örneğimi. Şimdi sadece bir Lambda fonksiyonuna ihtiyacınız var!
HopeKing

10

Tüm harika cevaplar zaten. Ben blog yazısı geçiyordu Düşünme Sunucusuz - Yeni Adresi Modern Bilgi İşlem İhtiyaçları Yaklaşımlar nasıl ne Sunucusuz araçlarının bu mükemmel açıklama rastlamak ettik HighScalability, içinde:

“Sunucusuz” ifadesi, sunucuların artık dahil olmadığı anlamına gelmez. Bu basitçe, geliştiricilerin artık onlar hakkında çok fazla düşünmesi gerekmediği anlamına gelir. Bilgi işlem kaynakları, fiziksel kapasiteleri veya sınırları aşmak zorunda kalmadan hizmet olarak kullanılır. Servis sağlayıcıları, sunucuları, veri depolarını ve diğer altyapı kaynaklarını yönetme sorumluluğunu gittikçe daha fazla üstleniyorlar. Sunucusuz çözümler, geliştiricilerin arka uç altyapısının karmaşıklığını ortadan kaldırarak uygulamalarının veya sistemlerinin ne yapması gerektiğine odaklanmalarını sağlar.

Ayrıca, sunucusuz altyapı oluşturma konusundaki kişisel deneyimimden bir daha öğrendiğim:

  • Sunucusuz veri boru hatlarının sadece gerçek zamanlı olması gerekmez. Birisi, AWS'nin CloudWatch uyarı mekanizmalarıyla verimli bir toplu işleme sunucusuz boru hatları oluşturabilir; bu, birinin araçları izlemesine ve (AWS) Lambda'nın hesaplaması için uyarıları artırmasına olanak tanır.

Örneğin: Dosyaları bir AWS SQS kuyruğunda saklayın. Kuyruktaki mesajların sayısı 10'a ulaştığında, Lambda'ya bir etkinlik başlat.


6

Sunucusuz teriminin tanımını açıklamanın yanı sıra, terimin kökenleri ve tarihçesi, anlamını da açıklar. Konsept JAWS çerçevesi ile Austen Collins tarafından ortaya çıktı ve daha sonra Serverless olarak yeniden adlandırıldı . Bunu ilk önce AWS re: Invent 2015 oturumunda öğrendim . Bu, aslında hızlı bir şekilde diğer bulut sistemlerine yayılan, Sunucusuz terimi tanımlayan şeydi:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.