Backend Geliştiricileri İçin Bilinmesi Gereken Temel AWS Servisleri
Backend Geliştiricileri İçin Bilinmesi Gereken Temel AWS Servisleri
AWS'de yüzlerce servis bulunuyor ancak hepsini ezberlemenize gerek yok. API'ler, mikroservisler, dağıtık sistemler veya production altyapısı inşa eden bir backend geliştiricisiyseniz, bazı temel AWS servislerini derinlemesine anlamanız gerekir. Önemli olan her servisin ne yaptığını bilmek değil; hangi servisin hangi problemi çözdüğünü, ne zaman tercih edilmesi gerektiğini ve getirdiği zorlukları anlamaktır.
AWS'yi Öğrenmeden Önceki Zihniyetiniz
Tipik bir backend uygulamasını düşünün:
- Kullanıcı uygulamanızı açar.
- İstek domaininize ulaşır (DNS).
- Bir CDN önbelleklenmiş içeriği sunabilir.
- Load balancer trafiği dağıtır.
- Backend uygulamanız container, sanal makine veya serverless fonksiyonlar üzerinde çalışır.
- Uygulama veritabanlarıyla haberleşir.
- Dosyalar obje depolamada saklanır.
- Uzun süren işler kuyruklara (queue) itilir.
Tüm bu akışı AWS üzerinde inşa edebilirsiniz.
1. Compute (İşlem) ve Container Servisleri
- Amazon EC2 (Elastic Compute Cloud): Kontrolün sizde olduğu sanal makinelerdir. İşletim sistemi, ağ yapılandırması ve kurulu yazılımlar üzerinde tam kontrol istediğinizde kullanılır.
- AWS Lambda: Sunucu yönetmeden kod çalıştırmanızı sağlayan serverless işlem servisidir. Event-driven (olay güdümlü) mimariler ve asenkron işlemler için harikadır.
- Amazon ECS ve EKS: Kendi container orchestration platformunuzu kurmak istemiyorsanız, ECS (AWS-native) veya EKS (Managed Kubernetes) kullanabilirsiniz.
2. Veritabanı ve Depolama
- Amazon S3 (Simple Storage Service): Her backend geliştiricisinin bilmesi gereken depolama servisidir. Uygulama sunucunuzu hiçbir zaman dosya depolama sistemi olarak kullanmayın; dosyaları S3'te tutun ve veritabanınızda sadece metadata saklayın.
- Amazon RDS (Relational Database Service): Yönetilen ilişkisel veritabanı servisidir (PostgreSQL, MySQL vb.). Altyapı operasyonlarını yönetir ancak indeksler, sorgu optimizasyonu veya transaction'lar sizin sorumluluğunuzdadır.
- Amazon DynamoDB: Devasa ölçekler için tasarlanmış yönetilen NoSQL veritabanıdır. DynamoDB kullanırken önce tabloları değil, veri erişim biçimlerinizi (access patterns) tasarlamanız gerekir.
3. Ağ (Networking) ve Güvenlik
- Amazon VPC (Virtual Private Cloud): AWS mimarinizin ağ temelidir. Özel subnetler (backend servisleri ve veritabanları için) ve genel subnetler (internete açık bileşenler için) ile ağ sınırlarınızı belirlersiniz.
- AWS IAM (Identity and Access Management): Kimin ne yapabileceğine karar veren servistir. En az yetki (least privilege) prensibi güvenlik için kritiktir. IAM izinlerinin yanlış yapılandırılması, çalışan bir uygulamayı bozabilir veya ciddi güvenlik açıkları yaratabilir.
4. Mesajlaşma ve API Yönetimi
- Amazon SQS (Simple Queue Service): Dağıtık sistemleri birbirinden ayırmak (decouple) için kullanılan mesaj kuyruğu servisidir. Her servisi birbiri için bekletmek yerine, işleri asenkron olarak işleyebilirsiniz.
- Amazon SNS (Simple Notification Service): Bir olayı birden fazla tüketiciye yayınlamak (pub/sub) için kullanılır. Genellikle SQS ile birlikte kullanılır.
- Amazon API Gateway: Serverless API'leriniz (REST, HTTP, WebSocket) için yönetilen ön kapıdır. Lambda ile entegre çalışarak serverless mimarilerin temelini oluşturur.
Sonuç
AWS bir mimari değildir, size yapı taşları sunar. Binayı tasarlamak sizin işinizdir. Servis isimlerini ezberlemek yerine, sistemlerin güvenli, ölçeklenebilir ve yönetilebilir olup olmadığını sorgulamalısınız. Ancak bu servislerin temellerini, zayıf ve güçlü yönlerini kavradığınızda gerçek bir üretim sistemini mimari olarak tasarlayabilirsiniz.