Mikroservis Mimari Notlar v2

Merhaba, Bu yazıyı mikroservis mimari notlar adındaki ilk yazımın devamı olarak düşündüm. İlk kısımda yazılım mimari bakış açısına daha çok değindik bu yazıda da mikro servislerimizi konumlandıracağımız alt yapı süreçlerine odaklanacağız. Keyifli okumalar 🤚

Deploy Mimarileri ?

Genel açıdan sürece bakarsak; yazılımcı olarak bir uygulama tasarladık ve onu geliştirdik lokal makinemizde bunun çıktısını gözlemledik. Peki bunun diğer ortamlarda(dev, test, prod gibi..) çalıştırmak için adımlarımız ne olacak ? Aşağıdaki resimde uygulamamızı deploy edebileceğimiz farklı mimari yaklaşımları görebiliriz.

🎆 Bunlardan ilki geleneksel yöntem olan fiziksel bir alt yapı üzerinde ki işletim sistemine deployment sürecidir. Yeni bir ortam ihtiyacında yeni bir sunucu kurulması gerekliliği bize hem maliyet hem de operasyonel yük getirir.

🎆 Sanallaştırma teknolojisi ile birlikte fiziksel kaynaklar yazılım seviyesinde parçalara ayrılarak çoklu sayıda istenilen özelliklerde sunucular kurmak mümkün olmaktadır. Bu durum bize hem maliyet hem de zaman konusunda geleneksel yönteme kıyasla avantaj yaratmaktadır.

🎆 Container mimarisi ise sanal katman ya da fiziksel katman üzerinde yapılacak işe yönelik sadece ihtiyaç duyulan bileşenlerin göreve uygun hazırlanan özel imaj ile karşılanmasıdır. Bu kısımda fiziksel katman üzerinden ek bir Hypervisor maliyeti gerekmediğinden kaynağın kullanımı noktasında avantaj yaratmaktadır.

Yeni bir instance oluşturmak kullanıcıyı etkilemeyecek kadar hızlı bir şekilde olur. Container’ lar ihtiyaç duyduğu yazılımsal bileşenleri kendi üzerinden barındırır. Görev süresince ayakta kalır. Görevini tamamlayan Container' lar sonlanarak gereksiz kaynak kullanımının önüne geçer.

Yazılım paketlerini (software packages) derleyip çalıştırabileceğimiz izole edilmiş ortamlardır. Bu yazılım paketleri uygulamayı çalıştıracak bütün bağımlılıkları ve kodları içerir işte bu paket de Container Image olarak adlandırılıyor. Paketleme sistemi sayesinde geliştiricilerin hızlıca benzer özelliklerde ortamı kaldırmasına olanak sağlar.

Örneğin Java 11 ile çalışan ve bir çok kurulum adımını barındıran bir uygulamayı geliştirici paketlediğinde herhangi bir kullanıcı ek bir ihtiyaç duymadan paketlenen uygulamayı kendi ortamında çalıştırabilmektedir. Burada önemli olan konu container’ların en küçük görevleri karşılamak üzere kurgulandığıdır. Aynı microservice mimarisinde olduğu gibi.

Docker bu mimarinin neresinde ? bize ne sağlar ?

Container oluşturma ve uygulamanın imajını oluşturmada yardımcı olur yani uygulamamızı bulut ortamlarında yada fiziksel sunucuda container olarak deploy eder.

Docker öğrenmek ve interaktif ortamda deneyimlemek istiyorsanız bulutbilisimciler.com sitesine kayıt olup eğitime başlayabilirsiniz. Temel seviyede bir çok bilgi ve paralelde bunu deneyimleyebileceğiniz güzel bir ortam sunuyor.

https://bulutbilisimciler.com/courses/docker/docker-exec-1/shell

Mikroservis mimarisinde uygulama geliştirdiğimiz de hangi yöntem ile bunu deploy etmek mantıklıdır?

Mikroservislerin küçük iş parçalarını yürüttüğünü biliyoruz her biri için bir sanal makine ayarlama maliyeti ve yönetim güçlüğünü tahmin edebiliyorsunuzdur. Bunun yerine özelleştirilmiş container lar üzerinde bunları çalıştırmak çok daha hızlı ve efektif olacaktır.

--

--