🐳 Konteynerlere Giriş

Görsel Alanı

Görsel Alanı

Fiziksel Donanim Çağı

Görsel Alanı

Sanallaştırma Çağı

Görsel Alanı

Konteyner Çağı

Görsel Alanı

Görsel Alanı

Fiziksel StartUp

  1. Düğmeye basılması
  2. BİOS ve sistem donanım kontrolleri
  3. İşletim sistemi önyükleyicisi
  4. İşletim sistemi süreçleri
  5. Uygulamalar

Sanal StartUp

  1. İşletim sistemi önyükleyicisi
  2. İşletim sistemi süreçleri
  3. Uygulamalar

Container StartUp

  1. Uygulamalar

Kiyaslama

Görsel Alanı

Neden konteynerleri kullanmak isteriz?

🔗 Yazılım Bağımlılıkları

  • Bazı programlar karmaşık yazılım ortamları gerektirir:
    • İşletim sistemi türü ve sürümleri
    • Sürücüler
    • Derleyici türü ve sürümleri

🔗 Yazılım Bağımlılıkları (devam)

  • Yazılım bağımlılıkları:
    • Python/R/MATLAB sürümleri
    • glibc, stdlibc++ sürümleri
    • Diğer kütüphaneler ve çalıştırılabilir dosyalar
    • Python/R/Node.js kütüphaneleri ve modülleri

😱 Yazılım Bağımlılıkları - Zorluklar

  • Her bir yazılım farklı kütüphane sürümlerine ihtiyaç duyabilir
  • Aynı sistem üzerinde çakışan bağımlılıklar olabilir
  • Sistem güncellemeleri çalışan uygulamaları bozabilir

😱 Yazılım Bağımlılıkları - Zorluklar (devam)

  • Farklı işletim sistemlerinde kurulum adımları değişebilir
  • "Depedency Hell" den kurtulma ihtiyacı
  • Geliştirme, test ve üretim ortamları arasındaki tutarsızlıklar

"Benim Bilgisayarımda Çalışıyor" Problemi

  • Geliştirici makinelerinde çalışan yazılımlar üretim ortamlarında sorun çıkarabilir
  • Çevre değişkenleri farklı olabilir
  • Yerel yapılandırmalar, global yapılandırmalarla uyumsuz olabilir
  • Donanım farklılıkları performans sorunlarına neden olabilir
  • Konteynerler bu sorunu ortadan kaldırır: "Çalışıyorsa konteyner olarak paketleyin"

Portabilite ve Taşınabilirlik

  • Konteynerler herhangi bir işletim sisteminde çalışabilir
  • Cloud, lokal sunucu, kişisel bilgisayar fark etmez
  • "Bir kez oluştur, her yerde çalıştır" prensibi
  • Farklı bulut sağlayıcıları arasında kolay geçiş
  • Satıcı kilidi (vendor lock-in) problemini azaltır

🏭 Endüstriyel Kullanım Alanları

  1. Mikroservisler
    • Uygulamaları küçük, yönetilebilir bileşenlere ayırma
    • Her servis için ayrı konteynerler
    • Bağımsız ölçekleme ve güncelleme imkanı

🏭 Endüstriyel Kullanım Alanları (devam)

  1. Yazılım Testi 🧪
    • İzole, tekrarlanabilir test ortamları
    • Test ortamlarını kurma ve yönetme sürecini basitleştirme
    • Paralel test imkanı

🏭 Endüstriyel Kullanım Alanları (devam)

  1. DevOps
    • Geliştirme ve operasyon ekipleri arasında işbirliği
    • Sürekli entegrasyon/sürekli dağıtım (CI/CD) hatları
    • Otomatik test ve dağıtım süreçleri

☁️ Bulut Hizmetleri ve Konteynerler

  • Konteynerler bulut stratejisinin temel yapı taşları haline geldi
  • Serverless mimari ve Function-as-a-Service (FaaS)
  • Platform-as-a-Service (PaaS) çözümlerinin çoğu konteynerlere dayanır
  • Bulut sağlayıcılarının hepsi konteyner orkestrasyonu hizmetleri sunar

Tekrarlanabilir Araştırma

  • Araştırma çıktıları yazılım ve veriyi içerir
  • Yazılım tekrarlanabilirliği:
    • Yazılım depoları (svn, git)
    • İyi ama genellikle yazılımın bağımlılıkları vardır
  • Veri tekrarlanabilirliği:
    • Yayın eki olarak veri, merkezi depolar (NCBI), ...
    • Üretim ortamından kopuk
  • Veri VE kod VE hesaplama ortamını tek bir dosyada paketleme

Tekrarlanabilir Araştırma - Gelişmiş Avantajlar

  • Araştırma sonuçlarını tam olarak aynı koşullarda tekrarlayabilme
  • "Benim bilgisayarımda çalışıyor" problemini ortadan kaldırma
  • Farklı araştırmacıların tam olarak aynı yazılım ortamını kullanması
  • Sürüm kontrolü ve izlenebilirlik

Ölçeklenebilir Araştırma ve Uygulama

  • Yerel geliştirilen program/pipeline'ı global çalıştırma
  • Paralel kaynaklara ölçekleme:
    • Çok kez çalıştırma
    • Yerel veya ulusal HPC kaynaklarını kullanma
    • Bulut sağlayıcılarında dinamik kapasite artırımı
  • Süreci otomatikleştirme:
    • Konteyner/yazılım oluşturma ve dağıtımı
    • Paralel pipeline ve iş yükleri

İş Yükü Etkisiyle Kullanım Alanları

  • Web Uygulamaları: Yüksek trafik web siteleri, e-ticaret platformları
  • Analitik ve Büyük Veri: Spark, Hadoop konteynerleştirilmiş ortamlar
  • IoT Uygulamaları: Dağıtık sistemler ve edge computing
  • AI ve ML Model Dağıtımı: Konteynerleştirilmiş yapay zeka modelleri
  • API Hizmetleri: Microservice API'ler ve gateway'ler
  • Veritabanı Sistemleri: Dağıtık NoSQL veritabanları

Ek Avantajlar

  • Eski Linux sürümlerinde oluşturulmuş uygulamalar yeni Linux sunucularda çalışabilir
  • İzolasyon ve güvenlik
  • Kaynak sınırlaması ve kontrol
  • Daha hızlı başlatma süreleri (VM'lere göre)
  • DevOps uygulamalarıyla entegrasyon kolaylığı
  • Infrastructure-as-Code (IaC) ile tam uyumluluk

Konteyner Çözümleri

  • Docker
    • İyi yerleşmiş ve endüstri standardı
    • Konteyner paylaşımı için Docker Hub'a sahip
    • Enterprise ve geliştirici odaklı
  • Podman
    • Daemonsuz, rootless alternatif
    • Docker komutlarıyla uyumlu
    • Red Hat desteği

Konteyner Çözümleri

  • Singularity
    • HPC için tasarlanmış, kullanıcı dostu
    • MPI, GPU'lar için destek
    • Bilimsel iş yükleri için optimize
  • containerd / nerdctl
    • Düşük seviyeli konteyner çalışma zamanı
    • Kubernetes'in temel konteyner motoru

Container motorunun yetersizlikleri

Görsel Alanı

Container motorunun yetersizlikleri

Görsel Alanı

Container motorunun yetersizlikleri

Görsel Alanı

Konteyner Orkestrasyonu

  • Kubernetes
    • Endüstri standardı orkestrasyon platformu
    • Büyük ölçekli konteyner dağıtımı
    • Self-healing, auto-scaling yetenekleri
  • Docker Swarm
    • Docker ile entegre basit orkestrasyon
    • Küçük ve orta ölçekli dağıtımlar için
  • Amazon ECS / EKS
    • AWS'nin konteyner yönetim servisleri
  • Google Kubernetes Engine (GKE)
    • Google Cloud'un yönetilen Kubernetes hizmeti

💼 Endüstriyel Konteyner Kullanım Senaryoları

  • Bankacılık ve Finans 💰
    • Yüksek güvenlik gerektiren mikroservisler
    • Ölçeklenebilir işlem sistemleri
  • E-ticaret Platformları 🛒
    • Trafik artışlarına dinamik yanıt

💼 Endüstriyel Konteyner Kullanım Senaryoları (devam)

  • E-ticaret Platformları 🛒 (devam)
    • Servis bazlı ölçekleme
  • SaaS Uygulamaları ☁️
    • Multi-tenant mimariler
    • Kaynak izolasyonu ve efektif kullanım
  • Medya ve İçerik Platformları 📺
    • İçerik dağıtım sistemleri
    • Medya işleme pipeline'ları

🔬 Bilimsel Araştırma Konteyner Kullanım Senaryoları

  • Biyoinformatik ve Genomik 🧬
    • Kompleks analiz pipeline'ları
    • Yüksek performanslı hesaplama entegrasyonu
  • Veri Bilimi ve Makine Öğrenmesi 🤖
    • Tekrarlanabilir model eğitimi ve dağıtımı

🔬 Bilimsel Araştırma Konteyner Kullanım Senaryoları (devam)

  • Veri Bilimi ve Makine Öğrenmesi 🤖 (devam)
    • GPU optimize konteynerler
  • Simülasyon ve Modelleme 📊
    • Fizik, iklim, ekonomi modelleri
    • Paralel hesaplama uygulamaları
  • Astronomi ve Uzay Bilimleri 🔭
    • Büyük veri analizi
    • Dağıtık hesaplama sistemleri