YAZILIM

DigitalOcean App Platform ile Node.js ve Next.js Uygulamasını Canlıya Alma

DigitalOcean App Platform ile Node.js ve Next.js Uygulamasını Canlıya Alma yazısının kapak görseli

Bir Droplet açıp sunucuyu elle yönetmek her proje için gerekli değil. Özellikle bir Node.js API’sini ya da Next.js ile geliştirilmiş bir uygulamayı hızlıca yayına almak istiyorsan, sunucu yapılandırmasıyla uğraşmadan bunu yapmanın bir yolu var. DigitalOcean’ın App Platform ürünü tam olarak bu ihtiyacı karşılıyor. Bu yazıda App Platform üzerinden bir GitHub reposunun nasıl bağlandığını, uygulamanın nasıl yapılandırıldığını ve canlıya nasıl alındığını adım adım anlatıyorum.

App Platform Nedir, Droplet’ten Farkı Ne

App Platform, DigitalOcean’ın yönetilen PaaS (Platform as a Service) çözümü. Droplet’te işletim sistemi kendi elinle kurulur, güncellenir, Nginx yapılandırılır, SSL sertifikası elle yenilenir. App Platform’da bu işlerin tamamını DigitalOcean üstleniyor. Sadece bir GitHub reposu bağlanıyor, DigitalOcean kodu analiz edip hangi teknolojiyle yazıldığını otomatik tespit ediyor, gerekli build işlemini yapıp uygulamayı ayağa kaldırıyor.

Bu yaklaşımın en büyük avantajı, sunucu yönetimiyle vakit kaybetmeden doğrudan kod yazmaya odaklanabilmek. Dezavantajı ise esnekliğin biraz azalması, çünkü sunucunun içine girip özel bir yapılandırma yapma imkanı Droplet’teki kadar geniş değil. Kişisel projeler, MVP’ler, küçük ve orta ölçekli API’ler için App Platform genellikle yeterli ve pratik bir çözüm.

Başlamadan Önce Gerekenler

İşe koyulmadan önce elde şunlar olmalı: GitHub üzerinde barındırılan bir proje, projenin çalışması için gereken ortam değişkenleri (varsa) ve bir DigitalOcean hesabı. Henüz bir hesap yoksa referans linkim üzerinden kayıt olabilirsin, bu şekilde bana da destek olmuş olursun. Kayıt sürecinde temel bilgiler ve bir ödeme yöntemi istenir, App Platform’un ücretsiz statik site katmanı dışındaki planları kullanım bazlı ücretlendirilir.

Adım 1: GitHub Hesabını Bağlama

DigitalOcean panelinde sol menüden Apps sekmesine girip Create App butonuna tıklanır. Karşına kaynak seçimi ekranı gelecek, burada GitHub seçeneği işaretlenir. İlk kez bağlantı kuruluyorsa GitHub’a yönlendirilip DigitalOcean’a hangi repolara erişim izni verileceği seçilir. Tüm repolara izin verilebileceği gibi sadece ilgili proje de seçilebilir, ikinci seçenek güvenlik açısından daha temiz bir yaklaşım.

Bağlantı tamamlandıktan sonra listeden yayınlanacak repo ve deploy edilecek branch (genellikle main ya da master) seçilir.

Adım 2: Uygulamanın Otomatik Tespiti ve Yapılandırılması

DigitalOcean, seçilen repoyu tarayıp projenin Node.js tabanlı olduğunu otomatik olarak anlıyor. Next.js projelerinde de aynı şekilde framework tespit edilip uygun build komutları öneriliyor. Bu ekranda genellikle şu ayarlar görülür:

  • Build Command: Next.js için genellikle npm run build, sade bir Node.js API’sinde bu alan boş kalabilir.
  • Run Command: Uygulamanın nasıl başlatılacağını belirtir, örneğin npm start.
  • HTTP Port: Uygulamanın dinlediği port numarasıdır, Next.js için genellikle 3000.

Projede ortam değişkenleri kullanılıyorsa (veritabanı bağlantı adresi, API anahtarları gibi), bu ekranda Environment Variables bölümünden eklenir. Hassas bilgiler girilirken Encrypt seçeneğinin işaretlenmesi önemli, bu sayede değerler panelde şifreli şekilde saklanır.

Adım 3: Bölge ve Plan Seçimi

Bir sonraki ekranda uygulamanın adı belirlenip yayınlanacağı bölge seçilir. Tüm App Platform uygulamaları global bir CDN üzerinden yönlendirildiği için bölge seçimi performansı ciddi şekilde etkilemiyor, yine de kullanıcı kitlesine yakın bir bölge seçmek mantıklı bir tercih.

Plan seçiminde küçük projeler için paylaşımlı CPU’lu temel plan genellikle yeterli oluyor. Trafik arttıkça ya da otomatik ölçeklendirme ihtiyacı doğduğunda dedicated CPU planlarına geçilebilir, bu geçiş panel üzerinden birkaç tıkla yapılabiliyor.

Adım 4: Yayına Alma ve Build Sürecini Takip Etme

Ayarlar onaylandıktan sonra Create Resources ya da Launch App butonuna tıklanarak süreç başlatılır. DigitalOcean bu noktada reponun kodunu çekip build işlemini başlatıyor, ekranda bir Building göstergesi görülür. View Logs seçeneğiyle build süreci canlı olarak takip edilebilir, hata alındığında log çıktısından sebebi anlaşılabilir.

Build tamamlandığında uygulama otomatik olarak yayına alınıyor ve panelde bir Live App bağlantısı beliriyor. Bu bağlantıya tıklanarak uygulamanın çalıştığı doğrulanabilir.

Otomatik Yeniden Dağıtım Nasıl Çalışır

App Platform’un en pratik özelliklerinden biri, GitHub reposuna yeni bir commit gönderildiğinde uygulamayı otomatik olarak yeniden dağıtması. Bağlanan branch’e bir değişiklik push edildiğinde DigitalOcean bunu algılıyor, yeni bir build başlatıyor ve dağıtımı kesintisiz şekilde güncelliyor. Bu sayede kullanıcılar uygulamanın güncellenme sürecinde herhangi bir kesinti yaşamıyor.

Sık Karşılaşılan Sorunlar

Build başarısız oluyor: Genellikle package.json içindeki bağımlılıkların eksik ya da yanlış tanımlanmış olmasından kaynaklanıyor. Log çıktısına dikkatlice bakmak, hangi paketin ya da komutun sorun çıkardığını çoğu zaman net şekilde gösteriyor.

Uygulama açılıyor ama beyaz sayfa geliyor: Bu durum çoğunlukla yanlış HTTP portu tanımlanmasından kaynaklanıyor. Uygulamanın gerçekte dinlediği port ile panelde tanımlanan port numarasının eşleştiğinden emin olunmalı.

Ortam değişkenleri çalışmıyor: Değişken eklendikten sonra uygulamanın yeniden dağıtılması gerekiyor, panel bazen bunu otomatik yapmıyor. Bu durumda Deploy sekmesinden manuel bir yeniden dağıtım tetiklenebilir.

Sonraki Adımlar

Uygulama artık App Platform üzerinde çalışıyor ve her yeni commit’te otomatik olarak güncelleniyor. Buradan sonra kendi alan adı bağlanabilir, bir veritabanı eklenebilir ya da otomatik ölçeklendirme kuralları yapılandırılabilir. Proje büyüdükçe daha fazla kontrol ihtiyacı hissediliyorsa, önceki yazıda anlattığım Droplet yaklaşımına her zaman geçilebilir.

Kendi projeni denemek için bir hesaba ihtiyacın varsa, bu referans linki üzerinden kayıt olarak bana destek olabilirsin.

Tüm projelerim ve üzerinde çalıştığım konuları incelemek istersen https://hub.barisgunduz.com/ adresini ziyaret edebilirsin.

Web ve mobil teknolojilere ilgi duyuyorum. Yaklaşık 14 yıldır web geliştirme ve internet reklamcılığı üzerinde çalışıyorum. Web yazılım teknolojileri ve yönetimi konusunda uzmanım. Birçok şirkete teknoloji ve reklamcılık danışmanlığı verdim. Hâlâ bazılarına destek vermeye devam ediyorum. Kendi projelerimle ilgili bazı çalışmalarım var. Çoğu içerik üreticiliği ile ilgili. Projelerimin hepsi Gündüz Medya markası altında toplanmıştır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir