AWS Türkçe Blog

Amazon MSK Serverless Artık Genel Kullanıma Hazır – Yönetilen Kafka Kümeleriniz için Artık Kapasite Planlamasına Gerek Yok

Orijinal makale: Link (Marcia Villalba)

Bugün, kapasite planlamasını ve ölçeklendirmeyi AWS’e devrederek bir Apache Kafka kümesini yönetmenin operasyonel yükünü daha da azaltmanıza yardımcı olmak için Amazon MSK Serverless‘ı (Amazon MSK Sunucusuz) genel kullanıma sunuyoruz.

Mayıs 2019‘da, müşterilerimizin Apache Kafka kullanarak veri akışı yapmasına yardımcı olmak için Amazon Managed Streaming for Apache Kafka başlattık. Apache Kafka, müşterilerin tıklama akışı olayları, işlemler ve IoT olayları gibi akış verilerini yakalamasını sağlayan açık kaynaklı bir platformdur. Apache Kafka, akış verileri üreten uygulamaları (üreticiler), verileri tüketenlerden (tüketiciler) ayırmak için yaygın bir çözümdür. Amazon MSK, tam olarak yönetilen Apache Kafka kümeleriyle gerçek zamanlı olarak akış verilerini almayı ve işlemeyi kolaylaştırır.

Amazon MSK, üretimde Apache Kafka’yı kurmak, ölçeklendirmek ve yönetmek için gereken işi azaltır. Amazon MSK ile dakikalar içinde bir küme oluşturabilir ve veri göndermeye başlayabilirsiniz. Apache Kafka, bir veya daha fazla aracıda (broker) küme olarak çalışır. Aracılar, yüksek kullanılabilirlik oluşturmak için birden çok AWS Erişilebilirlik Alanında dağıtılan belirli bir işlem ve depolama kapasitesine sahip sunuculardır. Apache Kafka, kullanıcı tanımlı bir süre için konulardaki kayıtları depolar, bu konuları bölümlere ayırır ve ardından bu bölümleri birden çok aracıda çoğaltır. Veri üreticileri konulara kayıtlar yazar ve tüketiciler onlardan kayıtları okur.

Yeni bir Amazon MSK kümesi oluştururken aracıların sayısına, sunucuların boyutuna ve her aracının kullanabileceği depolamaya karar vermeniz gerekir. Bir MSK kümesinin performansı bu parametrelere bağlıdır. İş yükünü zaten biliyorsanız, bu ayarları sağlamak kolay olabilir. Ancak yeni bir iş yükü için bir Amazon MSK kümesini nasıl yapılandıracaksınız? Veya değişken veya öngörülemeyen veri trafiği olan bir uygulama için?

Amazon MSK Serverless
Amazon MSK Serverless, uygulamalarınız için isteğe bağlı akış kapasitesi ve depolama sağlamak için gerekli kaynakları otomatik olarak sağlar ve yönetir. Ne kadar kapasiteye ihtiyacınız olacağını bilmediğiniz veya uygulamalarınızın öngörülemeyen veya çok değişken iş ürettiği ve boş kapasite için ödeme yapmak istemediğiniz yeni bir Apache Kafka iş yüküyle başlamak için mükemmel bir çözümdür. Ayrıca, kümelerinizin kaynak kullanımını sağlamaktan, ölçeklendirmekten ve yönetmekten kaçınmak istiyorsanız bu çözüm harikadır.

Amazon MSK Serverless, özel bağlantı gibi kutudan çıktığı gibi birçok güvenli özellik ile birlikte gelir. Bu, trafiğin AWS omurgasından, AWS Identity and Access Management (IAM) erişim kontrolünden ve durağan haldeki ve aktarım halindeki verilerinizin şifrelenmesinden ayrılmadığı ve bu sayede verilerinizin güvenliğinin sağlandığı anlamına gelir.

Bir Amazon MSK Serverless kümesi, uygulama gereksinimlerine göre kapasiteyi anında yukarı ve aşağı ölçeklendirir. Apache Kafka kümeleri yatay olarak ölçeklendiğinde (yani daha fazla aracı eklendiğinde), eklenen kapasiteden yararlanmak için bölümleri bu yeni aracılara taşımanız da gerekir. Amazon MSK Serverless ile aracıları ölçeklendirmeniz veya bölüm hareketi yapmanız gerekmez.

Her Amazon MSK Serverless kümesi, 200 MBps’ye kadar yazma verimi ve 400 MBps’ye kadar okuma verimi sağlar. Ayrıca bölüm başına 5 MBps’ye kadar yazma verimi ve 10 MBps okuma verimi tahsis eder.

Amazon MSK Serverless fiyatlandırması, aktarım hızına dayalıdır. MSK’in fiyatlandırma sayfasında daha fazla bilgi edinebilirsiniz.

Aksiyon halinde görelim
Bir mobil oyun stüdyosunun mimarı olduğunuzu ve yeni bir oyun başlatmak üzere olduğunuzu hayal edin. Oyunun pazarlamasına yatırım yaptınız ve birçok yeni oyuncuya sahip olmasını bekliyorsunuz. Oyunlarınız, arka uç uygulamanıza tıklama verileri gönderir. Veriler, oyuncularınızın davranışları hakkında tahminler üretmek için gerçek zamanlı olarak analiz edilir. Bu tahminlerle oyunlarınız, mevcut oyuncunun davranışına uygun gerçek zamanlı teklifler sunarak onları oyunda daha uzun süre kalmaya teşvik eder.

Oyunlarınız, tıklama akışı verilerini bir Apache Kafka kümesine gönderir. Bir Amazon MSK Serverless kümesi kullandığınız için, yeni oyun başlatıldığında kümeyi ölçeklendirme konusunda endişelenmenize gerek yoktur, çünkü kapasitesini verime göre ayarlayacaktır.

Aşağıdaki görselde yeni oyunun çıkış gününün grafiğini görebilirsiniz. Kümenin tükettiği MessagesInPerSec metriğini turuncu renkte gösterir. Ve lansmandan önceki baz sayımız olan 100’den ilk olarak saniyedeki mesaj sayısının arttığını görebilirsiniz. Ardından, oyunumuz giderek daha fazla oyuncu tarafından indirilip oynandıkça, saniyede 300, 600 ve 1.000 mesaja çıkar. Kayıtların hacminin artmaya devam edeceğinden emin olabilirsiniz. Amazon MSK Serverless, uygulamanızın aktarım hızı hizmet sınırları içinde kaldığı sürece tüm kayıtları alabilir.

Graph of messages in per second to the cluser

Amazon MSK Serverless kullanmaya nasıl başlanır?
Hizmete herhangi bir kapasite yapılandırması sağlamanız gerekmediğinden bir Amazon MSK Serverless kümesi oluşturmak çok basittir. Amazon MSK konsol sayfasında yeni bir küme oluşturabilirsiniz.

Quick create küme oluşturma yöntemini seçin. Bu yöntem, bir başlangıç ​​kümesi oluşturmak ve kümeniz için bir ad girmek için size en iyi uygulama ayarlarını sağlayacaktır.

Create a cluster

Ardından, General cluster properties küme özelliklerinde küme türünü seçin. Amazon MSK Serverless kümesi oluşturmak için Serverless seçeneğini belirleyin.

General cluster properties

Son olarak, varsayılan olarak yapılandıracağı tüm küme ayarlarını gösterir. Küme oluşturulduktan sonra bu ayarların çoğunu değiştiremezsiniz. Bu ayarlar için farklı değerlere ihtiyacınız varsa, Custom create (Özel oluşturma) yöntemini kullanarak kümeyi oluşturmanız gerekebilir. Varsayılan ayarlar işinize yararsa kümeyi oluşturun.

Cluster settings page

Kümeyi oluşturmanız birkaç dakikanızı alacaktır ve bundan sonra Cluster summary (Küme özeti) sayfasında Active durumunu görürsünüz.

Cluster information page

Artık kümeye sahip olduğunuza göre, bir Amazon Elastic Compute Cloud (Amazon EC2) bulut sunucusu kullanarak kayıt gönderip almaya başlayabilirsiniz. Bunu yapmak için ilk adım, yeni bir IAM politikası ve IAM rolü oluşturmaktır. Sunuculardan kümeye erişmek için sunucuların IAM kullanarak kimlik doğrulaması yapması gerekir.

Amazon MSK Serverless, Apache Kafka iş yüklerinize ayrıntılı erişim denetimi sağlamak için IAM ile entegre olur. Apache Kafka istemcilerinize en az ayrıcalıklı erişim sağlamak için IAM politikalarını kullanabilirsiniz.

IAM politikasını oluşturun
Aşağıdaki JSON ile yeni bir IAM politikası oluşturun. Bu politika, kümeye bağlanma, bir konu oluşturma, veri gönderme ve konudan veri tüketme izinleri verecektir.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect"
            ],
            "Resource": "arn:aws:kafka:<REGION>:<ACCOUNTID>:cluster/msk-serverless-tutorial/cfeffa15-431c-4af4-8725-42636fab9937-s3"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:DescribeTopic",
                "kafka-cluster:CreateTopic",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": "arn:aws:kafka:<REGION>:<ACCOUNTID>:topic/msk-serverless-tutorial/cfeffa15-431c-4af4-8725-42636fab9937-s3/msk-serverless-tutorial"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:AlterGroup",
                "kafka-cluster:DescribeGroup"
            ],
            "Resource": "arn:aws:kafka:<REGION>:<ACCOUNTID>:group/msk-serverless-tutorial/cfeffa15-431c-4af4-8725-42636fab9937-s3/*"
        }
    ]
}
JSON

Bölge ve hesap ID’sini kendi kimliğinizle değiştirdiğinizden emin olun. Ayrıca cluster (küme), topic (konu) ve group (grup) ARN’i değiştirmeniz gerekir. Bu ARN’leri almak için cluster summary (küme özeti) sayfasına gidebilir ve cluster ARN’ini alabilirsiniz. Topic ARN ve group ARN, cluster ARN’i temel alır. Burada küme ve konu, msk-serverless-tutorial olarak adlandırılıyor.

"arn:aws:kafka:<REGION>:<ACCOUNTID>:cluster/msk-serverless-tutorial/cfeffa15-431c-4af4-8725-42636fab9937-s3"
"arn:aws:kafka:<REGION>:<ACCOUNTID>:topic/msk-serverless-tutorial/cfeffa15-431c-4af4-8725-42636fab9937-s3/msk-serverless-tutorial"
"arn:aws:kafka:<REGION>:<ACCOUNTID>:group/msk-serverless-tutorial/cfeffa15-431c-4af4-8725-42636fab9937-s3/*"
JSON

Ardından, kullanım durumu EC2 ile yeni bir rol oluşturun ve bu politikayı role ekleyin.

Create a new role

Yeni bir EC2 sunucusu oluşturun
Artık kümeye ve role sahip olduğunuza göre yeni bir Amazon EC2 bulut sunucusu oluşturun. Sunucuyu kümeyle aynı VPC’ye, subnet’e ve security group’a ekleyin. Bu bilgiyi ağ ayarlarında küme özellikleri sayfanızda bulabilirsiniz. Ayrıca, sunucuyu yapılandırırken, önceki adımda oluşturduğunuz rolü ekleyin.

Cluster networking configuration

Hazır olduğunuzda sunucuyu başlatın. Aynı sunucuyu mesaj üretmek ve tüketmek için kullanacaksınız. Bunu yapmak için, sunucuda Apache Kafka istemci araçlarını ayarlamanız gerekir. Bulut sunucunuzu hazırlamak için Amazon MSK geliştirici kılavuzunu takip edebilirsiniz.

Kayıtların üretilmesi ve tüketilmesi
Artık her şeyi yapılandırdığınıza göre, Amazon MSK Serverless’ı kullanarak kayıt göndermeye ve almaya başlayabilirsiniz. Yapmanız gereken ilk şey bir konu oluşturmak. EC2 bulut sunucunuzdan, Apache Kafka araçlarını kurduğunuz dizine gidin ve önyükleme sunucusu uç noktasını (bootstrap server endpoint) dışa aktarın.

cd kafka_2.13-3.1.0/bin/
export BS=boot-abc1234.c3.kafka-serverless.us-east-2.amazonaws.com:9098
Bash

Amazon MSK Serverless kullandığınız için bu sunucu için tek bir adres vardır ve bunu cluster sayfanızdaki client bilgilerinde bulabilirsiniz.

Viewing client information

msk-serverless-tutorial adında bir konu oluşturmak için aşağıdaki komutu çalıştırın.

./kafka-topics.sh --bootstrap-server $BS \
--command-config client.properties \
--create --topic msk-serverless-tutorial --partitions 6
Bash

Artık kayıtları göndermeye başlayabilirsiniz. Hizmetin yüksek verim altında çalıştığını görmek istiyorsanız, Apache Kafka üretici performans test aracını kullanabilirsiniz. Bu araç, tanımlanmış bir aktarım hızı ve belirli bir boyutla MSK kümesine aynı anda birçok ileti göndermenize olanak tanır. Bu performans testi aracıyla denemeler yapın, saniye başına ileti sayısını ve kayıt boyutunu değiştirin ve kümenin nasıl davrandığını ve kapasitesini nasıl uyarladığını görün.

./kafka-producer-perf-test.sh --topic msk-serverless-tutorial \
--throughput 1000 --num-records 1000000 --record-size 10240 \
--producer-props bootstrap.servers= $BS acks=all \
--producer.config client.properties
Bash

Son olarak, mesajları almak istiyorsanız, yeni bir terminal açın, aynı EC2 sunucusuna bağlanın ve mesajları almak için Apache Kafka tüketici aracını kullanın.

cd kafka_2.13-3.1.0/bin/
export BS=boot-abc1234.c3.kafka-serverless.us-east-2.amazonaws.com:9098
./kafka-console-consumer.sh \
--bootstrap-server $BS \
--consumer.config client.properties \
--topic msk-serverless-tutorial --from-beginning
Bash

Amazon MSK Serverless kümesinin izleme sayfasında kümenin nasıl çalıştığını görebilirsiniz.

Cluster metrics page

Kullanılabilirlik
Amazon MSK Serverless, US East (Ohio), US East (N. Virginia), US West (Oregon), Europe (Frankfurt), Europe (Ireland), Europe (Stockholm), Asia Pacific (Singapore), Asia Pacific (Sydney) ve Asia Pacific (Tokyo) bölgelerinde kullanıma sunuldu.
Amazon MSK Serverless özellik sayfasında bu hizmet ve fiyatlandırması hakkında daha fazla bilgi edinin.