Blogs

Go, PostgreSQL ve Heroku Deployment: Adım Adım Rehber

Daha önceki yazılarımızda Go programlama diline giriş yapmış ve ardından Go programlama dili ile örnek bir Rest API yaratmıştık. Bu yazımızda ise uygulamaya PostgreSQL bağlantısı sağlayacağız ve projeyi Heroku üzerine deploy edeceğiz. Go ile Heroku PostgreSQL entegrasyonu, üretime hazır bir REST API’yi buluta taşımanın hızlı ve ücretsiz bir yoludur.

Godep ile Deployment Hazırlığı

Heroku üzerinde gerçekleştireceğimiz işlemlere geçmeden önce, deployment için gereken Godep paketini Go projemize ekliyoruz:

TERMINAL

go get -u github.com/tools/godep
Go Heroku deploy - godep kurulumu

Ardından proje ana dizininde aşağıdaki komutu çalıştırıyoruz:

TERMINAL

godep save
godep save komutu

Heroku Hesabı Oluşturma ve CLI Kurulumu

Öncelikle heroku.com üzerinden ücretsiz hesap ediniyoruz.

Heroku hesap oluşturma
Heroku dashboard

Hesabımızı aktive ettikten sonra Heroku CLI’yi buradan indirip kuruyoruz.

CLI’yi indirdikten sonra sırasıyla şu komutları çalıştırıyoruz:

TERMINAL

heroku login

TERMINAL

heroku create proje-adi
Heroku uygulama oluşturma

Heroku.com’dan login olup baktığımızda uygulamamızı dashboard’da görebiliriz.

Heroku uygulama yayınlama

Uygulamayı Heroku’ya Deploy Etme

Hesabımızı ve uygulamamızı yarattıktan sonra sırasıyla aşağıdaki adımları izleyerek uygulamamızı Heroku’ya deploy ediyoruz:

TERMINAL

git init
git add .
git commit -m "first commit"
git push heroku master

git remote –v komutu ile heroku reposu ile bağlantının sağlanıp sağlanmadığını kontrol edebilirsiniz. Heroku reposu görünmüyorsa, heroku create proje-adi komutunun yanıtında dönen URL’yi aşağıdaki şekilde ekleyebilirsiniz:

TERMINAL

git remote add heroku https://git.heroku.com/proje-adi.git
Heroku deployment terminal
Heroku deploy sonucu

Heroku PostgreSQL Add-on Ekleme

Uygulama başarıyla deploy edildiyse, PostgreSQL add-on’unu kullanarak veri tabanımızı yaratıyoruz:

TERMINAL

heroku addons:create heroku-postgresql:hobby-dev

Bu komuttaki hobby-dev kısmı ücretsiz Postgres planının ismidir. Diğer planları görmek için Heroku dashboard’unuzda Resources → Add-ons kısmına giderek PostgreSQL’i arayabilirsiniz.

Heroku PostgreSQL planları

Heroku PostgreSQL hakkında daha fazla bilgi almak için resmi dokümantasyona göz atabilirsiniz.

Go ile Heroku PostgreSQL Bağlantısı

Uygulamamızı deploy ettik ve PostgreSQL add-onu aracılığıyla veri tabanımızı yarattık. Şimdi veri tabanı ile projemizi bağlayacağız. Bunun için Heroku dashboard’dan uygulamamıza tıklayarak Settings → Config Vars → Reveal Config Vars butonunu tıklıyoruz.

Go PostgreSQL Heroku config vars

Butona tıkladığımızda PostgreSQL URL’imizi göreceğiz.

Heroku DATABASE_URL

Eğer projenizi önceki yazımızdaki adımları takip ederek yaptıysanız, base.go dosyasında yer alan aşağıdaki yorum satırını bulun:

GO

// Eğer Heroku üzerinde bir PostgreSQL'e sahipseniz, bu ayarlamaları yapmak yerine doğrudan
// heroku tarafından verilen database url'i kullanabilirsiniz
Go Heroku Postgres connection

Yukarıdaki kodların üst kısmındaki db değişkenlerini kapatıp alttaki dbUri değişkenini açıyor ve buraya az önce aldığımız DATABASE_URL değerini giriyoruz.

Her şey yolunda gittiyse, go run main.go komutunu çalıştırdığımızda database bağlantımızın sağlandığını ve migration’larımızın çalıştığını gösteren aşağıdaki sonucu göreceksiniz.

Go Heroku PostgreSQL bağlantı başarılı

Test Edelim

Şimdi bir kullanıcı hesabı yaratarak test edebiliriz:

Go Heroku Postgres kullanıcı yaratma testi

Ardından login’i deneyelim:

Go Heroku Postgres login testi

Go & PostgreSQL projesini Heroku üzerinde deploy etmek işte bu kadar hızlı ve kolay! Sorularınız olursa bizimle iletişime geçebilirsiniz.

Sık Sorulan Sorular

Heroku’nun ücretsiz planı PostgreSQL için hala geçerli mi?

Heroku 2022 yılında ücretsiz planını kaldırdı. Eski hobby-dev planı artık mevcut değil. Alternatif olarak Railway, Render veya Fly.io gibi platformlar Go uygulamaları için ücretsiz veya düşük maliyetli PostgreSQL destekli deployment seçenekleri sunmaktadır.

Heroku’ya deploy sırasında “no web processes running” hatası neden alınır?

Bu hata genellikle projenin kök dizininde bir Procfile dosyası olmadığında ya da dosyanın yanlış yapılandırıldığında oluşur. Procfile içeriği şu şekilde olmalıdır: web: ./proje-adi. Ayrıca heroku ps:scale web=1 komutu çalıştırarak web dynamo’yu aktive edebilirsiniz.

Godep yerine Go modules kullanılabilir mi?

Evet. Godep eski bir bağımlılık yönetim aracıdır; Go 1.11’den itibaren standart go mod sistemi kullanılabilir. Heroku Go buildpack da go modules’u desteklemektedir. go.mod ve go.sum dosyalarınız varsa Heroku bunları otomatik olarak tanır.

DATABASE_URL değeri nasıl güvenli şekilde kullanılır?

DATABASE_URL’yi asla kaynak koduna sabit olarak yazmayın. Heroku’da bu değer Config Vars üzerinden otomatik olarak ortam değişkeni olarak enjekte edilir. Kodunuzda os.Getenv("DATABASE_URL") ile bu değeri okuyabilirsiniz. Bu şekilde hem lokal hem de üretim ortamında güvenli çalışır.

Referanslar

Heroku PostgreSQL — Resmi Dokümantasyon
Heroku CLI — Kurulum Rehberi
Go Programlama Diline Giriş — MDP Group
Go Dili ile Restful API Geliştirme — MDP Group


Benzer
Bloglar

Mailiniz başarıyla gönderilmiştir en kısa sürede sizinle iletişime geçilecektir.

Mesajınız ulaştırılamadı! Lütfen daha sonra tekrar deneyin.