Kurs
Anlaşılması gereken en önemli AWS hizmetlerinden biri, olaylara yanıt olarak kod çalıştıran ve alttaki kaynakları otomatik olarak yöneten sunucusuz bir bilgi işlem hizmeti olan AWS Lambda—dır.
Lambda benimsendikçe, teknik mülakatlarda AWS Lambda sorularıyla karşılaşmak yaygın hale geliyor.
Bu rehber, seçilmiş soru ve cevap listesiyle AWS Lambda mülakat hazırlığını kolaylaştırır. Temelleri ele alıyor, ardından ileri düzey ve pratik senaryolara dalıyoruz.
AWS hakkında daha fazla bilgi edinmek isterseniz, AWS Bulut Teknolojisi ve Hizmetleri kursuna göz atın.
Neden AWS?
Mülakat sorularını ve cevaplarını incelemeden önce, AWS Bulutu’nun neden başlıca tercih edilen platform olduğunu anlamak önemlidir—bu başlı başına mülakatta sorulabilecek bir sorudur.
Şu grafiği inceleyerek başlayalım:

Kaynak (Statista)
Grafik, 2023 2. çeyrekte küresel bulut altyapı hizmetleri pazarında AWS’in hakimiyetini göstermektedir. %32’lik pazar payıyla AWS, %22 paya sahip en yakın rakibi Microsoft Azure’un oldukça önündedir. Google Cloud (%11) ve Alibaba Cloud (%4) gibi diğer büyük oyuncular pazara katkı sunsa da, payları AWS ve Azure ile karşılaştırıldığında oldukça düşüktür.
2023’ün 2. çeyreğinde bulut altyapı hizmetlerinin ürettiği 65 milyar dolarlık toplam gelir, bu pazarın artan önemini ve finansal ağırlığını daha da vurgular. AWS’in bu hızla büyüyen sektördeki lider konumu, güvenilir ve ölçeklenebilir bulut çözümleri arayan işletmeler için stratejik önemini pekiştirir.
Farklı bulut sağlayıcılarının nasıl karşılaştırıldığını daha fazla öğrenmek isterseniz, AWS, Azure ve GCP Hizmet Karşılaştırması hile sayfasına göz atın.
Finansal yönler önemli olmakla birlikte, AWS’in çekiciliği pazar payının ötesine uzanır; geniş hizmet yelpazesi, güvenilirlik, ölçeklenebilirlik, küresel erişim, güçlü güvenlik, sürekli yenilik ve destekleyici bir topluluğu kapsar. Bu unsurların birleşimi, AWS uzmanlığını teknoloji sektöründe oldukça aranan bir beceri haline getirerek, bu lider bulut platformunda yetkin olanlar için çok sayıda kariyer fırsatı sunar.
Hadi birkaç mülakat sorusuna bakalım!
Temel AWS Lambda Mülakat Soruları
Temellerle başlayalım. AWS Lambda’ya yeni olun ya da sadece tazeleme yapıyor olun, bu temel bilgiler Lambda’nın yeteneklerine daha derinlemesine dalış için sizi hazırlar.
1. AWS Lambda nedir?
AWS Lambda, sunucu sağlama veya yönetme gerektirmeden kod çalıştırmanızı sağlayan sunucusuz bir bilgi işlem hizmetidir. Lambda, yalnızca gerektiğinde kodu çalıştırır ve günde birkaç isteğe kadar ya da saniyede binlercesine otomatik olarak ölçeklenir.
2. Bir Lambda fonksiyonunun başlıca bileşenleri nelerdir?
Bir Lambda fonksiyonunun başlıca bileşenleri şunlardır:
- Handler (işleyici): Bu, fonksiyonumuzun giriş noktasıdır; çağırma olayını işleyen kodumuzdaki bir metottur. Bunu Lambda kodumuzun "main" fonksiyonu gibi düşünebilirsiniz.
- Event (olay): Fonksiyonun çalıştırılmasını tetikleyen JSON formatlı girdi verisidir. Fonksiyon çağrısını başlatanın ne olduğuna dair bilgileri taşır.
- Context (bağlam): Fonksiyonun yürütme ortamına ilişkin çalışma zamanı bilgilerini içeren bir nesnedir. Fonksiyon adı, sürüm, bellek sınırları, istek kimliği ve kalan yürütme süresi gibi ayrıntıları içerir.
- Ortam değişkenleri: Kodun kendisini değiştirmeden Lambda fonksiyonunuzun davranışını yapılandırmak için ayarlayabileceğiniz anahtar-değer çiftleridir. Genellikle API anahtarları, veritabanı kimlik bilgileri veya diğer ayarlar için kullanılır.
3. Lambda hangi dilleri destekler?
Lambda, yerel olarak Node.js, Python, Ruby, Java, Go, C# ve PowerShell’i destekler. Bu, Lambda fonksiyonlarımızı ek kurulum gerektirmeden doğrudan bu dillerde yazabileceğimiz anlamına gelir.
Ayrıca Lambda, özel çalışma zamanları kullanmamıza olanak tanır; bu da fonksiyon kodumuzu ve bağımlılıkları bir konteyner imajında paketleme esnekliği sağlar. Bu sayede neredeyse tüm programlama dilleri desteklenebilir ve ihtiyaçlarımıza en uygun aracı seçebiliriz.
4. Lambda fonksiyonu nasıl oluşturulur?
Lambda fonksiyonları oluşturmanın birkaç yolu vardır:
|
Yöntem |
Açıklama |
En Uygun Olduğu Durumlar |
|
Lambda Konsolu |
Kodu doğrudan tarayıcı düzenleyicisinde yazın. |
Basit fonksiyonlar, hızlı test |
|
Dağıtım Paketi |
Kodu ve bağımlılıkları bir ZIP arşivine paketleyip yükleyin. |
Daha büyük projeler, karmaşık fonksiyonlar |
|
Konteyner İmajı |
Fonksiyonu bir Docker konteyner imajı olarak paketleyin. |
Özel çalışma zamanları, belirli yapılandırmalar |
|
Altyapı-olarak-Kod |
AWS SAM, CloudFormation veya CDK kullanarak fonksiyonları ve kaynakları deklaratif kodla tanımlayın. |
Karmaşık sunucusuz uygulamaları yönetme, otomasyon |
5. Bir Lambda Fonksiyonu hangi yollarla çağrılabilir?
Lambda fonksiyonlarını birkaç şekilde çağırabiliriz:
- Senkron çağrı: İstemci, fonksiyonun tamamlanıp bir yanıt döndürmesini bekler.
- Asenkron çağrı: İstemci yanıt beklemez—Lambda fonksiyonu arka planda yürütür.
- Olay kaynağı eşleme: Lambda, DynamoDB veya Kinesis gibi hizmetleri otomatik olarak yoklar ve olaylara göre fonksiyonları çağırır.
- Diğer yöntemler: Bunlara API Gateway, AWS SDK’lar veya Amazon EventBridge aracılığıyla zamanlanmış çağrılar dahildir.
Orta Düzey AWS Lambda Mülakat Soruları
1. Bağımlılıkları Lambda koduyla birlikte nasıl dağıtabiliriz?
Bağımlılıkları Lambda koduyla paketlemek için birkaç seçenek vardır:
- Doğrudan ekleme: Yorumlamalı diller için bağımlılık dosyalarını fonksiyon kodumuzla birlikte .zip dağıtım paketine koyabiliriz.
- Lambda katmanları: Derlenmiş diller veya daha büyük bağımlılıklar için Lambda katmanlarını kullanarak ortak bağımlılıkları ayrı paketleyip fonksiyonlar arasında paylaşabiliriz.
- Konteyner imajları: Bağımlılıkları, Lambda fonksiyon kodu ve özel bir çalışma zamanı ile birlikte konteyner imajlarında paketleyebiliriz.
2. Lambda fonksiyonlarının performansını nasıl optimize edebiliriz?
Lambda fonksiyonlarını optimize etmek için birkaç seçeneğimiz var:
- Bellek tahsisi: Doğru bellek boyutunun seçimi maliyet ve performans dengesinde kritik öneme sahiptir. AWS Lambda Power Tuning gibi araçlar en uygun yapılandırmayı bulmaya yardımcı olabilir.
- Paket boyutu: Daha küçük fonksiyon paketleri daha hızlı soğuk başlatmalara yol açar (bir Lambda fonksiyonunun ilk çağrıda başlatılması için geçen süre). Gereksiz bağımlılıkları kaldırarak ve kodu sıkıştırarak paket boyutunu en aza indirin.
- Lambda SnapStart: Bu özellik, belirli çalışma zamanları için ortamları önceden başlatır ve soğuk başlatma sürelerini önemli ölçüde azaltır.
- Hazır eşzamanlılık (provisioned concurrency): Kritik iş yükleri için tutarlı yanıt süreleri sağlamak üzere fonksiyon örneklerini sıcak tutar.
- Zaman aşımı ve eşzamanlılık sınırları: Uçup giden (kontrolden çıkan) fonksiyonları önlemek ve istikrarlı bir Lambda ortamı sürdürmek için uygun zaman aşımı ve ayrılmış eşzamanlılık değerleri belirleyin.
3. Lambda fonksiyonlarını izlemek ve hata ayıklamak için hangi araçları kullanabilirsiniz?
Lambda, Amazon CloudWatch’a istek sayısı, gecikme, hata oranları ve daha fazlası dahil olmak üzere metrikleri otomatik olarak gönderir.
CloudWatch Logs’u kullanarak fonksiyon kodumuzun ve Lambda çalışma zamanının ürettiği kayıtlara erişebiliriz.
Dağıtık Lambda uygulamalarının performansını izleme ve sorun giderme için AWS X-Ray kullanabiliriz.
4. Lambda uzantıları ne için kullanılır?
Lambda uzantıları, izleme, gözlemlenebilirlik, güvenlik ve yönetişim araçlarıyla entegre ederek fonksiyonlarımızı geliştirmemizi sağlar.
Uzantılar, tanılama bilgilerini yakalamak veya verileri özel hedeflere göndermek için yürütme ortamında ayrı süreçler olarak çalışabilir.
Örnekler arasında metrikler ve izler için Datadog uzantısı ve dinamik yapılandırma güncellemeleri için AWS AppConfig uzantısı bulunur.
5. Olay kaynağı eşleme nedir?
Olay kaynağı eşleme, bir olay kaynağından öğeleri okuyan ve bir fonksiyonu çağıran bir Lambda kaynağıdır.
Amazon DynamoDB akışları, Amazon Kinesis akışları, Amazon MQ kuyrukları, kendi yönettiğiniz Apache Kafka, Amazon SQS kuyrukları ve daha fazlasından öğe işlemek için olay kaynağı eşlemeleri kullanabiliriz.
Lambda, olay kaynaklarından kayıtları toplu halde okumak ve bir fonksiyon çağırmak için bir yoklama mekanizması sağlar.
İleri Düzey AWS Lambda Mülakat Soruları
1. Lambda fonksiyonlarına erişimi nasıl kontrol edersiniz?
AWS Lambda, erişimi iki düzeyde kontrol etmek için IAM (Kimlik ve Erişim Yönetimi) kullanır:
- Kaynak tabanlı ilkeler, hangi AWS hesaplarının, hizmetlerinin ve kaynaklarının fonksiyonu çağırmasına izin verildiğini belirtir.
- Fonksiyonun yürütme rolü, fonksiyon kodunun hangi AWS hizmetlerine ve kaynaklarına erişebileceğini belirler. En az ayrıcalık ilkesini izleyerek, bu ilkeler fonksiyonun amacını yerine getirmesine izin verirken mümkün olduğunca kısıtlayıcı olmalıdır.
2. Lambda’da soğuk başlatmaları nasıl en aza indirebilirsiniz?
Soğuk başlatmalar, Lambda’nın bir çağrı isteğini işlemek için yeni bir yürütme ortamını başlatması gerektiğinde meydana gelir. Soğuk başlatmaları en aza indirmek ve Lambda fonksiyonumuzun duyarlılığını artırmak için birkaç strateji uygulayabiliriz:
- SnapStart kullanın: (Belirli çalışma zamanlarında mevcut) bu özellik, başlatılmış ortamları kalıcı hale getirerek sonraki çağrılar için başlangıç sürelerini önemli ölçüde azaltır.
- Hazır eşzamanlılığı etkinleştirin: Hazır durumda başlatılmış ortam havuzu tutarak öngörülebilir iş yükleri için soğuk başlatmaları ortadan kaldırabiliriz.
- Paket boyutunu optimize edin: Gereksiz bağımlılıkları kaldırıp kodu optimize ederek fonksiyon paketimizin boyutunu küçültmek, başlatma sürecini hızlandırır.
- Dil seçimi: JVM dillerine kıyasla daha hızlı başlangıç süreleriyle bilinen Go veya Rust gibi dilleri tercih etmek, soğuk başlatma gecikmelerini azaltmaya yardımcı olabilir.
- Yürütme bağlamı yeniden kullanımı: Lambda fonksiyon kodumuzu başlangıç kurulum mantığından ayrı tutmak, çağrılar arasında yürütme bağlamını yeniden kullanmamıza ve ek yükü azaltmamıza olanak tanır.
3. Lambda için yaygın API güvenliği en iyi uygulamaları nelerdir?
Lambda fonksiyonlarını API Gateway üzerinden dışa açarken bazı güvenlik en iyi uygulamaları şunlardır:
- İstekleri kimlik doğrulamak ve yetkilendirmek için IAM veya Lambda yetkilendiricilerini kullanmak.
- Kullanıcı yönetimi için Amazon Cognito kullanıcı havuzlarını etkinleştirmek.
- Kaynak ilkelerini tanımlayarak, kaynak IP’leri gibi istek özelliklerine göre erişime izin vermek veya erişimi reddetmek.
- Güvenli istemci-sunucu iletişimi için mTLS kurmak.
- API’leri hedefleyen yaygın web istismarlarına karşı koruma için AWS WAF kullanmak.
4. Lambda konteyner imajları ile .zip dağıtım paketleri arasındaki farklar nelerdir?
Lambda konteyner imajları, fonksiyon kodu ve bağımlılıklarını OCI uyumlu bir konteyner formatında paketlemeye olanak tanır. Konteyner imajları ile .zip dağıtım paketlerini karşılaştıralım:
|
Özellik |
Konteyner İmajları |
.zip Dağıtım Paketleri |
|
Çalışma Zamanı Esnekliği |
Kendi çalışma zamanımızı getirme (herhangi bir dil veya sürüm) |
Lambda’nın ön tanımlı çalışma zamanlarıyla sınırlı |
|
Dağıtım Boyutu |
10 GB’a kadar |
250 MB’a kadar (sıkıştırılmamış) |
|
Dağıtım & Soğuk Başlatma |
Daha yavaş dağıtımlar ve potansiyel olarak daha yüksek soğuk başlatma gecikmesi |
Daha hızlı dağıtımlar ve genellikle daha düşük soğuk başlatma gecikmesi |
|
Araçlar & İş Akışı |
Mevcut konteyner araçlarımız ve iş akışlarımızla sorunsuz entegrasyon |
Bağımlılık yönetimi ve dağıtım için ek araçlar gerektirebilir |
|
En Uygun Olduğu Durumlar |
Büyük bağımlılıklara veya özel çalışma zamanı gereksinimlerine sahip uygulamalar |
Daha küçük uygulamalar ve Lambda’nın ön tanımlı çalışma zamanlarıyla uyumlu olanlar |
5. Lambda fonksiyonları diğer Lambda fonksiyonlarını çağırabilir mi?
Evet, Lambda fonksiyonları AWS SDK’yı kullanarak diğer fonksiyonları doğrudan çağırabilir. Yaygın kullanım alanları arasında fonksiyon orkestrasyonu, birden fazla fonksiyondan sonuçları birleştirme ve olay işleme yayılımı (fan-out) yer alır.
Bir Lambda fonksiyonu başka bir fonksiyonu çağırdığında, çağrılan fonksiyonun kaynak tabanlı ilkesinin, çağıran fonksiyondan çağrıya açıkça izin verecek şekilde erişim tanıması gerekir.
Pratik AWS Lambda Mülakat Soruları
1. Lambda ve API Gateway kullanarak basit bir REST API’yi nasıl uygularsınız?
Aşağıdaki adımları izleyerek Lambda ve API Gateway kullanarak basit bir REST API uygulayabiliriz:
- Bir Lambda fonksiyonu oluşturun: API Gateway’den bir olay nesnesi olarak girdi alan ve veri ile durum kodlarını içeren bir yanıt nesnesi döndüren bir Lambda fonksiyonu geliştirin.
- API Gateway oluşturun: API Gateway’de, API yoluna ve HTTP yöntemine karşılık gelen bir kaynak ve yöntemle yeni bir REST API oluştururuz.
- Entegrasyonu yapılandırın: Yöntemin entegrasyon türünü Lambda proxy olarak yapılandırır ve çağrılacak fonksiyonu belirtiriz
- API’yi dağıtın: Erişim için herkese açık bir URL uç noktası oluşturmak üzere API’yi dağıtırız.
- Yaygın şekilde test edin: Lambda fonksiyonunun istekleri işlediğinden ve uygun yanıtlar döndürdüğünden emin olmak için cURL veya Postman gibi araçları kullanabiliriz.
2. Bir Lambda fonksiyonunu bir S3 kovasından gelen olayları işleyecek şekilde nasıl yapılandırırsınız?
Aşağıdaki adımları izleyerek bir Lambda fonksiyonunu bir S3 kovasından gelen olayları işleyecek şekilde yapılandırabiliriz:
- S3 kovasına erişmek için uygun izinlere sahip bir Lambda fonksiyonu oluştururuz.
- S3 konsolunda, kaynak kova üzerinde bir olay bildirimi yapılandırırız.
- Bildirim tetiklemek için nesne oluşturma veya silme gibi olay türlerini seçeriz.
- Bildirim hedefi olarak Lambda fonksiyonunu belirtiriz.
- Yapılandırılan olay türleriyle eşleşen işlemleri S3 kovasında gerçekleştirerek test ederiz.
- Lambda fonksiyonunun S3 işleminin ayrıntılarını içeren bir olayla çağrıldığını doğrularız.
3. Bir Lambda fonksiyonunu bir DynamoDB tablosuna veri yazacak şekilde nasıl yapılandırırsınız?
Aşağıdaki altı adımı uygulayarak bir Lambda fonksiyonunu bir DynamoDB tablosuna veri yazacak şekilde yapılandırabiliriz:
- Uygun bir birincil anahtar ve gerekli ikincil indekslerle bir DynamoDB tablosu oluştururuz.
- Lambda fonksiyonu için DynamoDB’ye erişim izinlerine sahip bir IAM rolü oluştururuz.
- Bir Lambda fonksiyonu oluşturur ve IAM rolünü iliştiririz.
- Tablo adıyla bir istemci örneği oluşturmak için DynamoDB SDK’yı kullanırız.
put_itemyöntemini kullanarak, anahtar öznitelikleri ve diğer alanları belirterek tabloya öğeler yazarız.- Fonksiyonu örnek olaylarla test eder ve verilerin doğru yazıldığını doğrulamak için DynamoDB sorgularını kullanırız.
4. Zamanlanmış bir Lambda fonksiyonu nasıl uygulanır?
Şu adımları izleyerek zamanlanmış bir Lambda fonksiyonu uygulayabiliriz—şunları yaparız:
- İstenilen görevi bir takvime göre gerçekleştirecek bir Lambda fonksiyonu oluşturun.
- Amazon EventBridge konsolunu açın ve yeni bir kural oluşturun.
- Oran veya cron sözdizimini kullanarak kural için bir zamanlama ifadesi tanımlayın.
- Kural için hedef olarak Lambda fonksiyonunu seçin.
- Kurali kaydedin ve bir sonraki zamanlanmış olayı bekleyerek test edin.
- CloudWatch metrikleri ve günlüklerinde fonksiyonun yürütmesini doğrulayın.
5. Trafiği bir Lambda fonksiyonunun yeni sürümüne kademeli olarak nasıl yönlendirirsiniz?
Trafiği bir Lambda fonksiyonunun yeni sürümüne yönlendirmek için şunları yaparız:
- Güncellenmiş kodla Lambda fonksiyonunun yeni bir sürümünü yayımlayın.
- Eski, kararlı sürümü işaret eden bir takma ad (alias) oluşturun.
- Takma adı, ağırlıklar (ör. 90/10) kullanarak trafiği eski ve yeni sürümler arasında bölmek üzere güncelleyin.
- Metrikleri izlerken ağırlıkları kademeli olarak ayarlayarak daha fazla trafiği yeni sürüme kaydırın.
- Memnun kaldığınızda, takma adı trafiğin %100’ünü yeni sürüme gönderecek şekilde güncelleyin.
- Bir sonraki fonksiyon güncellemesi için süreci tekrarlayın ve önceki sürümü yeni kararlı sürüm olarak ele alın.
Sonuç
Bu yaygın AWS Lambda mülakat soruları, adayların temel Lambda kavramlarına, en iyi uygulamalara ve pratik kullanım kalıplarına ilişkin anlayışlarını sınar.
Bu kavramları pekiştirmek için Lambda uygulamaları geliştirip işletme konusunda uygulamalı deneyimin paha biçilmez olduğunu unutmamak önemlidir.
Daha fazlasını öğrenmek için şu iki kursa göz atın:
Bilgisini paylaşmaktan ve başkalarına katkı sunmaktan keyif alan, çok yönlü bir veri bilimci olan Zoumana, YouTube’da içerik üretiyor ve Medium’da önde gelen teknoloji yazarları arasında yer alıyor. Konuşmaktan, kod yazmaktan ve öğretmekten büyük zevk alıyor. Zoumana’nın iki yüksek lisans derecesi bulunuyor: İlki Fransa, Paris’te Makine Öğrenmesi odaklı Bilgisayar Bilimleri; ikincisi ise ABD’de Texas Tech University’den Veri Bilimi. Kariyerine Fransa’da Groupe OPEN’da Yazılım Geliştirici olarak başladı; ardından IBM’de Makine Öğrenmesi Danışmanı olarak çalıştı ve sigorta şirketleri için uçtan uca yapay zeka çözümleri geliştirdi. Paris ve Montreal merkezli ilk Sürdürülebilir YZ girişimi olan Axionable’a katıldı. Burada Veri Bilimci olarak görev yaptı ve çoğunlukla NLP kullanım örnekleri olmak üzere, Fransa, Montreal, Singapur ve İsviçre’den müşteriler için YZ ürünleri hayata geçirdi. Ayrıca zamanının %5’ini Araştırma ve Geliştirme’ye ayırdı. Hâlihazırda IFC – Dünya Bankası Grubu’nda Kıdemli Veri Bilimci olarak çalışmaktadır.

