November 26, 2016 · DynamoDB AtomicCounter Twitter Analyzing RealTime

DynamoDB ile Uygulamamızı Nasıl State Tutar Hale Getirebiliriz ?

Elastic Beanstalk with DynamoDB

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

Şimdiye kadar hiç state tutmadık yani browser'ı refresh ettiğiniz zaman tüm veriler 0'lanarak sizin browser'ınızda tekrardan işlenmeye başlıyor. Yukarıdaki resimde kırmızı yuvarlağın içerisine alınmış fonksiyonaliteyi yapmaya çalışacağız. Yani sistemimize bağlanmış kişilerin toplam sayısını sistemimizde saklayarak uygulayı refresh etsekde bu verinin kaybolmamasını sağlatmaya çalışacağız.

DynamoDBLocal'i Bilgisayırımızda Çalıştırma

Bunun için AWS'nin DynamoDB NoSQL servisini kullanacağız. İlk öncelikle DynamoDBLocal indirerek çalışabiliyoruz. Bu bizim kendi bilgisayarımızdaki geliştirmelerimiz için oldukça büyük kolaylık sağlayacaktır. DynamoDBLocal indirebilirsiniz

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

DynamoDB Javascript Shell

Atomic Counter

DynamoDB'ye kendi Counter'ımızı yazabiliriz. Countlarını tutacağımız nesneler için bir tablo oluşturup bu tabloyu güncelleybiliriz. Yukarıdaki linkte bunun nasıl yapılacağı anlatılıyor ama biz hali hazırda yazılmış DynamoDB Atomic Counter kullanacağız. Bağımlılıklarımızı package.json ekleyelim.

npm install dynamodb-atomic-counter --save npm install underscore --save
npm install underscore.deferred --save

DynamoDB'de bir tane AtomicCounters isimli bir tablo oluşturuyoruz. Bunu hem local'deki hemde AWS üzerindeki DynamoDB üzerinde oluşturun. Bu Tablo bizim tüm Counterlarımızı tutacak.

AtomicCounter Tablonuzu oluşturun

Tablomuz oluştuğunu göre Counter'larımızı arttiracak Node.js kodumuzu yazabiliriz. Hem local/prod için 2 tane kod yazdım şimdilik.. Birisini duruma göre kapatıyorum. (Not: Çözülmesi gereken bir problem. Ortam Env alması lazım bu bilgiyi..) Her neyse Users isimli bir counter oluşturdum ve her connection olduğunda bu fonksiyonu çağırarak counter'ı arttıyorum.

AtomicCounter Tablonuzu oluşturun

Not: Tablonuz güncellenmiyorsa Loglara bakın AccessDeniedException alıyorsanız ilgili IAM altından EC2 Role DynamoDB erişim yetkilerini vermeniz gerekir.

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