Cloud Computing

Google Cloud Platformu | App Engine

 

Google App Engine uygulamaları, oluşturulması ve yönetilmesi kolay olup, ihtiyaç olan network trafiğine ve depolama alanına göre kolaylıkla kendini scaling (ölçeklendirme) yapabilmektedir. App Engine servisini kullanırken yönetmeniz gereken sunucuları düşünmenize gerek kalmaz. Uygulamanızı basit bir şekilde ortama upload edersiniz ve çalışmak için artık hazırdır.

 

App Engine uygulamaları gelen network trafiğine göre otomatik olarak kendini scaling (ölçeklendirme) yapabilmektedir. Load balancing (yük dengeleme), mikro servisler, authorization (yetkilendirme), SQL ve noSQL veritabanları, memcache, traffic splitting (network trafiğini bölme ve yönlendirme), logging, arama, versioning (eski sürümlere erişebilme), roll out ve roll back (yayınlama ve geri alma), scanning (güvenlik taraması) gibi pek çok servis entegre olarak desteklenmekte ve ileri düzeyde customize (özelleştirme) yapılabilmektedir.

 

App Engine ortamları (environment) standart ve flexible (esnek) environment olarak iki çeşit olup bir dizi programlama dilini desteklemektedir. Örneğin; Python 3.4, Java 8, ve Node.js’in son sürümleri flexible ortamda mevcut olup, PHP sadece standart ortamda mevcuttur. Go dili ise her iki ortamda da mevcuttur. Bu iki ortam uygulamanızın nasıl çalıştığına bağlı olarak size maksimum esneklik sağlamaktadır çünkü herbir ortamın kendine has iyi yanları mevcuttur.  App Engine Environments sayfasından konu hakkında daha fazla bilgi öğrenebilirsiniz.

 

clip_image002

 

App Engine Standard Environment

 

App Engine standard environment ortamı Google’ın altyapısında çalışan container tabanlı instances’lardır. Container’lar önceden ayarlanmış belirli bir runtime ortamını çalıştırmaya müsait sanal imajlardır (Java 7, Python 2.7, Go ve PHP). Her bir runtime ortamı ayrıca App Engine Standard API’ları destekleyen kütüphaneleri içermektedir. Pek çok uygulama için standard environment runtime’ı ve kütüphaneler tüm ihtiyacınızı karşılayabilir.

 

App Engine standard environment’ı büyük boyutlu dosyalarla, aşırı yük altında bile çalışabilecek güvenlilir ve sağlam bir uygulama hazırlayıp, deploy etmeyi kolaylaştırmaktadır. Ortam aşağıdaki özellikleri içermektedir:

 

  • Sorgulama (querying), sınıflama (sorting) ve işleme (transaction) yapılabilen kalıcı bir depolama alanı (persistent storage)
  • Otomatik ölçeklendirme (scaling) ve yük dengeleme (load balancing)
  • Bir isteğin kapsamı dışında çalışabilmek için asenkron işlem kuyruğu (asynchronous task queues)
  • Belirli zamanlarda,durumlarda yada belirli aralıklarla çeşitli event’ler tetikleyebilmek için zamanlaşmış tasklar (scheduled tasks)
  • Google’ın diğer bulut servisleri ve API’ları ile entegrasyon

 

Uygulamalar güvenli, sandboxed (herbiri kendine ait izole edilmiş özel güvenli bir alanda kendine ait ayrılmış kaynaklar ile çalışan), App Engine standard environment’a talepleri birden çok sunucuya yönlendirmeye ve gelen trafik yoğunluğuna göre serverları scaling yapabilmeye izin veren bir ortamda, uygulamanız ise bu ortamda donanımdan, işletim sisteminden ve sunucunun bulunduğu lokasyondan bağımsız olarak kendine ait olan güvenli (secure) ve güvenilir (reliable) bir ortam içerisinde çalışır.

 

Standard environment geliştirme kiti (development kit)

 

App Engine için Software Development Kits (SDKs) (Yazılım Geliştirme Kit)’leri desteklenen tüm dillerde mevcuttur. Her bir SDK;

 

  • App Engine’a ait kullanılabilir bütün API’lar ve library’ler,
  • Tüm App Engine servislerini lokal bilgisayarınızda taklit eden, simule edilmiş, güvenli bir sandbox ortamı,
  • Uygulamanızı buluta upload etmenize izin veren ve farklı versiyonlarını yönetmenizi sağlayan deployment araçları içerir.

 

GCP konsolu uygulamanızı production ortamında yönetirken, SDK lokal olarak yönetir. GCP konsolu yeni uygulamalar yaratmak, domain isimlerini ayarlamak, uygulamanızın hangi versiyonunu live (canlı) ortama alınacağını belirlemek, access ve error loglarını incelemek, vs. için web tabanlı bir arayüz kullanır.

 

Instances sınıfları

 

Standard environment’ta çalışan her bir uygulamanın işlem gücünü ve fiyatını belirleyen bir instance class (sınıfı) vardır. Aşağıdaki tablo çeşitli instance sınıflarının memory ve CPU limitlerini özetlemektedir. Ücretlendirme sayfasından fiyatları konusunda bilgi alabilirsiniz.

 

Instance sınıfı

Memory limiti

CPU limiti

B1

128 MB

600 Mhz

B2

256 MB

1.2 Ghz

B4

512 MB

2.4 Ghz

B4_1G

1024 MB

2.4 Ghz

B8

1024 MB

4.8 Ghz

F1

128 MB

600 Mhz

F2

256 MB

1.2 Ghz

F4

512 MB

2.4 Ghz

F4_1G

1024 MB

2.4 Ghz

 

Kotalar ve limitler

 

App Engine standard ortamı, 1 GB veri depolama ve network trafiğini ücretsiz olarak sunmaktadır. Uygulamanızın durumuna göre daha sonra ücretli olarak arttırabilirsiniz. Yinede, bazı özellikler sistemin stabilitesini korumak için kotalardan bağımsız olarak bazı limitler uygulamaktadır. Kotalar hakkında daha fazla bilgi ve onları ihtiyaçlarınıza göre nasıl düzenleyebilirsiniz öğrenmek için Kotalar sayfasını ziyaret edebilirsiniz.

 

Özellikler

 

Bir özellik her runtime dilinde yada sadece bazılarında olabilir. Bir özelliğin işlevselliği genelde mevcut olan tüm runtime ortamlarda aynıdır ama bazı istisnalar olabilir.

 

Her App Engine özelliği durumuna ve kullanılabilirliğine göre sınıflandırılır.

 

  • General Availability (GA) (Genel Kullanılabilirlik) özellikleri halka açık olarak kullanılabilir ve App Engine’in SLA (Service Level Aggrement) (Hizmet düzeyi sözleşmesi) tarafından deprecation (itiraz) policy’si kapsamına alınmıştır. GA’nın uygulanması stabil olup yapılan her değişiklik geriye doğru uyumludur. (backward-compatible). Aksi belirtilmedikçe burada anlatılan App Engine’in tüm özellikleri GA’dır.
  • Beta özellikleri halka açık olarak kullanılabilir. App Engine’in ilerideki yeni sürümünde GA özelliği olabilir yada olmayabilir. Yapılan uygulamalar geriye doğru uyumsuzluklar oluşturabilir (backward-incompatible).
  • Alpha özellikleri App Engine’in ilerideki yeni sürümünde GA yada Beta özelliği olabilir yada olmayabilir. Yapılan uygulamalar geriye doğru backward-incompatible durumlar oluşturabilir. Bazı Alpha özellikleri halka açık olarak kullanılabilir. Bazı özelliklerde onları kullanabilmeniz için talepte bulunmanızı gerektirmektedir.

 

Bazı özellikler üçüncü parti üreticiler tarafından sağlanmaktadır. (third-party vendors). Bazıları da açık kaynak projelerdir (open source).

 

App Engine Flexible Environment

 

App Engine Flexible ortamı şu anda Google’ın beta sürecinde bir servisidir. SLA (Service Level Aggrement) (Hizmet düzeyi sözleşmesi) ve deprecation (itiraz) policy’si kapsamına alınmamıştır. Yapılan uygulamalar geriye doğru uyumsuzluklar oluşturabilir (backward-incompatible). Production ortamında kullanılması Google tarafından şu anda tavsiye edilmemektedir.

 

Flexible ortam, container tabanlı olmak yerine Google Compute Engine altyapısı üzerinde çalışmaktadır. Standart ortamdaki özellikler mevcut olup ek olarak flexible ortamda docker dosyaları kullanarak runtime ortamınızı hatta sanal makinanızın işletim sistemini bile özelleştirebilirsiniz.

 

  • Runtimes: Flexible ortam; Java 8, Servlet 3.1, Jetty 9, Python 2.7, Python 3.4, Node.js ve Go dillerini desteklemektedir. Geliştiriciler; açık kaynak gruplarından docker imajı yada docker dosyası temin ederek bu runtime ortamlarını özelleştirebilir yada Ruby, PHP gibi kendi runtime ortamlarını kullanabilirler.
  • Altyapının özelleştirilebilmesi: Flexible ortamda VM instances’ları GCE sanal makinaları olduğu için, hata ayıklama (debugging) yada ileri düzey özelleştirmeler yapabilmek için her VM ve Docker konteyner’a SSH (Secure Shell) ile bağlanabilirsiniz.
  • Performans: Çok çeşitli CPU ve hafıza (memory) konfigurasyonlarından yararlanabilir, uygulamanızın her bir instance’nın ne kadar CPU ve memory’e ihtiyacı varsa belirleyebilirsiniz. Flexible ortam gereken altyapıyı sizin için hazırlayacaktır.

 

App Engine sanal makinalarınızı aşağıdaki koşulları garanti ederek yönetmektedir;

 

  • Instances’ların sağlık durumu kontrol edilmekte, herhangi bir sorunda gerekli iyileştirmeler yapılmakta, projenin içerisinde diğer servisler ile en iyi şekilde konumlandırılmaktadır.
  • Kritik, geriye doğru uyumlu (backwards-compatible) güncelleştirmeler işletim sistemine otomatik olarak uygulanmaktadır.
  • VM instances’ları projenizin ayarlarına bağlı olarak ilgili region (bölge) tarafından otomatik olarak konumlandırılmakta, ayrıca Google’ın management (yönetim) servisleri, projenize ait tüm VM instances’ları optimum performans için en iyi şekilde konumlandırmayı garanti etmektedir.
  • VM instances’ları haftalık olarak restart edilmektedir. Bu esnada Google’ın management servisleri işletim sistemi ve güvenlikle ilgili güncelleştirmeleri uygulamaktadır.
  • Compute Engine VM instances’larına her zaman root (en yüksek) erişim hakkınız olmaktadır. SSH ve root erişim varsayılan olarak flexible ortamda kapalıdır. Dilerseniz bu erişime izin verebilirsiniz.

 

App Engine Ortamını Seçmek

 

App Engine uygulamanızı yazıda belirtildiği gibi iki çeşit ortamda çalıştırabilirsiniz. Standard ve flexible ortam. Eğer uygulamanızı microservisler mimarını kullanarak planlamışsanız her iki ortamı da aynı anda kullanabilirsiniz.

 

Karşılaştırma

 

Aşağıdaki tablo iki ortam arasındaki farkları kısaca özetlemektedir.

Feature

Standard environment

Flexible environment

Instance başlatma süresi

Milisaniyeler düzeyinde

Dakikalar düzeyinde

Maksimum talep zaman aşımı

60 saniye

24 saat

Arkaplanda işlem parçacıkları

Evet, Kısıtlamalar mevcuttur.

Evet

Arkaplan işlemleri

Hayır

Evet

SSH hata ayıklama

Hayır

Evet

Ölçeklendirme

Elle, Basit, Otomatik

Elle, Otomatik

Lokal diske yazma

Hayır

Evet, geçici olarak (Diskler her VM’in yeniden başlatılmasında yenilenir)

Özelleştirilebilir serving stack

Hayır

Evet (Özelleştirilmiş dockerfile kullanarak)

Otomatik güvenlik güncelleştirmeleri

Evet

Evet

Network erişimi

Sadece App Engine servisleri üzerinden (outbound sockets’ler dahil)

Evet

Üçüncü-parti kütüphaneleri kurmayı destekleme

Hayır

Evet

Lokasyon

Amerika ve Avrupa

Beta sürecinde sadece Amerika lokasyonu mevcuttur.. Avrupa’da bulunan uygulamalar flexible ortama şu anda deploy edilmemelidir.

Ücretlendirme

Instance’ın çalışma süresine bağlı

Beta sürecinde, her VM için Compute Engine ücretlendirilmesi uygulanmaktadır.. Ücretlendirme ileride değişebilir.

Flexible ortam ile Compute Engine’nin karşılaştırılması

 

Flexible ortam, servislerini Compute Engine VM instances’ları içerisinde çalıştırıyor olmasına rağmen, Compute Engine’den aşağıdaki durumlarda farklılaşmaktadır.

 

  • Flexible ortam VM instances’ları haftalık bazda yeniden başlatılır. Restart esnasında Google’ın management servisleri gerekli işletim sistemi ve güvenlik güncelleştirmelerini uygular.
  • Compute Engine VM instances’larına herzaman root erişim hakkınız vardır. Flexible ortamda VM instances’larına SSH bağlantı ve root erişimi varsayılan olarak kapalıdır. Dilerseniz bu erişimi açabilirsiniz.
  • Flexible ortama ait VM instances’ları projenizin ayarlarına göre otomatik olarak konumlandırılır. Google’ın management servisleri projenize ait VM instances’ları optimum performans için en iyi şekilde konunlandırmayı garanti etmektedir.

 

Ortamlar arasında geçiş yapma

 

Google, standart ortam için yazılmış ve standard ortamın API’larını kullanan uygulamalarla çalışan flexible ortam için Python, Java, ve Go runtime ortamlarını sağlar. Bu runtime ortamları backwards-compatible olduğundan “compat” runtime ortamları olarak isimlendirilir. Bir uygulamayı standard’tan flexible ortama kaydırmanıza yardım ederler. %100 geriye doğru uyumluluk garanti edilmemesine rağmen, her compat runtime ortamı flexible ortamın yaşam döngüsünü (life-cycle) uygular. Sağlık kontrolü (health checking) dahildir. Aynı zamanda App Engine standard ortamın Datastore, Logging, Memcache, Search, Task Queues, URL Fetch, and Users authentication gibi API’larını native olarak destekler.

 

İki ortam farklı stack’ler kullandığı için, migrate ettiğiniz kodunuzu debugging ve optimize etmek için biraz vakit harcamanız gerekebilir. Migration için daha fazla bilgi öğrenmek isterseniz, Python, Java ve  Go sayfalarını ziyaret edebilirsiniz.

 

Vakit ayırıp okuduğunuz için teşekkür ederim.

Yazılarımı kaynak belirtilerek paylaşabilirsiniz.

 

Kaynaklar

  1. https://cloud.google.com/appengine/docs
  2. https://cloud.google.com/appengine/docs/about-the-standard-environment
  3. https://cloud.google.com/appengine/docs/flexible
  4. https://cloud.google.com/appengine/docs/the-appengine-environments

 

 

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu