15 Eylül 2023 Cuma

After working on monolith applications long years in collection systems of a big telecommunication company I made a change and started working in catalog development team for a big e-commerce company which only used microservices architecture. The only thing that didn’t change was millions of data to process whether they were payments or products. It is a very well discussed and long going debate to choose Monoliths or Microservices in architectural decisions in software development so I won’t go into detailed comparison but rather give my personal experience about them.

In collection systems there were huge monolith applications where all had their own relational databases with single codebase and a modular architecture. All applications used tens of libraries as which were using in-memory function calls and all the components were tightly coupled. The communication between these huge applications were mostly Jax-ws and rarely queue. After understanding all the components of the application it was simple to develop and deploy. Best part in this applications you didn’t have to duplicate any data and the data was strongly consistent.

But it was difficult to maintain the codebase, also new features and refactoring could be cumbersome. A change made to a small part of the application, required the entire rebuild and deploy. If you needed to scale the application you needed to scale the entire application. And like in our case if the order of the data is very important (payment, cancel, payment case for same invoice) and you have a single queue then you may have a big bottleneck (This bottleneck then solved with Kafka). It was important to test (incuding regression) carefully and deploy the application at night with a downtime. So we could deploy mostly once in a week and it generally required one operation guy one developer and one QA. After the deployment the owner of the application and data was operation team. So development team was mostly working on projects rather than product in mindset.

When I started working for e-commerce company I encountered with different team structures based on product mindset. There are the development team and the product team. Product manager and development team owns generally a single product in full lifetime. Product manager draws product vision, decides new features and priorities; on the other hand development team developes features, ownes data, monitors services with tools and detailed logs. It’s important to be able to detect the failures quickly and restore services. So it is more fault tolerant. All products are divided into components as microservices. These services are generally responsible for single task and store their own data. So more fitting for agile development. It gives technology flexility according to needs. Our services are written mostly in Java, some Go adn NodeJS. Most of our data is kept in MongoDB but we use PostGre in one service. It is not always the case in our services but with right pipelines we should independently deploy these services. It was very interesting to see that our team can make 29 releases in a single month thanks to Microservices enabling easy Continuous Integration and Deployment. Last but not the least advantage, we can scale exactly the required component.

Unfortunaltely there are some downsides with microservices. Designing microservices can be complex. Data can be duplicated and sometimes need to be carried between services. Communication is either establied by REST services or queues. This causes operational overhead, network latency and data is eventually consistent. In our case we generally use NoSQL databases for services so we send data to Google BigQuery and create relational data from different microservices to be able to give reports.

I am sure everyone worked on both monoliths and microservices had encountered different advantages and disadvantages of both systems. Here in this article I wanted to share my personal experience. Lastly I can advice that choice between monolithic and microservices architecture should align with specific project requirements and organizational goals. Al unique circumstances should be carefully evaluated before making a decision.

23 Nisan 2023 Pazar

Gılgamış’tan Liderlik Tüyoları

Bundan 5000 yıl önce yaşamış Akad kralı Gılgamış’ın hikayesi kil tabletlere çivi yazısı ile yazılarak günümüze kadar gelmiş. Tabletlerin bire bir çevrildiği kitabı (Maden) ve çeşitli kaynaklardan toparlanıp eksik kısımların kurgulandığı bir kitabı (Braem) peşpeşe okuyunca liderlerin özelliklerinin aslında binlerce yıldır pek de değişmediğini farkettim. Bu özellikleri destandan örneklerle not etmek istedim. 

Bu lider özelliklerinin ilki vizyon sahibi olma, ortak hedefler koyma ve yönlendirmektir. Gılgamış’ın da ülkesini dönemin en güçlü ülkesi yapmak gibi bir vizyonu vardı. Bunun için ülkesini düşmanlara karşı korumak amacıyla yüksek bir duvar ile çevreleyerek güvenli bir yer haline getirmek ve tarımı su yolları ile artırarak zenginleşme hedeflerini ortaya koydu ve hedefe topluluğunu yönlendirdi. Bu sebeple taş ustaları ve zanaatkarları ülkesine toparladı. Bu vizyonu ve vizyonu halkın paylaşıp onu desteklemesi ile ortaya çıkan güçlü ve büyük surlar, hem Uruk’un dönemin en güçlü kentlerinden biri olmasını hem de kendisini dönemin en itibarlı kralı olarak anılmasını sağladı.
Bir diğer lider özelliği de cesur olmaktır. Cesareti ile nam salan bir lider olmak için Gılgamış en güçlü askerlerin bile korktuğu yılanı yakalayarak alt etti, sedir ormanının koruyucusu Humbaba’yı yok edip Sedir ağaçlarını ülkesine getirmek için arkadaşı Enkidu ile zorlu bir yolculuğa çıktı. Başarılı oldu ve ağaçları Fırat nehri üzerinden ülkesine getirdi. Yine Enkidu ile birlikte tanrıların gönderdiği Gök Boğası ile savaşıp öldürdü. 

Lider kimdir diye düşünüldüğünde öne plana çıkan bir diğer özellik ise ortak akıldır. Gılgamış binlerce yıl öncesini anlatan tabletlere göre döneminin iki farklı din cemaati olan İştar rahibeleri ve Anu rahipleri ile düzenli olarak bir araya gelmiş, onlara çeşitli konularda danışmıştır. Onların kehanetlerini, öngörülerini ve uyarılarını dikkat alarak kararlar almıştır. 

İkna kabiliyeti de liderlik üzerine konuşulduğunda dikkat çeken özellikler arasındadır. Gılgamış ikna kabiliyeti yüksek bir liderdir. Kiş kralı Akka, Uruk’u almak için şehrin kapısına askerleriyle dayandığında kazan kazan stratejisi kullanarak bu tehditi bertaraf etmişti. Şehrini yağmalamanın her iki halk içinde bir sürü ölü ve yaralıya neden olacağına dikkat çekmiş. Geçici bir kazanç sağlanması yerine kendi şehrinin su yollarını ve duvarlarını inşa eden taş ustalarını Kiş’e göndererek onları eğitebileceğini ve kalıcı bir şekilde refaha kavuşmalarını sağlayabileceğini anlattı. Zenginliğini paylaşabileceğini ve birlikte ticaret yapmalarının her iki ülkeyi geliştireceğini söyleyerek Kiş kralı Akka’nın işgale son vermesini sağladı. 

Bugünün popüler kavramı olan Algı yönetimi binlere yıl öncede başarılı bir lider olmak için önemli bir niteliktir. Gılgamış iyi bir algı yönetimi yaptığını Kiş kralı ile mücadele halindeyken ortaya koydu. Düşmanı Akka çok büyük bir ordu ile şehrin kapısındayken ve kendi askerleri içerde rahibe İluna tarafından zehirlenmiş, yarı baygın haldeyken düşmanı ile buluştu. İçerde güçlü ordusunun düşmanı bozguna uğratacak kapasitede olduğunu söyleyerek rakibinin algısını yönetti.
İyi bir lider olmak sürekli gelişime açık olmayı zorunlu kılıyor. Gılgamış sahip oldukları ile asla yetinmeyen ve hep daha fazlası için çabalayan bir lider profiline sahip. Hikayesi en son ölümsüzlüğü bulmak amacıyla uzun bir yolculuk ile son buluyor. Zorlu yolculuğun sonunda kutsal kitaplarda da yer bulan büyük tufandan kurtulmuş Ziusudra’dan ölümsüzlüğü deniz dibinde bir bitkide bulacağını öğrenmiş ve bitkiyi almayı başarmıştır. Ancak sonrasında bu bitkiyi uyuya kalınca bir yılana kaptırır. Ölümsüz olmasa da bu yolculuk onun bilgeliğine bilgelik katar. 

Bugün modern hayatta liderlik ile ilgili kaynaklarda ve eğitimlerde yukarıdaki başlıklar önemli yer tutuyor. Belki bugün VUCA (Değişken, belirsiz, karmaşık ve muğlak) bir dünya da liderlik daha fazla gündemde yer teşkil ediyor olabilir ancak o günün şartlarında da hayat daha az karmaşık değil. Her şey normal görünse de ertesi gün sel olmayacağı, kapıda bir düşman belirmeyeceği, ülkede isyan çıkmayacağı veya kuraklık gibi afetlerle karşılaşılmayacağı kesin değildi. Bu risklerde etkili ve iyi bir lidere ihtiyaç duyulduğunu gösteriyordu. Ne dersiniz? 

Kaynaklar: 
Gılgamış Destanı, Sait Maden. 
Uruk Aslanı Gılgameş, Harald Braem.

13 Haziran 2021 Pazar

Yazılım Sektörünün Yeni Mezunlardan Beklentileri

Işık Üniversitesi Bilgisayar/Yazılım Mühendisliği Bölümü Dış Danışma Kurulu davetlisi olarak çok değerli öğretim üyeleri ve iş insanları ile sektörün yeni mezunlardan beklentilerini konuştuk.

Çok yüksek sayıda başvuru arasından, farklarını ortaya koyacak deneyimlere sahip olmaları için, orada paylaştıklarımın bir özetinin, öğrencilerin işine yarayabileceğini düşündüm.

Bunları toparlarken insan kaynakları ekimizden de destek aldım. Pazarlama, finans gibi teknoloji dışındaki bölümler için adayın mezun olduğu okul çok önemli bir seçim kriteri iken, teknoloji ekipleri için aşağıdaki gibi çok farklı kriterler işin içine giriyor.

Adayın kendini geliştirmek için neler yaptığı çok önemli. Staj yapmış olması ve mümkünse yarı zamanlı çalışması gelişime ciddi katkı sağlıyor. “Okul dışında Udemy, Bilgeadam gibi eğitim merkezlerinden farklı eğitim ve sertifikalar aldın mı?”, “Okulda öğretilen yazılım dilleri dışında Kotlin vs. gibi dilleri deneyimledin mi?”, “Uygulama mağazalarında geliştirmiş olduğun bir uygulaman var mı?”, “Geleceği Yazanlar platformunda bir projen var mı?”, sorularına verecekleri cevaplar onları rakiplerinden ayrıştırabiliyor.

Özellikle yazılımcı olacaklar için Java ve veritabanı SQL bilgisi çok kıymetli. Yapay zeka, Blockchain, 5G gibi popüler teknolojileri takip etmeleri, Python, R vs. ile bazı basit veri analizi metodları kullanmaları onları bir adım öne çıkartıyor.

Çeşitli kamplara, organizasyonlara katılmış olmaları, çocuklara ve kadınlara eğitmenlik gibi sosyal projelerde görev almaları oldukça önemseniyor. Davranış becerileri, sosyal yetenekler, takım oyuncusu olunması, bugün ortak hedeflere koşan ve çevik çalışan ekipler için olmazsa olmazlar arasında.

Son olarak yeni mezunları çalışan olarak alan şirketler, onlara orta/uzun vadeli ciddi bir yatırım yaptıkları için adayın firmada çalışmaktaki motivasyonunu ve isteğini çok önemsiyorlar. Yazılım sektörünün yeni mezunlardan beklentileri çok fazla gibi görünse de aslında hem teknik hem sosyal olarak kendini sürekli geliştireceğinin ipuçlarını veren adayları tercih ediyorlar.

17 Mayıs 2021 Pazartesi

Konfor Alanından Çıkma

Shuswap Kabile Liderleri İş dünyasında kariyer adımlarında tavsiye edilen belli aralıklarla konfor alanını bırakıp gelişim için yeni görev, yetki, konu, takım veya iş değişikliğine gitmektir. Bugünlerde özellikle yurt dışına taşınan arkadaşlardan pek çok başarılı hikaye duysak da, bu pek çoğumuz için oldukça zordur. Bu yazıda yeni zorluklar ile gelen öğrenme ve yenilenme deneyimi ile ilgili geçmişten farklı kültürlerden birkaç liderlik deneyimini sizlerle paylaşmak istedim.

British Columbia bölgesindeki Shushwap yerli kabile liderleri zengin ve verimli topraklarda yer alan köylerindeki yaşamlarının bir süre sonra fazla tahmin edilebilir olduğunu ve yeni zorluklar gerektiğine kanaat getirirlermiş. Bu sebeple köylerini yaklaşık her 30 yılda bir bilmedikleri bir bölgeye taşırlarmış. Her taşınmada yeni av alanları, somonun bol olduğu yeni nehirler keşfedilirmiş. Böylece hayat yeniden değer kazanır ve herkes yenilenmiş hisseder.


Ise Naiku Tapınağı Bir diğer örnek Japonya’nın Ise bölgesindeki büyük tapınaktır. Yaklaşık 1500 yıl önce ilk kez özenle ve incelikle hazırlanmış braketlerle kolon ve kirişler oluşturularak yapılan tapınak, günümüze kadar yaklaşık her 20 yılda bir her yeni imparator başa geçtiğinde aynı bölgede yıkılarak yeniden inşa ediliyor. En son 2013 yılında 62. Kez inşa edilen tapınak her imparator ve halkı için saflığı garanti altına alıyor ve yeni hedefler ve kazanımlar anlamına geliyor.

Biz de bu örneklerdeki insanlar gibi artık kendimize ve ekiplerimize katacak yeni bir şey kalmadığında konfor alanını bırakabilmeli, yeni uygulama alanları yaratabilmeli, yeni sorumluluklar alabilmeli, bilmediğimiz zorluklarla gelen yeni çözümler ve keşifler ile yenilenmeliyiz.


Kaynak:
Akış: Mutluluk Bilimi, Mihaly Csikszentmihalyi  
https://en.vvikipedla.com/wiki/Ise_Grand_Shrine  

14 Ağustos 2020 Cuma

Gençlik Özelliklerini Korumak : Neoteni

Türkiye’nin önemli bir otomobil üreticisinde uzun yıllar genel müdürlük görevini de üstlenmiş değerli Yusuf Soner Hoca'dan liderlik konusunda aldığımız eğitimde, uzun yol motorculuğundan, dağcılıktan örnekler vermişti. Onun gibi pek çok lider hakkında yaş bağımsız fiziksel hobi ve faaliyetlere yatkınlık hikâyeleri okudum.

Bunu Bennis ve Thomas, “Neoteni” denen biyolojiden ödünç alınan bir terimle açıklıyor. Kelime anlamı: “Bir türün yetişkinlerinde görülen, gençlik özelliklerinin korunması”. Bunu yaşamlarımızda öğrenme ve özgelişme açlığı, yaşam merakı ve tutkusu olarak yorumlayabiliriz.

Neoteni değişen iş yaşamında hepimiz için gerekli özellik gibi görünüyor

Kaynak: HBR's 10 must reads Liderlik; Liderlik Potaları, Bennis, Thomas 

15 Temmuz 2017 Cumartesi

KANBAN'IN FAYDALARI

Turkcell ar-ge birimlerinde bir süredir çevik dönüşüm yaşıyoruz. Pek çok ekip gibi biz de Kanban çekme metodunu uyguluyoruz.

Japon üretim bantlarında ortaya çıkan bu kavram yazılım endüstrisinde ilk kez 2004 yılında  Microsoft'ta uygulanmış. Şimdi dünya ve Türkiye'de pek çok yazılım firması çevik metodolojiler ve Kanban kullanıyor.

Deneyimlerimizden yola çıkarak Kanban'ın en büyük faydaları olarak aşağıdakileri sıralayabiliriz:

  • Tüm yazılım geliştirme sürecini görselleştirmesi 
  • Aynı anda yapılan iş sayısını (WIP) kısıtlayarak kapasite kadar işin çekilmesi,
  • Ekip için yakın koordinasyon, 
  • Sürecin ölçülmesi ve raporlar sonucu iyileştirme alanlarının ortaya çıkması 
  • Sürecin şeffaflığı ve ekibin kendi kendini yönetmesi  
Kaynak: Kanban, David J. Anderson.  

28 Şubat 2016 Pazar

İNSANLARLA ETKİLEŞİMDE EN DOĞRU YAKLAŞIM NEDİR?


Her birimiz çevremizde etkileştiğimiz insanlarla pek çok zaman farkında olmadan kişilerarası etkileşim paradigmalarından birini kullanılırız. Eğer bu paradigmaların farkına varırsak hangi ortam için hangi paradigma uygundur veya genel geçer bir tane var mıdır, bilip kullanabiliriz.

1)Kazan/Kazan karşılıklı yarar arayışında olan bir zihniyettir. Yaşamı rekabet değil, işbirliğine dayalı bir arena olarak görmektir. Ortadaki şeyin herkese yetecek kadar bol olduğu, bir kişinin başarısının diğerlerinin başarısızlığı pahasına elde edilmediği inancını temel alır.

2)Kazan/Kaybet klasik bir rekabete dayalı yarışma paradigmasıdır. Ben kazanırsam sen kaybedersin, başka bir deyişle, o kazanırsa ben kaybederim düşüncesi ile ifade edilir. Çoğumuz doğuştan itibaren bu paradigma ile programlanır.

3)Kaybet/Kazan paradigması zayıflıkları kabul edip, bundan keyif alma ve kullanma üzerine kuruludur. Beğenilmek ve kabul edilmek güçlü hissettirir. Bunu kullanan kişiler kendi duygu ve düşüncelerini açıklayacak cesareti bulamaz, duyguları içine atar bunun sonucu olarak psikolojik, ve fiziksel hastalıklara zemin hazırlarlar.

4)Kaybet/Kaybet düşmanca bir savaş felsefesidir. Hiç kimse bir şey kazanmıyorsa belki de kaybeden biri olmak o kadar da kötü değildir.

5)Kazan stratejisini kullanan insanlar başkalarının kaybetmesini istemez ama sadece kendi amaçlarına ulaşmak ve istediklerini elde etmeyi hedeflerler. Bir bakıma her şeye kendi çıkarları açısından bakarlar.

6)Kazan/Kazan ya da anlaşma yok yöntemi her iki tarafın işine yarayacak bir çözüm olmaması durumunda hiç anlaşma olmaması konusunda mutabık kalmaktır.

Bu paradigmalardan hangisinin iyi olduğu duruma bağlı olarak değişebilse de önemli olan gerçekliği doğru yorumlamak ve her durumda Kazan/Kaybet veya başka bir senaryoyu uygulamamaktır. Ama ailede gerçek mutluluğa veya işyerinde en büyük başarıya ulaşmak için insanlar arasında işbirliğine ihtiyaç olduğundan pek çok durum için Kazan/Kazan ya da Kazan/Kazan ya da anlaşma yok en uygun etkileşim paradigmalarıdır.


Kaynak: Etkili insanların yedi alışkanlığı, Stephen R.Covey. Varlık Yayınları