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ü inceleHepsi yayında; mağaza sayfalarına ve ayrıntılara Ürünler sayfasından ulaşabilirsiniz.
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ü inceleSoru 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ü inceleDocker, 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.
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ım | Ne oluyor | Neden |
|---|---|---|
| Test | Kod 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 |
| Derleme | Docker imajı GitHub Actions’ta derleniyor, sunucuda değil | Canlı sunucunun işlemcisi derlemeyle uğraşmasın |
| Kayıt | İmaj, commit kimliğiyle etiketlenip GitHub Container Registry’ye gönderiliyor | Canlıda hangi kodun çalıştığı her zaman belli |
| Yayın | Coolify yeni imajı çekip konteyneri değiştiriyor; Hippotenus’ta migration’lar yeni konteyner açılırken uygulanıyor | Migration başarısız olursa yeni sürüm açılmıyor, eski sürüm çalışmaya devam ediyor |
| Doğrulama | pepechura.com’da iş akışı, yeni konteyner yayına girene kadar bekliyor | Başarısız bir yayın sessiz kalmıyor, iş akışı hata veriyor |
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) | |
|---|---|---|
| Kurulum | Hızlı; sunucu yönetimi platformda | Sunucunun kurulumu ve güncellemesi sizde ya da bakım ekibinde |
| Verinin yeri | Platformun sunduğu bölgeler | Seçtiğiniz sunucu, örneğin Türkiye’de |
| Maliyet | Kullanıma göre değişir | Büyük ölçüde sabit sunucu bedeli |
| Uygulama imajı | Aynı Dockerfile | Aynı Dockerfile |
| Bizim örneğimiz | Hippotenus’un önceki ortamı | Hippotenus, Logaritim, pepechura.com |
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.
Test, imaj derleme ve yayını tetikleme. pepechura.com, Hippotenus ve Logaritim’de kullanıyoruz.
Derlenen imajların commit kimliğiyle saklandığı yer. Aynı üç projede kullanıyoruz.
Kendi sunucumuzda imajları çalıştıran açık kaynaklı yayın paneli. pepechura.com, Hippotenus ve Logaritim bunun üzerinde.
Önde duran sunucu: HTTPS, sıkıştırma, yükleme sınırları. Logaritim’in arayüzü ve müşteri projelerinde kullanıyoruz.
Şifreli, sürümlü yedekler. Hippotenus ve Logaritim’in veritabanı yedeklerinde kullanıyoruz.
Günlük toplama, sunucu ölçümleri ve erişilebilirlik kontrolleri. Bir müşteri projesinde kullanıyoruz.
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.
Ortamları, yayın akışını, yedekleme ve izleme ihtiyacını ve kabul kriterlerini yazıya döküyoruz.
Her hafta çalışan bir parça teslim ediyoruz: önce geliştirme ortamı, sonra test ve derleme akışı, ardından staging.
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.
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ı.
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.
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.
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.
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.
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.
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.