Yazılım geliştirme yaşam döngüsü (SDLC), bir yazılımın fikir aşamasından başlayıp, geliştirilip, test edilip, dağıtılıp ve sonunda bakımının yapılmasına kadar geçen tüm aşamaların sistematik ve disiplinli bir şekilde izlendiği süreçtir. Bu yazıda SDLC'yi AWS perspektifiyle ele alacağız.
SDLC Nedir?
SDLC (Software Development Lifecycle), bir yazılımın fikir aşamasından başlayıp, geliştirilip, test edilip, dağıtılıp ve sonunda bakımının yapılmasına kadar geçen tüm aşamaların sistematik ve disiplinli bir şekilde izlendiği süreçtir.
SDLC Aşamaları
Planlama ve Gereksinim Analizi
Bu aşamada;
- Müşteri ihtiyaçları toparlanır ve müşterinin gereksinimleri öğrenilir
- Projenin hedefi, kapsamı, zaman ve maliyet tahmin edilir
- Risk analizi yapılır
- Fonksiyonel gereksinimler (ne yapacak?) ve fonksiyonel olmayan gereksinimler (performans, güvenlik gibi) belirlenir
Tasarım (Design)
Tasarlama aşamasında;
- Yazılım mimarisi oluşturulur
- Kullanıcı arayüzü tasarımı, veri tabanı tasarımı yapılır
- Hangi teknolojilerin kullanılacağı seçilir
Geliştirme (Development)
Development sürecimiz başlar bu aşamada ürünü ayağa kaldırırız;
- Kodlama süreci başlar
- Modüller oluşturulur ve birleştirilir
- Versiyon kontrol sistemleri kullanılır
Test Etme
- Kodun hataları bulunur
- Yazılımın gereksinimleri karşılayıp karşılamadığı kontrol edilir
- Farklı test türleri uygulanır: Unit, Integration, System, Acceptance testleri
Uygulama (Deployment)
- Yazılım canlıya alınır ve gerçek kullanıcılarla buluşur
- Yayınlama sırasında kesinti, hata olmaması için dikkatli bir geçiş yapılır
- Geliştirme ve testten sonra, kodun üretim ortamına taşınması sürecidir
Beta Sürüm
Bir yazılımın geliştirme sürecinde, temel özellikleri büyük ölçüde tamamlanmış ama hâlâ test edilen ve nihai sürüm öncesinde sınırlı sayıda kullanıcıyla paylaşılan versiyonudur.
Modern Yazılım Mimarisi
Neredeyse her kurumsal uygulama backend, frontend ve databaseden oluşmaktadır.
Frontend
Kullanıcı Arayüzü
Backend
İş Mantığı
Database
Veri Depolama
Frontend (Ön Yüz)
Nedir?
- Kullanıcının doğrudan gördüğü ve etkileşimde bulunduğu kısmıdır
- Web sitesinin veya uygulamanın arayüzüdür: butonlar, menüler, yazılar, renkler, görseller
- Tarayıcıda veya mobil cihazda çalışır
Kullanılan Teknolojiler:
Restoran Analojisi
Bir restoranın dekorasyonu ve menü kartı gibi düşün.
Müşteri masaya oturduğunda ne sipariş vereceğini, nasıl sipariş vereceğini ön yüz belirler: sandalye rahat mı, menü kolay okunuyor mu biz bunu düşünürüz.
Backend (Arka Yüz / Sunucu Tarafı)
Nedir?
- Kullanıcının görmediği ama işlemlerin yürütüldüğü, verilerin işlendiği kısımdır
- Kullanıcının gönderdiği verileri alır, işler ve gerektiğinde veritabanıyla iletişim kurar
- API (Application Programming Interface) aracılığıyla frontend ile iletişim kurar
Kullanılan Teknolojiler:
Restoran Analojisi
Restoranın mutfağı ve garsonları gibi düşün.
Müşteri siparişini verir (frontend), garson siparişi mutfağa iletir (API), mutfakta yemek hazırlanır (backend), sonra garson geri getirir.
Müşteri mutfağın içini görmez ama tüm önemli işler orada yapılır!
Database (Veritabanı)
Nedir?
- Yazılımın bilgilerini kalıcı olarak depoladığı yerdir
- Kullanıcı bilgileri, ürünler, siparişler gibi veriler burada saklanır
- Backend, ihtiyaç duydukça database'e gider veri alır veya kaydeder
Kullanılan Teknolojiler:
Restoran Analojisi
Restoranın depo veya kiler bölümü gibidir.
Şef yemeği hazırlamak için malzemeye ihtiyaç duyduğunda depoya gider. Depoda pirinç, et, baharat gibi her şey düzgün dizilidir.
Depo olmazsa mutfakta yemek yapılamaz!
Özet Karşılaştırma
Trendyol Örneği
Mesela günümüz uygulamalarından Trendyol'dan örnek verelim:
Frontend
Web sitesindeki ürün listesi, sepete ekle butonu
Backend
Siparişi işleme, stok kontrolü, ödeme işlemi
Database
Ürünler, kullanıcı bilgileri, ödeme kayıtları
SaaS (Software as a Service)
Yazılımın dağıtılması sırasında kullanıcı sunucu vs yönetmek zorunda kalıyordu ve bu müşteri açısından zordu. Bu sebeple SaaS yani Software as a Service yöntemi geliştirilmeye başlandı.
SaaS Nedir?
SaaS (Software as a Service), yazılımın internet üzerinden servis olarak sunulduğu bir modeldir.
Yazılımı bilgisayarına kurmazsın
Sadece internet bağlantısı ile bir tarayıcıdan erişir ve kullanırsın
Database, sunucu gibi kısımları sunucu tarafında halledersiniz
Müşteri sadece internet üzerinden hizmetinize erişir
SaaS Örnekleri
AWS Bağlamında SDLC
AWS ile SDLC Aşamaları
Planlama
- AWS Cost Calculator
- AWS Well-Architected Tool
- AWS Organizations
Tasarım
- AWS Architecture Center
- AWS CloudFormation
- AWS CDK
Geliştirme
- AWS CodeCommit
- AWS Cloud9
- AWS CodeBuild
Test
- AWS CodePipeline
- AWS Device Farm
- AWS X-Ray
Dağıtım
- AWS CodeDeploy
- AWS Elastic Beanstalk
- AWS ECS/EKS
Sonuç
SDLC, yazılım projelerinin başarısı için kritik öneme sahiptir. Her aşamanın düzenli ve sistematik olarak takip edilmesi, kaliteli ve güvenilir yazılımlar ortaya çıkarır.
AWS gibi bulut platformları, SDLC'nin her aşamasında güçlü araçlar sunarak geliştirme sürecini hızlandırır ve kolaylaştırır. SaaS modeli ile birlikte, modern yazılım geliştirme daha erişilebilir ve ölçeklenebilir hale gelmiştir.
Önemli Çıkarımlar
- SDLC sistematik bir yaklaşım gerektirir
- Frontend, Backend ve Database üçlüsü modern yazılımın temelidir
- SaaS modeli kullanıcılar için büyük kolaylık sağlar
- AWS gibi bulut platformları SDLC sürecini optimize eder