November 28, 2016 · DynamoDB ReadCapacity WriteCapacity

DynamoDB Read/Write Capacity Unit Uygulama için Önemi

TwitStat

http://twitstat.awsturkiye.com

TwitStat Yazı Dizisi
  1. İlk yazımda RealTime Twitter bilgilerini Browser'da nasıl görselleştirebileceğimizi anlatmıştım

  2. İkinci yazımda uygulama ortamımızı EC2'ları direk kullanmak yerine Elastic Beanstalk kullanarak DevOps işlemlerini nasıl kendimizden bir katman daha soyutladığımızı anlatmıştım.

  3. Üçünçü yazımda uygulamaya Anlık Bağlı kişi sayısı ekranda gösterebilmek için connection ve disconnection sayısının nasıl hesaplandığı ve bunun Node.js Loglama ve Debugging nasıl yapılacağıni medium'daki yazımda anlatmıştım.

  4. Dördüncü yazımda uygulama güncellemelerini nasıl daha otomatik hale getirebiliriz ? Deployment sırasında manuel olarak yaptığımız işleri nasıl kısaltabiliriz EB CommandLine anlatmıştım

  5. Beşinci yazımda DynamoDB kullanarak sisteme bağlanan kullanıcıların sayısını tutmayı ve AtomicCounter Node.js nasıl yapılacağını anlattım.

Bu yazıda sadece Tweet Analiz etme işlemini sunucuya taşıyarak, analiz ettiğimiz tweet sonuçlarını sistemde saklamayı hedefleyeceğiz.

Process.Env.production==true kontrolu sayesinde Elastic Beanstalk ile Local ortamda uygulamayı çalıştırırken kod kapatma olayından kurtulduk.. Bu konunun nasıl yapıldığını ilerde daha detaylı olacak anlatacağım.

Ayrı ayrı counter update kodu yazmaktansa javascript'de string ile dinamik property değerlerini atama yaptık..

Code

Buraya kadar herşey çok güzel gitti. Fakat uygulamayı Elastic Beanstalk üzerine yüklediğimde arka planda çalıştırılan EC2 instance sayısı 4'e çıkmıştı. Buna rağmen ekranımda twitter güncellemeleri gözükmüyordu. Loglara baktığımda yukarıdaki AtomicCounter'ın DynamoDB yazamadığı ile ilgili uyarı gördüm aynı uyarıyı DynamoDB tablosundada gördüm. Özetle DB'niz yazma kapasitesi istediğiniz büyüklükte değil ise bu yük öndeki Web sunucunuzda birikiyor ve bu birikim için bir AutoScale tanımlamışsanız bu AutoScale devreye sokuyor tüketebildiği kadar EC2 kaynağı tüketmeye başlıyor..

DynamoDB Consumed Write Capacity Error

Kapasiteyi biraz arttırınca mevcut sorun giderilmiş oldu...

ABC

Bu sayede artık toplam kullanıcı sayısı ile birlikte tweet ve tweet analiz bilgilerinide sistemimizde saklamaya başladık.

Not:

Sorunlardan biriside Local Env ortam ayarları ile Prod ortam ayarlarını nasıl vereceğimiz..

Elastic BeansTalk -> Configuration -> Software Configuration altından Enviroment Properties girmeniz yeterli veya projeniz altında EnviromentVariables tanımlayıp EB'ye atmanız gerekir.

Environment

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket
Comments powered by Disqus