Docker ve DevOps

Her ortamda aynı çalışan uygulama ve elle adım içermeyen yayın: kendi ürünlerimizi bu düzenle yayınlıyoruz.

Docker, GitHub Actions ve Coolify ile tekrarlanabilir ortamlar ve otomatik yayın akışı kuruyoruz. Hippotenus, Logaritim ve pepechura.com bu düzenle çalışıyor.

Son güncelleme:

Bu teknolojiyle geliştirdiklerimiz

Hepsi yayında; mağaza sayfalarına ve ayrıntılara Ürünler sayfasından ulaşabilirsiniz.

Hippotenus

Eğitim kurumları platformu

API, web paneli ve tanıtım sitesi ayrı Docker imajları; GitHub Actions’ta derlenip staging ve production ortamlarına Coolify ile dağıtılıyor.

Ürünü incele

Logaritim

Soru havuzu ve sınav hazırlama

FastAPI arka ucu ve arayüz ayrı Docker imajları; testler geçince imaj derlenip Coolify ile yayına alınıyor.

Ürünü incele

Docker ne çözer

Docker, uygulamayı çalışması için gereken her şeyle (işletim sistemi paketleri, çalışma zamanı, bağımlılıklar) birlikte tek bir imaja paketler. Aynı imaj geliştiricinin bilgisayarında, test ortamında ve canlıda aynı şekilde çalışır; sunucuya elle kurulum yapılmaz, “bende çalışıyordu” sorunu ortadan kalkar. DevOps dediğimiz kısım da bu imajın kod gönderildiği anda test edilip, derlenip, yayına alınmasını otomatik hâle getirmek.

Docker’ın iyi oturduğu durumlar

  • Uygulamanın API, veritabanı, arka plan işçisi gibi birden fazla parçası var
  • Staging ve production gibi birden fazla ortamı aynı biçimde kurmak istiyorsunuz
  • Uygulamanın kendi sunucunuzda ya da Türkiye’deki bir sunucuda çalışması gerekiyor
  • Bir platformdan kendi sunucunuza (ya da tersine) taşınma seçeneğini açık tutmak istiyorsunuz

Docker’ı gerekli görmeyeceğimiz durumlar

  • Uygulama, Vercel gibi bir platformun doğrudan yayınlayabildiği bir Next.js sitesi: Atölye Tasarım’ı Docker’sız, platformun kendi yayın akışıyla çalıştırıyoruz
  • Mobil uygulamanın arka ucu tamamen Firebase gibi yönetilen bir hizmette: SoruVerse’te yönetilecek bir sunucu yok
  • Sunucuyu güncelleyecek ve izleyecek kimse yok ve bakım da düşünmüyorsunuz: o zaman yönetilen bir platform daha doğru

Kodun canlıya yolculuğu

pepechura.com, Hippotenus ve Logaritim aynı yolu izliyor. Hippotenus’ta ana dal production’a, geliştirme dalı staging ortamına gidiyor. Geliştirme ortamında da tek bir docker-compose dosyası PostgreSQL, Redis, API, web paneli ve tanıtım sitesini birlikte ayağa kaldırıyor; API, veritabanı hazır olana kadar bekliyor.

AdımNe oluyorNeden
TestKod ana dala gelince testler çalışıyor; pepechura.com ve Logaritim’de yayın testlerin geçmesine bağlıKırık bir sürüm imaja dönüşmesin
DerlemeDocker imajı GitHub Actions’ta derleniyor, sunucuda değilCanlı sunucunun işlemcisi derlemeyle uğraşmasın
Kayıtİmaj, commit kimliğiyle etiketlenip GitHub Container Registry’ye gönderiliyorCanlıda hangi kodun çalıştığı her zaman belli
YayınCoolify yeni imajı çekip konteyneri değiştiriyor; Hippotenus’ta migration’lar yeni konteyner açılırken uygulanıyorMigration başarısız olursa yeni sürüm açılmıyor, eski sürüm çalışmaya devam ediyor
Doğrulamapepechura.com’da iş akışı, yeni konteyner yayına girene kadar bekliyorBaşarısız bir yayın sessiz kalmıyor, iş akışı hata veriyor

Kendi sunucunuz mu, bir platform mu

Aynı Dockerfile hem Railway gibi bir platformda (PaaS) hem de kendi sunucunuzda çalışır. Hippotenus’un Railway yapılandırması hâlâ depoda duruyor; bugün ise Hippotenus, Logaritim ve pepechura.com kendi sunucumuzda Coolify ile çalışıyor. Coolify, kendi sunucunuza kurulan açık kaynaklı bir yayın paneli: imajı çeker, HTTPS sertifikasını ve sağlık kontrollerini yönetir.

Platform (ör. Railway)Kendi sunucunuz (Coolify ile)
KurulumHızlı; sunucu yönetimi platformdaSunucunun kurulumu ve güncellemesi sizde ya da bakım ekibinde
Verinin yeriPlatformun sunduğu bölgelerSeçtiğiniz sunucu, örneğin Türkiye’de
MaliyetKullanıma göre değişirBüyük ölçüde sabit sunucu bedeli
Uygulama imajıAynı DockerfileAynı Dockerfile
Bizim örneğimizHippotenus’un önceki ortamıHippotenus, Logaritim, pepechura.com

Veritabanı, arka plan işleri, yedek ve izleme

Bir müşteri projesinde tek bir Docker Compose dosyası bütün sistemi kuruyor: dışarıya portu açılmayan bir PostgreSQL, uygulama açılmadan önce bir kez çalışıp veritabanını güncelleyen bir servis, uygulamanın kendisi, aynı imajdan çalışan bir arka plan işçisi ve HTTPS sertifikasını kendiliğinden alıp yenileyen Caddy. Veritabanı ile yüklenen dosyaların yedeğini bir betik alıyor. Başka bir müşteri projesinde .NET servisleri ve PostGIS eklentili PostgreSQL Docker’da çalışıyor; konteyner günlüklerini, sunucu ölçümlerini ve sağlık uçlarını Elastic Stack izliyor. Hippotenus’ta ise veritabanları her gece yedekleniyor, yedekler şifrelenip Türkiye’deki ayrı bir depolama alanına kopyalanıyor ve geri yükleme denendi.

GitHub Actions

Test, imaj derleme ve yayını tetikleme. pepechura.com, Hippotenus ve Logaritim’de kullanıyoruz.

GitHub Container Registry

Derlenen imajların commit kimliğiyle saklandığı yer. Aynı üç projede kullanıyoruz.

Coolify

Kendi sunucumuzda imajları çalıştıran açık kaynaklı yayın paneli. pepechura.com, Hippotenus ve Logaritim bunun üzerinde.

Caddy ve Nginx

Önde duran sunucu: HTTPS, sıkıştırma, yükleme sınırları. Logaritim’in arayüzü ve müşteri projelerinde kullanıyoruz.

restic

Şifreli, sürümlü yedekler. Hippotenus ve Logaritim’in veritabanı yedeklerinde kullanıyoruz.

Elastic Stack

Günlük toplama, sunucu ölçümleri ve erişilebilirlik kontrolleri. Bir müşteri projesinde kullanıyoruz.

Bir Docker ve DevOps işi nasıl ilerliyor

  1. 01

    Ücretsiz keşif görüşmesi

    30 dk

    Uygulamanın bugün nerede ve nasıl çalıştığını, yayının nasıl yapıldığını ve sizi en çok neyin zorladığını konuşuyoruz.

  2. 02

    Yazılı kapsam ve teklif

    Ortamları, yayın akışını, yedekleme ve izleme ihtiyacını ve kabul kriterlerini yazıya döküyoruz.

  3. 03

    Haftalık sürümler

    Her hafta çalışan bir parça teslim ediyoruz: önce geliştirme ortamı, sonra test ve derleme akışı, ardından staging.

  4. 04

    Test ve geçiş

    Senior QA, staging ortamındaki sürümü canlıya geçmeden önce test ediyor. Taşımada eski ortamı geri dönüş için bir süre hazır tutuyoruz.

  5. 05

    Yayından sonraki 30 gün

    30 gün

    Bu sürede çıkan hataları ücretsiz düzeltiyoruz; sonrası için aylık bakımla devam edebilirsiniz.

Süre ve bütçe aralıklarını hizmet ve fiyatlar sayfalarımızda yayınlıyoruz; bu sayfadaki her şey aynı rakamlara bağlı.

Docker ve DevOps hakkında sık sorulanlar

Mevcut uygulamamı Docker’a ve kendi sunucuma taşıyabilir misiniz?

Evet. pepechura.com’u Vercel’den kendi sunucumuza taşırken site, yönlendirmeleri ve başlıkları aynı dosyadan okuyacak biçimde hazırlandı ve eski ortam geri dönüş için bir süre çalışır tutuldu. Sizin uygulamanız için de önce mevcut durumu inceleyip taşımayı adım adım planlıyoruz.

Kubernetes kullanıyor musunuz?

Hayır. Bugüne kadarki projelerimizde tek sunucuda Docker Compose ya da Coolify yetti ve daha basit bakımı oldu. Kubernetes gerektiren bir ölçeğiniz varsa bunu keşif görüşmesinde açıkça konuşuruz.

Veritabanım internete açık mı?

Hayır. Hippotenus’ta PostgreSQL ve Redis yalnızca Docker ağı içinde, dışarıya açık değil; geliştiriciler canlı veritabanına yalnızca SSH tüneliyle bağlanıyor. Kendi sunucu kodumuzu çalıştıran konteynerleri de yönetici (root) olmayan bir kullanıcıyla çalıştırıyoruz.

Yedek ve izleme işin içinde mi?

Kapsama göre. Yedeklemeyi ve gerekiyorsa günlük toplama ile erişilebilirlik izlemeyi teklifte ayrı kalemler olarak yazıyoruz. Örnekleri yukarıda: Hippotenus’ta gece alınan şifreli yedekler, bir müşteri projesinde Elastic Stack ile izleme.

Proje bitince elimde ne kalır?

Yazılımı süresiz kullanma lisansı ve kullanım dokümantasyonu. Kaynak kodun, Dockerfile ve yayın akışıyla birlikte size devredilmesini isterseniz bu ek ücretle mümkündür ve teklifte ayrıca belirtilir.

İlgili hizmetler

Özel yazılımWeb uygulamasıMVP
İletişim

Yayın düzeninizi konuşalım

30 dakikalık ücretsiz keşif görüşmesinde uygulamanızın nerede ve nasıl çalışacağını, yayının nasıl otomatik hâle geleceğini birlikte netleştirelim.