Sunucusuz Uygulamalar Oluşturmada iFaaS ve FaaS (AWS) Arasındaki Maliyet ve Verimlilik
Sunucusuz mimari, geliştiricilerin sunucuları yönetmeden ve boşta kalan bulut hizmetleri için ödeme yapmadan kod oluşturmasına ve çalıştırmasına olanak tanıyan güçlü bir sistem tasarımıdır.
AWS, güçlü bir Sunucusuz sistem oluşturabileceğiniz en büyük bulut hizmeti sağlayıcılarından biridir. Ancak, Sunucusuz Uygulamalar yaparken Lolo Code (hizmet olarak entegrasyon işlevi) ile AWS (hizmet olarak işlev) arasındaki farklara aşağıda değinmek istediğimiz üç bakış açısı vardır.
- Maliyet
- Verim
- Yeterlik
AWS Fiyatlandırması
AWS, fiyatlandırma için kullandıkça öde yaklaşımı sunar. Diğer bir deyişle, AWS kaynaklarını kullandığınız kadarını ödersiniz.
Fiyatlandırma Örneği AWS
Dinamik web sayfası içeriğini döndürmek için Lambda'yı çağıran Sunucusuz Web Uygulamasında bir API kullanılır. Site dakikada 10.000 sayfa yüklemesi alıyor. Her API isteği 12 KB ve yanıt 46 KB'dir.
Bu, ayda toplam 432 milyon istek olacaktır.
Aylık maliyetler = 418,8 USD (milyon başına 0,97 USD) * Amazon API Gateway maliyetlerinde (Lambda veya DynamoDB hariç)
Lolo Kodu Fiyatlandırması
Lolo Code size kullandıkça öde modeli de sunar, ancak bu daha basittir; olayların toplamı yerine uygulamanızın eşzamanlı olarak işlemesi gereken olay miktarı için ödeme yaparsınız.
256 mb belleğe ve 0,125 çekirdeğe (CPU) sahip 1 LCU'lu (veya Replica) 1 Uygulamaya ayda 9 Euro'dan başlayan fiyatlarla abone olabilirsiniz. Ücretsiz kullanım, her biri 1 LCU'ya sahip iki uygulama içerir, ancak uygulamayı çalışır durumda tutmak için haftada bir kez uygulamayla etkileşim kurmanızı gerektirir. Ücretsiz katmanlı bir uygulama için kopyalarınızı artırmak istiyorsanız, fiyat her biri 9 €'dan başlar.
Fiyatlandırma Örneği Lolo Kodu
API Gateway için yukarıdaki ile aynı örneği alarak bazı hesaplamalar yaptık.
Site dakikada 10.000 sayfa yükleme alıyorsa ve her bir API isteği 12 KB ve yanıt 46 KB ise, bir Lolo uygulaması için 10.000 req/dk işlememiz gerekir. Bu, 0.131 (çekirdek) ve 85 mb bellek gerektirir. Sonuç olarak, bu, her biri 9 € değerinde iki kopya gerektirir, ancak yine de o uygulama içinde daha fazla istek için yerimiz olacaktır. Sonuç
Aylık maliyet = Lolo uygulaması için aylık 18 € maliyet.
Lolo, AWS Lambda ve API Gateway'in bir kombinasyonu olarak görülebilir. Dinamik web sayfası içeriğinizi depolamak için Lolo'nun pişmiş devlet deposunu da kullanabilirsiniz. Bu şekilde hiçbir gizli maliyet olmayacaktır. Ödeyeceğiniz toplam tutar ayda sadece 18 € olacaktır.
Performans: iFaaS ve FaaS arasındaki farklar
AWS, ihtiyacınız olan her şeyi sunabilir ve artıklık, ölçeklenebilirlik ve yüksek kullanılabilirlik ile büyük ölçekli bir uygulama tasarlayabilirsiniz. Öte yandan, potansiyelini ortaya çıkarmak için ağ sistemlerini iyi bilmeli ve AWS mimarisine aşina olmalısınız. Sunucusuz da dezavantajları ile birlikte gelir. Bunlardan biri kötü şöhretli "soğuk başlangıç".
Örnek vermek gerekirse, uygulamanız, bir kap kod çalıştırmaya hazır olana kadar belirli bir süre bekleyecektir. Bu isteğin işlenmesi daha uzun sürer çünkü Sunucusuz bir uygulamanın işlevi hızlandırması gerekir (örn. kodu, kitaplığı, modülleri/vb. indirme ve kodu çalıştırmak için bir ortam başlatma). Bu sorun, Lolo Code veya AWS'deki tüm Sunucusuz uygulamalarda görünür.
AWS
AWS, Lambda filolarının 2018'de Firecracker teknolojisine geçişinden bu yana herkesin bildiği gibi daha iyi hale geldi. Ancak, işlevin hâlâ hızlanması gerektiğinden, soğuk başlangıçlar geçerli olacaktır.
AWS'de Lambda'yı minimum sayıda kapsayıcı ile uyandırabilirsiniz. Ancak sürekli olarak çalıştırmak için ekstra bir maliyet ödemeniz gerekecek.
Bir kullanıcıya bu yaz (AWS EU kullanarak) AWS Lambda'nın gecikmeli başlatmaları hakkında bir test * yaptırdık. Deneyin sonucu aşağıdadır.
+-----------+--------------------
| time | ms
+-----------+--------------------
| 1 min | 180 ms
| 15 min | 750 ms
| 3h | 1467 ms
| 10h | 2060 ms
+-----------+--------------------
Lolo Code'daki uygulamalarda da "Soğuk Başlatma" sorunu var ama Lolo Uygulamanız siz onu durdurana kadar çalışmaya devam ediyor. Yani, Lolo Code kapsayıcılarla çalıştığından, uygulamanız siz onu durdurana kadar teknik olarak her zaman çalışır durumda olacaktır. Esasen, soğuk başlangıçları umursamanıza gerek yok.
Ancak, AWS'de testi yapan yukarıdan kullanıcı, aynı testi Lolo Code'da yaptı. * Sonuçları aşağıda gösterilmiştir.
+-----------+--------------------
| time | ms
+-----------+--------------------
| 1 min | 172 ms
| 15 min | 210 ms
| 3h | 602 ms
| 10h | 890 ms
+-----------+--------------------
Dikkate alınması gereken başka bir şey de, komut dosyanız çok uzun süre çalışıyorsa AWS en iyi seçim olmayabilir. AWS Lambda'nın maksimum zaman aşımı 900 saniye (15 dakika), Lolo'nun maksimum zaman aşımı süresi yoktur.
Verimlilik: Sunucusuz bir uygulama nasıl oluşturulur ve yönetilir?
Hem AWS'de hem de Lolo Code'da API'ler oluşturmak kolaydır. Ancak, fark var.
AWS
AWS'de Lambda işlevinizi oluşturursunuz ve daha sonra onu, tetikleyici görevi görecek başka bir hizmet olan API Gateway ile bağlarsınız. Burada, bir şey olduğunda tetiklenecek anonim bir işleve sahipsiniz. Bu, yalnızca bir olay gerçekleştiğinde tetiklenen anonim bir işlev olan FaaS için idealdir.
İşlev durum bilgisiz olduğundan başka bir yerden veri almanız gerekir; bu durumda verileri depolamak ve almak için AWS DynamoDB kullanabilirsiniz.
Bu, ölçeklenebilir ve sağlam bir tasarıma benziyor, ancak bazı önemli faktörleri göz önünde bulundurmanız gerekiyor:
- Yazılım kodundaki değişiklikler nasıl yönetilir?
- Uygulamanızı hızlı bir şekilde nasıl dağıtabilir veya özelleştirebilirsiniz?
- Herhangi bir altyapı sorunu olması durumunda hizmetleri kontrol etmeye nereden başlamalı?
Lambda, API Gateway ve DynamoDB ile bir HTTP API'sinin nasıl oluşturulacağına ilişkin eksiksiz bir eğitime buradan bakın .
Lolo Kodu
Lolo Code ile bir HTTP tetikleyici ekleyebilir ve ardından bir veritabanı için pişmiş durum deposunu kullanabilirsiniz. Lambda'nız olarak işlev görmesi için yeni bir ham işlev ekleyebilirsiniz (yukarıdaki tam kullanım durumunu takip etmek için).
Lolo uygulamanız şöyle görünebilir.
Sadece kodunu (NodeJS) değiştirerek kod bloklarında ne olduğuna karar vereceksiniz ve ardından yeniden adlandıracaksınız.
Ayrıca Lolo Code, mevcut şablon işlevlerini kopyalayıp kullanabileceğiniz ve kendi şablonlarınızı oluşturabileceğiniz Kitaplık işlevleri sunar. API durumunda, hızlıca bir CRUD API oluşturmak için Lolo/CRUD API v3 işlevini kullanabiliriz. Bu, sıfırdan kendimizinkini kurmaktan daha hızlı olacaktır.
Farklı yerlerde çok fazla şeyi değiştirmek zorunda değilsiniz. Lolo Code ile tüm işleriniz tek bir yerde.
Uygulamanızı kaydettikten ve çalıştırdıktan sonra, onu çalışır durumda tutmak için kendi sunucularınızın bakımını yapma veya sağlama konusunda endişelenmenize gerek yoktur (yani, tamamen "sunucusuzdur"). Kendi genel bulut hesabınızda veya özel veri merkezinizde özel bir çalışma zamanı kullanmaya karar vermediğiniz sürece. Lolo runtime-d belgelerine buradan bakın . Runtime-d, herhangi bir dizüstü bilgisayarı veya linux sunucusunu bir Lolo çalışma zamanına dönüştüren bağımsız bir ikili programdır.
Özet
AWS, dünya çapındaki veri merkezlerinden tam özellikli hizmetler sunan yaygın bir bulut platformudur.
AWS ile birçok şey yapabilirsiniz, ancak fikrinizi bir uygulamaya dönüştürmek ve AWS'de dağıtmak için yeterli çaba ve zaman gerekir. Lolo Code, gelişiminizi hızlandırmanıza ve daha az maliyetle çalışmasını sağlamanıza yardımcı olacaktır. Lolo Code, uygulamaları devreye almak için AWS bulutunu kullansa da, size kendi çalışma zamanlarınızı kullanma yeteneği sunarak onu buluttan bağımsız hale getirir.
❤️ Lolo