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.

Planlama
Tasarım
Geliştirme
Test
Dağıtım

SDLC Aşamaları

1

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
Sonuç: Bu aşama sonunda elimizde ne yapacağımıza dair bir şablon oluşuyor.
2

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
Kısaca: Yazılımın iskeletini oluştururuz.
3

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
Sonuç: Analiz aşamasında tespit ettiğimiz, design aşamasında belirlediğimiz şeyleri koda döküyoruz.
4

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
Not: Burada kod istenilen düzeye gelene kadar 1.aşamaya kadar gideriz.
5

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:

HTML CSS JavaScript React Angular Vue

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:

Python Java Node.js Go PHP Django Spring Boot Express.js

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:

MySQL PostgreSQL MSSQL MongoDB DynamoDB

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

Kısım
Ne İş Yapar?
Kullanıcı Görür mü?
Frontend
Görsel arayüz, kullanıcı etkileşimi
Backend
İş mantığı, veri işleme
Database
Verileri kalıcı saklama

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

Google Workspace
Microsoft 365
Spotify
Netflix
Dropbox
Slack

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