AWS üzerindeki projeler

Modern Bir Web Uygulaması Oluşturun

Bir web uygulaması dağıtın, bir veritabanına bağlanın ve kullanıcı davranışını analiz edin

Modül 3: Mysift Bilgilerini Depolayın

Bu modülde merkezi bir veritabanı tablosunda mysfit bilgilerini depolamak için Amazon DynamoDB kuracaksınız.

Genel Bakış

Artık kod deponuzu güncellediğinizde değişiklikleri otomatik olarak o hizmete ulaştırmak için dağıtılmış bir hizmetiniz ve çalışan bir CI/CD işlem hattınız olduğuna göre yeni uygulama özelliklerini Mythical Mysfits müşterileriniz için hızla kavramsal aşamasından mevcut aşamasına taşıyabilirsiniz. Bu arttırılmış çeviklik ile Mythical Mysfits web sitesi mimarisine başka bir parça temel işlevsellik olan veri katmanını ekleyelim.

Bu modülde süper hızlı performanslı, AWS’de yönetilen ve ölçeklenebilir bir NoSQL veritabanı hizmeti olan Amazon DynamoDB’de bir tablo oluşturacaksınız. Tüm Mysfits’leri bir statik JSON dosyasında tutmaktansa web sitelerini gelecekte daha genişletilebilir ve ölçeklenebilir hale getirmek için bir veritabanında depolayacağız.

Mimari Diyagramı

fargate ve dynamodb arch diyagramı

 Tamamlama Süresi

20 dakika

 Kullanılan Hizmetler

Uygulama Talimatları

  • A: DynamoDB Tablosu Oluşturun

    Mimariye bir DynamoDB tablosu eklemek için MysfitsTable (MysfitsTablo) denilen bir tabloyu tanımlayan başka bir JSON CLI girdisi dâhil ettik. Bu tablo MysfitId denilen bir karma anahtarı özelliği ile tanımlanan bir birincil dizine ve iki tane daha dizine sahip olacaktır. İlk ikincil dizin Türler karma anahtarına ve MysfitId aralık anahtarına sahip olacaktır ve diğer ikincil dizin ise Uyumluluk karma anahtarına ve MysfitId aralık anahtarına sahip olacaktır.

    Bu ikincil dizinler web sitesinde şu an çalışmadığını fark etmiş olabileceğiniz filtreleme işlevini etkinleştirmek üzere belirli Türler veya Uyum ile eşleşen tüm mysfit’leri geri getirmeye yönelik tabloya sorgular yürütmemizi sağlayacaklar. Bu dosyaya ~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json dizininden bakabilirsiniz. Bu dosyaya herhangi bir değişiklik yapılmasına gerek yoktur ve yürütülmeye hazırdır. DynamoDB’de dizinler ve diğer temel kavramlar hakkında daha fazla bilgi almak içinbu sayfayı ziyaret edebilirsiniz. 

    AWS CLI kullanarak tabloyu oluşturmak için Cloud9 terminalinde aşağıdaki komutu yürütün:

    aws dynamodb create-table --cli-input-json file://~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json

    Komut yürütüldükten sonra terminalde aşağıdaki AWS CLI komutunu yürüterek yeni oluşturulmuş tablonuzun ayrıntılarına bakabilirsiniz.

    aws dynamodb describe-table --table-name MysfitsTable

    Bu tabloda depolanan tüm nesneleri almak için aşağıdaki kodu yürütürsek tablonun boş olduğunu görürsünüz:

    aws dynamodb scan --table-name MysfitsTable
    {
        "Count": 0,
        "Items": [],
        "ScannedCount": 0,
        "ConsumedCapacity": null
    }
    B: DynamoDB Tablosuna Nesne Ekleyin

    Ayrıca bu tabloya birkaç Mysfit nesnelerini toplu eklemek için kullanılabilecek bir JSON dosyası sağlanmıştır. Bu işlem DynamoDB API BatchWriteItem (TopluNesneYazma) aracılığıyla gerçekleştirilebilir.

    Sağlanan JSON dosyasını kullanarak bu API’yi çağırmak içinaşağıdaki terminal komutunu yürütün(hizmet yanıtı hiçbir nesnenin işlenmeden geçmediğini rapor etmelidir):

    aws dynamodb batch-write-item --request-items file://~/environment/aws-modern-application-workshop/module-3/aws-cli/populate-dynamodb.json

    Şimdi tüm tablo içeriklerini taramak için aynı komutu yürütürseniz bu tabloya yüklenen nesneleri bulabilirsiniz:

    aws dynamodb scan --table-name MysfitsTable
  • A: Güncellenmiş Flask Hizmeti Kodunu Kopyalayın

    Şimdi yalnızca 5-10 dakika içerisinde kod değişikliklerinizin CodePipeline’da tüm CI/CD işlem hattına kadar gittiğini ve dağıtılmış Flask hizmetinizden Amazon ECS üzerinde çalışan AWS Fargate’den çıktığını göreceksiniz. Flask mikro hizmetiniz için yeni bir Python dosyaları kümesi dâhil ettik fakat artık statik JSON dosyasını okumak yerine DynamoDB’ye istek yapacak.

    İstek, boto3 denilen AWS Python SDK kullanılarak oluşturulur. Bu SDK, Python kodu aracılığıyla AWS hizmetleri ile iletişime geçmenin güçlü fakat basit bir yöntemidir. Bu atölyenin bir parçası olarak zaten yürüttüğünüz AWS API’leri ve CLI komutları ile büyük uyum içerisinde olan hizmet istemci tanımlarını ve işlevlerini kullanmanızı sağlar. boto3 kullanırken bu komutları çalıştıran Python koduna çevirmek basittir.

    Yeni dosyaları CodeCommit deposu dizininize kopyalamak için terminalde aşağıdaki komutu yürütün:

    cp ~/environment/aws-modern-application-workshop/module-3/app/service/* ~/environment/MythicalMysfitsService-Repository/service/
    B: Güncellenmiş Flask Hizmeti Kodunu Kopyalayın

    Artık bu kod değişikliklerini git komut satırı işlemcisini kullanarak CodeCommit’e kaydetmemiz gerekiyor.

    Yeni kod değişikliklerini kaydetmek ve CI/CD işlem hattınızı başlatmak içinaşağıdaki komutları yürütün:

    cd ~/environment/MythicalMysfitsService-Repository
    git add .
    git commit -m "Add new integration to DynamoDB."
    git push

    Şimdi yalnızca 5-10 dakika içerisinde kod değişikliklerinizin CodePipeline’da tüm CI/CD işlem hattına kadar gittiğini ve dağıtılmış Flask hizmetinizden Amazon ECS üzerinde çalışan AWS Fargate’den çıktığını göreceksiniz.

    Değişikliklerin işlem hattınızdan ilerlediğini görmek için AWS CodePipeline konsolunu keşfetmekten çekinmeyin.

  • Son olarak S3 klasörümüzde, sorgu dizelerini yanıtları filtrelemek için kullandığı yeni API işlevselliğinin kullanılabilmesi için yeni bir index.html sayfası yayınlamamız gerekmektedir. Yeni index.html dosyası şu dizinde bulunur: ~/environment/aws-modern-application-workshop/module-3/web/index.html.

    Bu dosyayı Cloud9 IDE’nizde açın ve Modül 2’deki gibi “REPLACE_ME” (BENİ_DEĞİŞTİR) olarak belirlenen dizeyi uygun NLB uç noktası ile değiştirin. /mysfits yolunu eklememeyi unutmayın.

    İhtiyacınız olursa /modül-2/ dizininde çoktan düzenlediğiniz dosyaya bakın. NLB’nizi işaret etmek için uç noktanızı değiştirdikten sonra aşağıdaki komutu yürüterek yeni index.html dosyasını yükleyin (Modül 1’de oluşturduğunuz klasör ismiyle değiştirerek:

    aws s3 cp --recursive ~/environment/aws-modern-application-workshop/module-3/web/ s3://your_bucket_name_here/

    DynamoDB tablonuzdan yüklenen yeni Mysfits popülasyonunu ve filtreleme işlevinin nasıl çalıştığını görmek için Mythical Mysfits web sitenizi tekrardan ziyaret edin!

    Bu modül 3’ü sonlandırmaktadır.

Sonraki, kullanıcı kaydını kurun.