Merhaba,

Bugün, mikroservisler neden hayatımızda artık vazgeçilmez olmaya başladı ile ilgili genel bir bilgilendirme yaptıktan sonra, mikroservisler hayatımızın kritik bir parçası olurken, mikroservisler arası network trafiğinin de izlenmesinin, hata analizlerinin yapılarak hataların ayıklanmasının elzem bir ihtiyaç olarak karşımıza çıktığı gerçeğine de vurgu yaparak, bu ihtiyacımızı ne şekilde çözebilirizle ilgili öneriler sunmak istiyorum.

Mikroservis mimarisini hayatımızın olmaz ise olmaz parçası kılan en önemli özelliklerini aşağıdaki gibi sıralamamız mümkün.

Ölçeklenebilirlik: Mikroservis mimarisi, uygulamaları bağımsız hizmetlere/servislere ayırarak ölçeklenebilirlik sağlar. Her bir mikroservis, kendi başına ölçeklendirilebilir olduğundan, uygulama daha fazla talep aldığında sadece ilgili mikroservisler ölçeklendirilir. Bu, kaynakların daha etkili ve verimli bir şekilde kullanılmasını ve uygulamanın daha çevik bir şekilde büyümesine olanak sağlar.

Bağımsızlık: Mikroservisler, birbirinden bağımsız olarak geliştirilebilir, dağıtılabilir ve yönetilebilir. Her bir mikroservisin sorumluluğu, farklı bir ekip veya geliştirme süreci tarafından üstlenilebilir. Bu, hızlı ve esnek bir şekilde geliştirme yapılmasına olanak tanır. Ayrıca, bir hizmetin güncellenmesi veya değiştirilmesi, diğer hizmetleri etkilemeden gerçekleştirilebilir.

Hata Toleransı ve İzole Edilebilirlik: Mikroservisler, her biri kendi sınırlı işlevselliğine sahip olduğu için hata toleransı sağlar. Bir mikroserviste oluşan bir hata, diğer mikroservisleri etkilemez. Bu, uygulamanın genelindeki hataların sınırlı bir etkiye sahip olmasını sağlar. Ayrıca, bir mikroservis için yapılan değişiklikler veya hatalar, diğer mikroservislere yayılmadan izole edilebilir.

Teknoloji Çeşitliliği: Mikroservisler, farklı teknolojilerin kullanılmasını destekler. Her bir mikroservis, kendi teknolojik gereksinimlerine ve ihtiyaçlarına uygun olarak geliştirilebilir. Bu, ekiplerin ve geliştiricilerin en uygun teknolojiyi seçebilmesini sağlar. Ayrıca, mevcut sistemlere entegrasyon kolaylığı sağlar.

Hızlı Dağıtım ve Sürekli Entegrasyon: Mikroservis mimarisi, hızlı dağıtım ve sürekli entegrasyon süreçlerini kolaylaştırır. Her bir mikroservis, ayrı ayrı geliştirilip, test edilebilir ve dağıtılabilir. Bu, değişikliklerin daha hızlı bir şekilde uygulanmasını ve yeni özelliklerin daha hızlı bir şekilde sunulmasını sağlar.

Ölçeklendirilebilir Veri Tabanları: Mikroservisler, her bir mikroservisin kendi veri tabanını kullanmasına olanak sağlar. Bu, veri tabanlarının daha iyi ölçeklenebilirlik ve performans sağlamasına yardımcı olur. Ayrıca, veri tabanlarına yapılan değişikliklerin diğer mikroservisleri etkilememesini sağlar.

Mikroservisler, günümüzde hayatımızın vazgeçilmez bir parçası haline gelirken, iş dünyasında ve yazılım geliştirmede devrim yaratan bir yaklaşımı da temsil ediyor. Ancak, mikroservis mimarisinin benimsenmesiyle birlikte elbette ortaya çıkan yeni zorluklar da bulunuyor. Mikroservislerin birbirleriyle iletişim kurması, işbirliği yapması gerekiyor ve bu iletişim network trafiği üzerinden gerçekleştiği için, network’ün de etkin bir şekilde izlenmesi ihtiyacını beraberinde getiriyor.

Mikroservisler arası network trafiğinin izlenmesi, hata analizi yapılması ve hataların ayıklanması, bugünün gelişen ve karmaşıklaşan sistemlerinde elzem bir ihtiyaç haline geldi. Neden bu kadar önemli? İlk olarak, mikroservis tabanlı bir sistemin performansını, güvenilirliğini ve ölçeklenebilirliğini anlamak için network trafiği verilerine ihtiyaç duyulur. Hangi mikroservislerin ne kadar trafiğe sahip olduğunu, darboğazları veya performans sorunlarını belirlemek için network trafiği izlenmeli ve analiz edilmelidir.

Ayrıca, hata durumlarında sorunun kaynağını tespit etmek ve sorunu hızla çözmek için mikroservisler arası network trafiği detaylı bir şekilde incelenmelidir. Hata analizi, mikroservisler arasındaki iletişimde oluşabilecek sorunları ve hataları tespit etmek için kritik bir araçtır. Network trafiği verileri, hatalı yanıtları, yavaş yanıtları veya hata durumlarını belirlemek için kullanılabilir. Bu sayede sorunun kaynağı belirlenir ve düzeltici önlemler alınabilir.

Son olarak, güvenlik açısından mikroservisler arası network trafiğinin izlenmesi büyük bir öneme sahiptir. Potansiyel saldırılara karşı savunmasızlıkları tespit etmek ve güvenlik önlemlerini güçlendirmek için network trafiği analizi gereklidir. İzleme ve hata ayıklama işlemleri, güvenlik açıklarını veya anormallikleri belirleyerek sisteminizin güvenliğini artırmanıza yardımcı olur.

Kısacası, mikroservislerin hayatımızın vazgeçilmez bir parçası haline gelmesiyle birlikte, mikroservisler arası network trafiğinin izlenmesi, hata analizi yapılması ve hataların ayıklanması hayati bir önem taşıyor. Bu işlemler, sistemin performansını optimize etmek, hataları hızla tespit etmek ve güvenliği güçlendirmek için gereklidir.

Bu tür izleme, analiz ve hata ayıklama işlemleri için çeşitli araçlar ve teknolojiler bulunmaktadır. Bu yöntemler ve teknolojiler için aşağıdaki örnekleri vermek mümkün.

Konteyner Orkestrasyon Araçları: Kubernetes, Docker Swarm gibi konteyner orkestrasyon araçları, konteynerlerin çalıştığı ortamı yönetir ve network trafiğini izlemek, yönlendirmek ve analiz etmek için kullanışlı özelliklere sahiptir.

İzleme ve Analiz Aracı: Prometheus, Grafana gibi araçlar, mikroservislerin metriklerini, loglarını ve network trafiğini izlemek için kullanılabilir. Bu araçlar, performans sorunlarını tespit etmek, hataları analiz etmek ve genel bir bakış sağlamak için veri görselleştirmesi sunar.

API Gateway: Mikroservisler arasındaki trafiği yönlendirmek, izlemek ve kontrol etmek için API gateway’ler kullanılabilir. Bu gateway’ler, network trafiğini izleyerek istatistikleri toplayabilir, hata durumlarını tespit edebilir ve trafik yönlendirmesini yapılandırabilir.

Dağıtılmış Network İzleme Araçları: Mikroservisler arasındaki network trafiğini izlemek için dağıtılmış network izleme araçları, paket düzeyinde veri toplayarak network’teki hız, gecikme ve hataları analiz etmenizi sağlar.

Red Hat’in mikroservis tabanlı uygulamaların network trafiğini izlemek için sunduğu bazı çözümlere örnekler verebiliriz.

OpenShift Service Mesh: Red Hat OpenShift Service Mesh, mikroservisler arasındaki network trafiğini izlemek, yönlendirmek ve güvenli bir şekilde yönetmek için kullanılan bir araçtır. Bu, network trafiğini şeffaf bir şekilde takip etmenizi sağlar ve mikroservisler arasında güvenli iletişim sağlamak için mTLS (mutual TLS) şifreleme kullanır. Service Mesh, ayrıca trafik yönlendirmesi, hata toleransı ve hata analizi gibi özellikler sunar.

Red Hat OpenShift Container Platform: Red Hat OpenShift Container Platform, mikroservis tabanlı uygulamaların dağıtımını ve yönetimini kolaylaştıran bir platformdur. Network trafiğini izlemek için OpenShift Container Platform üzerinde Prometheus ve Grafana gibi araçları kullanabilirsiniz. Bu araçlar, mikroservislerin metriklerini ve loglarını izlemenizi sağlar ve network trafiğini görselleştirmek için kullanılabilir.

Red Hat Advanced Cluster Management for Kubernetes: “Red Hat Advanced Cluster Management for Kubernetes”, birden fazla Kubernetes kümesinin yönetimini sağlayan bir çözümdür. Bu çözüm, mikroservis tabanlı uygulamaların izlenmesi ve yönetimi için kullanılabilecek araçları içerir. Network trafiğini izlemek ve analiz etmek için Prometheus, Grafana veya diğer izleme araçlarını entegre edebilirsiniz.

Red Hat’in OpenShift platformu için Network Operatörü (Network Operator) adı verilen bir bileşeni de bulunmaktadır. Network Operatörü, “OpenShift Cluster Network Operator (CNO)” olarak da bilinir, network yönetimi ve konfigürasyonunu kolaylaştırmak için tasarlanmıştır.

Network Operatörü, OpenShift Kubernetes kümesindeki network bileşenlerini yönetmek ve network politikalarını uygulamak için kullanılır. Aşağıda Network Operatörünün bazı temel özelliklerini özetlemeye çalıştım.

Network Konfigürasyonu: Network Operatörü, OpenShift platformunda network konfigürasyonunu yapmanıza olanak tanır. Örneğin, network hizmetlerinin erişilebilirliğini sağlamak için LoadBalancer’ları, iş yüklerini network segmentlerine yerleştirmek için NetworkPolicy’leri ve daha fazlasını yapılandırmanıza imkan verir.

Hizmet Keşfi: Network Operatörü, OpenShift kümesinde çalışan hizmetlerin keşfini ve iletişimini sağlamak için DNS tabanlı çözümler sunar. Hizmetlerin IP adreslerini ve DNS isimlerini yönetir ve uygulama içerisindeki hizmetlerin birbirlerine erişimini kolaylaştırır.

Network İzolasyonu: Network Operatörü, network politikalarını uygulayarak mikroservisler arasında network izolasyonunu sağlar. Bu, mikroservislerin belirli IP adreslerine veya portlara erişimini kontrol etmenizi ve network trafiğini filtrelemenizi sağlar. Böylece, güvenlik ve hata izolasyonu gibi gereksinimleri karşılamak için esneklik sağlar.

Network Yönetimi: Network Operatörü, network bileşenlerinin durumunu izler ve yönetir. Network trafiği ve network bileşenlerinin durumuyla ilgili metrikleri izleyebilir ve hata durumlarında otomatik iyileştirme ve teşhis sağlayabilir. Bu sayede, network performansını takip etmek ve sorunları çözmek için gereken bilgileri sağlar.

Özet olarak, network operatörü, OpenShift platformunda network yönetimi ve konfigürasyonunu merkezi bir şekilde kolaylaştırır. Network bileşenlerini yönetmek, network politikalarını uygulamak ve network trafiğini izlemek için gelişmiş bir araç ve yetenek seti sunar. Bu da mikroservis tabanlı uygulamaların network yönetimini daha etkili bir şekilde gerçekleştirmenize yardımcı olur.

Diğer taraftan, “Red Hat Network Observability Operator”, “OpenShift Container Platform” kümeleri için network trafiğini gözlemlemek isteyen küme yöneticilerinin kullanabileceği isteğe bağlı bir operatördür. “Network Observability Operator”, network akışlarını oluşturmak için eBPF teknolojisini kullanır. Network akışları daha sonra “OpenShift Container Platform” bilgileriyle zenginleştirilir ve Loki’de depolanır. Depolanan network akışı bilgilerini “OpenShift Container Platform” konsolunda görüntüleyebilir, daha fazla içgörü elde etmek ve sorun giderme yapmak için analiz edebilirsiniz.

“Network Observability Operator”, “Flow Collector API”sini sağlar. Bir “Flow Collector” kaynağı oluşturulduğunda, Loki log deposunda network akışlarını oluşturmak ve depolamak için pod’ları kullanır. “OpenShift Container Platform Web” konsolunda gösterge panolarını, metrikleri ve akışları görüntüleyebilirsiniz.

“Network Observability” özelliği, NetFlow verilerini yeni bir telemetri veri kaynağı olarak dışa aktarma, toplama, zenginleştirme ve depolama yeteneği sağlar. Ayrıca, bu akışları görselleştirmek, bilgileri sıralamak, filtrelemek ve dışa aktarmak için OpenShift web konsoluyla entegre olan bir ön uç (front-end) bulunur.

“NetFlows”, Cisco tarafından 1996 yılında geliştirilen bir teknolojidir ve anahtarlayıcılar, yönlendiriciler veya güvenlik duvarı gibi network cihazları, arabirimlere giren ve çıkan paketleri takip eder. En son sürümü olan IP Flow Information Export (IPFIX), tüm büyük üreticiler tarafından desteklenmektedir. Bu verilerin toplanıp depolanması, network sorunlarının giderilmesine, bant genişliği kullanımının belirlenmesine, kapasite planlamasına, politikaların doğrulanmasına ve anormalliklerin ve güvenlik sorunlarının belirlenmesine yönelik geniş bir olanak yelpazesi sunar. Bu veriler, aşağıdaki konularda bize bilgi sağlar.

Herhangi iki pod arasında ne kadar trafik akıyor? Genel trafiğin yüzde kaçı web trafiği? En yoğun trafik olduğu zaman dilimleri nelerdir? Bir pod’a giren ve çıkan saniyede kaç bayt trafik var? Belirli bir Kubernetes hizmeti tarafından yönetilen toplam kaç trafik işlendi? http, ftp ve telnet gibi güvensiz protokollerle ilgili herhangi bir trafik var mı?

Bir OpenShift kümesi oluşturuyorsanız,” Container Networking Interface” (CNI) sağlayıcısını “OVN-Kubernetes” olarak ayarlamanız gerekmektedir.

Sonuç olarak, mikroservis mimarisiyle birlikte gelen avantajları elde etmek için mikroservisler arasındaki network trafiğini etkin bir şekilde izlemek önemlidir. Network izleme araçları, güvenlik kontrolleri, performans testleri ve hata izleme yöntemleri ile bu süreçlerimizi desteklemeli ve geliştirmeliyiz. Sistem performansını artırmak, hataları tespit etmek ve kaynakları verimli bir şekilde kullanmak için uygun, doğru ve etkin çözümleri ortamımıza entegre etmemiz son derece kritiktir.

Sarav Asiye Yiğit – 18 Haziran 2023

Kaynakça:

https://cloud.redhat.com/blog/a-guide-to-providing-insight-with-network-observability