cote.js
ile

DAĞITIK VE HATAYA DAYANIKLI
MİKROSERVİS UYGULAMALARI

Armağan Amcalar

Özgür Yazılım ve Linux Günleri 2015, Istanbul
27 Mart 2015

Ben Kimim?

Armağan Amcalar
Kurucu ortak, Baş Yazılım Mimarı
Startup Kitchen

hobi projeleri

pedals.io
trax.io

Monolitik Uygulamalar
ve
Servis odaklı mimari ile mikroservisler

Monolitik Uygulamalar

Tek kod tabanı
Uygulamanın genelinde tek işlem (process)
Herhangi bir yerdeki bug bütün sistemi çökertebilir
İşe yaramayan, atıl sistem kaynakları tüketimi
Ölçeklendirmek için daha kuvvetli donanım ihtiyacı
İstek-cevap döngüsü bütün bir parça


Yönetmesi (görece) çok kolay

Mikroservisler

Her amaca uygun farklı kod tabanları
Her servis için ayrı bir işlem (process)
Bir servisteki hata sadece o servisi çökertir
Her servis ihtiyacı kadar kaynak tüketir
İyi ölçeklenir, minimum kaynak kullanır
Olay güdümlü mimariye olanak sağlar
İstek-cevap döngüsü parçalara bölünmüştür

 

Yönetmesi zor

Olay güdümlü mimari

Yayıncı-Abone (Pub-sub) deseni

Gözlemci (Observer) deseni

Yayıncı-Abone deseni

DOM olayları gibi uygulama genelinde oluşturulan özel olaylar sistem içerisinde dolaşır
Her servis belirli olayları dinler, duruma göre belirli işler yapar

Gözlemci deseni

İlk olay güdümlü tasarım deseni
Servisler belirli olayları değil bir objenin özelliklerinde oluşacak değişiklikleri gözlemler
Özelliklere bağımlı olması, metod adlarının sabit olma zorunluluğu kullanılabilirliğini azaltır

cote.js

Dağıtık, hataya dayanıklı uygulamalar oluşturabilmek için Startup Kitchen'da geliştirilen açık kaynaklı bir node.js çatısı

 

TUBITAK tarafından kısmen desteklendi

 

İlk günden beri üretim ortamında kullanılıyor

cote.js özellikleri

auto-discovery
mesh network, peer-to-peer iletişim
yayıncı-abone deseni
istek/cevap deseni
websocket ile önyüz ile haberleşme
farklı stratejilerle yük dağıtma imkanı
servis monitörü

örnek mimari

örnek yayıncı-abone uygulaması

var Publisher = require('cote').Publisher,
    publisher = new Publisher({
        name: 'publisher',
        broadcasts: ['update']
    }),
    workId = 0;

publisher.on('ready', function() {
    setInterval(function() {
        console.log('emitting', ++workId);
        publisher.publish('update', workId);
    }, 3000);
});
var Subscriber = require('cote').Subscriber,
    subscriber = new Subscriber({
        name: 'subscriber'
    });

subscriber.on('update', function(message) {
    console.log('update', message);
});

ufak demo

Çalıştay konusu

E-Ticaret uygulaması

Önyüz

Yönetim paneli

Raporlar

Ödeme işlemcisi

Veritabanı birimi

kodlar github'da

teşekkürler

cote.js'ye katkı yapın

İletişimde kalalım!

Armağan Amcalar

armagan@amcalar.com
twitter: @aamcalar
github: dashersw
blog: arm.ag

Cote.js ile Dağıtık ve Hataya Dayanıklı Mikroservis Uygulamaları

By Armağan Amcalar

Cote.js ile Dağıtık ve Hataya Dayanıklı Mikroservis Uygulamaları

Cote.js dağıtık ve hataya dayanıklı uygulamalar geliştirmek için açık kaynaklı bir uygulama çatısıdır. Çeşitli iletişim desenleriyle yüksek başarımlı ve ölçeklenebilir mikroservis uygulamalarını kolayca yapmanıza olanak tanır.

  • 2,675