Google Assistant, Twitter ve Whatsapp benzeri on-premise bir projenin mimarisi nasıl olmalıdır?


Merhaba takipçilerim,

Big Data Blockchain projesi geliştirmek istiyorsunuz. Yapay zeka da olsun, WebRTC de olsun, Kubernetes te olsun, tüm güncel teknolojiler olsun istiyorsunuz. Nereden başlayacaksınız ne kullanacaksınız size anlatayım:

  1. Üyelik sistemi için Hyperledger Indy, NodeJS ve Rest/gRPC-Web kullanın. HyperLedger Indy üyelik sistemleri için geliştirilmiş bir blockchain çözümüdür ve üyelik verilerinin manipüle edilmesini engeller. Güvenlidir. Daha güvenli olması için Kuantum dirençli yapabilirsiniz (NIST bu yıl post-kuantum güvenlik algoritmalarını çıkarmayı hedefliyor).
  2. Logları kaydetmek için .NET 6 minimal api, gRPC/gRPC-Web ve Cassandra kullanın. Cassandra’yı blockchain veritabanı olarak kullanabiliyorsunuz. Insert işlemlerinde hızlı olan bir big data veritabanıdır.
  3. Chat mikroservisi için .NET 6 minimal api, gRPC/gRPC-Web ve HBase ya da Cassandra kullanın. HBase okuma işlemlerinde hızlı bir big data veritabanıdır. Cassandra ekleme işlemlerinde hızlı bir big data veritabanıdır. Tercih sizin.
  4. Toplantı mikroservisi .NET 6 minimal api, gRPC/gRPC-Web, SignalR, Redis ve HBase ya da Cassandra kullanın. Sunucu tarafında Periscope benzeri bir çözüm geliştirmek isterseniz, ya da Teams benzeri çok katılımcılı toplantı sistemi kurmak isterseniz Oven Media Engine ya da MediaSoup gibi yüksek performanslı WebRTC media sunucularını kullanabilirsiniz.
  5. Mikroblogging mikroservisi .NET 6 minimal api, gRPC/gRPC-Web ve HBase kullanın. Twitter HBase kullanmaktadır. Cassandra’yı denemiş fakat stratejik nedenlerden dolayı HBase’i tercih etmiştir.
  6. Yapay zeka mikroservisi için .NET 6 minimal api, gRPC/gRPC-Web, WebSocket kullanın. Ayrıca Azure Bot Servis, Bot Framework ve Dialogflow da kullanmanızı öneriyorum.
  7. Mobil Frontend’ler Flutter kullanın, Flutter en hızlı çözümü geliştirmenizi sağlar, gRPC ve WebRTC destekler. Oven Media Engine WebRTC sunucusu kullanacaksınız Flutter’da hazır player desteği olmadığı için sorun yaşabilirsiniz, aman dikkat.
  8. Web Frontend’ler React ya da Angular kullanın. React tarayıcıda hızlı çalışsa da kurumsal projelerde Angular tercih edilmektedir. Web ikinci planda ve önemsizse Flutter da kullanabilirsiniz.

Tüm servisleri Pardus üzerinde Kubernetes podları olarak çalıştırın. Load Balancer ve API Gateway için Envoy ya da NGINX kullanabilirsiniz. Kubernetes networkünüzü kurmak için minimum 5 adet sunucuya ihtiyacınız olacak. Tüm bu sistemi tek sunucuda çalıştırabilir miyiz henüz ben de bilmiyorum.

CI/CD sistemi kurun. Bunu Jenkins ile yapabilirsiniz. GitHub repolarınıza commit geldiğinde çekip build edip docker image’lerini ve podları güncelleyin.

Kubernetes networkünü güvenli hale getirmek için Istio service mesh kullanın.

.NET 6 backendlerini n-Tiered yapmalısınız. Katmanlarınız şöyle olabilir:
1. Minimal API
2. Service
3. Data (Repository’ler ve Generic-Repository’ler kullanın)
4. Model
5. Infrastructure
6. Test

Angular/React ve Flutter projelerinizde Unit Test ve E2E testleriniz olmalıdır. Testleriniz olmazsa bug karmaşasına düşebilirsiniz, ve projede değişiklik yapmak zamanla çok zorlaşır.

Mutlu kodlamalar 🙂

Kubernetes üzerine kurumsal BlockChain ağı nasıl kurulur?


Merhaba takipçilerim,

Microsoft Bot Framework ve Google Dialogflow ile yapay zekamızı hazırladık. Big Data veritabanı olarak HBase’in diğerlerinden daha hızlı olduğunu ve petabytelarca veriyi yönetebildiğini anladık ve bundan dolayı Big Data projelerimizde Apache HBase kullanmaya karar verdik.

Cassandra her ne kadar bir başka big data veritabanı olsa da okuma performansı yeterli değil. MongoDB ise yüksek sayıda transaction’lara uygun değil, o yüzden HBase en başarılı Big Data veritabanı olarak ön plana çıkmaktadır. Nitekim Salesforce, Twitter gibi kuruluşlar da HBase clusterını kullanmaktadır.

HBase’in CData .NET 6.0 driver’ı mevcuttur.

Uygulamamıza bir de Blockchain ağı eklemek istedik. Böylece üyelik sistemini HBase’de değil de, kurumsal Blockchain ağında ERC 725 standardında bir smart contract hazırlayarak ve Angular Web3 kütüphanesiyle konuşturarak bir DApp uygulama hazırlamak istedim.

2 gündür bu konuyla ilgili araştırma ve denemeler yapmaktayım. Öncelikle .NET ile Blockchain geliştirimi yapmak istiyorsanız: Geth, OpenEthereum, Neo (Çin’in Ethereum’u), Quorum ve Besu (IBM’in çözümü) gibi Blockchain sistemlerini kullanabiliyorsunuz. Geth ve OpenEthereum public ethereum ağı üzerinde çalışma yapmamızı sağlıyor. Ve public ethereum ağında uygulama yapmak ücretsiz değil.

Hem ücretsiz bir çözüm olması, hem de transaction’ların gizli kalması için private blockchain ağı kurmaya karar verdim. Private blockchain hem daha ekonomik hem de daha yüksek performanslı. HyperLedger Fabric, IBM’in kendi geliştirdiği private blockchain sistemidir. Fakat Ethereum blockchain çözümlerinin en kalitelilerin ve en başarılılarından biridir.

Nethereum ile private blockchain ağı kurmak isterseniz ya Quorum ya da Hyperledger Besu kullanmanız gerekir. Araştırmalarım sonucunda en iyisinin Java ile geliştirilmiş olan Hyperledger Besu olduğunu gördüm.

Hyperledger Besu ile hem public Ethereum ağında geliştirim yapabiliyorsunuz hem de private Ethereum ağı kurabiliyorsunuz. Performanslı ve güvenli olduğu için İBFT 2.0 PoA algoritmasını tercih ettim.

6 çekirdekli işlemcisi 12 GB RAM’i 50 GB diski bulunan Pardus sanal makina üzerine Hyperledger BESU’yu İBFT 2.0 PoA algoritmasıyla bir kaç denemeden sonra başarıyla kurdum. Pod’lar Statefulset’ler, Service ve Deployment’lar running durumuna geçti. Kurulum için adres: https://github.com/ConsenSys/quorum-kubernetes

Kurulum için GitHub’daki Playground klasöründeki Quorum-Besu İBFT 2.0 klasörü altındaki ./deploy.sh komutunu çalıştırmanız yeterli.

Mutlu kodlamalar 🙂