📖
Genel Bilgiler
  • Genel
  • Yazılım Teknolojiileri
    • SOLID
    • Mimariler ve Mimari Paternleri
    • MVC, MVP, MVVM
    • Mikroservis Yaklaşımı
    • DDD
    • Nesne Yönelimli Programlama
    • Hangi Programlama Dili Hangi Framework Öğrenilmeli?
    • Programlama Dilleri Üzerine tecrübeler
    • Microsoft .NET Teknolojileri
    • Microsoft .NET CORE 3.x ile Katmanlı Mimari Tasarımı
    • Test
    • Hangi Geliştirme ve Deployment Ortamı (Windows vs Linux)
    • Veri Tabanları ve Veri Tabanı Mimarileri
    • Asysnc/Awake
    • Oyun Geliştirme
      • WebAssembly vs Asm.ts
      • Unity ve Devler Ligi
      • Godot Oyun Motoru
      • Three.js ve Alternetif Javascript 3D Kütüphaneler/Framework' ler
    • Aspect Oriented Programming
  • Sanallaştırma
    • Sanallaştırma (Hypervisor ve Container & Docker)
    • Kubernetes
  • Yazılım Kültürleri
    • DevOps
    • Jenkins
    • SAST, DAST, SCA, Pentest
    • Glusterfs
    • Yazılım Üzerine Tartışmalar/Sohbetler
    • TUBITAK BILGEM YTE
  • Metro/Tren Sinyalizasyonu
  • Yapay Zeka (Artificial Intelligence)
  • Embedded Realtime Linux
  • Süper Bilgisayarlar Neden Süperler
  • Lock Free Tasarım
  • Git ile Çalışmak
  • CPU, APU, PPU, NPU, TPU ...
  • CANBUS
  • MERHABA (HELLO)
Powered by GitBook
On this page
  • CLOUD SERVICES
  • SERVERLESS
  • HYPERVISOR
  • CONTAINERS
  • Docker
  • Docker Alternatifleri
  • Docker Swarm ile Ölçeklenebilirlik (Scaling)
  • 2020

Was this helpful?

  1. Sanallaştırma

Sanallaştırma (Hypervisor ve Container & Docker)

Hypervisor ve Container Tabirleri Üzerine

PreviousSanallaştırmaNextKubernetes

Last updated 5 years ago

Was this helpful?

CLOUD SERVICES

SERVERLESS

Uygulamanı yükle ve kullandığın CPU time ve memory kadar para öde prensibiyle ilerleyen mimari yapı.

Serverless != Microservices

Konu mimariyle alakalı değil. Deployment metodudur. Ama zamanla yapınızı microservice çevirmeniz gerekecektir.

HYPERVISOR

Bu konularda bir çok kaynak Türkçe olarak da bulunmaktadır. Bu yazımız da bu yazılara atıfta bulunup biraz daha karşılaştırma, performans temelli bakış gerçekleştireceğim. Karmaşıkça anlatılan ana mimariyi basitçe ifade etmeye çalışacağım.

Type-1 ve Type-2 diye hypervisor çeşitleri vardır. Bunları bir çok yerde resmedildiğini de görebilirsiniz. En bilinen ve populer olanlardan bahsetmeye çalışacağım.

Type-1' e örnek olarak (Hyper-V, Vmware EXSi Bare Metal Hypervisor, Xen/RT-Xen, JailHouse) verilebilinirken Type-2' e örnek olarak (Vmware Workstation, VMware Fusion (for MAC users), Oracle VirtualBox, Parallels (for MAC users)) örnek gösterilebilir.

Tabii daha ayrıntılara girmeden ara bir başlıkta bu yazılımların dayandığı temel donanımsal teknolojiden bahsederek işlemci ve anakart üreticilerinin ve bu teknolojileri kullanarak sanallaştırılabilir çevre birim üreticilerinin de hakkını teslim etmek gerekir. İşlemci içerisinde VT-x (AMD firması AMD-SVM) teknoloji ve anakart chipsetlerindeki VT-d teknolojileri (AMD firması AMD-V olarak adlandırır) bu işin bel kemiğini oluşturan teknolojilerdir. Bir de SR-IOV (single root input/output virtualization) teknolojisi bulunmaktadır.

Bahsedeceklerimiz arasındakilerden bir tanesi VMware ESXi bir diğeri de Microsoft Hyper-V mimarisi olacak. VMware tam olarak donanım üzerinde koşar. Kendine ait scheduler vardır. Ve üzerindeki Virtual Machine (VMs) lere donanımsal kaynakları kendi algoritmalarına göre paylaştırır. Arayüzlerinden kullanabileceği maksimum RAM miktarı, CPU miktarı, disk miktarı gibi ayarlamalar yapılır. Bunların hepsini yaparken de kendisini direkt olarak bir CPU üzerinde koşturur ve sınırlı bir miktarda da RAM tüketir. Bir donanıma önce VMware kurulur sonra üzerlerine VMs oluşturularak Guest OS ler kurulur.

Hyper-V ise mimari olarak çalışma olarak daha farklıdır. Hyper-V destekleyen bir Microsoft Windows işletim sistemi öncelikli olarak donanım üzerine kurulur ve Hyper-V özelliği aktifleştirilir. Bu aktifleştirme sonucu Hyper-V, kurulduğu ve Host işletim sistemi (Parent OS) olarak anılan OS altına yerleşir. Hyper-V CPU ve bellek birimlerini OS arasında paylaştırarak direkt erişim sağlarken Guest OS' ler memory temelli veri aktarımı sağlayan VMBUS aracılığıyla Parent OS de driverlarının ve yönetiminin bulunduğu diğer donanımlara erişim sağlarlar. Yani Guest OS (Child OS) hala host işletim sisteminin kaynaklarına bağımlı olarak çalışır. Parent deki bir dar boğaz diğer VMs lerin performansını etkileyecektir. Örneğin, arkaplan da çalışan processlerin ihtiyaçlarına göre guest OS ihtiyaçlarını erteledeği durumlar görülebilir. Hyper-V scheduler' ı 3 farklı algoritmada çalışabilmektedir. Bunlar classic, core ve root metotlarıdır. Classic fair bir şekilde kaynakların paylaşımını sağlarken, core scheduler Scheduling Multithreading (SMT) desteği de sunmaktadır. Yani CPU üzerinde koşan threadler instructionların akışlarına göre CPU zaman domeninde boşluksuz kalacak şekilde çalışması için daha verimli hale getirir. Root Scheduling de hyper-V tarafından schedling yapılması yerine Host OS tarafından yapılmasına izin veren metotdur.

VMware ESXi ise tüm Guest OS eşit mesafededir. Scheduler desteğinin yanı sıra kaynak paylaşımlarını kendi yönetir. Donanımların driver desteğini ve paylaşımlı erişimini kendi sağlar. Kendisinin kullanıcı düzeyinde yönetilmesi için de araçlar sunar.

Kendi gözlemlerim kapsamında Hyper-V çalışan uygulamayı vCPU lar arasında gezindirerek çalıştırırken, VMware ESXI da belirli bir işlemci üzerinde %100 çalışma şeklinde kolayca zorlanabilmektedir.

Kısacası hangi hypervisor ile çalışılacağı scheduler performanslarının yanı sıra sunabildiği imkanlara da bakılarak karar verilmesi gerekir.

CONTAINERS

Docker

Bu konuda türkçe Gökhan Şengün güzel açıklayıcı bir videolar ve yazılar sunuyor.

İncelemenizi tavsiye edebileceğim diğer Türkçe kaynaklar

Portainer kurulumunu anlatan güzel bir yazı

Ozan Teoman Dayanan da video paylaşım serisinde açıklayıcı bilgiler bulabilirsiniz.

Docker Alternatifleri

Docker Swarm ile Ölçeklenebilirlik (Scaling)

Docker-Swarm günümüz versiyonlarında auto scaling desteklememektedir. Yani ihtiyaca göre servislerimizin sayısını arttırıp azaltamamaktadır. Bunu kendi servislerimiz için bizim yapmamız ya da hazır yapan servisler araştırmamız gerekiyor. Kubernetes bu konuda hazır çözümle geldiği bilmekte fayda var. Aşağıdaki linklerde bu konulara değinilmiş. İncelemeniz faydalı olabilir.

Sorulan soruya verilen cevapda Cadvisor ve Node-exporter containers karışımın kullandığını belirtiyor. Bu servisler ile sistemden metrik toplayıp performansları izleyerek nerede yeni replikalar oluşturması gerektiğine karar veriyor.

Prometheus, Grafana, cAdvisor, NodeExporter and AlertManager kullanarak geliştirilmiş bir örneğe işaret eden bir mimari sunuyor.

Prometheus (metrics database)

Prometheus-Pushgateway (push acceptor for ephemeral and batch jobs)

AlertManager (alerts management)

Grafana (visualize metrics)

NodeExporter (host metrics collector)

cAdvisor (containers metrics collector)

Caddy (reverse proxy and basic auth provider for prometheus and alertmanager)

cAdvisor (Container Advisor) provides container users an understanding of the resource usage and performance characteristics of their running containers.

Node-exporter exposes additional metrics.

Dockerd Exporter exposes Docker swarm metrics

Prometheus server now to make the collector agent and service part complete.

Tabii Kubernetes' in yeni bir container ayağa kaldırma performansının ve kolay kurulumunun Swarm göre düşük olduğunu belirten yazılar da bulabilirsiniz. Tabii Kubernetes kolay kurulum ve performans sunmasa da sizin Operation kısmıyla çok ilgilenmemenizi sizin için ben düşünürüm yaklaşımıyla geliştirildiği düşünmek bir tercih sebebi olabilir. Tasarlayacağınız sistemin ihtiyaçlarıyla alakalı bir durum olsa gerek. Tabii servisiniz hazırda çalışmayı bekleyen replikaları da varsa yeni bir container ın ayağa kaldırılması vs gibi sürecin uzunluğu sizi çok etkilemese olsa gerek.

Şurada da karşılaştırıcı yazılar bulabilirsiniz

Katılımcıları üzerinde yapılan araştırmaya göre hangi teknolojiler tercih ediliyor araştırmasının 2019 raporu

The use of Docker containers continues to grow, with adoption increasing to 57 percent from 49 percent in 2018.

Kubernetes, a container orchestration tool that leverages Docker, achieved faster growth, increasing from 27 percent to 48 percent adoption.

2020

Type-1 ve Type-2 Hypervisor Mimarisi
LogoDocker Bölüm 1: Nedir, Nasıl Çalışır, Nerede Kullanılır?
LogoHyper-V vs VMware: A complete Comparisonvembu.com
LogoHyper-V vs VMware: Complete Comparison of PlatformsOfficial NAKIVO Blog
Hyper-V vs VMware- Yıl 2014
LogoMicrosoft Hyper-V 2019 ve VMware vSphere 6.7 karşılaştırmasıDCP Teknoloji
LogoDocker Üzerinde Http Load Balancing (Nginx)Medium
LogoGitHub - stefanprodan/dockprom: Docker hosts and containers monitoring with Prometheus, Grafana, cAdvisor, NodeExporter and AlertManagerGitHub
LogoDocker Bölüm 3: Docker Compose Hangi Amaçlarla ve Nasıl Kullanılır?
LogoDocker İpuçları - Soru / Cevap - Bölüm 2
LogoDocker İpuçları - Soru / Cevap - Bölüm 1
LogoDocker İpuçları - Soru / Cevap - Bölüm 4
LogoDocker İpuçları - Soru / Cevap - Bölüm 3
LogoDocker Bölüm 2: Yeni bir Docker Image'ı Nasıl Hazırlanır?
LogoEssential Docker Interview Questions | Toptal®toptal
LogoKubernetes ile Docker Karşılaştırması | Microsoft AzureMicrosoft Azure
LogoDocker Container Ve Swarm ModeMedium
LogoDocker nasıl güzel, nasıl güzel… Dockerfile, Docker-Compose ve Docker-Swarm üzerine…Medium
Logoload balancer – oktayegioktayegi
LogoDocker Swarm ModeÇaysever - JavaMan
https://kodcu.com/2017/03/docker-login-davranisina-dikkat/kodcu.com
Play with Docker
LogoHow to get started with load balancing Docker Swarm modeUpCloud
LogoPersistent Storage in Docker SwarmSysadmins
LogoDocker 1.12 Swarm Mode & Persistent Storage using NFSCollabnix
LogoContainer Persistent Storage for Docker Swarm using a GlusterFS Volume PluginSysadmins
LogoSetup a NFS Server on UbuntuSysadmins
LogoUse Docker Engine pluginsDocker Documentation
LogoDocker (Swarm) and NFS volumes | Anthony Dahanne's blogAnthony Dahanne's blog | Open Source, Java, Docker, Kubernetes, Self hosting
LogoDocker’ın yerini Podman mı alıyor? Podman Nedir ? Podman KurulumuMedium
LogoPodman and Buildah for Docker users | Red Hat DeveloperRed Hat Developer
What's up with CRI-O, Kata Containers and Podman?
LogoAutoscaling in docker swarmDocker Community Forums
LogoGitHub - stefanprodan/swarmprom: Docker Swarm instrumentation with Prometheus, Grafana, cAdvisor, Node Exporter and Alert ManagerGitHub
LogoDocker Swarm monitoringMedium
LogoDocker Swarm vs Kubernetes: A Helpful Guide for Picking OneStackify
Logo''Docker Swarm or Kubernetes?'': Is It the Right Question to Ask? - DZone Clouddzone.com