App Engine ve Compute Engine arasındaki farkın ne olduğunu merak ediyordum. Farkı kimse açıklayabilir mi?
App Engine ve Compute Engine arasındaki farkın ne olduğunu merak ediyordum. Farkı kimse açıklayabilir mi?
Yanıtlar:
App Engine bir Hizmet Olarak Platformdur. Bu, kodunuzu dağıtmanız anlamına gelir ve platform sizin için her şeyi yapar. Örneğin, uygulamanız çok başarılı olursa App Engine, artan ses düzeyini işlemek için otomatik olarak daha fazla örnek oluşturur.
App Engine hakkında devamını oku
Compute Engine bir Hizmet Olarak Altyapıdır. Kendi sanal makine örneklerinizi oluşturmanız ve yapılandırmanız gerekir. Size daha fazla esneklik sağlar ve genellikle App Engine'den çok daha düşük maliyetlidir. Dezavantajı, uygulamanızı ve sanal makinelerinizi kendiniz yönetmeniz gerektiğidir.
Compute Engine hakkında devamını oku
Gerekirse hem App Engine hem de Compute Engine'i karıştırabilirsiniz. Her ikisi de Google Cloud Platformunun diğer bölümleriyle iyi çalışır .
EDIT (Mayıs 2016):
Daha önemli bir ayrım: App Engine'de çalışan projeler, herhangi bir istek gelmezse sıfır örneğe kadar ölçeklenebilir. Bu, geliştirme saatlerinde son derece kullanışlıdır; Esnek çalışma zamanı (yani "yönetilen VM'ler") sürekli çalışmak için en az bir örnek gerektirir.
EDIT (Nisan 2017):
Bulut İşlevleri (şu anda beta sürümündedir), App Engine'in soyutlama açısından bir sonraki seviyesidir - örnek yok! Geliştiricilerin, HTTP istekleri, Cloud Storage'daki değişiklikler vb. Gibi farklı olaylara yanıt olarak yürütülen ısırık boyutlu kod parçalarını dağıtmasına izin verir.
App Engine ile en büyük fark, işlevlerin 100 milisaniye başına fiyatlandırılması ve App Engine'in örneklerinin yalnızca 15 dakika işlem yapılmaması durumunda kapanmasıdır. Diğer bir avantaj, Bulut İşlevlerinin hemen yürütülmesidir, ancak App Engine'e yapılan bir çağrı için yeni bir örnek gerekebilir - ve yeni bir örneği soğuk başlatma (çalışma süresine ve kodunuza bağlı olarak) birkaç saniye veya daha uzun sürebilir.
Bu, Bulut İşlevlerini (a) nadir çağrılar için ideal hale getirir - bir şey olması durumunda bir örneği canlı tutmaya gerek yoktur, (b) örneklerin sık sık döndüğü ve kapatıldığı yükleri hızla değiştirmek ve muhtemelen daha fazla kullanım durumu.
Temel fark olmasıdır Google App Engine ( GAE'nin ) bir olan bir Servisi (olarak Platformu PaaS ) oysa Google Hesaplama Motoru ( GCE ) bir olan bir Servisi (Olarak Altyapı IaaS ) .
Uygulamanızı GAE'de çalıştırmak için kodunuzu yazmanız ve GAE'ye dağıtmanız yeterlidir, başka bir baş ağrısı yoktur. GAE tamamen ölçeklenebilir olduğundan, trafiğin yükselmesi durumunda otomatik olarak daha fazla örnek alır ve trafik azaldığında örnekleri azaltır. Gerçekten kullandığınız kaynaklar için ücretlendirilirsiniz , yani uygulamanızın gerçekten kullandığı Örnek-Saat , Aktarılan Veri , Depolama vb. İçin faturalandırılırsınız . Ancak kısıtlama, uygulamanızı yalnızca Python, PHP, Java, NodeJS, .NET, Ruby ve ** Go'da oluşturabilirsiniz .
Öte yandan, GCE size Sanal Makine şeklinde tam altyapı sağlar . Oraya herhangi bir program yazabildiğiniz veya yükleyebildiğiniz için bu VM'lerin ortamı ve çalışma zamanı üzerinde tam kontrole sahipsiniz. Aslında GCE, Google Veri Merkezlerini sanal olarak kullanmanın bir yoludur. GCE'de, Yük Dengeleyici'yi kullanarak ölçeklenebilirliği kaldıracak şekilde altyapınızı el ile yapılandırmanız gerekir .
Hem GAE hem de GCE, Google Cloud Platform'un bir parçasıdır .
Güncelleme: Mart 2014'te Google, App Engine altında Yönetilen Sanal Makine adlı yeni bir hizmet duyurdu . Yönetilen VM'ler, uygulama motoru uygulamalarına uygulama platformu, CPU ve bellek seçeneklerine göre biraz daha esneklik sunar. GCE gibi, uygulama motoru uygulaması için bu VM'lerde özel bir çalışma zamanı ortamı oluşturabilirsiniz. Aslında App Engine'in Yönetilen VM'leri IAAS ve PAAS arasındaki sınırı bir ölçüde bulanıklaştırıyor.
Basitçe söylemek gerekirse: hesaplama motoru size tam kontrol / sorumluluğunuz olan bir sunucu verir. İşletim sistemine doğrudan erişiminiz vardır ve genellikle bir web sunucusu, veritabanı vb. Olan istediğiniz tüm yazılımı yüklersiniz.
Uygulama motorunda temel yazılımların hiçbirinin işletim sistemini yönetmezsiniz. Sadece kod (Java, PHP, Python veya Go) ve voila yüklersiniz - sadece çalışır ...
App motoru, özellikle deneyimsiz insanlar için ton baş ağrısı kaydeder, ancak 2 önemli dezavantajı vardır: 1. daha pahalı (ama hesaplama motoru ücretsiz bir kota var) 2. daha az kontrole sahip, bu nedenle bazı şeyler sadece değil mümkün veya yalnızca belirli bir şekilde mümkündür (örneğin dosya kaydetme ve yazma).
Veya daha da basitleştirmek için (zaman zaman GAE Standardı ve GAE Flex'i ayırt edemediğimizden):
Compute Engine , örneğin küçük bir web sitesi + veritabanı dağıtacağınız sanal bir PC'ye benzer. Kurulu disk sürücülerinin kontrolü dahil her şeyi yönetirsiniz. Bir web sitesi dağıtırsanız DNS vb.
Google App Engine (Standart) , yürütmek için kod yüklediğiniz ve geri kalanını düşünmediğiniz salt okunur korumalı bir klasör gibidir (evet: salt okunur - sizin için yüklenmiş sabit bir kitaplık grubu vardır ve dağıtamazsınız 3. taraf kütüphaneleri isteğe bağlıdır). DNS / Alt alan adlarını vb. Eşlemek çok daha kolaydır.
Google App Engine (Esnek) aslında Standart motordan daha fazla güce sahip olduğunuz, örneğin okuma / yazma izinlerine sahip olduğunuz (ancak bir Compute Engine ile karşılaştırıldığında daha az) bir dosya sistemi (sadece kilitli bir klasör değil) gibidir. ). GAE standardında sizin için yüklenmiş sabit bir kitaplık grubunuz vardır ve üçüncü taraf kitaplıkları istediğiniz şekilde dağıtamazsınız. Esnek ortamda, özel oluşturma ortamları (Python 3 gibi) dahil olmak üzere uygulamanızın bağlı olduğu her türlü kütüphaneyi yükleyebilirsiniz.
GAE Standardı ile uğraşmak çok zahmetli olsa da (Google kulağa basit gelmesine rağmen), baskı altına alındığında gerçekten iyi ölçeklenir. Bu çok hantaldır çünkü kilitli ortamla uyumluluğu test etmeniz ve sağlamanız ve kullandığınız herhangi bir üçüncü taraf kütüphanesinin GAE standardında çalışmayabileceğinden habersiz başka herhangi bir üçüncü taraf kütüphanesi kullanmadığından emin olmanız gerekir. Uygulamada kurulumu daha uzun sürer, ancak basit kurulumlar için daha uzun vadede daha faydalı olabilir.
Listenin yukarısındaki App Engine vs Compute Engine notlarına ek olarak, Google Kubernete Engine ile bir karşılaştırma ve küçükten büyüğe kadar geniş bir uygulama yelpazesi deneyimine dayanan bazı notlar da içerir. Daha fazla puan için App Engine Ortamı ve Sayfa Seçme sayfasındaki App Engine Standard ve Flex'teki özelliklerin üst düzey açıklamasına bakın . App Engine ve Kubernetes dağıtımının başka bir karşılaştırması için Daz Wilkin App Engine Flex veya Kubernetes Engine'in gönderisine bakın .
App Engine Standardı
Artıları
Eksileri
App Engine Flex
Artıları
Eksileri
Google Kubernetes Motoru
Artıları
Eksileri
Bilgi İşlem Motoru
Artıları
Eksileri
Daha önce açıklandığı gibi, Google Compute Engine (GCE) bir hizmet olarak Altyapı (IaaS), Google App Engine (GAE) bir Hizmet olarak Platform (PaaS). Farkı daha iyi anlamak için aşağıdaki şemayı kontrol edebilirsiniz ( Buradan alınmıştır ve daha iyi açıklanmıştır ) -
Google Compute Engine
GCE, GCP hizmetlerinin çoğu yönetim katmanının altında GCE örnekleri (VM'ler) kullandığından (hangisinin kullanmadığından emin değil) Google Cloud Platformundan (GCP) sağlanan önemli bir hizmettir. Buna App Engine, Cloud Functions, Kubernetes Engine (Önceki Konteyner Motoru), Cloud SQL vb. Dahildir. GCE örnekleri orada en özelleştirilebilir birimdir ve bu nedenle yalnızca uygulamanız başka hiçbir GCP hizmetinde çalışamadığında kullanılmalıdır. Çoğu zaman insanlar GCE'yi Şirket İçi uygulamalarını GSO'ya aktarmak için kullanırlar çünkü minimum değişiklik gerektirir. Daha sonra, uygulamalarının ayrı bileşenleri için diğer GCP hizmetlerini kullanmayı seçebilirler.
Google App Engine
GAE, GCP tarafından sunulan ilk hizmettir (Google, bulut işine gelmeden çok önce). 0'dan sınırsız örneğe otomatik ölçeklendirir (altında GCE kullanır). Standart Çevre ve Esnek Çevre olmak üzere 2 çeşidi vardır.
Standart Ortam gerçekten hızlıdır, hiç kimse uygulamanızı kullanmadığında 0 örneğe kadar ölçeklenir, saniyeler içinde ölçeklenir ve önbelleğe alma, kimlik doğrulama vb. İçin özel Google hizmetlerine ve kitaplıklarına sahiptir. Standart ortamla ilgili uyarı, çok kısıtlayıcı olmasıdır çünkü bir sanal alanda çalışır. Yönetilen çalışma zamanlarını yalnızca belirli programlama dilleri için kullanmanız gerekir. Son eklenenler Node.js (8.x) ve Python 3.x'tir. Eski çalışma zamanları Go, PHP, Python 2.7, Java vb. İçin kullanılabilir.
Esnek Ortam, liman işleyicilerini kullandığı için özel çalışma zamanlarını kullanmanıza izin verdiği için daha açıktır. Böylece, çalışma zamanınız sağlanan çalışma zamanlarında kullanılamıyorsa, yürütme ortamı için her zaman kendi dockerfile'ınızı oluşturabilirsiniz. Bununla ilgili uyarı, hiç kimse uygulamanızı kullanmasa bile en az 1 örneğin çalışmasını gerektiriyor, ayrıca yukarı ve aşağı ölçeklendirme birkaç dakika gerektiriyor.
GAE'yi Kubernetes Engine ile esnek hale getirmeyin, çünkü daha sonra gerçek Kubernetes kullanıyor ve çok daha fazla özelleştirme ve özellik sağlıyor. GAE Flex, durum bilgisi olmayan kaplar istediğinizde ve uygulamanızın yalnızca HTTP veya HTTPS protokollerine güvenmesi gerektiğinde kullanışlıdır. Diğer protokoller için tek seçenek Kubernetes Engine (GKE) veya GCE'dir. Daha iyi bir açıklama için diğer cevabımı kontrol et .
App Engine, geliştiricilere Google Compute Engine çekirdeklerini kontrol etme ve Google Compute Engine veri işleme uygulamaları için web'e dönük bir ön uç sağlama olanağı verir.
Öte yandan, Compute Engine sanal makineleriniz için doğrudan ve eksiksiz bir işletim sistemi yönetimi sunar. Uygulamanızı sunmak için kaynaklara ihtiyacınız olacak ve Google Cloud Storage, ne için kullanılırsa kullanılsın, varlıklarınızı ve verilerinizi depolamak için idealdir. Tüm dünyada barındırma ile hızlı veri erişimi elde edersiniz. Güvenilirlik% 99,95'lik bir çalışma süresinde garanti edilir ve Google ayrıca verilerinizi yedekleme ve geri yükleme ve ister inan ister inanma, depolama sınırsızdır.
Varlıklarınızı Google Cloud Storage ile depolayabilir, depolayabilir, alabilir, görüntüleyebilir ve silebilirsiniz. Ayrıca, Cloud Storage'da tutulan düz veri sayfalarını hızlı bir şekilde okuyabilir ve bunlara yazabilirsiniz. Google Cloud serisinde sırada BigQuery var. BigQuery ile devasa miktarda veriyi analiz edebilirsiniz, saniyeler içinde milyonlarca kayıttan bahsediyoruz. Erişim, basit bir kullanıcı arayüzü veya Temsili Durum Transferi veya REST arayüzü aracılığıyla gerçekleştirilir.
Veri depolama, şüphelenebileceğiniz gibi, bir sorun değildir ve yüzlerce TB'ye ölçeklendirilir. BigQuery'ye Java, .NET, Python, Go, Ruby, PHP ve Javascript için de dahil olmak üzere birçok istemci kitaplığı aracılığıyla erişilebilir. Bu istemci kütüphaneleri veya bir web kullanıcı arayüzü üzerinden erişilebilen NoSQL adlı SQL benzeri bir sözdizimi mevcuttur. Son olarak, Google Cloud platform veritabanı seçenekleri, Cloud SQL ve Cloud Datastore hakkında konuşalım.
Büyük bir fark var. Cloud SQL, başta MySQL olmak üzere ilişkisel veritabanları için kullanılırken Cloud Datastore, noSQL kullanan ilişkisel olmayan veritabanları içindir. Cloud SQL ile, ABD, Avrupa veya Asya'da, 100 GB depolama alanı ve veritabanı örneği başına 16 GB RAM ile barındırma seçeneğine sahipsiniz.
Cloud Datastore, aylık 50 K okuma / yazma talimatı ve ayda 1 GB veri depolaması karşılığında ücretsiz olarak kullanılabilir. Ancak bu kotaları aşarsanız ücret alınır. App Engine, API arka uçları oluşturmak için Cloud Endpoints, veri analizi ve trend tahmini için Google Tahmin API'sı veya çok dilli çıktı için Google Translate API dahil Google Cloud platformunun daha az bilinen, daha hedefli üyeleriyle de çalışabilir.
App Engine ile tek başına adil bir miktar yapabilirsiniz, ancak diğer Google Cloud platform hizmetleriyle kolay ve verimli bir şekilde çalışma yeteneğini hesaba kattığınızda potansiyel bir hava roketidir.
Bunu bana mantıklı bir şekilde açıklayacağım:
Compute Engine : Kendiniz yapın veya bir BT ekibiniz varsa ve sadece belirli bir işletim sistemine sahip bir bulutta (örneğin linux) bir bilgisayar kiralamak istiyorsanız, Compute Engine'e gidersiniz. Her şeyi kendin yapmalısın.
App Engine : (örneğin) bir python programcısıysanız ve çalışan bir web sunucusuna sahip Linux ve gerekli modülleri ve entegre etmek için bazı eklentileri olan en son python 3'ü içeren önceden yapılandırılmış bir bilgisayarı bulutta kiralamak istiyorsanız diğer harici hizmetler için App Engine'i kullanabilirsiniz.
Sunucusuz Kap (Cloud Run) : Yerel kurulum ortamınızın tam görüntüsünü dağıtmak istiyorsanız (örneğin: python 3.7 + flask + sklearn), ancak sunucu, ölçekleme, vb. İle uğraşmak istemiyorsanız. yerel makinenizde (docker aracılığıyla) ve ardından Google Run'a dağıtın.
Sunucusuz Mikro Hizmet (Bulut İşlevleri) : Belirli bir işi yapan bir grup API (işlev) yazmak istiyorsanız, google Bulut İşlevleri'ne gidersiniz. Sadece bu belirli işlevlere odaklanırsınız, işinizin geri kalanı (sunucu, bakım, ölçeklendirme, vb.) İşlevlerinizi mikro hizmet olarak göstermek için yapılır.
Daha derine inerken, biraz esneklik kaybedersiniz, ancak gereksiz teknik yönlerden endişe duymazsınız. Ayrıca biraz daha fazla ödeme yaparsınız, ancak zaman ve maliyetten tasarruf edersiniz (BT bölümü): başka biri (google) bunu sizin için yapıyor.
Yük dengeleme, ölçeklendirme, vb. İle ilgilenmek istemiyorsanız, uygulamanızı ayrı bir depolamada (veritabanı veya blob depolama) kalıcı olan her şeyi yazan "durumsuz" web hizmetlerine bölmek çok önemlidir. Sonra Cloud Run ve Cloud Functions'ın ne kadar harika olduğunu göreceksiniz.
Şahsen, Google Cloud Run'ı harika bir çözüm buldum, gelişimde mutlak özgürlük (vatansız olduğu sürece), bir web hizmeti olarak ortaya çıkarın, çözümünüzü docker, Cloud Run ile dağıtın. Google'ın BT ve DevOps'unuz olmasına izin verin, ölçeklendirme ve bakım ile ilgilenmeniz gerekmez.
Diğer tüm seçenekleri denedim ve her biri farklı amaç için iyi ama Google Run sadece harika. Bana göre, geliştirme esnekliğini kaybetmeden gerçek sunucusuz.
Bulutta barındırılan Sanal Makineler (VM'ler). Buluttan önce bunlara genellikle Sanal Özel Sunucular (VPS) deniyordu. Bunları, işletim sistemini yükleyip yapılandırdığınız, uygulamanızı yüklediğiniz, veritabanını yüklediğiniz, işletim sistemini güncel tuttuğunuz vb. Gibi fiziksel bir sunucuyu kullandığınız gibi kullanırsınız. Bu, Altyapı- Hizmet olarak (IaaS).
VM'ler, veri merkezinizdeki bir VM veya sunucuda çalışan mevcut bir uygulamanız olduğunda ve uygulamayı kolayca GCP'ye geçirmek istediğinizde yararlı olur.
App Engine, işletim sistemi, ağ iletişimi ve fiziksel bir sunucu veya VM ile yönetmeniz gereken diğer birçok şeyle uğraşmanıza gerek kalmadan kodunuzu barındırır ve çalıştırır. Uygulamanızı otomatik olarak dağıtabilen, versiyonlandırabilen ve ölçeklendirebilen bir çalışma zamanı olarak düşünün. Buna Hizmet Olarak Platform (PaaS) denir.
App Engine, uygulamanızın otomatik dağıtımını ve otomatik ölçeklendirmesini istediğinizde en kullanışlıdır. Uygulamanız özel işletim sistemi yapılandırması gerektirmedikçe, App Engine, VM'leri elle yapılandırmak ve yönetmek yerine genellikle avantajlıdır.