Docker ve mikro hizmetlerin yükselişi

Yazar | Abraar Syed, Karthic Rao

Tercüman | Cehalet

Bir yazılım geliştiricisi veya teknoloji meraklısı olarak, "mikro hizmetler" ve "Docker" gibi terimler sonsuzdur, ancak neden bu kadar çok abartı olduğunu hala anlamıyor musunuz?

Öyleyse, bu makaleyi okumalısınız!

1. SOA'nın "kısa geçmişi"

2000'lerin başında, çok popüler bir yazılım mimarisi tasarım paradigması olan Servis Odaklı Mimari'nin (SOA) yükselişine tanık olduk. Kısacası, SOA, büyük ölçekli kurumsal uygulamalar oluşturmak için kullanılan bir yazılım mimarisi modelidir. Bu uygulamalar genellikle birden çok hizmetin entegrasyonunu gerektirir ve her hizmet, oluşturmak için farklı bir platform ve programlama dili kullanır. Etkileşim için iletişim mekanizması.

Aşağıda, hizmet odaklı mimarinin (SOA) basit bir örneği verilmiştir:

kilit nokta

  • SOA, kurumsal uygulamalar gibi büyük yazılım ürünleri için ilk tercihtir.
  • SOA, modüler uygulamaları vurgulamak yerine birden çok hizmeti tek bir uygulamaya entegre etmeye odaklanır.
  • SOA'da, hizmetler arasındaki etkileşim için kullanılan genel iletişim mekanizması Kurumsal Hizmet Veriyolu (ESB) olarak adlandırılır.
  • SOA tabanlı uygulamalar esasen monolitiktir. Diğer bir deyişle, tek bir uygulama katmanı, tümü tek bir platforma entegre edilen kullanıcı arayüzü veya sunum katmanını, iş mantığını veya uygulama katmanını ve veritabanı katmanını içerir.
  • 2. "Monolitik mimari" hakkında

    Online mağazayı örnek alalım. Birçok e-ticaret web sitesine birden fazla cihazdan erişilebildiğini biliyoruz, bu nedenle bu web siteleri genellikle dizüstü bilgisayarlar ve mobil cihazlar için farklı kullanıcı arayüzleri sağlar.

    Ayrıca, uygulamanın normal çalışmasını sağlamak için birden fazla işlemin veya hizmetin birbirine bağlı olduğunu da biliyoruz. Bu hizmetlerden bazıları hesap oluşturmaktan, ürün kataloglarını görüntülemek, alışveriş sepetlerini oluşturmak ve doğrulamaktan, fatura oluşturmaktan, siparişleri onaylamaktan, ödemeleri tamamlamaktan vb. Sorumludur.

    Monolitik bir uygulamada, tüm bu hizmetler aynı uygulama katmanı üzerinde çalışır, dolayısıyla bu e-ticaret web sitesinin yazılım mimarisi aşağıdaki gibidir:

    Dezavantaj

  • Açıkçası, hizmetlerin sayısı arttıkça, uygulamaların ölçeği büyümeye devam edecek. Bu, uygulama kodu tabanını oluşturan ve sürdüren geliştiricileri bunaltabilir.
  • Mevcut teknoloji yığınını güncellemek zordur ve mevcut teknoloji yığınındaki küçük bir içeriği değiştirmek bile bir kabus olur.
  • Her değişiklik, geliştiricilerin tüm uygulamayı yeniden oluşturmasını gerektirir, bu da kaynak israfıdır.
  • Müşteri tabanı büyüdükçe daha fazla talebimiz olacak ve bu da daha fazla kaynak gerektirecek. Bu nedenle, ölçeklenebilir bir ürün oluştururken çok önemlidir. Tek bir uygulama için yalnızca tek yönde ölçeklendirebiliriz, yani yatay yerine dikey olarak ölçekleyebiliriz. Bu, uygulamaları daha fazla donanım kaynağı (bellek ve CPU gibi) ekleyerek tek bir bilgisayarda ölçeklendirebileceğimiz anlamına gelir, ancak yatay ölçekleme (birden çok bilgisayarda) hala bir zorluktur.
  • 3. Kurtarıcı "mikro hizmet" burada!

    Mikro hizmet mimarisi, bir SOA uzmanlığı olarak düşünülebilir ve aynı zamanda monolitik mimarinin kusurlarının üstesinden gelebilecek alternatif bir modeldir.

    Mikro hizmet mimarisinde, uygulamayı modülerleştirmeye ve onu diğer hizmetlerden veya tüm uygulamanın kendisinden bağımsız olarak oluşturulabilen, dağıtılabilen, ölçeklenebilen ve bakımı yapılabilen daha küçük bağımsız hizmetlere ayırmaya odaklanıyoruz. Bu bağımsız hizmetlere mikro hizmetler denir, bu nedenle bu mimariye mikro hizmet mimarisi adı verilir.

    kilit nokta

  • Mikro hizmet mimarisi ve SOA aynı olmasa da, bazı benzerlikleri vardır. Mikro hizmet mimarisi, SOA'nın bir çeşidi veya hatta bir SOA uzmanlığı olarak adlandırılır. Başka bir deyişle, SOA, mikro hizmet mimarisinin bir üst kümesi olarak düşünülebilir.
  • İnsanların bu mimariler arasında benzerlikler bulabilmesinin nedeni, temelde hepsinin gevşek bir şekilde bağlı hizmetler oluşturmaya odaklanmasıdır. Bu hizmetlerin açık sınırları vardır ve her hizmetin bağımsız bir işlevi vardır.
  • Aradaki fark, SOA'nın birçok başka anlama gelebilmesidir. Örneğin, SOA, sistemi bir uygulamaya entegre etmeye ve kodun yeniden kullanılabilirliğini sağlamaya odaklanarak monolitik bir mimariye uygulanabilir. Ancak mikro hizmet mimarisi için durum böyle değildir Mikro hizmet mimarisinin odak noktası, bağımsız hizmetler oluşturarak ve ürün ölçeklenebilirliğini sağlayarak uygulamaları modüler hale getirmektir.
  • avantaj

  • Basit veya karmaşık alanlarda, endişelerin ayrılması kavramını tanıtın ve yazılım uygulaması geliştirmede çeviklik kazanın.
  • Mikro hizmetlerin bağımsız yeteneği veya bağımsızlığı aşağıdaki faydaları sağlar:
    • Karmaşıklığı azaltmak için geliştiricileri küçük ekiplere ayırın. Her küçük ekip, bir veya daha fazla hizmet oluşturmaktan ve sürdürmekten sorumludur.
    • Her değişiklik olduğunda tüm uygulamayı yeniden oluşturmak yerine dağıtımın bloklara bölünmesine izin verin, böylece riski azaltın.
    • Bakım zorluğunu azaltmak için tüm uygulamayı tek bir noktada güncellemek yerine, bir veya daha fazla hizmetin teknoloji yığınını artımlı olarak güncelleyin veya yükseltin.
    • Hizmetleri oluşturmak için herhangi bir programlama dili kullanılabilir.Buna ek olarak, verilen her hizmet için ayrı bir veri modeli korunabilir.

    3. Bireysel hizmetlerin konuşlandırılmasını, hizmet yönetimini ve otomatik ölçeklendirilmesini sağlamak için tam otomatik bir dağıtım mekanizması oluşturulabilir.

    Dördüncüsü, teknolojinin evrimi

    Yazılım mimarisi modellerinin geliştirilmesine ek olarak, yazılım altyapımızı desteklemek ve ölçeklenebilir ürün ve hizmetlerin verimli bir şekilde yönetilmesini sağlamak için Docker ve Kubernetes gibi yeni teknolojilerin ortaya çıktığını gördük. Donanım sanallaştırmadan kapsayıcıya geçiş yaptık.

    Düşünüyor olabilirsiniz, bu ne anlama geliyor?

    BT altyapısının gelişimini anlamak için aşağıdaki diyagramı kullanalım:

    İlk resim fiziksel bir makineyi veya bir donanım sunucusunu gösterir. Genellikle, uygulamaları oluştururken ana işletim sistemi tarafından sağlanan kaynakları kullanırız ve uygulamaları dağıtırken aynı modeli kullanırız. Peki ya uygulamayı genişletmek istersen? Bir noktada, başka bir donanım sunucusuna ihtiyacınız olabilir. Sayı artmaya devam ettikçe, maliyetler ve diğer kaynaklar (donanım ve enerji tüketimi gibi) da artacaktır.

    Ayrıca merak edebilirsiniz, tüm donanım kaynaklarını ve işletim sistemlerini her zaman kullanmak gerekli mi? Tabii ki değil. O halde neden bu kadar büyük bir altyapıya ihtiyacımız var?

    Bu sorun, donanım sanallaştırmasının geliştirilmesine yol açtı, böylece sanal makineler (VM) ortaya çıktı ve BT altyapısını sanal makineler aracılığıyla optimize ettik. İkinci resimde görebileceğiniz gibi, sanal makinenin tek bir fiziksel makine veya ana işletim sistemi üzerinde çalışan kendi konuk işletim sistemi vardır. Bu nedenle, çok sayıda fiziksel makine kurmak zorunda kalmadan birden fazla uygulama çalıştırabiliriz. Ana bilgisayar işletim sistemi, farklı sanal makineler arasında sistematik kaynak tahsisi ve yük dengeleme sağlayabilir.

    Sanal makine, yazılım bakımının zorluğunu ve maliyetini azaltır, ancak yine de daha fazla optimize edilebilir. Örneğin, konuk işletim sistemi ortamında tüm uygulamalar beklendiği gibi çalışmayacaktır. Ek olarak, basit süreçleri çalıştırmak için bile, konuk işletim sistemi çok fazla kaynak gerektirir.

    Bu sorunlar bir sonraki yeniliğe yol açtı: konteynerleştirme. İşletim sistemine özgü sanal makinelerin aksine, kapsayıcılar daha hafif oldukları için uygulamaya özeldir. Ek olarak, sanal makine birden çok işlemi çalıştırabilirken, konteyner tek bir işlem olarak çalışabilir. sonra:

  • Fiziksel bir makinede birden fazla konteyner çalıştırabilir veya hatta konteynerleri tek bir sanal makinede çalıştırmayı düşünebiliriz. Her iki durumda da, uygulama ile ilgili sorunları çözebilir.
  • Konteynırlaştırma ve sanallaştırma, rekabetçi bir ilişki değil, BT yazılım altyapısını daha da optimize etmek için bir tamamlayıcılıktır.
  • Beş, Docker

    BT yazılım altyapısının evrimini zaten anladık. Daha sonra, daha önce tartışılan mikro hizmet mimarisini ve kapsayıcıyı nasıl gerçekleştireceğimizi bilmek isteyebilir miyiz? Cevap: Docker.

    Docker, dünyanın önde gelen yazılım konteynerleştirme platformudur. Mikro hizmetleri Docker konteynerleri olarak adlandırdığımız şeyin içine dahil eder ve ardından bağımsız bakım ve dağıtım gerçekleştirir. Her bir konteyner, belirli bir iş fonksiyonundan sorumlu olacaktır.

    Docker'ı daha derinlemesine anlamak için, daha önce tartışılan e-ticaret web sitesini örnek olarak ele alalım. Hesap oluşturma, ürün kataloglarını görüntüleme, alışveriş sepetlerini oluşturma ve doğrulama gibi birden çok işletme ve hizmete sahip olduğunu biliyoruz. Mikro hizmet mimarisinde, bunların tümü mikro hizmetler olarak kabul edilebilir ve bir Docker kapsayıcısında kapsüllenebilir. Ama bunu neden yapmak istiyorsun?

    Bunun nedenlerinden biri, geliştirme ve üretim ortamları arasında tutarlılığın sağlanmasıdır. Örneğin, bu uygulamayı geliştiren üç geliştirici olduğunu ve her birinin kendi geliştirme ortamına sahip olduğunu varsayalım. Bir geliştirici, kendi makinesinde Windows işletim sistemini çalıştırabilirken, ikinci geliştirici Mac OS çalıştırabilir ve üçüncü geliştirici, Linux tabanlı bir işletim sistemini tercih edecektir. Her birinin uygulamaları geliştirme ortamlarına yüklemek için saatler harcamaları ve bunları buluta dağıtmak için fazladan iş yapmaları gerekiyor. Bu süreç o kadar sorunsuz değildir ve bu uygulamaları bulut altyapısına dağıtırken aralarında her zaman sürtüşme olacaktır.

    Docker ile uygulama, ana bilgisayar ortamından bağımsız yapılabilir. Mikro hizmet mimarisi nedeniyle, her hizmet artık bir Docker kapsayıcısında paketlenebilir. Docker kapsayıcısı hafiftir ve uygulamaların oluşturulabileceği, korunabileceği, yayımlanabileceği ve dağıtılabileceği kaynaklar izole edilmiştir.

    avantaj

  • Docker, güçlü topluluk desteğine sahip çok popüler bir yazılımdır ve özellikle mikro hizmetler için oluşturulmuştur.
  • Sanal makinelerle karşılaştırıldığında hafiftir ve maliyet ve kaynak tüketiminde avantajları vardır.
  • Geliştirme ve üretim ortamları arasında tutarlılık sağlar ve bulut tabanlı uygulamalar oluşturmak için idealdir.
  • Sürekli entegrasyonu ve dağıtımı kolaylaştırır.
  • Docker, AWS, Microsoft Azure, Ansible, Kubernetes ve Istio gibi popüler araçlar ve hizmetlerle entegre edilebilir.
  • Orijinal İngilizce: https://timber.io/blog/docker-and-the-rise-of-microservices/

    190329 Yi Yanqianxi, kalbini ifade eden havalı çocuk "T" nin yeni sayısının iç sayfasını yayınladı.
    önceki
    Mini Program: BAT'ın bir sonraki yeni savaş alanı
    Sonraki
    "Super Mario Bros." canlı aksiyon filmi bir Blu-ray demir kutu versiyonunu piyasaya sürecek
    Jin Xiaomei, doğum yaptıktan sonra erkek arkadaşıyla ilk kez denize açıldığında fotoğraflandı, ancak kızını birlikte seyahate götürmedi.
    190329 Uçan trapez yeniden yola çıktı! Liu Yuning bugün Changsha Havaalanında göründü
    Bulmaca! Yürüyen merdivene binmek artık "sola gitme ve sağda durma" değil, bu neden?
    65W şarj desteği, Lenovo ThinkPad, thinkplus ruj güç kaynağını zorluyor
    "Dragon Quest 11" NHK özel programı, üretim alanını keşfediyor
    Kobe en iyi animasyon kısa film dalında Oscar kazandı, onun bir zamanlar rapçi olduğunu bilmemelisin
    "TFBOYS" "Haber" 190329 Yi Yang Qianxi'nin yeni sayısı "T" iç sayfada yayınlandı, kalbini ifade eden havalı bir çocuk
    Üç yaşında bir çocuk bir milyon Mercedes-Benz'i kaşıdı, ebeveynleri bunu reddetmek istedi ama fotoğrafı gördükten sonra suskun kaldılar.
    Bu film bir grup yakışıklı ve güzel İngiliz'in aşık olmasının hikayesini anlatıyor Bu köpek maması mı yenir?
    Oscar'ın En İyi Özgün Senaryo "Escape from Deadly Town" ın yönetmeni bir keresinde rapçi 50Cent'i taklit etti.
    'Crash Bandicoot' 20. Yıldönümü İncelemesi: Mutlu Başlangıca Geri Dön
    To Top