1. Mikroservis(kısaca servis) mimarisi kurmak isterken nelere ihtiyaç var ve hangi kütüphaneler gerekiyor diye bir süredir araştırıyorum. Kısa vadede kendim kurmam gerekmeyecek belki ama büyük resmi öğrenmek istiyorum. Bununla ilgili eğitimlerden şu kütüphanelere denk geldim.
2. Bu kütüphanelerin çok az bir kısmını kullandım ve büyük kısmını ise hiç kullanmadım. Ben Java dünyası açısından inceledim ama bir kısmı .Net dünyasında da kullanılıyordur. Kulak dolgunluğu olsun babında gördüklerimi buraya yazmaya çalışacağım.
3. Bu kadar kütüphaneyi gördükten sonra, Notepad'i açıp jQuery yazdığımız günler aslında çok mutluymuşuz, onu anladım.
4. En başta kodlarımızı tuttuğumuz Source Control sistemi olarak Git, Subversion ve Mercurial'den bahsedebiliriz.
5. Verilerimizi saklamak için ise Relational Database olarak PostgreSQL, Oracle, Microsoft SQL Server, MySQL araçlarını sayabiliriz. NoSQL olarak ise document database(MongoDB, Apache CouchDB), graph database(Neo4j, RedisGraph) gibi sistemlere ihtiyaç olacaktır.
6.a. Farklı modüller arasındaki verileri senkronize etme işi içinse Akka, Apache Kafka, Rabbit MQ kütüphaneleri kullanılabilir. Microservices mimarisinde verilerin anlık tutarlı(immediately consistent) olmasına değil nihai tutarlı(eventual consistency) olmasına bakılır.
6.b. Debezium ile de veri değişikliğini yakalayan ve event fırlatarak bunu yöneten bir araç gerekebilir.
7. Remote Method Invocation yani uzaktaki bir servisi çağırmak için Rest(genelde tercih edilen), SOAP veya gRPC'den biri seçilebilir. Ya da veri alış-verişini mesajlaşma sistemleri ile yapmak için Broker(Kafka, Rabbit MQ) veya Channel yapısı kullanmak gerekir.
8. Veri alış-verişi yaparken aktarılan mesaj formatı için insanın okuyup anlayabileceği(XML, JSON, YAML) bir format veya binary(gRPC) format seçilebilir.
9. API'ler ve aradaki contracts(sözleşmeler) nedir diye göstermek için ise WSDL, Swagger, IDL kullanılabilir.
10. Servislerin ayağa kalkarken registry(kayıt) işlemleri için ise Eureka, Zookeper, Consul gerekecektir.
11. Servislerin ayakta olmamasına karşı bir proxy görevi görmek üzere Circuit Breaker gerekir. Bu araç ile servis çağırma sırasında Timeout yönetme veya belirli sayıda tekrar deneme işlerini halleder. Hystrix, JRugged bunun örnekleridir.
12. İstemciler için tek bir girdi noktası oluşturmak için API Gateway lazım olacaktır. Bu sayede authentication, authorization veya servis registry gibi işlerimleri tek bir yerden yapmış olacağız. Zuul, Netty, Finagle ile bu işlemleri sağlayabiliriz.
13. Bir kere servislere login olduktan sonra farklı servislere giderken tekrar tekrar login olmamak adına Kerberos, OpenID, OAuth 2.0 veya SAML kullanılabilir.
14. Kullanıcı hakkındaki bilgileri güvenli şekilde tutmak ve diğer servislere aktarmak için access token'ları kullanırız. JSON Web Token veya cookie'ler bu iş için kullanılabilir.
15. Servisler üzerindeki yükü dengeli dağıtmak için load-balancing işlemi yapmak gerekiyor. Load balancer araçları için Ribbon veya Meraki kullanılabilir.
16. Sistemi monitor etme ve gerektiği yerde müdahale etme ihtiyacı için Kibana, Grafana, Splunk gerekecektir.
17. Sistemin ürettiği logları bir yerde toplayıp oradan kontrol etmek gerekebilir. Bunun için LogStash, Splunk, PaperTrail tarzı araçlar gerekecektir.
18. Servisler hakkında istatistikleri toplayarak sistemin bu metriklerini merkezi bir yerde saklamak gerekir. Ki bu sayede raporlama veya alert verme gibi durumlar olabilir. Bunun için DropWizard, Spring Actuator, Prometheus gibi araçlar gerekecektir.
19. Dağıtık servisler arasındaki akışı izlemek için Correlation Id'lerden yararlanırız. Bunun için Dapper, HTrace, Zipkin gibi tracing sistemlerden faydalanabiliriz.
20. Kodumuzu ilgili ortamlara deploy etmek için container management sistemlerinden faydalanırız. Docker(defacto olan), Rocker container sistemlerinin örneklerinden.
21. Çok sayıda Container'ler arasında orchestrator olarak görev almak üzere Kubernetes, Mesos, Docker Swarm, Marathon kullanmak gerekecektir.
22. Tüm bu işlemleri sürekli olarak tekrar yapabilmeyi otomatikleştirmek için Continuous Delivery araçlarına ihtiyaç duyarız. Bunun örnekleri olarak ise Jenkins, Asgard, Aminator araçlarını sayabiliriz.
23. Mikroservisleri değiştirmek konfigürasyonları dışardan yönetmek gerekecektir. Archaius, Consul, Decider bu iş için gerekecek araçlardandır.
24. Gittikçe karmaşıklaşan mikroservis dünyasında gördüğüm araçlar/kütüphaneler şimdilik bunlar. Eksik olan veya gözden kaçanları siz de yazarsanız diğer arkadaşlar için de güzel bir liste ortaya çıkarmış oluruz. Teşekkürler.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with İbrahim Kürce

İbrahim Kürce Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!

:(