AWS Kinesis: Gerçek Zamanlı Veri İşlemenin Yeni Çağı

Oğuzhan Purtaş
Miuul AWS Community
4 min readApr 12, 2024

--

Dijital çağda, anlık veri akışı iş dünyasının nabzını tutuyor. AWS Kinesis, büyük veriyi gerçek zamanlı olarak işleyerek şirketlere rekabet avantajı sunuyor. Apache Kafka’ya bir alternatif olarak, veri akışlarını hızla toplama ve analiz etme yeteneğiyle Kinesis, zengin içgörüler elde etmenin kapısını aralıyor. Bu yazımızda, AWS Kinesis’in öne çıkan özelliklerini ve veri odaklı karar verme süreçlerinde nasıl bir dönüşüm yaratabileceğini inceliyoruz.

AWS Kinesis — Apache Kafka’nın Alternatifi:

  • Veri işleme platformu olarak, uygulama logları, metrikler, IoT ve tıklama akışları için tercih edilir.
  • Gerçek zamanlı büyük veri işleme özelliği sunar.

Yüksek Dayanıklılık ve Veri Sürekliliği:

  • Veriler otomatik olarak üç farklı Availability Zone (AZ) arasında senkronize edilir ve replike edilir.

Kinesis Streams ve Kinesis Firehose:

  • Düşük gecikme süresiyle, ölçeklenebilir veri akışı yakalama (Kinesis Streams).
  • Veri akışlarını S3, Redshift, Elasticsearch ve Splunk’a doğrudan yükleyebilme (Kinesis Firehose).

VPC Dışı Entegrasyon ve Yönlendirme:

  • Kinesis’e ait veriler, VPC’nin dışında özel bir network interface tipi olan Endpoint’ler üzerinden dış dünyaya aktarılabilir.
  • Bu endpoint yapılandırması yapılmazsa, veriler varsayılan olarak internet gateway üzerinden geçerek dışarıya gönderilir.

Redshift ile Doğrudan Entegrasyon:

  • Kinesis Firehose’un S3'e gerek kalmadan Redshift’e veri yükleme yeteneği mevcuttur.
  • Bu özellik, veri işleme ve analiz işlemlerini daha hızlı ve verimli hale getirir.

Kinesis Streams’in Akış Yapısı:

  • Akışlar, sıralı parça veya bölümlere (Shard) ayrılır, bu yapı verinin üreticiler (Producers) ve tüketiciler (Consumers) arasında dengeli bir şekilde dağıtılmasını sağlar.

Veri Saklama Süresi ve Erişilebilirlik:

  • Veri saklama süresi varsayılan olarak 24 saat, ihtiyaca göre maksimum 365 güne kadar uzatılabilir.
  • Verilere yeniden erişim ve tekrar işleme (reprocess/replay) olanağı tanır.

Çoklu Uygulama Desteği:

  • Birden çok uygulama, aynı akışı kullanarak veriye erişebilir.

Veri Değişmezliği:

  • Kinesis’e eklenen veri silinemez (immutability), bu da değişmez bir veri kaydı sağlar.

Kinesis Stream Parçalarının Yapısı:

  • Bir Kinesis Stream, birçok farklı Shard’dan oluşur, böylece veri akışını ölçeklendirebilirsiniz.
  • Her bir Shard için ayrı ayrı faturalandırma yapılır; ihtiyaca göre istediğiniz kadar Shard ekleyebilirsiniz.
  • Mesaj başına çağrılar veya gruplandırmalar yapılandırılabilir.
  • Shard sayısı zamanla değişebilir; yeniden düzenlenebilir veya birleştirilebilir.
  • Kayıtlar Shard bazında sıralanır, bu da veri düzenini korur.

Kinesis Stream Record’larının Yapısı:

  • Data Block: Gönderilen veriler, byte cinsinden serileştirilir ve boyutları 1 MB’a kadar çıkabilir. Farklı veri türlerini temsil edebilir.
  • Record Key: Bir kayıtla birlikte gönderilir ve gruplandırmada yardımcı olur. Aynı anahtar, kaydın aynı Shard’a düşmesini sağlar. “Hot section” sorununu önlemek için dağıtımı yüksek bir anahtar kullanılır.
  • Sequence Number: Her kayda eklenen eşsiz bir tanımlayıcıdır ve kayıtları birbirinden ayırmak için kullanılır.
  • Kinesis’in İşlemi: Veri Kinesis tarafından işlendikten sonra, kayda bir sıra numarası eklenir ve bu şekilde kayıt stream içinde yerini alır.

Gelelim kurulum rehberimize:

Adım - İlk ve Son

Vpc’mizi oluşturduktan sonra Kinesis servisine gidip Data streams kısmından ‘Create data streams’ diyoruz.

Data streamimize isim verelim.

  • On-demand Modu: Veri akışı gereksinimleri değişkense otomatik ölçeklendirme sağlar.
  • Provisioned Modu: Veri akışınızın gereksinimlerini önceden tahmin edebiliyorsanız, sabit bir kapasite için bu modu seçersiniz.

Shard’lar, veri akışınızın toplam kapasitesini belirler ve her bir shard belirli bir veri geçiş hızına sahiptir. Kapasite sınırlarını aşmak, uygulamanın yavaşlamasına neden olabilir. Provisioned modu, sabit bir veri geçiş hızı için sabit bir fiyatlandırma modeli sunar.

Ve ‘Create data stream’e tıklayarak olusturma işlemini bitirelim.

Nasıl data göndereceğimize bakalım.

Öncelikle EC2 oluşturuyoruz ancak makinemize IAM > Roles > Create role kısmından role atamamız gerekiyor, biliyorsunuz ki iki servis ilgili izinler (‘AmazonKinesisFullAccess’) olmadan haberleşemez

Oluşturduğumuz EC2 instance’ına bağlanalım.

Aşağıdaki komutları sanal makinemizde çalıştırarak , binance verilerini çekmek için geliştirme ortamını hazırlar, gerekli bağımlılıkları yükler ve verilerimizi çekecek kodu çalıştırmasına hazır hale getirmiş oluruz.

cd /home/ec2-user || exit
sudo dnf upgrade -y
sudo dnf install - assumeyes python3-pip libffi-devel openssl-devel bzip2-devel git
git clone https://github.com/sinanartun/binance_5.git
sudo chown -R ec2-user:ec2-user /home/ec2-user/binance_5
sudo chmod 2775 /home/ec2-user/binance_5 && find /home/ec2-user/binance_5 -type d -exec sudo chmod 2775 {} \;
cd binance_5 || exit
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
python kin.py

‘kin.py’ı da çalıştırdıktan sonra verilerimiz gelmeye başlar.

Bu datayı artık Amazon tarafında da görebiliriz.

İlgili repoya şuradan ulaşabilirsiniz : https://github.com/sinanartun/binance_5/tree/main

Buraya kadar eşlik eden herkese teşekkürler.🙏🏻❤️

Çalışmalarımı yakından takip etmek ve iletişime geçmek için:

https://www.linkedin.com/in/mrpurtas/

Bir sonraki yazımda görüşmek üzere…

Teşekkürler!

--

--