Cloud Computing

Google Cloud Platformu – Araçlar, Coğrafik Lokasyonlar ve Bölgeler

Geliştirme ve Yönetim Araçları

 

Google; daha önceki yazımda bahsettiğim web tabanlı GCP konsoluna ek olarak bizlere gelişmiş araçlar ve uygulamaları daha kolay geliştirebilmeye yardımcı olmak için yazılım geliştirme ortamlarına (runtime, stack vs.) destek sağlamaktadır.

 

Geliştirme araçları ve ortamları

 

Cloud SDK (Software Development Kit) (Yazılım Geliştirme Kiti)

 

Google Cloud SDK; bulut ortamında (App Engine, Compute Engine, Cloud Storage, BigQuery, Cloud SQL ve Cloud DNS) kaynaklarınızı kolaylıkla oluşturmanız ve yönetmeniz için araçlar ve kütüphaneler sunmaktadır. Windows, Mac OS X ve Linux platformlarında çalışmakta olup Python 2.7.x yazılımı gerekmektedir.

 

Cloud Shell

 

Google Cloud Shell; bilgisayarınıza Cloud SDK ve diğer araçları yüklemeye ihtiyacınız olmadan, projelerinizi ve kaynaklarınızın yönetimini kolaylaştırmaktadır. Cloud Shell geçici olarak bir Compute Engine instance üzerinde çalışır. Böylece gcloud ve diğer komut satırı araçlarını web tarayıcınız üzerinden çalıştırabilirsiniz. Web-browser üzerinden çalışan entegre edilmiş bir komut-satırı (command-line) aracı diyebiliriz. SSH bağlantı yapmamız gereken durumlarda da işe yaramaktadır.

 

Android Studio

 

GCP’yi backend (sunucu tarafı) hizmeti olarak geliştirdiğiniz Android uygulamanıza direkt olarak Android Studio IDE (Integrated Development Environment) (Bütünleşik Geliştirme Ortamı) uygulaması üzerinden ekleyebilirsiniz. Android Studio; App Engine, Cloud Endpoints ve Google Cloud Messaging for Android servislerini entegre edebilmeniz için uygulama içerisinden hazır olarak sunulmaktadır.

 

IntelliJ IDEA

 

IntelliJ IDEA; JetBrains’ın sunduğu Java IDE ortamıdır. Cloud Tools for IntelliJ; Google-destekli bir eklenti olup, hem community hem de ultimate IDEA sürümleri için GCP desteği sunmaktadır. Cloud Tools for IntelliJ; GCP üzerinde çalışan production uygulamalarınızı IntelliJ üzerinden direkt olarak debug etmenize (hata ayıklamanıza) izin vermektedir.

 

Google Plugin for Eclipse

 

Google Plugin for Eclipse; java geliştiricileri için Eclipse IDE kullanarak java uygulamanızı geliştirmenize izin vermektedir. Uygulamanızı daha sonra App Engine ortamına bir tıkla yükleyebilirsiniz. Eklenti ek olarak Java ile App Engine yazılım geliştirme için API desteği ve optimizasyon sunmaktadır.

 

Cloud Source Repositories (Bulut Kaynak Havuzları)

 

Cloud platformunda yarattığınız her proje yine bu platformda barındırılan fully-featured yani tüm özellikleri ile kullanıma açık bir Git-Repository ile ilişkilendirilmektedir. Uygulama yada servisinizi geliştirirken bu havuzdan faydalanabilirsiniz. Stackdriver Debugger kullanıyorsanız, uygulamanızın çalışması esnasında kodunuzun yanısıra debugging bilgisini de görmek için, cloud source repositories ve GCP console üzerinden ilgili araçları kullanabilirsiniz.

 

Debugging, tracing, and analysis (Hata ayıklama, izleme ve analiz etme)

 

Stackdriver Debugger, App Engine yada Compute Engine üzerinde çalışan java uygulamanızın durumunu, uygulamayı durdurmadan yada yavaşlatmadan, herhangi bir kod bölgesinde incelemenizi ve kontrol etmenizi sağlar. Debugger uygulama durumunu kodunuza “logging statement” gibi değerler eklemeden izlemeyi kolaylaştırır. Stackdriver Debugger uygulamasını test, development yada production sürümü farketmeksizin uygulamanızın her aşamasında kullanabilirsiniz.

 

Stackdriver Trace, App Engine üzerinde çalışan, uygulamanız tarafından çağrılmış remote procedure calls (RPCs) (Uzaktan yordam çağrılarını) görmenize ve her RPC çağrısını tamamlamak için geçen zamanı analiz etmenize izin verir. Stackdriver Trace uygulamasını uygulamanıza gelen taleplerin gecikme dağılımlarını görmek amaçlı analiz raporları oluşturmak ve izlemek için kullanabilirsiniz. Aynı zamanda gelen iki ayrı parti gelen requests’lerin performanslarını karşılaştırabilirsiniz. Örnek olarak, uygulamanızın yeni bir sürümü deploy edilmeden (dağıtılmadan) önce ve sonra, gelen request’leri (talepleri) izleyerek uygulamanıza ait bir performans karşılaştırması yapabilirsiniz.

 

Logging and monitoring (Kayıt etme ve izleme)

 

Bulut platformu, logging ve monitoring için de araçlar sağlamaktadır. Böylece kaynaklarınızın ve uygulamalarınızın performansını ve çalışabilirlik (availability) durumunu takip edebilir ve kayıt altına alabilirsiniz.

 

Cloud Logging

 

Cloud Logging, bulut platformunda çalışan uygulamarınızdan ve servislerinizden log dosyalarını toplar ve saklar. App Engine ve Compute Engine servisleri ile beraber bu servisi kullanabilirsiniz.

Logs Viewer, konsol üzerinden bu log dosyalarını direkt olarak görmenize imkan verir. Log dosyalarınızı dilerseniz Cloud Storage, BigQuery yada Cloud Pub/Sub ortamına belirli formatlarda export edebilir, böylece bu kayıtları daha kolay bir şekilde işleyip, sorgulayarak inceleyebilirsiniz. Cloud Logging Agent, üçüncü parti log dosyalarını da entegre edip kullanmanıza imkan sağlamaktadır.

 

Cloud Monitoring

 

Cloud Monitoring, bulut platformunda çalışan uygulamalarınızın durumunu ve gerekli uyarıları hızlı bir şekilde görebilmeniz için dashboard (tabela) hizmeti sağlamaktadır. Cloud Monitoring Console kullanarak bu hizmeti ayarlayabilirsiniz. Cloud servislerin performans ölçümlerini, Compute Engine instances’lar, ve yaygın kullanılan MongoDB, Apache, Nginx, ve Elasticsearch gibi kaynak sunucuların durumlarını gözden geçirebilirsiniz. Cloud Monitoring API kullanarak çeşitli custom metrics değerleri kullanarak, uygulamalarınız ve servislerinizden monitoring datası çekebilirsiniz

 

Runtime, Stack, OS vs. sistemleri otomatik olarak yayınlamak

 

Sıfırdan bir sistem kurmak fazla vakit alabilmektedir. Bulut platformu, önceden hazırlanmış sistemleri deploy etmenize, daha sonra sahip olduğunuz konfigurasyonları tanımlamanıza yada import etmenize imkan sağlamaktadır.

 

Cloud Launcher

 

Google Cloud Launcher kullanarak, Compute Engine üzerinde 150’den fazla önceden hazırlanmış yazılım paketleri ve sistem konfigurasyonlarını  bir kaç tıklama ile kolaylıkla yayınlayıp kullanmaya başlayabilirsiniz.

Cloud Launcher ayrıca Bitnami ve Google Click-to-Deploy’dan çözümler de sunmaktadır. GCP konsolunu kullanarak dağıtımlarınızı yönetebilirsiniz.

 

Cloud Deployment Manager

 

Tanımladığınız sistem konfigurasyonlarını daha sonra kolayca ve hızlı bir şekilde deploy edebilmek için Deployment Manager kullanabilirsiniz. Static (durağan) yada dynamic (değişken) taslaklar yaratabilir, daha sonra komut satırı üzerinden kaynaklarınızı deploy edip, yönetebilirsiniz. Konfigurasyon dosyanız doğru ve düzgün bir şekilde çalışıyorsa “Deployment Manager” kullanarak güncellemelerinizi yapabilir, monitor edebilir yada çalışmalarınızı silebilirsiniz.

Geography and Regions (Coğrafya ve Bölgeler)

GCP servisleri şuanda North America (Kuzey Amerika), Europe (Avrupa) ve Asia (Asya) coğrafik lokasyonlarında kullanılabilir durumdadır. Bu lokasyonlarda belirli region (bölge)’lere ve zone (alan)’lara ayrılmıştır. Latency (gecikme), availability (erişilebilirlik) ve durability (dayanıklılık) ihtiyaçlarınıza göre uygulamalarınızı hangi lokasyonda bulundurmak istediğinizi siz seçebilirsiniz.

 

clip_image002

 

Regions and zones (Bölgeler ve alanlar)

 

Region’lar; zone’lardan oluşan bağımsız coğrafik lokasyonlardır. Region’ların içinde gidiş-dönüş network latency süreleri %95 olarak 5ms. altındadır.

Zone ise bir region içindeki GCP resource’larının paylaştırıldığı alandır. Zone’lar bir region içinde “single failure domain” olarak düşünülmeli. Yani bir zone arızalandığında uygulamanız sadece bu zone üzerinde çalışıyorsa yedeklilik durumu olmadığından çalışmayacaktır. High availability (yüksek erişebilirlik) ile birlikte fault-tolerance (yedeklilik) olarak uygulamalarınızı deploy edebilmek için kaynaklarınızı bir region içerisinde birden çok zone’a dağıtmanız gerekmektedir. Böylece beklenmeyen arızalara karşı korunmuş olursunuz.

Doğal felaket gibi sebeplerden dolayı tüm region’ın kapanmasından dolayı oluşan kayıplara karşı korunabilmek için, disaster recovery (felaket kurtarma) planınız ve birinci region bölgenizin olağan dışı bir durumda kaybı durumunda uygulamanızı tekrar ayağa nasıl kaldırabileceğinize ilişkin know-how (nasıl yapılacağı hakkında) bilginiz olmalı.

Her bir lokasyonda mevcut olan kaynaklar hakkında daha detaylı bilgi için Global Data Center Lokasyonları sayfasını ziyaret edebilirsiniz.

GCP’nin servisleri ve kaynakları zonal, regional yada Google tarafından yönetilen birden çok region’dan oluşmuş bir gruba dağıtılmış olabilir. Daha fazla bilgi için Geographic management of data (Datanın coğrafik olarak yönetimi) sayfasını ziyaret edebilirsiniz.

 

Zonal kaynaklar

 

Zonal kaynaklar tek bir zone içersinde kullanılmaktadır. Bahsettiğim gibi eğer bir zone arızalanırsa, içerisindeki tüm kaynaklarda servis yeniden çalışabilir duruma gelinceye kadar kullanılamaz olacaktır. Zonal kaynağa örnek olarak, belirli bir zone içerisinde olan Compute Engine instances’ları verilebilir.

 

Regional kaynaklar

 

Regional kaynaklar gerekli yedeklilikler sağlanarak bir region içerisinde barındırılır. Zonal kaynaklara göre daha yüksek availability sağlamaktadır.

 

Multi-regional kaynaklar

 

Bir kaç GCP servisi Google tarafından yönetilmektedir. Bu servisler yedeklilik gereksinimleri de dikkate alınarak, kaynaklar regionlar arasında ve regionlar içersinde zone’lar arasında dağıtılmaktadır. Bu servisler optimize edilmiş olarak daha yüksek availability, performance ve resource effiency (kaynak verimliliği) sağlamaktadır. Daha detaylı bilgi sonra aktarılacaktır.

 

Aşağıdaki servislerin herhangi bir bölgesel deployment’a ek olarak bir yada birden fazla multi-regional deployment’ları da mevcuttur.

 

  • Google App Engine ve özellikleri
  • Google Cloud Datastore
  • Google Cloud Storag
  • Google BigQuery

 

Multi-regional resource’larla ilişkilendirilmiş data belirli bir region’a bağlı olmaz. Veri region’lar arasında taşınabilir, bir region grubundan region’lar eklenebilir veya kaldırılabilir. Örnek olarak European Union’daki Google Cloud Storage servisinde veri depolamak için kullanılan bir bucket datayı European Union içerisinde tutarken, data bu lokasyon içinde başka bir region’a taşınabilir ve depolanabilir (Terms of service ve service specific terms’lere bağlı olarak).

 

Geographic management of data (Datanın coğrafik olarak yönetimi)

 

GCP servisleri için veri lokalizasyonu service specific terms’de içerisinde kapsayan terms of service anlaşması çerçevesinde yönetilmektedir. Google herbir müşterinin kendine özgü security (güvenlik) ve compliance (uyum) ihtiyaçları olabileceğini dikkate almaktadır. GCP satış ekibi bu aşamada ihtiyaçlarınızı ve gereksinimlerinizi öğrenerek buna uygun bir çözüm sizlere sunmaktadır.

 

Regional yada zonal storage kaynaklarını kullanırken, verinizi başka bir region’a sık aralıklarla replike etmeniz yani kopyalamanız yada snapshot’ların ve yedeklerin disaster recovery amaçlı multi-regional bir storage resource üzerine alınması şiddetle tavsiye edilmektedir.

 

Application deployment considerations (Uygulama yayınlanmasında dikkate alınacaklar)

 

Zone’ların erişilemez olması durumunda dayanabilecek highly available bir uygulama yada servis geliştirebilmek için aşağıdaki opsiyonların birinden faydalanabilirsiniz.

 

  • App Engine uygulamalar için regional yada multi-regional resources’lar kullanabilirsiniz.
  • Compute Engine VMs gibi zonal kaynakları kullanabilirsiniz ama sahip olduğunuz compute gücünü ve storage alanını zone’lar arası ve region’lar arasında redundancy için replike etmeniz gerekmektedir.

 

Tüm bir region’un kaybına dayanabilecek disaster recovery özellikli bir uygulama geliştirebilmek için;

 

Storage için, aşağıdaki stratejilerin birinden faydalanabilirsiniz:

 

  • Yönetilen, multi-regional storage kaynaklarını kullanmak.
  • Zonal yada regional kaynakları kullanmak ama snapshot datası Cloud Storage yada Cloud Datasore gibi multi-regional bir yere kopyalanmalı.
  • Zonal yada regional kaynakları kullanmak ama mevcut datanızı bir yada daha fazla region’a replike etmeniz gerekmektedir.

 

Compute için, aşağıdaki stratejilerin birinden faydalanabilirsiniz:

 

  • Google App Engine gibi multi-regional yönetilen compute servisinden faydalanabilirsiniz.
  • Compute Engine gibi zonal yada regional kaynakları kullanmak ama olası bir region kaybında datanız yönetimli (managed), multi-regional bir storage kaynağı üzerinde değilse, manual yada otomatik olarak, öncelikli datanızı kopyaladıktan sonra uygulamanızı başka bir region üzerinde ayağa kaldırabilmeniz gerekmektedir.

 

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/docs/overview/developer-and-admin-tools
  2. https://cloud.google.com/docs/geography-and-regions

 

 

İlgili Makaleler

Bir yanıt yazın

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

Başa dön tuşu