Merhabalar, bu yazıda Trendyol Platform ekibi olarak geliştirmesini yaptığımız cross cluster service authorization projesinde Istio’nun sağladığı özellikleri kullanarak oluşturduğumuz yapının geliştirme sürecini anlatmaya çalışacağım.
Yazı içerisinde bahsedilecek konu başlıkları:
Servisler birbirleriyle haberleşirken, kendilerine gelen istekleri authorize edebilmeleri için, isteğin kimliğini (kimin tarafından gönderildiğini) bilmesi gerekiyor.
Bu noktada servisler için identification ihtiyacı ortaya çıkıyor.
Spiffe (Secure Production Identity Framework for Everyone) kendisini “dinamik ortamlarda yazılım sistemlerini güvenli bir şekilde tanımlamak için belirlenmiş bir takım open source standartlar” olarak tanıtıyor.
Bu noktada Istio da Spiffe…
Gelişen ve büyüyen bir microservice ekosistemine sahipseniz servisleriniz arasında güvenli iletişimi sağlamak gün geçtikçe zorlayıcı bir hal alabilir. Dışarıdan gelecek tehditlere karşı alınan önlemlerin yanısıra iç networkte de bazı güvenlik önlemleri bulunması gerekiyor. Örneğin container runtime ve container orchestration araçları kullanıyorsanız alınacak önlemlerin bunlardan bağımsız düşülmemesi gerekiyor.
E-ticaret domainini baz alacak olursak, bir kullanıcıya indirim tanımlanmasını sağlayan servisin herkes tarafından erişime açık olması istenilen bir durum olmayacaktır. Harici erişimlerin sınırlandırılması gereken servis sayısı arttıkça bu durumu yönetmek için global bir çözüm sağlama ihtiyacı ortaya çıkmış oldu.
Bu yazımızda da Trendyol Platform ekibi olarak cross-cluster service authorization sorunu için nasıl bir…
How to become a production ready developer?
In these days sticking to a single technology / programming language / tool is not enough for a developer. There are so many things to consider, especially in the microservice’s world.
This might make developers freak.
As a software developer in my daily job I am handling different stuffs like designin architecture, writing code, testing it, writing CI/CD pipelines, creating alerts according to logs or events, monitoring the app etc..
In this article I am aiming to enlighten the new developers or the ones who does not involved in multi-tech stack.
What is…
Selamlar, bu yazıda Trendyol Platform ekibi olarak geliştirdiğimiz bir uygulama olan Sidecache projesinden, geliştirme sürecinde edindiğimiz tecrübelerden ve bu projeye olan ihtiyaçtan bahsedeceğim.
Genel itibari ile anlatacaklarım aşağıdaki konu başlıkları etrafında olacaktır.
Platform ekibi olarak geliştirdiğimiz yeni service discovery altyapısı ile microserviceler arası haberleşmede harici load balancerları aradan çıkarttık.
Servisler arası load balancerların aradan çıkmasının avantajları olduğu gibi kaybettiğimiz bir kabiliyetimiz de oldu, bu…
As a software developer I feel happy when I contribute to community. It is an opportunity to improve your development skills and learning new things. It is both educative and entertaining process. There are so little things that satisfies as much as an accepted pull request :)
Becoming an open source contributor is a dream for some developers. If you are a new developer or never made a contribution before and want to become a contributor, in this post I will give several suggestions for you.
Well, let’s assume that you found a project on Github and you want to…
In this post I will explain how to configure RBAC in kubernetes. We will configure RBAC both with kubectl and yaml definitions.
In kubernetes there are several authorization mechanism like RBAC, ABAC.
With RBAC we can add constraints to access kubernetes resources. For example we can give permission to listing pods for specific namespace to a ServiceAccount and prevent it to delete any resource. We can do it for a specific namespace or cluster wide as well.
There are 3 important concept in RBAC.
Selamlar, bu yazımda sizlere geliştirme yaparken referans aldığım kitaplardan bazılarını paylaşacağım.
Yazılım geliştiriciler olarak yaptığımız iş çok derin ve dalgalı bir okyanusta batmayacak gemiler oluşturmak diyebilirim. Bu geminin aynı zamanda çok hızlı gidebilmesi, zorlu hava şartlarına dayanabilmesi, fazlaca yükü kaldırabilmesi hatta yeri geldiğinde uçabilmesi ise uğraştığımız challangelar arasında :)
Bizler için bilginin kaynağı olarak bu zamana kadar geliştirilmiş kaynak kodlar, başkalarının tecrübeleri ve kitaplar bulunuyor.
Hazır hepimiz evlere kapanmış geliştirmelerimizi sürdürüyorken, trafikte harcadığımız zamanı yeni bilgiler öğrenerek değerlendirmemiz için güzel bir fırsat.
Merhabalar bu yazımda sizlere docker client kullanarak golang uygulamalarımızda container ve image etkileşimlerini göstereceğim.
Geliştirdiğimiz uygulamaların infrastructural testlerini manuel efor harcamadan yapmak istediğimiz zaman, docker bu süreci otomatize etmemize olanak sağlıyor. Örneğin bir uygulamanın başarılı bir şekilde consul bağlantısı yapıp servis kaydını doğru oluşturabildiğini her seferinde manuel test etmek yerine bu süreci otomatize edebiliriz. Veya containerlar ile ilgili yaptığımız tekrarlayan işlemleri programatik hale getirebiliriz.
Aşağıda docker client kullanımı için örnek senaryoları ve kod implementasyon örneklerini paylaştım. Örneklerde error handling bulunmuyor. Production için kullanacaksanız kodunuzda hata durumlarına karşı aksiyon almayı unutmayın.
Docker API ile etkileşime geçmek için öncelikle clientımızı oluşturalım.
…
Selamlar, bu yazımda sizlere twitter üzerinden takip ettiğim ve henüz keşfetmemiş olanlarınızın da takip etmeyi isteyebileceği kişileri listeleyeceğim.
Yazılım alanında güncel konu başlıklarını takip etmek, diğer yazılımcıların ilgi alanlarını keşfetmek ve çeşitli bilgileri edinmek için sosyal platformlardan farklı insanları takip ediyorum.
Twitterı neredeyse sadece bu kişilerin tweetlerini okumak için kullanıyorum desem yeridir. İçerisinde ilgi alanlarım olan golang, kubernetes, java, open souce, linux, cncf, software architecture, DDD gibi konular ve bunun yanında bazı eğlenceli twitter hesapları da bulunuyor.
Sizlerinde gerek kafa dağıtmak için bakıp gülebileceğiniz gerekse bilgilenmek amacıyla takip etmeyi isteyebileceğiniz hesapları burada listeleyeceğim.
Geliştirdiğimiz uygulamaların düşük kaynak kullanması hepimizin istediği bir şeydir. Peki sizlere uygulamanın memory kullanımını sadece structların içerdiği fieldların yerlerini değiştirerek azaltabileceğimizi söyleseydim?
int32(4) + int16(2) + int16(2) = 8 byte
diyebilir miyiz?Evet diyebiliriz. Ve hayır, diyemeyiz.
Örnek olarak gösterdiğim iki structın memory üzerinde kapladıkları alan birbirinden farklıdır. İlk structın memory boyutu 12byte ikincisinin ise 8byte olacaktır.
Peki bu nasıl olabilir? Aynı gibi gözüken iki structtan bir tanesi neden daha fazla memory tüketiyor? Cevap memory alignment ve padding dediğimiz kavramlarda yatıyor.
Software Engineer @Trendyol & Software Development Enthusiast | Interested in Go&Java DDD, CQRS, Event Sourcing, Scalability. Open Source Contributor.