AWS Lambda: Gerçek Zamanlı Analiz

Enes Öztürk
Miuul AWS Community
5 min readJun 3, 2023

--

AWS Lambda, bulut tabanlı bir hizmet olan Amazon Web Services (AWS) tarafından sunulan bir fonksiyon hizmetidir. Geleneksel sunucu tabanlı uygulamaların aksine, kullanıcıların kodlarını çalıştırmak için bir sunucuya ihtiyaç duymadan, olay tetikleyicileriyle etkileşimde bulunarak işlevlerin otomatik olarak çalışmasını sağlar. Bu makalede, AWS Lambda’nın temel özelliklerini ve data engineering alanındaki kullanım örneklerini ayrıntılı bir şekilde inceleyeceğiz.

1- Olay Tabanlı Hesaplama (Event-Driven Computing):
AWS Lambda, olay tabanlı bir hesaplama modelini destekler. Bu, Lambda işlevlerinin, belirli olaylar gerçekleştiğinde tetikleneceği anlamına gelir. Örneğin, bir veri yükü Lambda fonksiyonuna aktarıldığında veya bir dosya Amazon S3'ye yüklendiğinde bir Lambda fonksiyonu tetiklenebilir. Bu sayede Lambda, kullanıcıların gereksinimlerine dinamik olarak yanıt verebilir ve olaya dayalı iş akışlarını otomatikleştirebilir.

2- Otomatik Ölçeklendirme (Automatic Scaling):
Lambda, otomatik olarak işlevlerin kapasitesini ölçeklendirebilir. İş yükü arttığında, Lambda otomatik olarak işlevleri gerektiği gibi ölçeklendirebilir ve birden çok örnekte paralel olarak çalıştırabilir. Bu, kullanıcıların uygulama performansını optimize etmesine ve kaynakları verimli bir şekilde kullanmasına olanak tanır. Ölçeklendirme, kullanıcıların yüksek trafikli veri işleme, gerçek zamanlı analiz veya büyük veri işleme gibi yoğun hesaplama gerektiren senaryoları kolayca ele almalarını sağlar.

3- Mikro Hizmetler Mimarisi (Microservices Architecture):
Lambda, mikro hizmetler mimarisine uygun olarak kullanılabilir. Bir uygulama içerisindeki farklı işlevler, bağımsız Lambda fonksiyonları olarak uygulanabilir. Her bir Lambda fonksiyonu, kendi iş mantığını ve veri akışını yönetebilir. Bu, uygulamaların daha modüler ve ölçeklenebilir olmasını sağlar. Örneğin, bir e-ticaret uygulamasında, kullanıcı kaydı, ödeme işlemleri ve envanter yönetimi gibi farklı işlevler, ayrı Lambda fonksiyonları olarak uygulanabilir.

4- Durumsuz Tasarım (Stateless Design):
Lambda fonksiyonları durumsuz tasarımı destekler. Bu, işlevlerin her bir çağrıda bir önceki durumu hatırlamaması anlamına gelir. Durumsuz tasarım, birçok kullanıcı isteğini aynı anda ele almanın yanı sıra hata toleransını artırır ve daha iyi ölçeklenebilirlik sağlar. Durumsuz Lambda fonksiyonları, veri mülkiyetini ve veri bütünlüğünü sağlamak için dış sistemlerle etkileşime geçebilir.

5- Maliyet Verimliliği (Cost-Efficient):
Lambda, maliyet verimli bir hizmet sunar. Kullanıcılar, yalnızca işlevlerin gerçekten çalıştığı süre boyunca ödeme yapar. İşlevlerin çalıştırılması için herhangi bir sunucu altyapısını yönetme ihtiyacı olmadığından, kullanıcılar kaynakları daha verimli bir şekilde kullanabilirler. Ayrıca Lambda, otomatik ölçeklendirme sayesinde gereksiz kaynak kullanımını en aza indirir ve iş yükü arttığında otomatik olarak kapasiteyi ayarlar.

6- Birden Fazla Dil Desteği (Supports Multiple Languages):
Lambda, çeşitli programlama dillerini destekler. Kullanıcılar, tercih ettikleri dili kullanarak işlevlerini yazabilirler. AWS SDK’ları ve araçları, popüler dillerde Lambda işlevlerini geliştirmek için geniş bir destek sunar. Bu, geliştiricilerin mevcut becerilerini ve kod tabanlarını kullanarak Lambda fonksiyonları oluşturmalarını kolaylaştırır.

7- Ortam Değişkenleri (Environment Variables):
Lambda, ortam değişkenlerini kullanarak yapılandırma ayarlarını saklamak ve yönetmek için bir mekanizma sağlar. Ortam değişkenleri, Lambda işlevlerinin çalışma zamanında kullanılabilir ve değiştirilebilir. Bu, yapılandırma ayarlarını sık sık değiştirmeniz gereken senaryolarda kullanışlıdır. Örneğin, bir veritabanı bağlantı dizesi veya API anahtarı gibi hassas bilgileri ortam değişkenleriyle güvenli bir şekilde saklayabilirsiniz.

8- IAM Entegrasyonu (IAM Integration):
Lambda, AWS Identity and Access Management (IAM) ile entegre olarak çalışır. IAM, kullanıcıların ve rollerin Lambda fonksiyonlarına erişimini yönetmelerine olanak tanır. Kullanıcılar, IAM politikalarını kullanarak, kimin hangi Lambda işlevlerini çalıştırabileceğini ve ne tür kaynaklara erişebileceğini kontrol edebilir. Bu, güvenlik ve yetkilendirme yönetimini sağlamak için önemli bir özelliktir.

9- Lambda Katmanları (Lambda Layers):
Lambda, kodu paylaşmak ve tekrar kullanılabilir bileşenler oluşturmak için Lambda katmanları adı verilen bir mekanizma sunar. Lambda katmanları, işlevler arasında ortak olan kütüphane dosyalarını ve bağımlılıkları paylaşmanıza olanak tanır. Örneğin, bir veritabanı bağlantısı veya analiz kütüphanesi gibi sık kullanılan işlevler, Lambda katmanları aracılığıyla birden çok Lambda işlevi tarafından kullanılabilir.

10- VPC Desteği (VPC Support):
Lambda, Amazon Virtual Private Cloud (VPC) ile entegre çalışabilir. Bu, Lambda işlevlerinin bir VPC içinde çalışabileceği ve VPC kaynaklarına erişebileceği anlamına gelir. Özel ağ kaynaklarına erişmek veya güvenlik gereksinimlerini karşılamak için VPC’ler kullanan senaryolarda Lambda’nın bu yeteneği oldukça faydalıdır.

Data Engineering Kullanım Örnekleri:

1- Veri Akışı İşleme:
Lambda, olay tabanlı hesaplama modeliyle veri akışı işleme senaryolarında yaygın olarak kullanılır. Örneğin, bir veri yolu üzerindeki her bir veri akışını tetikleyerek, veriyi işleyen Lambda fonksiyonları oluşturabilirsiniz. Bu, gerçek zamanlı analitik, veri güncelleme işlemleri veya veri dönüşümleri gibi veri işleme senaryolarında kullanılabilir. Örneğin, bir müşteri etkileşimini gerçek zamanlı olarak analiz etmek için bir Lambda işlevi kullanabilirsiniz. Her bir müşteri etkileşimi, olay tetikleyicisi aracılığıyla Lambda işlevini tetikler ve analiz veya kişiselleştirilmiş işlemler gerçekleştirir.

2- Veri Entegrasyonu:
Lambda, farklı veri kaynakları arasında veri entegrasyonunu kolaylaştıran bir araç olarak kullanılabilir. Örneğin, bir S3 kovasına yüklenen her bir dosyayı tetikleyen bir Lambda fonksiyonu oluşturabilirsiniz. Bu fonksiyon, dosyayı işleyerek veritabanına aktarabilir veya başka bir hizmete gönderebilir. Bu, farklı veri kaynakları arasında senkronizasyon veya veri aktarımı gerektiren senaryolarda kullanışlıdır.

3- Veri İşleme ve Analizi:
Lambda, büyük veri işleme ve analizi senaryolarında da kullanılabilir. Örneğin, bir veri analiz iş akışı için Lambda fonksiyonları oluşturabilirsiniz. Her bir Lambda işlevi, belirli bir veri işleme aşamasını gerçekleştirebilir. Örneğin, veriyi temizleme, dönüşüm, örüntü eşleme veya istatistiksel analiz gibi adımlarla işleyebilirsiniz. Bu, veri madenciliği, raporlama veya tahmine dayalı analiz gibi veri odaklı işlemlerde kullanılabilir.

E-Ticaret Veri İşleme ve Analizi

Bu örnek proje, bir e-ticaret platformunda gerçekleşen veri işleme ve analiz iş akışını göstermektedir. Proje, Lambda işlevlerinin kullanılmasını içerir:

1. Veri Toplama: E-ticaret platformundan gelen müşteri etkileşim verileri (örneğin, tıklamalar, sepete ekleme, satın alma gibi) Amazon Kinesis Data Streams aracılığıyla toplanır.

2. Olay Tetikleyici: Kinesis Data Streams, yeni bir veri girişi olduğunda Lambda işlevini tetikleyen bir olay tetikleyicisi olarak ayarlanır.

3. İşleme ve Depolama: Lambda işlevi, tetiklendiğinde müşteri etkileşim verisini işler. Örneğin, veriyi temizler, dönüştürür ve örüntü eşleme algoritmalarıyla analiz eder. İşlenen veriler, analitik amacıyla Amazon Redshift veya Amazon Athena gibi hizmetlere aktarılır.

4. Gerçek Zamanlı Uyarılar: Lambda işlevi, belirli bir eyleme (örneğin, önemli bir müşteri etkileşimi) yanıt olarak gerçek zamanlı uyarılar oluşturabilir. Bu uyarılar, SNS (Simple Notification Service) veya diğer kanallar aracılığıyla ilgili kullanıcılara iletilir.

5. Raporlama ve Görselleştirme: İşlenen veriler, analiz veya raporlama amacıyla kullanılabilir. Örneğin, işlenmiş veriler, Amazon QuickSight veya Apache Superset ile görselleştirilir ve kullanıcılara sunulur.

Bu örnek proje, e-ticaret platformundan gelen müşteri etkileşim verilerini gerçek zamanlı olarak işleyen ve analiz eden bir veri işleme ve analiz akışı sağlar. Lambda, olay tabanlı hesaplama, otomatik ölçeklendirme ve mikro hizmetler mimarisi gibi özellikleriyle bu tür bir projenin kolayca uygulanabilmesini sağlar.

En son yayınlarımdan haberdar olmak ve benimle iletişime geçmek için:

LinkedIn: https://www.linkedin.com/in/enessoztrk/

Yeni yazılarımda görüşmek üzere…🧠

--

--