Kaynak kodunu ve yönergeleri Github‘ta bulabilirsiniz.
Bu projenin arkasındaki motivasyon, güncel olarak en çok kullanılan yazılım ürünlerinden bazılarıyla pratik yapmaktı. Bunlar:
- Terraform
- Kubernetes (K8s)
- Docker
Ve, en çok kullanılan veritabanı yazılımlarından bazılarını kullanmaktı. Bunlar:
- Redis
- PostgreSQL
Ayrıca, yazdığımız programı bir bulut platformunda yayımlamaktı. Tercih olarak kullandığım:
- Google Cloud Platform (GCP)
Bu motivasyon çerçevesinde, projede iki tane basit web servisi yer alıyor. Bunlar:
1. Hello
En genel ders başlangıçları gibi, Hello servisi bizim “Merhaba Dünya” programımız.
Basitçe, iki komutu destekliyor:
GET /greeting
: yanıt olarak “Hello World” yazısını gönderiyor.GET /health
: yanıt olarak 200 statü kodunu gönderiyor ve Kubernetes tarafından program canlı mı diye kontrol amaçlı kullanılıyor.
Hello servisi aşağıdaki konularda pratik yapmaya yardımcı oluyor:
- Terraform ile Google Kubernetes Engine (GKE) üzerinde cluster yaratmak.
- Docker ile bir image yaratmak ve bunu Google Container Registry’e (GCR) göndermek.
- Kubernetes ile cluster üzerinde program çalıştırmak ve yönetmek.
2. TODO
Web servisine daha çok benzeyen bir program yaratmak için, ikinci servis önbellek, veritabanı, ve REST API temellerini kullanıyor.
Yani, TODO servisi yapılacaklarınızı bir veritabanında tutuyor ve siz de okuma, yaratma, güncelleme ve silme işlemlerinizi bu veritabanı üzerinde yapabiliyorsunuz.
Bu servis aşağıdaki komutları destekliyor:
GET /todos
: tüm notları dönüyor.GET /todos/done
: tüm tamamlanmış notları dönüyor.GET /todos/remaining
: tüm tamamlanmamış notları dönüyor.GET /todos/{id}
: numarası verilen notu dönüyor.POST /todos
: istekte verilen bilgiler ile yeni bir not yaratıyor.PUT /todos/status
: bir notun statüsünü değiştiriyor.DELETE /todos/{id}
: numarası verilen notu siliyor.
İlk servise ek olarak, TODO servisi bir clusterda disk ve veritabanı kullanımı pratiğini Redis ve PostgreSQL ile sağlıyor. Ayrıca, Kubernetes ile birden fazla servisi yayımlama ve yönetme pratiği konusunda da yardımcı oluyor.
Bu adımda, aşağıdaki Kubernetes terminolojilerine daha yakın oluyorsunuz:
Deployment
Service
ConfigMap
PersistentVolume
PersistentVolumeClaim
Secrets
Ek olarak, eğer kendi bilgisayarınızda çalışmayı tercih ediyorsanız, docker-compose
ile birden çok Docker image komposizyonunu çalıştırmayı da deneyimleyeceksiniz.