• Buradasın

    Docker ve Konteynerler Eğitim Videosu

    youtube.com/watch?v=4OdQozq9K1o

    Yapay zekadan makale özeti

    • Bu video, bir konuşmacının Docker ve konteyner teknolojisi hakkında sunduğu teknik bir eğitim içeriğidir. Konuşmacı, hem teknik olmayan hem de teknik açıdan konteynerlerin ne olduğunu anlatmaktadır.
    • Video, konteynerlerin yazılım dünyasındaki önemi, monolitik uygulamaların decapple servislere dönüşümü ve konteynerlerin sağladığı avantajları açıklamaktadır. İçerik, konteynerlerin nasıl oluşturulduğu, Dockerfile ve Docker Compose kullanımı, CI-CD süreçlerindeki rolü ve sanal makinelerden farkları gibi konuları adım adım ele almaktadır.
    • Video, bir serinin parçası olup, bir sonraki bölümde konteynerlerin tarihinden bahsedileceği ve komutların nasıl yazılacağı öğretileceği belirtilmektedir. Ayrıca, konteynerlerin disk, network ve RAM kullanımını nasıl optimize ettiği, farklı ortamlarda (test, staging, production) kodun nasıl yönetilmesi gerektiği ve bu süreçte ortaya çıkan karmaşıklıklar da açıklanmaktadır.
    Docker'a Genel Bakış
    • Bu video, Docker'a yukarıdan bakıldığında karşımıza çıkanları ve hayatımıza nasıl katkı sağladığını anlatacak.
    • Video, teknik olmayan açıdan konteynerlerin neden var olduğunu ve ne kattığını, ardından teknik açıdan Docker'un sağladığı avantajları ele alacak.
    • Bir sonraki videoda konteyner ile sanal makine arasındaki fark ve konteynerin tarihi hakkında bilgi verilecek.
    01:10Yazılım Dünyasındaki Değişimler
    • Konteynerlerin gelişmesiyle birlikte yazılım dünyasında da önemli değişiklikler yaşanmış.
    • Monolitik uygulamalar, dicapple servis (birbirinden bağımsız servisler) haline dönüşmüştür.
    • Monolitik uygulama, tek bir kişi tarafından yönetilen, tüm işlevleri tek bir kod bloğunda barındıran bir sistemdir.
    02:18Dicapple Servislerin Avantajları
    • Yazılım dünyasında da restoran örneğinde olduğu gibi, uygulama büyüdükçe iş dağılımı yapmak gerekir.
    • Dicapple servisler, görevleri birbirinden ayrılmış ama birbirleriyle uyum içinde çalışan bir restoranın işleme düzeni gibidir.
    • Bir blog sitesinde kayıt, giriş, görüntüleme ve yorum gibi farklı özellikler ayrı projeler haline getirilerek daha iyi yönetilebilir.
    05:02Ölçeklenebilirlik ve Microservice Kavramı
    • Büyük projeleri tek bir bütün halinde yapmak yerine, birbirinden bağımsız ölçeklenebilme imkanı sağlayan microservice yaklaşımı tercih edilmelidir.
    • Restoran örneğinde, yemekler hızlı hazırlanıyorsa aşçı sayısını değil, garson sayısını artırmak gerekir; benzer şekilde kullanıcı sayısı arttığında kayıt sayfası daha fazla çalıştırılmalıdır.
    • Microservice yaklaşımı, ölçeklenebilirliği daha kolay, ucuz ve hızlı hale getirir; kullanıcılar aniden arttığında kayıt sayfası hızlı ölçeklenebilir, ihtiyaç azaldığında ise yorum yapma gibi diğer kısımlar ölçeklenebilir.
    07:08Yazılım Projelerinde Ortam Değişimi
    • Bireysel projelerde tek bir kod yazıp yayına almak yeterli olurken, ekibin büyüdükçe staging, production gibi farklı ortamlar oluşur.
    • Kod önce test ortamına atılır, işler yoluna gittiğinde production'a taşınır; production, müşterinin bağlandığı dış dünyaya açık gerçek çalışan sistemdir.
    • Yazılım sektöründe, kodu bir sürü yere hızlı bir şekilde gönderebilmek için bölüp parçalama ve ayrı ayrı ölçekleme ihtiyacı ortaya çıkar.
    09:04Microservice'de Teknik Zorluklar
    • Microservice'de her ekip kendi işine uygun programlama dilini, framework'i ve database'i seçebilir, bu da farklı ortamlar ve ihtiyaçlar ortaya çıkarır.
    • Test ortamı ofiste, production ortamı cloud'da olabilir veya hibrit ortamlarda (on-prem, cloud) farklı bölümler bulunabilir.
    • Her ekip farklı frameworkler ve programlama dilleri kullanabilir, bu da her birini aynı sürümde kurabilme ve güncelleme zorluğu yaratır.
    13:12Konteyner Kavramının Yazılım Dünyasına Taşınması
    • Kargoculuk sektöründe, farklı yükleri taşımak için özel vinçler ve gemiler yerine, konteynerler kullanılarak tüm yükler aynı gemi içerisinde taşınabilir.
    • Yazılım dünyasında da benzer bir yaklaşım benimseniyor; uygulamalar izole, birbirinden bağımsız bir şekilde aynı sunucu üzerinde çalışabiliyor.
    • Konteyner hazırlarken, uygulama ile çalışabilmesi için gerekli tüm gereksinimler (framework, database vb.) konteynerin içerisine konulup, sunucu üzerinde istenilen sayıda çalıştırılabiliyor.
    16:50Konteynerlerin Temel Kavramı
    • Konteynerler, uygulamanın içinde ne olduğundan bağımsız olarak, uygulamayı yapan kişinin kutunun içerisine koyduğu ve bize verdiği bir yapıdır.
    • Konteynerler, laptop, cloud, fiziksel makine veya sanal makinede çalıştırılabilir ve nereye kurulduğundan bağımsız olarak çalıştırılabilir.
    • Konteynerler üzerinden tüm işlemler çözülebilir ve sadece sunucuların konteyner çalıştırabilme kapasitesi ve uygulamanın konteyner olarak düzgün paketlenmiş olup olmadığı kontrol edilir.
    17:45Konteynerlerin Avantajları
    • Konteynerler, geliştirme ve üretim çıkış süresini dokuz aydan onbeş dakikaya düşürerek, yeni özelliklerin müşterilere daha hızlı sunulmasını sağlar.
    • Haftada bir kere kodu yayına alırken, günde yüz kereye kadar yaklaşık yediyüz seferlik bir hızlanma sağlanabilir.
    • Konteynerler, donanım kaynaklarının daha verimli kullanılmasını sağlayarak, uygulamaları yan yana ve birbirinden izole çalıştırarak daha yüksek oranda faydalanılabilir.
    19:30Teknik Detaylar ve Kurulum Süreci
    • Konteynerler, yazılımın bilgisayarda çalışırken production'da sorun vermesini önlemek için uygulamayı kutuya koyarak her yerde çalışmasını sağlar.
    • Kurulum süreci, önce kurulum dökümanına bakarak bir script hazırlama, sonra bu scripti Dockerfile'a çevirme ve son olarak Dockerfile'ı çalıştırma aşamalarından oluşur.
    • Dockerfile, uygulamayı konteyner yapısına sığdırarak izole bir şekilde tüm gerektirdiği ekstralarla bir kutunun içerisine koyar.
    23:38CI/CD Ortamlarında Konteyner Kullanımı
    • Konteynerler, CI/CD ortamlarında makineden bağımsız olarak test ve test ortamlarını oluşturmayı sağlar.
    • Konteynerler, sistem üzerinde dosya bırakma riskini ortadan kaldırarak, test ortamlarının izole bir kutu içerisinde çalışmasını sağlar.
    • Normalde her pipeline çalıştırmasında geçici sanal makine açmak gerekiyordu, ancak konteynerler bu sorunu çözerek daha hızlı ve otomatik bir çözüm sunar.
    25:02Konteynerlerin Avantajları
    • Konteynerler, sanal makine kurma veya fiziksel makine açma kapama gibi işlemlerin aksine, birkaç saniye içinde ayağa kalkabiliyor ve silinebiliyor.
    • Konteynerler, makineleri yük gemisi olarak düşünerek kolayca eklenip çıkarılabiliyor ve bu CI/CD süreçlerini kolaylaştırıyor.
    25:36Docker İmajları ve Artifactler
    • Artifactler artık konteynerların paketlenmiş versiyonları haline geliyor ve bunlara Docker imajı veya container imajı deniyor.
    • Docker imajları, uygulamanın tüm bağımlılıkları ile birlikte tek bir şekilde paketlenmiş oluyor.
    • Bu imajlar, build tüfeklerini depoladığımız yerlerde saklanabiliyor ve production ortamında da çalıştırılabiliyor.
    27:37Konteyner İmajlarının Avantajları
    • Sorun yaşandığında, çalışan konteyner imajı sökülebilir ve eski haline dönülebilir, böylece sistem geriye dönmüş oluyor.
    • Uygulama ile birlikte gerekli tüm bağımlılıklar (örneğin Python) konteyner imajında bulunuyor, bu da güncelleme ve geri dönüş işlemlerini kolaylaştırıyor.
    28:33Servis Orkestrasyonu
    • Normalde dev ortamına bağlandığımızda config dosyasına database IP'sini yazmak zorunda kalırken, konteyner dünyası servis isimlerini yazmamızı sağlıyor.
    • Sistem, servis isimlerini otomatik olarak IP adreslerini veriyor, DNS çözümlemesi yapıyor ve gerekirse load balancing yapabiliyor.
    • Bu özellikler, Docker, Swarm veya Kubernetes gibi orkestrasyon sistemleri kullanıldığında daha anlamlı hale geliyor.
    30:20Docker'ın Getirdiği Standart Format
    • Daha önce uygulamaları paylaşmak için standart bir format yoktu, farklı platformlarda farklı dosya formatları (exe, msi, rpm, jar) kullanılıyordu.
    • Docker, konteyner imajı formatını standartlaştırarak bu kaosu çözdü ve konteynerleri çalıştırmak çok daha kolay hale getirdi.
    • Docker run komutu ile tüm konteynerı açmak için sadece üç kelime yazıp enter'a basmak yeterli oldu.
    32:05Docker'ın Faydaları
    • Docker, konteyner formatını standartlaştırarak geliştiricilerin daha kolay kullanmasını sağladı ve araçları tekrar kullanabilecek düzeye getirdi.
    • Docker ile RPM, GAM, JAR, Homebrew dosyaları gibi paketlerle uğraşmak yerine container imajları hazırlayıp her şeyi içerisine koyabiliyoruz.
    • Docker, disk kullanımını, network kullanımını ve RAM kullanımını optimize ederek daha verimli bir çalışma ortamı sağlıyor.
    33:45Docker'ın Katmanlı Yönetimi
    • Docker, uygulamaları katman katman yöneterek sadece değişen kısımları güncelleyebiliyor, bu da disk ve network kullanımını optimize ediyor.
    • Tar dosyası yerine container imajı oluşturmak daha kolay ve daha az sorun yaratıyor.
    • Docker Compose ile geliştiriciler, uygulama, bağımlı uygulamalar ve veritabanlarını tek bir komutla kendi bilgisayarlarında ayağa kaldırabiliyorlar.
    35:47Gelecek Konular
    • Bir sonraki bölümde konteynerler ile sanal makineler arasındaki farktan bahsedilecek.
    • Konteynerin tarihinden sonra komutları yazmaya, konteyner açmaya, kapatmaya ve sistemi daha detaylı öğrenmeye başlanacak.
    • İzleyicilere okuma yapmaları veya doğrudan elle öğrenmeye başlamaları tavsiye ediliyor.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor