Geliştiriciler kodla iş sorunlarını çözmek için sayısız saat harcarlar. Daha sonra operasyon ekibinin sırası, sayısız saatler harcamak, önce geliştiricilerin yazdığı ve mevcut bilgisayarlarda çalıştırdığı kodu nasıl elde edeceklerini bulmak ve ikincisi bu bilgisayarların sorunsuz çalışmasını sağlamak. İkinci kısım gerçekten hiç bitmeyen bir görevdir. Neden o kısmı başkasına bırakmıyorsun?
Son yirmi yılda BT'deki pek çok yenilik - sanal makineler, bulut bilişim, kapsayıcılar - kodunuzun üzerinde çalıştığı altta yatan fiziksel makine hakkında fazla düşünmeniz gerekmediğinden emin olmaya odaklandı. Sunucusuz bilgi işlem, bu isteği mantıksal sonucuna götüren, giderek daha popüler hale gelen bir paradigmadır: Sunucusuz bilgi işlemle, kodunuzun çalıştığı donanım veya işletim sistemi hakkında hiçbir şey bilmenize gerek yoktur , çünkü bunların tümü sizin için bir servis sağlayıcı tarafından halledilir. .
Sunucusuz bilgi işlem nedir?
Sunucusuz bilgi işlem, bir bulut sağlayıcısının yalnızca belirli bir kod parçasını yürütmek için gereken işlem kaynaklarını ve depolamayı dinamik olarak ayırdığı ve daha sonra kullanıcıdan ücret aldığı bir bulut yürütme modelidir. Doğal olarak, hala ilgili sunucular vardır, ancak bunların sağlanması ve bakımı tamamen sağlayıcı tarafından yapılır. Amazon'un sunucusuz savunucusu Chris Munns, 2017'deki bir konferansta, ekibin kodu yazması ve dağıtması açısından “yönetilecek veya sağlanacak hiçbir sunucu yok. Bu, çıplak metal olmayacak hiçbir şeyi, sanal olan hiçbir şeyi, kapsayıcı olan hiçbir şeyi içermez - bir ana bilgisayarı yönetmenizi, bir ana bilgisayara yama yapmanızı veya işletim sistemi düzeyinde herhangi bir şeyle uğraşmanızı içeren herhangi bir şey, içinde yapmanız gereken bir şey değildir. sunucusuz dünya. "
Geliştirici Mike Roberts'ın açıkladığı gibi, terim bir zamanlar bir mobil uygulamanın tamamen bulutta barındırılan bir arka uç sunucuya bağlanacağı sözde hizmet olarak arka uç senaryoları için kullanılıyordu. Ancak günümüzde insanlar sunucusuz bilgi işlemden veya sunucusuz bir mimariden söz ettiklerinde , bir müşterinin yalnızca iş mantığını ele alan kodu yazdığı ve bunu bir sağlayıcıya yüklediği bir hizmet olarak işlev teklifleri anlamına geliyor . Bu sağlayıcı, tüm donanım sağlama, sanal makine ve konteyner yönetimi ve hatta çoğu zaman uygulama kodunda yerleşik olan çoklu okuma gibi görevlerle ilgilenir.
Sunucusuz işlevler olay güdümlüdür , yani kod yalnızca bir istek tarafından tetiklendiğinde çağrılır. Sağlayıcı, fiziksel veya sanal bir sunucunun bakımı için aylık sabit bir ücret yerine, yalnızca o yürütme tarafından kullanılan işlem süresi için ücret alır. Bu işlevler, bir işleme hattı oluşturmak için birbirine bağlanabilir veya kaplarda veya geleneksel sunucularda çalışan diğer kodlarla etkileşime girerek daha büyük bir uygulamanın bileşenleri olarak hizmet edebilirler.
Sunucusuz bilgi işlemin avantajları ve dezavantajları
Bu açıklamaya göre, sunucusuz bilgi işlemin en büyük iki avantajı açık olmalıdır: geliştiriciler altyapı soruları yerine yazdıkları kodun iş hedeflerine odaklanabilirler; ve kuruluşlar, fiziksel donanım satın almak veya çoğunlukla boşta duran bulut örneklerini kiralamak yerine, yalnızca gerçekten kullandıkları işlem kaynakları için çok ayrıntılı bir şekilde ödeme yapar.
Bernard Golden'ın işaret ettiği gibi, bu son nokta, olay odaklı uygulamalar için özellikle yararlıdır. Örneğin, çoğu zaman boşta olan ancak belirli koşullar altında birçok olay isteğini aynı anda işlemesi gereken bir uygulamanız olabilir. Veya sınırlı veya kesintili İnternet bağlantısına sahip IoT cihazlarından gönderilen verileri işleyen bir uygulamanız olabilir. Her iki durumda da, geleneksel yaklaşım, en yüksek çalışma kapasitelerini kaldırabilecek güçlü bir sunucunun sağlanmasını gerektirecektir, ancak bu sunucu çoğu zaman yetersiz kullanılır. Sunucusuz bir mimariyle, yalnızca gerçekten kullandığınız sunucu kaynakları için ödeme yaparsınız. Sunucusuz bilgi işlem, belirli toplu işlem türleri için de iyi olacaktır.Sunucusuz mimari kullanım durumunun kanonik örneklerinden biri, bir dizi bağımsız görüntü dosyasını yükleyen ve işleyen ve bunları uygulamanın başka bir bölümüne gönderen bir hizmettir.
Sunucusuz işlevlerin belki de en belirgin dezavantajı, kasıtlı olarak geçici olmaları ve AlexSoft'un dediği gibi, "uzun vadeli görevler için uygun olmamasıdır." Sunucusuz sağlayıcıların çoğu, kodunuzun birkaç dakikadan uzun süre çalıştırılmasına izin vermez ve bir işlevi döndürdüğünüzde, önceden çalıştırılan örneklerden durum bilgisi olan verileri tutmaz. Bununla ilgili bir sorun, sunucusuz kodun dönmesinin birkaç saniye kadar uzun sürebilmesidir - çoğu kullanım durumu için bir sorun değildir, ancak uygulamanız düşük gecikme gerektiriyorsa uyarılmalıdır.
Rohit Akiwatkar ve Gary Arora'nın belirttiği gibi, diğer birçok dezavantajın satıcı kilitlenmesiyle ilgisi var. Açık kaynak seçenekleri mevcut olsa da, birazdan tartışacağımız gibi, sunucusuz pazar büyük ticari bulut sağlayıcıların hakimiyetindedir. Bu, geliştiricilerin genellikle tedarikçilerinin araç gereçlerini kullandıkları anlamına gelir ve bu da memnun kalmazlarsa geçiş yapmayı zorlaştırır. Sunucusuz bilgi işlemin büyük bir kısmı, tanım gereği, satıcının altyapısında gerçekleştiği için, sunucusuz kodu şirket içi geliştirme ve test işlem hatlarına entegre etmek zor olabilir.
Sunucusuz satıcılar: AWS Lambda, Azure Functions ve Google Cloud Functions
Modern sunucusuz bilgi işlem çağı, Amazon'un bulut hizmetini temel alan bir platform olan AWS Lambda'nın 2014 yılında piyasaya sürülmesiyle başladı. Microsoft, 2016'da Azure Functions'ı takip etti. 2017'den beri beta sürümde olan Google Cloud Functions, nihayet üretim durumuna ulaştı Üç hizmetin biraz farklı sınırlamaları, avantajları, desteklenen dilleri ve iş yapma yolları vardır. Rohit Akiwatkar, üçü arasındaki farklar hakkında iyi ve ayrıntılı bir özet sunuyor. Ayrıca, açık kaynak Apache OpenWhisk platformunu temel alan IBM Cloud Functions da çalışıyor.
Tüm sunucusuz bilgi işlem platformları arasında AWS Lambda en göze çarpanıdır ve açıkça gelişmek ve olgunlaşmak için en çok zamana sahip olmuştur. geçen yıl AWS Lambda'ya eklenen güncellemeleri ve yeni özellikleri kapsamaktadır.
Sunucusuz yığınlar
Birçok yazılım dünyasında olduğu gibi, sunucusuz dünya, sunucusuz bir uygulama oluşturmak için gereken farklı bileşenleri bir araya getiren yazılım yığınlarının evrimini gördü . Her yığın , kodu yazacağınız bir programlama dilinden , kodunuz için bir yapı sağlayan bir uygulama çerçevesinden ve platformun anlayacağı ve kod yürütmeyi başlatmak için kullanacağı bir dizi tetikleyiciden oluşur .
Bu kategorilerin her birinde farklı özel teklifleri karıştırıp eşleştirebilmenize rağmen, kullandığınız tedarikçiye bağlı olarak bazı çakışmalarla sınırlamalar vardır. Örneğin, diller için AWS Lambda'da Node.js, Java, Go, C # ve Python kullanabilirsiniz, ancak Azure işlevlerinde yalnızca JavaScript, C # ve F # yerel olarak çalışır. Tetikleyiciler söz konusu olduğunda, AWS Lambda en uzun listeye sahiptir, ancak bunların çoğu Amazon Simple Email Service ve AWS CodeCommit gibi AWS platformuna özeldir; Bu arada Google Cloud Functions, genel HTTP istekleriyle tetiklenebilir. Paul Jaworski, büyük üç teklifin her biri için yığınlara derinlemesine bir bakış atıyor.
Sunucusuz çerçeveler
Denklemin çerçeve kısmında biraz kalmaya değer , çünkü bu, uygulamanızı nasıl geliştireceğiniz hakkında çok şey tanımlayacaktır. Amazon'un açık kaynak Sunucusuz Uygulama Modeli (SAM) olan kendi yerel teklifi vardır, ancak çoğu platformlar arası ve aynı zamanda açık kaynaklı olan diğerleri de vardır. En popüler olanlardan biri genel olarak Sunucusuz olarak adlandırılır ve AWS Lambda, Azure Functions, Google Cloud Functions ve IBM OpenWhisk gibi desteklenen platformların her biri için aynı deneyimi sağladığını vurgular. Diğer bir popüler teklif, belirli sağlayıcılarda mevcut olmayan bazı dilleri savaşa sokmaya yardımcı olabilecek Apex'tir.
Sunucusuz veritabanları
Yukarıda belirttiğimiz gibi, sunucusuz kodla çalışmanın bir tuhaflığı, kalıcı bir duruma sahip olmamasıdır; bu, yerel değişkenlerin değerlerinin örneklerde kalıcı olmadığı anlamına gelir. Kodunuzun erişmesi gereken kalıcı veriler başka bir yerde saklanmalıdır ve büyük satıcılar için yığınlarda bulunan tetikleyicilerin tümü, işlevlerinizin etkileşime girebileceği veritabanları içerir.
Bu veritabanlarından bazıları sunucusuz olarak adlandırılır . Bu, verilerin süresiz olarak saklanması dışında, bu makalede tartıştığımız diğer sunucusuz işlevler gibi davrandıkları anlamına gelir. Ancak bir veritabanının sağlanması ve sürdürülmesiyle ilgili yönetim yükünün çoğu bir kenara atılır. Geliştirici Jeremy Daly'nin dediği gibi, "Tek yapmanız gereken bir küme yapılandırmak ve ardından tüm bakım, yama, yedekleme, çoğaltma ve ölçeklendirme sizin için otomatik olarak halledilir." Hizmet olarak işlev tekliflerinde olduğu gibi, yalnızca gerçekte kullandığınız işlem süresi için ödeme yaparsınız ve talepleri karşılamak için kaynaklar gerektiği gibi yukarı ve aşağı döndürülür.
Üç büyük sunucusuz sağlayıcının her biri kendi sunucusuz veritabanlarını sunar: Amazon'da Aurora Sunucusuz ve DynamoDB, Microsoft'ta Azure Cosmos DB ve Google'ın Cloud Firestore vardır. Yine de mevcut olan tek veritabanları bunlar değil. Nemanja Novkovic daha fazla teklif hakkında bilgiye sahip.
Sunucusuz bilgi işlem ve Kubernetes
Kapsayıcılar, sunucusuz teknolojinin kaputun altında kullanılmasına yardımcı olur, ancak bunları yönetmenin ek yükü satıcı tarafından karşılanır ve bu nedenle kullanıcı tarafından görünmez. Birçoğu, sunucusuz bilgi işlemin, kapsayıcıya alınmış mikro hizmetlerin avantajlarının çoğunu karmaşıklıklarıyla uğraşmak zorunda kalmadan elde etmenin bir yolu olarak görüyor ve hatta kapsayıcı sonrası bir dünya hakkında konuşmaya başlıyor.
Gerçekte, kapsayıcılar ve sunucusuz bilgi işlem, neredeyse kesin olarak yıllarca bir arada var olacaktır ve aslında sunucusuz işlevler, kapsayıcıya alınmış mikro hizmetlerle aynı uygulamada var olabilir. En popüler konteyner düzenleme platformu olan Kubernetes, sunucusuz altyapıyı da yönetebilir. Aslında, Kubernetes ile tek bir kümede farklı hizmet türlerini entegre edebilirsiniz.
Sunucusuz çevrimdışı
Sunucusuz bilgi işleme başlama olasılığını biraz korkutucu bulabilirsiniz, çünkü etrafta oynamak ve nasıl çalıştığını görmek için bir satıcıya kaydolmanız gerekecek gibi görünüyor. Ancak korkmayın: Kendi yerel donanımınızda sunucusuz kodu çevrimdışı çalıştırmanın yolları vardır. Örneğin AWS SAM, Lambda kodunu çevrimdışı olarak test etmenize olanak tanıyan bir Yerel özellik sağlar. Sunucusuz uygulama çerçevesini kullanıyorsanız, kodu yerel olarak çalıştırmanıza olanak tanıyan bir eklenti olan sunucusuz-çevrimdışı seçeneğini inceleyin. Mutlu deneyimler!