• Sonuç bulunamadı

PHP ve NATS ile Mikroservis Mesajlaşma Sistemi

N/A
N/A
Protected

Academic year: 2022

Share "PHP ve NATS ile Mikroservis Mesajlaşma Sistemi"

Copied!
28
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

1

PHP ve NATS ile


Mikroservis Mesajlaşma Sistemi

Erhan Yakut / @yakuter

Netsparker İstanbul PHPKonf / 4 Mayıs2019

(2)

Sunum Hakkında

2

Neler konuşacağız?

1. Sunum Hakkında
 2. Biyografi


3. İletişimsiz olmaz


4. Özetle Mikroservis


5. Mikroservis iletişim kanalı


6. NATS nedir ve nerelerde kullanılır?


7. NATS’ın özellikleri nelerdir?


8. NATS ve diğer kuyruklama farkları?


9. Demo


10. Son sözler

(3)

3

Programlama Dilleri

Aktif olarak Go ile geliştirme yapmakla birlikte uzun yıllar PHP backend

developer olarak proje geliştirdim.

İletişim Bilgisi

Eposta : erhan.yakut@icsdefense.net
 Twitter: @yakuter


Web. : https://www.yakuter.com

İş / Görev

Ankara’da bulunan ve EKS güvenliği konusunda ürün geliştiren ICS Defense firmasında takım lideri çalışmaktayım.

Tecrübe/Bilgi

Yaklaşık 10+ yıldır yazılım geliştirme ile ilgilenmekte olup, şu anda network ve paket analizi ile anomali tespiti üzerine

çalışmaktayım.

Erhan YAKUT (yakuter)

Biyografi

Ben Kimim?

(4)

İletişimsiz Olmaz!

4

İstemciler konuşa konuşa…

Kaynak Mesaj Kanal

Alıcı

Geri Besleme

İletişim, bilginin simgeler kullanılarak iletilmesidir!

(5)

Özetle Mikroservis

5

Nedir bu herkesin bahsettiği mikroservis konusu?

(6)

Mikroservis İletişim Kanalı

6

Kanalsız iletişim, yıldızsız gökyüzü gibidir

(7)

NATS Nedir?

7

NATS’a giriş

NATS, bulut uyumlu (cloud native) uygulamalar için geliştirilmiş açık kaynak, basit, güvenli ve yüksek performanslı mesajlaşma sistemidir.

NATS hakkında bilgiler:

Derek Collison tarafından özellikle CloudFoundry için 2010 yılında geliştirilmiştir.

Önceleri Ruby ile geliştirilmekte olan araç 2012 yılından baştan Go ile yazılmıştır.

Production ortamlarında yaklaşık 8 yıldır aktif olarak kullanılmaktadır.

NATS Server v1.0.0, 2017’de stabil yapısına kavuşmuştur.

15 Mart 2018’de Cloud Native Computing Foundation tarafında kuluçka proje olarak kabul edilmiştir. Halen Synadia isimli açık kaynak ekosistemi tarafından geliştirilmektedir.

Apcera, Baidu, Siemens, VMware, HTC, Samsung, General Electric (GE)…

Önemli bağlantılar:

NATS resmi web sitesi https://nats.io

Github Organizasyon sayfası: https//github.com/nats-io

Anahtar Kelimeler NATS Cloud Native

CNCF
 Derek Collison
 CloudFoundry

Ruby
 Go Microservice Messaging Event Bus Message Broker

Synadia

(8)

NATS Bileşenleri

NATS temel olarak iki bileşenden oluşmaktadır, Server ve Client.

NATS Server: Go programlama dili ile yazılmış bir sunucu olup, sunucuya yük bindirmeyen (lightweight) yapısı ile iletişim kanalının temelini oluşturur.

NATS Client: NATS Server’a bağlanarak veri gönder ve alma işlemini yapan birimlerdir. NATS’ın hemen hemen

bütün programlama dilleri için yazılmış istemci (client) kütüphaneleri bulunmaktadır. Go, Node, Ruby, Java, C, C# ve NGINX C kütüphaneleri bizzat NATS takımı tarafından geliştirilmektedir.

Anahtar Kelimeler NATS Server NATS Streaming NATS Client

8

(9)

NATS Server Çeşitleri

2 çeşit NATS Server vardır.

NATS Server / gnatsd


https://github.com/nats-io/gnatsd

NATS Streaming / nats-streaming-server


https://github.com/nats-io/nats-streaming-server

Anahtar Kelimeler NATS Server NATS Streaming

9

(10)

NATS İstemci (Client) Kütüphaneleri

10

Anahtar Kelimeler NATS Server NATS Streaming NATS Client NATS Server

NATS Tarafından Desteklenen


C/C#/Elixir/Go/Java/NGINX/Node.js/Pure Ruby/Python Asyncio/Python Tornado/Ruby/TypeScript

Topluluk Tarafından Desteklenen


.NET/Arduino/Clojure/Elixir/Elm/Erlang/Haskell/Java Android/Lua/MicroPython/PHP/Perl/Python/

Python Twisted/Qt5 C++/Rust/Scala/Spring API/Swift

NATS Streaming

NATS Tarafından Desteklenen


C/C#/Go/Java/Node.js/Python Asyncio/Ruby Topluluk Tarafından Desteklenen


Arduino/Asyncio/PHP/Perl

(11)

NATS Özellikleri

11

Anahtar Kelimeler Pub/Sub Publisher/Subscriber Request/Reply Queueing

NATS Pub/Sub Çalışır

NATS hakkında ilk bilinmesi gereken şey Publisher/Subscriber metoduna göre

çalıştığıdır. Bu yöntemde kanala bir mesaja gönderen, bir de bu kanala abone olup mesaj bekleyen istemciler bulunur. Ayrıca Request/Reply ve Queueing destekler.

Publisher/Subscriber

Request/Reply

Queueing

(12)

NATS Özellikleri

12

Anahtar Kelimeler NATS Benchmark
 Brokered Throughput Brokerless Throughput ActiveMQ


Kafka
 Kestrel ruby-nats NSQ RabbitMQ Redis

NATS Hızlıdır!

NATS gerçekten hızlıdır ve bu diğer rakiplerine(!) istinaden basit bir hız farkı değildir!

(13)

NATS Özellikleri

13

Anahtar Kelimeler Plain text protocol Message broker Event bus CONNECT, PUB, SUB, UNSUB INFO, MSG, -ERR, +OK

PING, PONG

NATS Basittir!

NATS, toplamda 10 basit komutu olan metin (text) tabanlı bir iletişim kanalıdır.

Client -> Server : CONNECT | PUB | SUB | UNSUB Client <- Server : INFO | MSG | -ERR | +OK

Client <->Server : PING | PONG

➜ ~ telnet 0.0.0.0 4222 Trying 0.0.0.0...

Connected to 0.0.0.0.

INFO {"server_id":"gBUO4mdK197nIvQAV92Ndc","version":"1.4.1",


"proto":1,"go":"go1.12.4","host":"0.0.0.0","port":4222,


“max_payload":1048576,"client_id":11}

PING PONG

sub konu 10 +OK

MSG konu 10 5 hello

➜ ~ telnet 0.0.0.0 4222 Trying 0.0.0.0...

Connected to 0.0.0.0.

INFO {"server_id":"gBUO4mdK197nIvQAV92Ndc","version":"1.4.1",


"proto":1,"go":"go1.12.4","host":"0.0.0.0","port":4222,


“max_payload":1048576,"client_id":12}

pub konu 5 hello

+OK

-ERR 'Stale Connection'

Connection closed by foreign host.

(14)

NATS Özellikleri

14

Anahtar Kelimeler Provide dial tone Auto-pruning Fire and forget

NATS Esnek ve Dayanıklıdır!

- NATS, her zaman mesaj iletmeye müsaittir (çevir sesi - dial tone sağlar)

- Yavaş mesaj tüketenleri sistemden çıkarma (disconnect) yeteneği vardır. (Auto- pruning)

- Mesajın bozulmadan karşı tarafa iletilmesini garanti eder.

- Fire and forget (unut gitsin :) ) mesaj gönderimi yapar.

(15)

NATS Özellikleri

15

Anahtar Kelimeler Clustered High availability

NATS Kümelendirilebilir!

- NATS, kümelenmiş (clustered) şekilde yüksek kullanılabilir (high availability) yapıda çalışabilir.

NATS

İSTEMCİ


(Client) İSTEMCİ


(Client) İSTEMCİ


(Client) İSTEMCİ


(Client)

NATS NATS

(16)

NATS Özellikleri

16

Anahtar Kelimeler Clustered High availability

NATS Kümelendirilebilir!

- NATS, kümelenmiş (clustered) şekilde yüksek kullanılabilir (high availability) yapıda çalışabilir.

NATS

İSTEMCİ


(Client) İSTEMCİ


(Client) İSTEMCİ


(Client) İSTEMCİ


(Client)

NATS NATS

(17)

NATS Özellikleri

17

Anahtar Kelimeler Clustered High availability

Çoklu Servis Kalitesi (Multi QoS)

- QoS, ağdaki paket kaybı (packet loss), gecikme (latency) ve bozulma/kayma (jitter) gibi kusurları azaltmak için kullanılan teknolojileri ifade eder.

- NATS üzerinde servis kalitesini artırmak için iki ulaştırma (delivery) şekli desteklenir.

At-most-once delivery: NATS Server’ın uyguladığı bu yöntemde mesaj ulaştırılması için zorlama yoktur. Yani mesaj gönderildiğinde istemci (client) bağlı değilse mesajı alamaz.

At-least-once delivery: NATS Streaming’in uyguladığı bu yöntemde aşağıdaki şartlar sağlanana kadar mesaj sunucu muhafaza edilir ve istemcilere iletilmeye çalışılır.

- Bir abone mesajı aldığını onaylar - Mesajın süresi (timeout) dolar

- Bellek (storage) yorulur

(18)

NATS ve PHP

18

Anahtar Kelimeler NATS PHP Client

NATS ile iletişim kanalı oluşturduğumuz mikroservislerimizde gönül rahatlığı ile PHP

kullanabiliriz çünkü hazır PHP istemci kütüphaneleri sayesinde rahatlıkla mesaj alınıp

gönderilebilmektedir.

(19)

19

S W O T

Weakness

Entrepreneurial activities differ substantially

depending on the type

Threads

Entrepreneurial activities differ substantially

depending on the type

Strength

Entrepreneurial activities differ substantially depending on the type

Opportunities

Entrepreneurial activities differ substantially depending on the type

Resources

Company

S.W.O.T. Global Analysis

Write here your great subtitle

(20)

20

NATS

İSTEMCİ
 (Client)

S.W.O.T. Global Analysis

Write here your great subtitle

NATS NATS

İSTEMCİ
 (Client)

İSTEMCİ
 (Client)

İSTEMCİ


(Client)

(21)

21

Element
 One

Element
 Two

Element
 Three

Element One

Entrepreneurial activities differ substantially depending on the

Element Two

Entrepreneurial activities differ substantially depending on the

Element Three

Entrepreneurial activities differ substantially depending on the

Three Elements Analysis

Write here your great subtitle

(22)

22

POPULATION

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam tincidunt ante nec sem congue convallis.

81%

White People Hispanics

Black People Asian

Others

United States Infographic Map

Write here your great subtitle

(23)

23

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mauris lorem, vestibulum ac rutrum id, suscipit in dui. Donec vitae dapibus tellus. Vestibulum nunc sem, finibus quis elementum ac, varius ac tellus. Nam faucibus faucibus venenatis. Donec nec arcu velit. Fusce viverra, dui vitae euismod mollis, tortor magna egestas nunc, et suscipit nunc ex quis nunc. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer eget auctor nunc. Maecenas tincidunt eleifend consequat. Nulla efficitur urna et massa dapibus maximus. Maecenas sit amet risus pretium, sagittis dui ut, consectetur purus.

Phasellus auctor consectetur arcu a consequat. Vestibulum congue sed orci efficitur finibus. Integer malesuada finibus ligula, aliquet lobortis nulla commodo vel.

Nulla varius vehicula augue, id placerat nisi luctus a. Suspendisse magna tellus, imperdiet id turpis in, gravida fermentum sem.

Integer commodo pharetra dui a congue. Vivamus in commodo dui. Nunc fringilla ex sapien, et laoreet erat pretium ultricies. In hac habitasse platea dictumst. Donec lacinia efficitur dictum.

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam odio nulla, tempor a eleifend ut, dignissim nec tellus. Donec porttitor porttitor ante.

Full Width Text Sample

Write here your great subtitle

(24)

24

İletişim Söz konusu olunca aşağıdaki soruları kendimize sormalıyız? (Rowntree, 2000) 1. Neden iletişim kurmaya ihtiyacım var?

2. Kiminle/kimlerle iletişim içinde olmalıyım.

3. Hangi tür iletişim biçimini kullanmam daha uygun olur?

4. İletişime geçmemi engelleyen faktörler nelerdir?

5. İletişim kurma becerimi nasıl geliştirebilirim?

Full Width Text Sample

Write here your great subtitle

(25)

25

Basic Plan Professional Popular Xtreme Ultimate

First Service First Service First Service First Service First Service

- Second Service Second Service Second Service Second Service

- - Third Service Third Service Third Service

- - - Fourth Service Fourth Service

- - - - Fifth Service

$49 $99 $149 $199 $249

Pricing Table Sample

Write here your great subtitle

(26)

26

Lorem ipsum dolor sit amet, consectetur

Feature Name

Lorem ipsum dolor sit amet, consectetur

Feature Name

Feature Name

Lorem ipsum dolor sit amet, consectetur

Feature Name

Lorem ipsum dolor sit amet, consectetur

Feature Name

Lorem ipsum dolor sit amet, consectetur

Feature Name

Lorem ipsum dolor sit amet, consectetur

Genre Analytics

Write here your great subtitle

(27)

27

50%

70%

50%

90%

70%

Web Design

Lorem ipsum dolor sit amet, consectetur

Multimedia

Lorem ipsum dolor sit amet, consectetur

Graphic Design

Lorem ipsum dolor sit amet, consectetur

Photography

Lorem ipsum dolor sit amet, consectetur

Investments

Lorem ipsum dolor sit amet, consectetur

Our Company Around the World

Write here your great subtitle

(28)

28

Laptop = 25% Tablet 35% Phone

40%

Lorem ipsum dolor sit amet, consectetur

Feature Name

Lorem ipsum dolor sit amet, consectetur

Feature Name

Lorem ipsum dolor sit amet, consectetur

Feature Name

Lorem ipsum dolor sit amet, consectetur

Feature Name

Lorem ipsum dolor sit amet, consectetur

Feature Name

Lorem ipsum dolor sit amet, consectetur

Feature Name

Presence in Mobile Devies

Write here your great subtitle

Referanslar

Benzer Belgeler

Predisposing factors include exposure to ultraviolet radiation (UV) and inorganic arsenic, trauma, chronic wounds, immune dysfunction and plaques, such as sebaceous nevus.While

[r]

The aim of the article is to analyze the approaches to the concept of state by three important scholars of libertarianism in the 20th century comparatively. Thus, the

In this study, the changes and transformations in Turkish foreign policy in general have been mentioned, and evaluations have been made within the framework of

Sevim (2017) çalışmasında, Güney Marmara Bölgesi’nde faaliyet gösteren, çalışan sayısı 5 ve üzeri olan işletmelerin, lojistik faaliyetler ve maliyetleri

Bir diğer örnekte (Öksüz, 2015), göç etme eğiliminde olan halkın göç etme nedenleri aktarılarak söz konusu uygulamalara değinilir. Bu çalışmada, Batı

Bu da onu gösteriyor ki, sadece Azerbaycan halk örneklerinde değil, digger Türk folklorunda da Adem peygamber bir imge olarak kullanılmaktadır..

Başlangıçta hanımlar arasında düzenlenen günleri baz alarak başlayan, faizsiz bir finans sistemi olarak günümüzde görülen, elbirliği sistemi (ki bundan