Google Cloud Platformu – Servisler
Bu yazımda sizlere yaygın kullanılan GCP servisleri hakkında genel bilgi vermeye çalışacağım. Daha detaylı bilgi almak isterseniz GCP Ürünler ve Servisler sayfasını ziyaret edebilirsiniz.
GCP servisleri genel olarak dört ana başlıktan oluşmaktadır.
- Computing (İşleme) ve Hosting (Barındırma) Servisleri
- Storage (Depolama) Servisleri
- Network (Ağ ve İletişim) Servisleri
- Big Data (Büyük Veri) Servisleri
Computing (İşleme) ve Hosting (Barındırma) Servisleri
GCP size Computing (İşleme) ve Hosting (Barındırma) için çeşitli seçenekler sunmaktadır. Dilerseniz sadece uygulamanızı geliştirmeye odaklı “Managed application platform (App Engine)” servisini kullanabilir, altyapı, işletim sistemi, sanal makina (VMs), software runtime gibi konuları düşünmenize gerek kalmaz, yada “Cluster management (Container Engine)” servisini kullanarak “Container (Konteyner)” gibi yenilikçi teknolojileri kullanarak çalışmanız üzerinde daha fazla esneklik sağlayabilir ve yönetebilirsiniz. GCP size bu servisi kullandığınızda sadece altyapı ve işletim sistemi bazında gerekli desteği sağlayacaktır. Yada dilerseniz “Unmanaged infrastructure (Compute Engine)” servisinden faydalanıp tümüyle kontrolü size ait olan esnek ve yönetilebilir bir “Own-cloud infrastructure (altyapı)’ya” sahip olabilirsiniz. Aşağıdaki resimde konu basit bir şekilde ele alınmıştır. Seçtiğiniz servisin türüne göre operasyonel sorumluluğunuz Google’dan size doğru soldan sağa doğru giderek artış gösterecektir.
Application (Uygulama) Platformu
Google’ın App Engine servisi Platform as a Service olarak hizmet veren bir üründür. Bu ürünü kullanırken Google kaynakların ve çalışma ortamının yönetimi ile ilgili pek çok konuyla sizin yerinize ilgilenmektedir. Örnek olarak; websitenize ait internet trafiği arttığında daha fazla computing resource (işlem gücü)’ne ihtiyacınız olursa, Google otomatik olarak altyapıyı buna göre ölçeklendirecektir (scaling). Eğer uygulamanızı geliştirdiğiniz işletim sisteminin veya runtime ortamın security updates (güvenlik güncelleştirmeleri)’nin yüklenmesi gerekiyorsa, Google bu işlere de sizin yerinize arka planda sessiz sedasız bakıyor olacaktır.
App Engine üzerinde uygulama geliştirirken;
- Uygulamanızı App Engine’in desteklediği yazılım dilleri üzerinde geliştirebilirsiniz. (Python, Java, PHP, veya Go.)
- Google uygulamanızı geliştirdiğiniz runtime ortamı, işletim sistemini, altyapıyı sizin yerinize izler, ölçeklendirir, kontrol eder ve korur.
- Bulutta çalışan App Engine ortamını App Engine SDK yazılım paketini bilgisayarınıza kurarak simule (taklit) edebilir, uygulamanızı GCP App Engine ortamına yüklemeden önce lokal bir ortamda test edebilir ve geliştirebilirsiniz.
- App Engine’in desteklediği storage (depolama) teknolojilerini kullanabilirsiniz. Google Cloud SQL; MySQL database (veritabanı) ortamıdır. App Engine Datasore ortamı ise schemaless (şemasız), NoSQL datastore (verideposu) ortamıdır. Google Cloud Storage (Google Bulut Depolama) ortamı ise büyük verileriniz ve dosyalarınız için depolama alanı sunmaktadır.
- Cloud Endpoints ürününü kullanarak API’lar yaratabilir, client (kullanıcı) kütüphanelerinden faydalanarak diğer uygulamalarınız arasında data erişimi gibi bağlantı işlemlerini, vs. basit bir şekilde sağlayabilirsiniz. Endpoint’ler web clients ve mobile clients kullanıcıları için web backend (websunucu kısmına erişim noktası) oluşturmayı kolaylaştırmaktadır
- Email yada kullanıcı yönetimi gibi çalışmalarınız için Built-in (Yerleşik), Managed Services (Yönetilen Servisler) gibi uygulamaları kullanabilirsiniz.
- Cloud Security Scanner (Bulut Güvenlik Tarayıcısı) ürünü kullanarak güvenlik açıklarına karşı mevcut sisteminizi tarayabilir, sınayabilir, böylece daha güvenli bir ortam geliştirebilirsiniz.
- Windows yada Mac OS X için App Engine launcher GUI uygulamasını kullanarak uygulamanızı grafik arayüzlü bir yazılım üzerinden deploy (dağıtmak) edebilirsiniz, isterseniz de command line (komut satırı) arayüzünü kullanabilirsiniz.
- Uygulamanızı Central US yada Western Europe bölgelerinde çalıştırabilirsiniz.
App Engine servisinin özellikleri hakkında daha kapsamlı bilgi almak isterseniz ilgili linkten yararlanabilirsiniz.
Containers (Konteynerlar)
Container-based (Konteyner tabanlı) computing ortamıyla, Docker gibi teknolojilerden faydalanarak siz yazdığınız kod üzerine daha fazla odaklanabilir, uygulamanızı çalıştıracağınız runtime ortamını veya barındıracağınız sunucu ortamını düşünmenize gerek kalmaz. Google Container Engine (Konteyner Motoru) on-premises (özel), hybrid (karma) yada Google’ın public (genel) cloud altyapısı üzerinde esnek bir çalışma sağlayan açık kaynak kodlu olan Kubernetes sistemi üzerine kurulmuştur.
Container Engine kullanırken;
- Kubernetes çalıştıran, clusters (kümeler) adı verilen sanal makinalardan oluşan gruplar yaratabilir ve bunları yönetebilirsiniz. Bir cluster içinde ise sanal makinalardan oluşan bir grup mevcuttur. Bunlara da nodes denilmektedir. Her bir node üzerinde bir Docker runtime ortamını çalıştırır. Bir Kubelet agent ise node’un üzerinde kurulu olup, bu node’un sağlık durumunu izler ve basit bir network proxy ortamı görür.
- Basit bir JSON configuration dosyası hazırlayarak, Docker container’larından oluşan ortamınız için gereksinimlerinizi ve ihtiyaçlarınızı toplu olarak belirtebilirsiniz.
- Google Container Registry ortamından faydalanarak Docker imajlarınız için özel, güvenli bir depolama alanı sağlayabilirsiniz. Hazırladığınız Docker imajlarınızı bu ortama yükleyebilir, daha sonra sanal makinanıza yada kendi sahip olduğunuz bilgisayar üzerine HTTP bağlantı ile bu imajı yükleyebilirsiniz.
- Tekli (Single) yada Çoklu (Multi) container’dan oluşan pod’lar yaratabilirsiniz. Her bir pod bir ya da birden fazla container içeren sanal bir makinayı temsil eder. Bir pod’un içinde olan container’lar network servisleri gibi kaynakları birbirleriyle paylaşarak çalışabilirler. Böylece pod’lar biraraya gelerek bütün bir uygulamayı, bir mikro-servisi yada çok katmanlı (multi-tier) büyük bir uygulamanın bir parçasını oluşturabilirler.
- Önceden hazırlanmış bir template (taslağa) bağlı olarak pod kopyalarının (replicas) yaratılmasını ve silinmesini yöneten Replication controllers (Replikasyon kontrolcüleri) yaratabilir ve yönetebilirsiniz. Replikasyon kontrolcüleri uygulamanızın güvenilir (reliable) ve ölçeklendirilmiş (scalable) bir şekilde yeterli kaynağa sahip olarak çalışmasını garanti eder.
- Services (servisler) yaratabilir ve yönetebilirsiniz. Servisler frontend clients (son kullanıcıları) backend functions (arkaplanda çalışan işlerden) ayıran bir abstraction layer (ayırma katmanı) yaratır. Böylece clients (kullanıcılar) arka planda pod’lar yaratılırken yada silinirken, aynı anda sorun yaşamadan çalışmaya devam edebilirler.
- External network load balancer (Harici network yük dengeleyici) yaratabilirsiniz.
Virtual machines (Sanal Makinalar)
GCP’ın unmanaged (yönetilmeyen) Compute Engine servisine Google Compute Engine (GCE) denilmektedir. Compute Engine servisini infrastructe as a platform (IaaS) olarak düşünebilirsiniz, çünkü platform size güvenilir ve sağlam bir altyapıyı sağlar ama kullanmak istediğiniz platform birleşenlerini sizin seçmeniz ve ayarlamanız gerekmektedir. Compute Engine servisiyle sistemi kurmak, yönetmek ve izlemek sizin sorumluluğunuzdadır. Google gerekli kaynakları güvenli, yeterli ve güvenilir bir şekilde sizin için hazır olarak bulundurur ama onları planlamak ve yönetmek size bağlıdır. Bu servisin avantajı sisteminizin üzerinde tam bir kontrol ve sınırsız esneklik hakkınızın olmasıdır.
Çalışmanızı Google Compute Engine (GCE) üzerine kurarken;
- Kendi fiziksel altyapınız kuruluymuş gibi, Instances adı verilen virtual machines (sanal makinalardan) (VMs) (instances) faydalanabilir ve kullanabilirsiniz. Bütçenizde ve ihtiyacınıza uygun çeşitli instance türlerini seçebilir ve konfigure edebilirsiniz.
- Kaynaklarınızı ve datanızı hangi region ve zone üzerinde bulundurmak ve kullanmak istediğinizi belirleyebilirsiniz.
- İşletim sistemini, yazılım geliştirme platformunu ve dillerini, hazırlanmış yazılım paketlerini (pre-configured software packages) (stacks) veya diğer kullanmak istediğiniz yazılım teknolojilerini seçebilirsiniz.
- Genel (public) yada özel (private) imajlardan (images) faydalanarak instances’larınızı yaratabilirsiniz.
- Cloud Platform’un storage (depolama) teknolojilerinden yada tercih ettiğiniz 3. parti depolama teknolojilerinden faydalanabilirsiniz.
- Önceden hazırlanmış yazılım paketlerini (pre-configured software packages) (stacks) Google Cloud Launcher (Google Cloud Başlatıcı) servisi ile hızlıca kurabilirsiniz. Örnek olarak LAMP yada MEAN stack’lerini birkaç tıklama ile hazırlayabilirsiniz.
- Instances’ları birlikte daha kolay yönetebilmek için instance grupları yaratabilirsiniz.
- Bir instance grubuna otomatik olarak kaynak ekleyebilmek ve kaldırabilmek için otomatik ölçeklendirme (autoscaling) özelliğini kullanabilirsiniz.
- İhtiyaca göre diskler bağlayıp, çıkartabilirsiniz.
- Instances’larınıza direkt olarak bağlanabilmek için SSH (Secure Shell) bağlantı kullanabilirsiniz.
Computing (İşleme) ve Hosting (Barındırma) Seçeneklerini Birleştirme
Sadece bir computing (işleme) servisine bağlı olmanız gerekmemektedir. Herbirinin özelliklerinden beraber faydalanabilmek için App Engine ve Compute Engine servislerini birlikte kullanabilirsiniz. Örnek olarak; Image Management for Mobile Apps (Mobil uygulamalar için imaj yönetimi) sayfasını okuyabilirsiniz.
Storage (Depolama) Servisleri
Uygulamanız her ne olursa olsun, muhtemelen verilerinizi depolamak için bir miktar alana ihtiyacınız olacaktır. GCP çeşitli türlerde depolama servisleri sunmaktadır.
- Cloud SQL MySQL tabanlı bulutta çalışan SQL veritabanı depolama servisidir. Cloud SQL instances’ları zone’lar üzerinde çalışan resource (kaynaklar)’dır.
- Cloud Datastore veya Cloud Bigtable SQL tabanlı olmayan (NoSQL) veritabanı depolama servisidir.
- Cloud Storage tutarlı (consistent), ölçeklenebilir (scalable), büyük boyutlu dosya depolama için kullanılabilir. Bu depolamada da üç seçenek bulunmaktadır.
- Standard en iyi oranda erişilebilirlik (availability) yüzdesi sunmaktadır.
- DRA daha düşük fiyata, daha düşük bir yüzdeye sahip erişilebilirlik sunmaktadır.
- Nearline en düşük fiyatı sunmaktadır. Veri erişim hızı ve availability düşük olup daha çok arşivleme, veri yedekleme veya felaket kurtarma (disaster recovery) çalışmaları için uygundur.
- GCE için kalıcı diskler (Persistent disks on Compute Engine) instances’larınız için birincil öncelikli veri depolama alanı sunmaktadır. Eski tip mekanik hard-disk tabanlı (standard persistent disks) ve flash bellek tabanlı (solid-state persistent disks) (SSD) çeşitleri mevcuttur. İhtiyacınıza göre instances yaratırken seçim yapabilirsiniz.
GCE üzerinde persistent disklerden yararlanarak, uygulamalarınız için istediğiniz öncelikli veri depolama teknolojisini seçebilirsiniz. Örnek olarak SQL veritabanınız için PostgreSQL, SQL tabanlı olmayan (NoSQL) veritabanınız için MongoDB kullanabilirsiniz.
Storage türleri hakkında daha detaylı bilgi almak, avantajlarını ve dezavantajlarını öğrenebilmek için Depolama türü seçme (Choosing a Storage Option) sayfasını inceleyebilirsiniz.
Networking (Ağ ve İletişim) Servisleri
App Engine; network altyapısını bizim yerimize yönetirken, Container Engine; bu iş için Kubernetes modelini kullanırken, Compute Engine; kullanmamız için bir dizi networking servisini bizlere sunmaktadır. Bu servisler kaynaklar arasında olan trafiği dengelemeye (load-balancing), DNS kayıtları yaratmaya ve var olan network altyapısını Google’ın network altyapısına bağlamaya yardımcı olur.
Networks, firewalls (güvenlik duvarları) ve routes (yönlendirmeler)
Compute Engine; instances’larınızın kullanımı için bir dizi networking servisi sağlamaktadır. Bir instance sadece bir network’e bağlanabilir. Her Compute Engine projesinin varsayılan olarak bağlı olduğu bir default network mevcuttur. Proje dahilinde ek networkler yaratılabilir ama networkler projeler arasında paylaştırılamaz.
Firewall rules (güvenlik duvarı kuralları) network üzerinde instances’lara gelen veri trafiğini yönetir. Yaratılan bir networkün, başlangıçta varsayılan firewall rules’ları mevcuttur. Ek olarak başka firewall rules’ları yaratılabilir.
Route (yönlendirme) ise instances’lar için daha gelişmiş network kuralları ve fonksiyonları oluşturulmasını sağlar. Örneğin; VPN bağlantısı yaratmak gibi. Route bir instance üzerinden ayrılan network paketinin hangi yönde ilerlemesini sağlar. Örnek olarak; belirli bir network dahilinde olan paketlerin gönderilmeden önce, kurduğumuz ve yönettiğimiz bir VM gateway makinası tarafından işlenip, kontrol edilmesi gibi.
Yük Dengeleme (Load-Balancing)
Websiteniz yada uygulamanız GCE üzerinden çalışırken, iş yükünüzü birden fazla instances arasında dağıtmanız gereken bir zaman gelebilir. GCE’s server tabanlı load balancing özelliği aşağıdaki seçenekleri sunmaktadır.
- Network load balancing, aynı region üzerinde olan veri trafiğinizi IP adresi, data, port, protokol vs. türüne göre instances’larınız arasında paylaştırmanızı sağlar. Örnek olarak websitenize ait veri trafiğinde artış gözlendiğinde NLB bizlere iyi bir çözüm sağlamaktadır.
- HTTP/HTTPS load balancing ise network trafiğini regionlar arasında paylaşılmasını sağlar. Böylece gelen talepler en yakın region (bölge) üzerinden işleme alınır, yada olası bir arıza, kapasite aşımı vs. durumunda bir sonraki en yakın region’a gönderilir. Aynı zamanda HTTP/HTTPS load balancing hizmetini içerik türüne göre veri trafiğini dağıtmak içinde kullanabilirsiniz. Örnek olarak; resim gibi durağan içerik paylaşımı için bir server, PHP sayfaları gibi dinamik içerik paylaşımı içinde başka bir server kurmuş olabilirsiniz. LB gelen talepleri ilgili içeriği sunan server’lara direkt olarak yönlendirebilir.
Cloud DNS
Domain Name System (DNS) kayıtlarınızı Google’ın kullandığı aynı altyapıyı kullanarak yayınlayabilir ve yönetebilirsiniz. Yönetilen zone’ları yada DNS kayıtlarını GCP konsolunu, komut satırını (command-line) yada REST API kullanarak yönetebilirsiniz.
Gelişmiş bağlanabilirlik (Advanced connectivity)
GCP’a bağlamak istediğiniz mevcut bir network altyapınız varsa, GCP üç seçenek sunmaktadır;
- Carrier Interconnect (taşıyıcı bağlantısı) ile mevcut altyapınızı Google’ın yüksek availability ve düşük latency (gecikme) sunan altyapısına service sağlayıcıları (service providers) aracılığıyla network edge (uç) bağlantısını kullanarak bağlayabilirsiniz.
- Mevcut networkünüz ile Google arasında direkt bir peering bağlantısı kurabilirsiniz. Bu bağlantıyla, internet trafiğinizi networkünüz ve en az bir adet Google’ın kapsamlı (broad-reaching) uç (edge) network lokasyonları arasında değiş-tokuş yapabilirsiniz. Edge lokasyonlar hakkında daha fazla bilgi için Google’ın peering sites sayfasına bakabilirsiniz.
- Compute Engine VPN ile mevcut network altyapınızı Compute Engine networküne IPsec bağlantısı ile bağlayabilirsiniz. İki Compute Engine VPN Gateway birbirine bağlamak için de VPN kullanabilirsiniz.
Büyük veri servisleri (Big data services)
Big data servisleri elinizdeki mevcut büyük veriyi Google’ın bulut platformunda işleyerek ve sorgulayarak karmaşık sorularınıza hızlı cevaplar almanızı sağlar.
Data analizi (Data analysis)
BigQuery data analizi hizmeti sunmaktadır. Bu hizmeti kullanarak;
- Çeşitli taslaklar (Custom schemas)’lar kullanarak datanızı dataset ve table’lara göre organize edebilirsiniz.
- Akışkan (Streaming) datası da dahil olmak üzere çeşitli kaynaklardan data yükleyebilirsiniz.
- Büyük dataset’lerini hızlı bir şekilde sorgulayabilmek için SQL benzeri komutlar kullanabilirsiniz. BigQuery hız için tasarlanmış ve optimize edilmiş bir servistir.
- Web-kullanıcı arayüzü (Web UI), komut satırı (command-line) yada API desteğinden faydalanarak kullanabilirsiniz.
- Jobs (İşler) fonksiyonunu kullanarak datalarınızı yükleyebilir, sorgulayabilir yada export ederek başka bir formatta kaydedebilirsiniz.
- Gerekli yetkileri (permissions) dilediğiniz doğrultuda sağlayarak datanızı yönetebilir ve koruyabilirsiniz.
BigQuery servisini hızlı ve kolay bir şekilde denemek için hızlı başlangıç sayfasını (Web UI Quickstart) sayfasını ziyaret edebilir ve genele açık datasetlerini kullanarak sorgulamalar yapabilirsiniz. Uçtan uca (end-to-end) gerçek zamanlı (real-time) datanızı BigQuery kullanarak nasıl işleyebileceğinizi öğrenmek için Kubernetes, Redis ve BigQuery ile gerçek zamanlı veri analizi (Real-time Data Analysis with Kubernetes, Redis, and BigQuery) sayfasını ziyaret edebilirsiniz.
Yığın ve akışkan data işleme (Batch and streaming data processing)
Cloud Dataflow; yığın ve akışkan datalarınızı işlemek (Batch and streaming data processing) yönetilebilen bir servis ve SDK (Software Development Kit)’ler sağlar. Dataflow yüksek hacimli (high-volume) data işlemek için iyi bir şekilde çalışmaktadır. Özellikle veri işleme task’ları kolaylıkla paralel olarak farklı workload’lar (iş yükleri) arasında paylaştırılabilir. Dataflow aynı zamanda datayı farklı depolama üniteleri arasında taşırken, başka bir formata çevirirken yada yeni bir depolama ünitesine yüklerken kullanılan extract-transform-load (ETL) task’ları içinde iyidir.
Eş zamanlı olmayan (asynchronous) mesajlaşma
Cloud Pub/Sub eş zamanlı olmayan (asynchronous) bir mesajlaşma servisidir. Uygulamanız topic isimli bir yayınlama birimine JSON data yapısında olacak şekilde mesajlar gönderebilir. Cloud Pub/Sub topic’leri global kaynaklar olduğu için, projelerdeki sahip olduğunuz diğer uygulamalar topic’e HTTP request yada response şeklinde mesajlar alabilmek için üye olabilirler. Cloud Pub/Sub bazı kısa örnekler ile deneyebilirsiniz. Uçtan uca (end-to-end) Pub/Sub kullanan büyük veri senaryosu örneği için Kubernetes, Pub/Sub ve BigQuery ile gerçek zamanlı veri analizi (Real-time Data Analysis with Kubernetes, Pub/Sub, and BigQuery).
Cloud Pub/Sub servisi sadece big data için yararlı olmayıp pek çok durumda asynchronous bir mesajlaşmaya ihtiyacınız olduğunda bu servisi kullanabilirsiniz. Örnek olarak; App Engine ve Compute Engine’i birbirleri ile koordineli bir şekilde nasıl çalıştırabilirsiniz. Daha detaylı bilgi için Reliable Task Scheduling on Compute Engine sayfasınızı ziyaret edebilirsiniz.
Vakit ayırıp okuduğunuz için teşekkür ederim.
Yazılarımı kaynak belirtilerek paylaşabilirsiniz.
Kaynak: https://cloud.google.com/docs/overview/cloud-platform-services