
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a GKE Cluster
/ 20
Deploy Existing Monolith
/ 20
Migrate Orders to a microservice
/ 20
Migrate Products to microservice
/ 20
Migrate Frontend to microservice
/ 20
Neden monolitik uygulamadan mikro hizmet mimarisine geçiş yapmalısınız? Uygulamaları mikro hizmetlere ayırmanın sunduğu avantajlar aşağıda verilmiştir ve bunların çoğu, mikro hizmetlerin serbest bağlantılı olmasından kaynaklıdır:
Monolitlere kıyasla bazı dezavantajlar ise şunlardır:
Bu laboratuvarda, Google Kubernetes Engine kümesine mevcut bir monolitik uygulamayı dağıtacak ve daha sonra mikro hizmetlere ayıracaksınız. Kubernetes, container'ları yönetme, barındırma, ölçeklendirme ve dağıtma amaçlı bir platformdur. Container'lar ise kodu taşınabilir bir şekilde paketleme ve çalıştırma yoludur. Her mikro hizmetin kendi container'ını çalıştırabildiği mikro hizmet kalıbına uygundur.
Monoliti tek seferde bir tane olacak şekilde üç mikro hizmete ayırarak başlayın. Mikro hizmetler şunlardır: Siparişler, Ürünler ve Ön Uç. Cloud Build'i kullanarak her mikro hizmet için bir Docker görüntüsü derleyin ve daha sonra mikro hizmetleri LoadBalancer türü bir Kubernetes hizmetiyle Google Kubernetes Engine'de (GKE) dağıtın ve kullanıma sunun. Hizmetleri yeniden düzenleyerek monolitten çıkarırken bu işlemi her hizmet için tekrarlayacaksınız. İşlem sırasında, monoliti silebileceğiniz en son aşamaya gelene kadar hem monoliti hem de mikro hizmetleri çalıştırmaya devam edeceksiniz.
Buradaki talimatları okuyun. Laboratuvarlar süreli olduğundan duraklatılamaz. Laboratuvarı Başlat'ı tıkladığınızda başlayan zamanlayıcı, Google Cloud kaynaklarının ne süreyle kullanımınıza açık durumda kalacağını gösterir.
Bu uygulamalı laboratuvarı kullanarak, laboratuvar etkinliklerini gerçek bir bulut ortamında (Simülasyon veya demo ortamında değil.) gerçekleştirebilirsiniz. Bu olanağın sunulabilmesi için size yeni, geçici kimlik bilgileri verilir. Bu kimlik bilgilerini laboratuvar süresince Google Cloud'da oturum açmak ve Google Cloud'a erişmek için kullanırsınız.
Bu laboratuvarı tamamlamak için şunlar gerekir:
Laboratuvarı Başlat düğmesini tıklayın. Laboratuvar için ödeme yapmanız gerekiyorsa ödeme yöntemini seçebileceğiniz bir pop-up açılır. Soldaki Laboratuvar Ayrıntıları panelinde şunlar yer alır:
Google Cloud Console'u aç'ı tıklayın (veya Chrome Tarayıcı'yı kullanıyorsanız sağ tıklayıp Bağlantıyı gizli pencerede aç'ı seçin).
Laboratuvar, kaynakları çalıştırır ve sonra Oturum açın sayfasını gösteren başka bir sekme açar.
İpucu: Sekmeleri ayrı pencerelerde, yan yana açın.
Gerekirse aşağıdaki kullanıcı adını kopyalayıp Oturum açın iletişim kutusuna yapıştırın.
Kullanıcı adını Laboratuvar ayrıntıları panelinde de bulabilirsiniz.
İleri'yi tıklayın.
Aşağıdaki şifreyi kopyalayıp Hoş geldiniz iletişim kutusuna yapıştırın.
Şifreyi Laboratuvar ayrıntıları panelinde de bulabilirsiniz.
İleri'yi tıklayın.
Sonraki sayfalarda ilgili düğmeleri tıklayarak ilerleyin:
Birkaç saniye sonra Google Cloud Console bu sekmede açılır.
Cloud Shell, çok sayıda geliştirme aracı içeren bir sanal makinedir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Cloud Shell, Google Cloud kaynaklarınıza komut satırı erişimi sağlar.
Bağlandığınızda, kimliğiniz doğrulanmış olur. Proje ise PROJECT_ID'nize göre ayarlanmıştır. Çıkış, bu oturum için PROJECT_ID'yi tanımlayan bir satır içerir:
gcloud
, Google Cloud'un komut satırı aracıdır. Cloud Shell'e önceden yüklenmiştir ve sekmeyle tamamlamayı destekler.
Yetkilendir'i tıklayın.
Çıkışınız aşağıdaki gibi görünecektir:
Çıkış:
Çıkış:
Örnek çıkış:
gcloud
ile ilgili tüm belgeleri, Google Cloud'daki gcloud CLI'ya genel bakış rehberinde bulabilirsiniz.
Varsayılan alt bölgeyi ve proje yapılandırmasını ayarlayın:
Basit bir karşılama sayfası, ürünler sayfası ve sipariş geçmişi sayfası olan hayali bir e-ticaret web sitesinin mevcut monolitik uygulamasını kullanacaksınız. Kaynağı Git depomuzdan klonladıktan sonra yalnızca mikro hizmetlere ayırmaya ve Google Kubernetes Engine'e (GKE) dağıtmaya odaklanabileceğiz.
Bu komut dosyasının çalışması birkaç dakika sürebilir.
Geliştirme ortamınız çalışır durumda olduğuna göre şimdi, monolitinizi ve son olarak mikro hizmetlerinizi dağıtacağınız bir Kubernetes kümesine ihtiyacınız var. Küme oluşturabilmeniz için önce gerekli API'lerin etkin olduğundan emin olmalısınız.
Kümenin oluşturulması birkaç dakika sürebilir.
Çıkış:
Kubernetes kümenizi ve ilgili bilgileri Cloud Console'da da görüntüleyebilirsiniz. Gezinme menüsünde aşağı kaydırarak Kubernetes Engine'i bulun ve Clusters'ı (Kümeler) tıklayın.
fancy-cluster adlı kümenizi göreceksiniz.
Tebrikler! İlk Kubernetes kümenizi oluşturdunuz.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
Bu laboratuvarın odak noktası monoliti mikro hizmetlere ayırmak olduğundan öncelikle bir monolitik uygulamayı çalışır duruma getirmeniz gerekir.
Şuna benzer bir çıkış alırsınız:
Çıkışınızda harici IP <pending>
(bekleniyor) olarak listeleniyorsa kısa bir süre bekleyin ve komutu yeniden çalıştırın.
Monolitinizin harici IP adresini belirledikten sonra kopyalayın. Monolitinizin erişilebilir durumda olup olmadığını kontrol etmek için tarayıcınızı bu URL'ye (örneğin http://203.0.113.0) yönlendirin.
Monolitik web sitesinin karşılama sayfasını görüyor olmanız gerekir. Karşılama sayfası, daha sonra ön uç mikro hizmeti tarafından sunulacak olan statik bir sayfadır. Artık monolitiniz tümüyle Kubernetes üzerinde çalışıyor.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
Artık GKE'de çalışan bir monolitik web siteniz olduğuna göre hizmetleri mikro hizmetlere ayırmaya başlayabilirsiniz. Genellikle, hangi hizmetlerin daha küçük parçalara ayrılacağını belirlemek için planlama yapılması gerekir. Bu planlama çoğu zaman uygulamanın iş alan adı gibi belirli kısımları etrafında yapılır.
Bu laboratuvar için bir örnek oluşturacak ve iş alan adı etrafındaki tüm hizmetleri ayıracaksınız: Siparişler, Ürünler ve Ön Uç. Hizmetleri Google Kubernetes Engine'de (GKE) derleyip dağıtmaya odaklanabilmeniz için kod sizin adınıza önceden taşındı.
Ayrılacak ilk hizmet Siparişler hizmetidir. Sağlanan bağımsız kod tabanından faydalanarak bu hizmet için ayrı bir Docker container'ı oluşturun.
Kod tabanı zaten hazır olduğundan, atacağınız ilk adım Cloud Build'i kullanarak Siparişler hizmetinizin Docker container'ını oluşturmak olacak.
Normalde bu süreç iki adımda tamamlanır: Bir Docker container'ı derlenir ve görüntünün GKE'nin çekebileceği şekilde depolanması için bu container bir kayıt defterine aktarılır. Docker container'ı derlemek ve görüntüyü tek bir komutla Container Registry'ye yerleştirmek için Cloud Build kullanılabilir. Böylece tek bir komut vererek görüntünüzü derleyebilir ve Container Registry'ye taşıyabilirsiniz. Docker dosyası oluşturma ve aktarma işlemlerinden oluşan manuel süreç hakkında daha fazla bilgiye Google Cloud Container Registry belgelerinden ve Container Registry Hızlı Başlangıç Kılavuzu'ndan ulaşabilirsiniz.
Google Cloud Build, dizindeki dosyaları sıkıştırır ve bir Cloud Storage paketine taşır. Ardından, derleme işlemi sırasında paketteki tüm dosyalar alınır ve Dockerfile üzerinden Docker derleme işlemi çalıştırılır. Docker görüntüsü için ana makine gcr.io olarak ayarlanır ve --tag
işareti belirtilir. Elde edilen Docker görüntüsü Google Cloud Container Registry'ye aktarılır.
Bu işlem bir dakika kadar sürer ve tamamlandıktan sonra terminalde aşağıdakine benzer bir çıkış alınır:
Derleme kimliğini tıklarsanız derlemenin günlük çıkışı da dahil olmak üzere tüm ayrıntılarını görebilirsiniz.
Derleme ayrıntıları sayfasında, oluşturulan container görüntüsünü görmek için sağdaki bölümde yer alan Execution Details'ı (Yürütme Ayrıntıları) tıklayın.
Web sitesini container mimarisine aldığınıza ve container'ı Google Container Registry'ye aktardığınıza göre sıra Kubernetes'e dağıtım yapmaya geldi.
Kubernetes'te uygulamalar kapsüller olarak temsil edilir. Kapsüller, bir container'ı (veya birbirlerine sıkı sıkıya bağlı bir grup container'ı) temsil eden birimlerdir. Kapsül, Kubernetes'teki en küçük dağıtılabilir birimdir. Bu eğiticideki her kapsülde yalnızca mikro hizmetler container'ınız yer almaktadır.
Uygulamaları bir GKE kümesinde dağıtıp yönetmek için Kubernetes küme yönetimi sistemiyle iletişim kurmanız gerekir. Bunun için genellikle Cloud Shell içinden kubectl komut satırı aracı kullanılır.
İlk olarak bir Dağıtım kaynağı oluşturun. Dağıtım, uygulamanızın replika adı verilen birden fazla kopyasını yönetir ve bu kopyaların her birinin kümenizdeki ayrı birer düğümde çalıştırılmasını planlar. Bu laboratuvarda, Dağıtım tarafından uygulamanızın yalnızca bir kapsülü çalıştırılacaktır. Dağıtımlar bu iş için bir ReplicaSet oluşturur. ReplicaSet, belirtilen sayıda replikanın her zaman çalışmasını sağlamaktan sorumludur.
Aşağıdaki kubectl create deployment
komutu, Kubernetes'in kümenizde 1 replikaya sahip Orders (Siparişler) adlı bir Dağıtım oluşturmasını sağlar.
Kapsül durumunun Çalışıyor olması birkaç dakika alabilir.
Çıkış:
Geçerli dağıtımınızı, istenen kapsül sayısı 1 olan replicaset
'i ve çalışmakta olan kapsülü görebilirsiniz. Bu durumda tüm öğeler başarıyla oluşturulmuş demektir.
Kubernetes dağıtımlarınızı Cloud Console'da gezinme menüsünden Kubernetes Engine > Workloads'a (İş Yükleri) giderek de görüntüleyebilirsiniz.
Uygulamamızı GKE'de dağıttık ancak buna küme dışından erişmemiz mümkün değil. Varsayılan olarak, GKE'de çalıştırılan container'ların harici bir IP adresi bulunmadığından bu container'lara internet üzerinden erişilemez. İnternet trafiği alabilmesi için uygulamanızı bir Hizmet kaynağı üzerinden açıkça kullanıma sunmanız gerekir. Hizmetler, uygulamanızın kapsüllerine ağ ve IP desteği sağlar. GKE, uygulamanız için faturalandırmaya tabi olan harici bir IP adresi ve bir yük dengeleyici oluşturur. Daha fazla bilgi edinmek için Google Cloud web sitesinde Compute Engine fiyatlandırmasına göz atın.
Bu laboratuvara özel olarak hizmetin kullanıma sunulması basitleştirilmiştir. Normal şartlarda, herkese açık uç noktalarınızın güvenliğini sağlamak için bir API ağ geçidi kullanırsınız. Google Cloud Architecture Center'da mikro hizmet en iyi uygulamalarıyla ilgili daha fazla bilgi bulabilirsiniz.
Siparişler hizmetini dağıttığınızda bir Kubernetes dağıtımı aracılığıyla bağlantı noktası 8081'de dahili olarak kullanıma sundunuz. Bu hizmeti harici olarak kullanıma sunmak için trafiği harici bağlantı noktası 80'den dahili bağlantı noktası 8081'e yönlendirmek üzere LoadBalancer
türünde bir Kubernetes hizmeti oluşturmanız gerekir.
GKE, harici IP adresini Dağıtım'a değil Hizmet kaynağına atar.
kubectl get service
komutunu kullanabilirsiniz:Çıkış:
Uygulamanızın harici IP adresini belirledikten sonra kopyalayın. Monolitinizi yeni Siparişler hizmetine işaret edecek şekilde değiştireceğiniz sonraki adım için bu adresi saklayın.
Siparişler hizmetini monolitten kaldırdığınıza göre artık monoliti yeni harici Siparişler mikro hizmetine işaret edecek şekilde değiştirmeniz gerekir.
Monolitleri ayırırken tek bir kod tabanındaki kod parçalarını birden çok mikro hizmete böler ve ayrı ayrı dağıtırsınız. Mikro hizmetler ayrı bir sunucuda çalıştığından artık hizmet URL'lerinizi mutlak yollar olarak referans veremezsiniz; Siparişler mikro hizmetinin sunucu adresine yönlendirme yapmanız gerekir. Bunun için monolit hizmetin bir süre kapalı kalması ve ayrılan her bir hizmetin URL'sini güncellemesi gerekir. Mikro hizmetleri taşıma sürecinde mikro hizmetlerinizi ve monolitinizi üretime taşımayı planlarken bunu göz önünde bulundurmalısınız.
Monolitteki yapılandırma dosyanızı, yeni Siparişler mikro hizmetinin IP adresine işaret edeceği şekilde güncellemeniz gerekir.
nano
düzenleyiciyi kullanın:Düzenleyici açıldığında dosyanız şu şekilde görünmelidir:
REACT_APP_ORDERS_URL
kısmını yeni biçimle değiştirin ve Siparişler mikro hizmetinizin IP adresini aşağıdakiyle eşleşecek şekilde değiştirin:Dosyayı nano düzenleyicide kaydetmek için CTRL+O
, ENTER
ve ardından CTRL+X
tuşlarına basın.
Dosyada ayarlamış olduğunuz URL'ye giderek yeni mikro hizmeti test edin. Web sayfası, Siparişler mikro hizmetinizden bir JSON yanıtı döndürecektir.
Şimdi monolit ön ucu yeniden derleyin, monolit container'ını derlemek için derleme işlemini tekrarlayın ve GKE kümesine yeniden dağıtım yapın:
Şimdi hizmetleri ayırmaya devam ederek Ürünler hizmetini taşıyın. Önceki süreci aynı şekilde tekrarlayın. Docker container'ı derlemek, container'ınızı dağıtmak ve Kubernetes hizmeti aracılığıyla kullanıma sunmak için aşağıdaki komutları çalıştırın.
Çıkış:
Monoliti yeni Ürünler mikro hizmetinize işaret edecek şekilde yeniden yapılandıracağınız bir sonraki adımda bu IP adresini kullanacaksınız.
nano
düzenleyiciyi kullanın:Düzenleyici açıldığında dosyanız şu şekilde görünmelidir:
REACT_APP_PRODUCTS_URL
kısmını yeni biçimle değiştirin ve Ürünler mikro hizmetinizin IP adresini aşağıdakiyle eşleşecek şekilde değiştirin:Dosyayı kaydetmek için CTRL+O
, ENTER
ve ardından CTRL+X
tuşlarına basın.
Dosyada ayarlamış olduğunuz URL'ye giderek yeni mikro hizmeti test edin. Web sayfası, Ürünler mikro hizmetinden bir JSON yanıtı döndürecektir.
Şimdi monolit ön ucu yeniden derleyin, monolit container'ını derlemek için derleme işlemini tekrarlayın ve GKE kümesine yeniden dağıtım yapın. Bu adımları tamamlamak için aşağıdaki komutları çalıştırın:
Monolit yapılandırma dosyalarını yeniden derleyin:
Taşıma sürecinin son adımı, Ön Uç kodunu bir mikro hizmete taşımak ve monoliti kapatmaktır. Bu adım tamamlandıktan sonra monolitimizi mikro hizmet mimarisine başarıyla taşımış olacağız.
Yeni bir ön uç mikro hizmeti oluşturmak için son iki adımdaki prosedürü uygulayın.
Önceden, monoliti yeniden derlerken yapılandırmayı monolite işaret edecek şekilde güncellemiştiniz. Şimdi ön uç mikro hizmeti için aynı yapılandırmayı kullanmanız gerekir.
Bu işlem tamamlandıktan sonra, önceki adımlarla aynı süreci izleyin. Docker container'ı derlemek, container'ınızı dağıtmak ve Kubernetes hizmeti aracılığıyla kullanıma sunmak için aşağıdaki komutları çalıştırın.
Google Cloud Build ile Docker container'ı oluşturun:
Tüm hizmetler mikro hizmet olarak çalıştığına göre artık monolitik uygulamayı silebilirsiniz. Gerçek bir taşıma işleminde bu adımı gerçekleştirirken mevcut alan adlarımızın uygulamamızdaki yeni ön uç mikro hizmetlere işaret etmesini sağlamak için DNS değişiklikleri vb. gerekeceğini unutmayın.
Her şeyin çalıştığını doğrulayın: Monolit hizmetinize ait eski IP adresiniz artık çalışmıyor olmalı ve ön uç hizmetinize ait yeni IP adresiniz yeni uygulamayı barındırıyor olmalıdır.
Şuna benzer bir çıkış alırsınız:
Ön uç mikro hizmetinizin harici IP adresini belirledikten sonra kopyalayın. Ön ucunuzun erişilebilir durumda olup olmadığını kontrol etmek için tarayıcınızı bu URL'ye (örneğin http://203.0.113.0) yönlendirin. Web siteniz, monoliti mikro hizmetlere ayırmadan önce nasılsa yine o şekilde görünmelidir.
Monolitik uygulamanızı Google Kubernetes Engine'de başarıyla mikro hizmetlere ayırdınız ve dağıttınız.
Bu yönlendirmesiz öğrenim laboratuvarı, Google Cloud'da Web Sitesi görevinin bir parçasıdır. Görevler, bir öğrenme rotasını oluşturan birbiriyle bağlantılı laboratuvar dizilerini ifade eder. Bu laboratuvara katıldıysanız bu göreve kaydolun ve hemen bir tamamlama kredisi kazanın. Diğer görevleri görüntülemek için Google Cloud Öğrenim Merkezi kataloğuna bakın.
Becerilerinizi gösterip bilgilerinizi doğrulamak için uygulamalı bir yarışma laboratuvarına katılmak ister misiniz? Görevi bitirdikten sonra bu ek yarışma laboratuvarını tamamlayın.
Öğrenmeye devam etmek için Google Cloud'da Ölçeklenebilir Web Uygulamaları Barındırma konulu bu başarılı örnek videosunu izleyin veya aşağıdaki önerilere göz atın:
...Google Cloud teknolojilerinden en iyi şekilde yararlanmanıza yardımcı olur. Derslerimizde teknik becerilere odaklanırken en iyi uygulamalara da yer veriyoruz. Gerekli yetkinlik seviyesine hızlıca ulaşmanız ve öğrenim maceranızı sürdürebilmeniz için sizlere yardımcı olmayı amaçlıyoruz. Temel kavramlardan ileri seviyeye kadar farklı eğitim programlarımız mevcut. Ayrıca, yoğun gündeminize uyması için talep üzerine sağlanan, canlı ve sanal eğitim alternatiflerimiz de var. Sertifikasyonlar ise Google Cloud teknolojilerindeki becerilerinizi ve uzmanlığınızı doğrulamanıza ve kanıtlamanıza yardımcı oluyor.
Kılavuzun Son Güncellenme Tarihi: 20 Eylül 2023
Laboratuvarın Son Test Edilme Tarihi: 20 Eylül 2023
Telif Hakkı 2025 Google LLC Tüm hakları saklıdır. Google ve Google logosu, Google LLC şirketinin ticari markalarıdır. Diğer tüm şirket ve ürün adları ilişkili oldukları şirketlerin ticari markaları olabilir.
This content is not currently available
We will notify you via email when it becomes available
Great!
We will contact you via email if it becomes available
One lab at a time
Confirm to end all existing labs and start this one