
Konuklar: Tahsin Yüksel, Mert Elibol, Ekrem Öztürk
71. bölümümüzde konuğumuz Tardis ekibi oldu. Ekip yapısını, projelerini, teknoloji stack seçimlerini ve çok daha fazlasını konuştuk!
Trendyol Talks'da Trendyol'daki kültürümüzü, kültürümüzden beslenen iş yapış biçimlerimizi ve ritüellerimizi konuşuyoruz. Trendyol Talks podcast kanalımızı takip etmeyi unutmayın!
Transkript
Selam ekip, ben Storefront Web Browsing ekibinden Cengiz.
Teknoloji ekiplerini tanıdığımız ve süreçler, teknolojiler gibi konuları konuştuğumuz Selam Ekip Podcast serisinin 71.
bölümündeyiz ve 71.
bölümde TARDIS ekibiyle beraberiz.
Bu ekibi tanıyıp, ekip yapısı kullanılan teknolojiler, pratikler gibi konuları konuşacağız.
Arkadaşlar hepiniz hoş geldiniz.
Hoş bulduk. Merhaba, hoş bulduk.
Şimdi bir Dr. Who...
seven bir insan olarak TARDIS diye bir ekiple beraber bölüm yapma kısmeti de bana düşmüş oldu.
O yüzden de ayrı mutluyum açıkçası.
Sizleri kısaca tanıyabilir miyiz arkadaşlar?
Tabii ben Tahsin.
Yaklaşık iki buçuk yıldır Trend Yoldayım.
Beken tarafında Discovery Domainlerinde görev alıyorum.
Ekrem'e bastım. Tabii ben Ekrem.
Ben de yaklaşık üç yıldır Dolap Bünyesi'ndeyim.
Dolapla başladım Trendyol maceramı.
İlk başta daha çok seller tarafındaki işlerle ilgilenen seller engagement takımındaydım.
Daha sonra bir reorganization şama değişikliği oldu içeride.
Ben de Discovery tarafına TARDIS ekibine geçmiş bulundum.
Ben de Mert Sanat'ım.
Merhabalar, ben de Mert.
Ben de iki buçuk yıldır Dolap ekibinde çalışıyorum.
Dolap da ikinci ekibim.
Daha önce Product ekibindeydim.
Şu an TARDIS ekibinde Search ve Product Domainlerine bakıyorum.
QA Engineer olarak çalışıyorum.
Benden de bu kadar. Süper.
Tekrar hoş geldiniz arkadaşlar.
Valla ben sizin ekibi baya merak ediyorum açıkçası.
Çünkü şu ana kadar gelen ekiplerin genellikle isimlerinden bir şeyler.
çıkarabiliyorduk işte. Örnek veriyorum Identity and Access Management'ın işte bir yetkilendirmeyle alakalı olduğu ya da işte Search Relevance ekibinin Search'la alakalı olduğu Collection Favorites'in yazar işte neyle
alakalı olduğu vs. Fakat direkt olarak özel isimli bir ekiple daha öncesinde işte Beholder'da yaşamıştık ama onları direkt Observability diye tanıtmıştık.
Kendilerini zaten öyle tanıtıyorlar.
Fakat direkt olarak özel isim olan bir ekiple sanırım uzun süredir yapmamıştık.
bir podcast. Şimdi sizin ben biraz ekipten bir şeyler sormak istiyorum.
Çalıştığınız domain tam olarak nedir?
Sizin ekip tam olarak ne yapıyor?
Ben dolaptan bir kısaca bahsedeyim.
Daha sonra da aslında ekibin neler yaptığından bahsedebilirim.
Dolabı tanıtacak olursak en geniş tanımıyla bir C2C platformu.
Kullanıcıların hem satıcı aynı zamanda alıcı olduğu bir C2C platformu.
platformu. Aslında kendi içinde küçük bir trend yol diyebiliriz.
Trend yolun bünyesinde satıcıların ikinci el ya da daha önce hiç kullanmadığı ürünleri yeni etiketli ürünlerini alıcılarla buluşturduğu bir platform.
Erkek, kadın, bebek, çocuk giyim gibi kategorileri elektronik ve ev yaşam gibi kategorilerde yaklaşık 30 milyon kadar satılabilir ürün bulunmakta şu anda.
Trendyol içerisinde de aynı zamanda bir channel diyebiliriz.
Trendyol appinden dolap uygulamasına direkt erişim sağlanabiliyor.
Trendyol'dan aldığımız ürünleri hızlı sat seçeneğiyle direkt dolapta satabiliyoruz.
Bizim de Tardis ekibi olarak dolap ekibinde aslında biz bayrağı hit ediyoruz ve product ve search domainine bakıyoruz.
Product bilgilerini aslında diğer ekiplerden toplayıp listingde gösteriyoruz.
En temelde bahsedeceklerim bunlar olabilir şu an.
Süper. Peki aslında takım olarak sizin hit ettiğiniz yer oldukça önemli ve sonuç olarak bu kadar önemli olan bir yerde büyük aslında challenge'lar da vardır
diye düşünüyorum. Sizin takım olarak en büyük challenge'ınız nedir peki?
Burada ben araya geleyim.
Domain olarak dolapta aslında çok...
Core domenilerde yer alıyoruz.
Search ve product data'ların toplanması, zenginleştirilmesi, indekslenmesinden başlayan hikaye.
Bunların son kullanıcılara ve internal servisler hizmet etmesine kadar devam eden bir süreci yönetmeye çalışıyoruz.
O yüzden sistemin kalbi diyebileceğimiz core uygulamalara sahibiz aslında.
Burası her zaman ulaşılabilir olmalı ve hızlı olmalı ki burayı kullanan farklı sonuçlar üretecek olan ekipler de var.
Onların da hizmeti aksamaması gerekiyor.
Sorumluluğumuz bu noktada kritik oluyor.
Daima ulaşılabilir ve performanslı hızlı olmak zorundayız.
Birçok ekiple dirsek temasımız var.
Geliştirmelerin neredeyse birçok geliştirmenin isterlerin ucu bu noktalara dokunuyor çünkü.
Search oldukça zaten kompleks bir domain.
Yazılan her bir karakterin önemli olduğu milyonlarca sonuç üzerinden.
en alakalı sonuçları bulup sıralama üzerine ve sürekli daha iyisini nasıl yapabilirsin gelişime açık olan noktaları olan bir alan aslında.
Bunları da etkilen birçok faktör var.
Data'nın kalitesinden kullanılan algoritmalara, uygulamanın performansından geliştirilen feature'lara kadar aslında sihirli bir dünya gibi.
Buradaki sonuçları da her zaman kestirmek zor oluyor genelde.
Aslında temelde en büyük iki challenge'larımızdan bir tanesi core domain olmamız.
İşte product ve search'u barındırmamız, diğer ekiplere hizmet vermemiz ve yüksek ulaşılabilir ve performanslı olmak durumundayız diyebiliriz sanki.
Vallahi aynı anda hem product'i hem search'u barındıran hiçbir ekip duymamıştım herhalde.
Yani gerçekten şu an şeyini, domen büyüklüğünü düşündüğüm zaman dehşete düştüğümü söyleyebilirim yani.
Oldukça büyük bir sorumluluk alanı bence ve çok iyi de handle ediyorsunuz gibi duruyor.
Zaten bunlardan bolca bahsederiz.
Gerçekten ilginç yani.
Biraz takım yapısından bahsedelim isterseniz.
Takım kimlerden oluşuyor?
Kaç tane backendçi, frontendçi, köye kimler var ekipte?
Tardis ekibi olarak 3 backend developer, bir devintest, product owner ve liderden.
oluşuyoruz aslında? Aslında dolaba ilk başladığım zamanlarda ben biraz daha bu pizza dilimi denen ekip yapılarında ilerliyorduk.
Her ekipte mobil arkadaşlar oluyordu.
Bir iOS, bir Android.
Onun üzerine işte backend developerlar, leadler ve devintesler.
Daha sonrasında bunun çok iyi ilerleme indiğini fark edince aslında biraz daha ekipleri iOS, Android ve şey, domain bazlı ekiplere böldük.
Şu an şey gibi ilerliyoruz biraz daha.
Gelen işler bazında o an müsait olan mobil arkadaşlarla kontratları yapıp ekip bazında da domain üzerinde çalışıyoruz aslında.
Güzel. Yani bence iyi bir yaklaşım.
Önceki her ekip de tutmuyor.
Her ekip de tutmuyor.
Trend yolda zaten böyle gerçekten başarıyla yürütülen birkaç ekip var diyebilirim.
Ama dediğim gibi her ekip bunu elverişte olamıyor.
Çünkü domen burada çok önemli arz ediyor bence.
Domen buna yatkın değilse ya da domenindeki insanlar bir defa buna yatkın değilse maalesef bu çok da iyi yürümüyor ama güzel handle etmişsiniz gibi duruyor.
Süper. Peki günlük hayatta iş içerisinde hangi teknolojileri kullanıyorsunuz?
Hangi teknolojilerle geliştirmeler yapıyorsunuz?
Teknoloji olarak ağırlıklı Go ve Java üzerinde uygulanmalarımızı geliştiriyoruz.
Ama bunun yanında Python da kullanıyoruz.
Data Storage olarak Couchbase ve PostgreSQL yoğun olarak kullanıyoruz.
Search Domain'i biz de demiştik.
Bu da ARM altyapımız için olmazsa olmazımız Elasticsearch'ı çok yoğun olarak kullanıyoruz.
Gene Anasource olarak kullandığımız Couchbase DB üzerindeki değişiklik eventlerini işlemek ve ihtiyaçlara göre işte farklı kaynakları aktarmak için de şirket üyesinde geliştirdiğimiz, open source olarak geliştirdiğimiz DCP
projelerini çok yoğun olarak kullanıyoruz.
Gene Postgre üzerinde de yine DCP eventlerini işlemek için Debezium'u yine yoğunmuş.
Onun dışında olabildiğince süreçleri async olarak yürütmeye çalışıyoruz.
O yüzden Trendyol genelinde olduğu gibi biz de Kafka'yı yoğun bir şekilde kullanıyoruz.
İnfralarımız genelde Kubernetes üzerinde çalışıyor.
İnfranın yönetimi içinde Trendyol Builder platformu kullanıyoruz.
İşlerimizi oldukça kolaylaştırıyor.
Gene çeşitli cevaplarımız var.
Schedule ya da Workflow yönetimi içinde Airflow üzerinde çalışıyoruz.
Data analizleri ve data işlerimiz için de BigQuery'i kullanıyoruz.
Tahsin bilmeyenler için DCP tarafını biraz açabilir miyiz abi?
Ben de çok iyi bilmiyorum o tarafları.
DCP tam olarak ne eklediyor?
Aslında veri tabanları üzerine yaptığımız değişiklikleri işlemek üzerine protokol diyebiliriz.
Burada veri tabanına eklediğiniz kayıtlarda, kayıtların üzerinde yaptığınız değişikliklerde, kayıtları sildiğiniz zaman bu eventleri yakalayıp farklı operasyonlarda işletmek üzerine aslında handle etmenizi sağlıyor.
Bizde örneğin bir product.
Kağıt bezle bir kayıt yapıldığında, produktun üzerine bir değişiklik yapıldığında, fiyatı değişikliğinde vs.
Buradaki eventleri dinleyerek diğer sistemlere aktarmayı sağlıyoruz aslında.
Anladım, süper. Süper, çok faydalı, çok güzel bir tutulmuş.
Ellerinize sağlık. Birçok aslında teknolojiyi kullanıyorsunuz, birçok yaklaşıma hakimsiniz ve bu teknolojiler birçok yerde.
farklı farklı yerlerde kullanılıyor.
Zaten birçok ekibimiz farklı farklı teknolojilerle ilerliyor ama ben mesela şu ana kadar hiç bu kadar fazla beken teknolojisi kullanan bir ekip duymamıştım.
Hani üç büyük farklı teknolojiyi birlikte kullanan.
Dolayısıyla bunları handle etmeksi de oldukça zor.
Bunları yönetmesi de oldukça zor.
İşimden tebrik ediyorum arkadaşlar size.
Peki şeyi merak ediyorum biraz daha.
Böyle ekipte QA süreçleri nasıl ilerliyor?
Yani işte siz QA tarafında neler kullanıyorsunuz, hangi teknolojileri kullanıyorsunuz ve bir işe aldığınız, ilerlettiğiniz ilerletme sürecinde testleri nasıl yapılıyor?
Sprint içerisine bir iş geldiği zaman öncelikle full otomatize ilerlemek istiyoruz ve bu seneki motivasyonumuz mümkün olduğunca shift left test tank bakış açısıyla ilerlemek.
Yani işler henüz geliştirilirken functional testlerini de bir yandan yazıp geliştirme bittiğinde testleri run edip direkt aslında ready for release, jira'da ready for release kolonuna taşımak istiyoruz.
Bu seneki en büyük motivasyonumuz bu.
Çünkü cycle time için testleri otomatize etmek ve en erken şekilde release edebilmek önemli.
Buna önem veriyoruz.
Bunun içinde de az önce bahsettiğimiz tüm domainlerdeki, bizim yaklaşık 70 tane kadar servis yani uygulamamız var.
Bunların hepsini aslında functional test yazmaya çalışıyoruz.
Şu an için bir yarısına kadar kavalıyor.
25-30 tane functional test altyapımız var.
Consumer'larımıza ve servislerimize yazdığımız.
Testlerimizi de genelde Java dilini base olarak yazıyoruz.
Servis gerekliliğine göre VDD formatında Cucumber kullanıyoruz ya da Resteşur kullanıyoruz.
Uygulama gerekliliğine göre Testlerimizde yine Couchbase, PostgreSQL ve Kafka kullanıyoruz.
CIC'de genel olarak CIC'de entegrasyonu var.
Her sabah çalışacak şekilde de schedule ediyoruz bunları.
Slack kanallarına raporluyoruz.
Güne aslında bu raporları inceleyerek başlıyoruz fail eden senaryoları.
Ve bunların cover'cını ölçümlüyoruz.
Servisi ne kadar cover ettiğimizle alakalı ve cover etmediğimiz kısımları görüp aslında ilgili testleri eklemeye çalışıyoruz.
Bunlar dışında QA süreçlerinde aslında dolap ekibiyle beraber yaptığımız her kuartır başına load testler yapıyoruz.
Tüm dolaba yük vuruyoruz.
Ortak bir zoomda team bazla ayrılıp yük testi yapıyoruz ve çıktılarını ortak bir Excel'de not alıyoruz.
Varsa aksiyonlarımızı alıyoruz.
Yakın zamanda kontrak test ve kaos test de yapmaya başladık.
P1 servislerimizden olan mesela product servise kaos test yapma deneyimimiz oldu daha önce.
Bu sene bunu arttırarak devam edeceğiz.
Genel anlamıyla aslında bu şekilde işliyor bizde de QA süreçleri.
Olayınızı sağlık her adımı detaylı detaylı inceliyorsunuz.
Kaos testi kesinlikle katılıyorum.
Geçenlerde bizim domeninde de bir kaos testi yapıldı ve aslında faydasını şu ana kadar fark etmediğimiz ama çok faydası olan bir test türü.
Yani çok aslında edge case'leri görebilmemizi sağlıyor.
Bu açıdan bu tarafa da katkı sağlamamız oldukça iyi.
Otomasyon testleriyle alakalı ufak bir sormak istiyorum.
Böyle düzenli yazıyor musunuz otomasyon testleri?
Yani böyle bir pipeline'de zaten bir yapı olduğundan bahsettim.
Her case için ya da işte orada nasıl ilerliyorsunuz?
Yani önemli case'ler için mi sadece otomansiyon testlerini yazıyorsunuz?
Aslında dediğim gibi, az önce de dediğim gibi tüm senaryoları cover etmeye çalışıyoruz.
Servisin coverage'ini ölçtüğümüz için hangi klaslara, hangi metotlara testlerimizin hit edip etmediğini çıkarabiliyoruz.
Hit etmediğimiz yerlerde ilgili testleri ekliyoruz ve coverage'in artmasını bekliyoruz.
Ve bizim... Servislerimiz aslında birçok konsumere bağlı olarak çalışıyor ve functional testlerimiz de genelde tüm komponentlere yazılıyor.
Konsumere test yazıyoruz ve servisin kendisine test yazıyoruz.
Bu şekilde aslında iki ayrı test projesi oluyor ama end-to-end test etmiş oluyoruz.
Bu şekilde ilerliyoruz.
Tüm sadece acceptance testler değil, komple aslında tüm servisin gittiği yerleri, external servisleri vs.
hepsini test eklemeye çalışıyoruz.
Süper. Peki bir de şöyle bir nokta var.
Siz aslında baktığınız zaman product ve search domenilerinin içinde barındırdığınız için tahminimce çok fazla ekiple çalışıyorsunuz.
Yani bir sürü böyle gittiğiniz, geldiğiniz...
İşte sizin provider olduğunuz ya da sizin consumer olduğunuz birçok ekip var.
Bu ekiplerle iletişim ve ortak çalışma konusunda zorlanıyor musunuz?
Herhangi bir zorluk yaşıyor musunuz?
Bu süreci nasıl sağlıklı yürütüyorsunuz?
Bunun için aslında farklı farklı deneyimler yaşayıp böyle ekip içerisinde de çok konuştuğumuz dönemler oldu.
Zaten az önce de bahsettiğimiz gibi dolabın yapısı kendi içinde böyle küçük bir tren yolu diye adlandırabiliyoruz.
iOS Android 2 Mobile ekip bulunduruyor.
Domainlerimizi de zaten biliyoruz.
Ve daha önceden dolap içerisinde kendi içerisinde de rotasyon mümkün olduğu için aslında herkesin farklı ekiplerde farklı zamanda çalışma fırsatı oldu ve bu da ekipte herkesin birbirini yakından tanımasını sağladı.
Ve bu gerçekten aslında collaboration gerektiğinde bizi hızlandırıyor.
Biz kendi ekibimiz olarak da aslında farklı ekiplerde çalışacağımız işlerde collaboration'ı nasıl daha hızlı ve sağlıklı yaparız diye düşündüğümüzde birkaç çıktığımız olmuştu.
Biz genelde farklı ekiplerle çalıştığımız işlerde o işi daha fazla sorgulamanın, nedenini anlamanın ve ekiple birlikte challenge etmenin işleri daha iyi sindirmemizi ve henüz geliştirme aşamasına
gelmeden aslında hem bizim hem de çalışacağımız, ekiple yaşayacağımız bazı konfliktleri Tessie Fraun'un da görmemizi sağladı aslında.
Biz bunun çalıştığını düşünüyoruz.
Ve en son kolabilesi...
Collaboration yaptığımız işe örnek olarak da aslında PDP'de bir taksit seçeneği gösterme işi yapmıştık.
Bunun için de Seller ekiplerinden Voltron ekibiyle beraber çalıştık henüz iki gün önce.
Burada da nasıl ilerlediğimiz için aslında ben ekreme topu atabilirim.
Tabii aslında burada yani...
Listing bizde olduğu için bizim geliştirme yapmamız gereken bir süreç.
Ama gösterilmesi gereken data, işte badge, taksit badge'leri Voltron ekibini ilgilendiriyor.
Onlar bize geldi.
İşte dediler ki böyle böyle bir işimiz var.
Burada nasıl ilerleyebiliriz?
İşte biz şöyle düşündük.
Bize istek atmanızı istiyoruz bu her listeleme kısmında.
Aslında orada bizim birkaç önerimiz oldu.
Biz istek atmak istemiyorduk.
Hem onların servislerini kötü etkileyeceği için.
Daha sonrasında bir consumer taraflarını düşündük.
Bize dataları besleyin.
Hangi ürünlerde bu bej gösterilecek gibi.
Düşündük ve dedik ki 30 milyon civarı ürün var.
30 milyon civarı ürün için her gün niye veri dinleyelim?
Daha sonrasında şeyi konuşmaya başladık.
Siz bunu hangi kurallarla işletiyorsunuz?
Bu taksit bejinin kuralları nedir?
Bankalardan mı veri alıyorsunuz?
Bize bir kural şamasını besleyin.
Çok az bir... Event gelecek.
Baktık 150-200 civarı işlenecek event var.
Tamam dedik o zaman. Siz bize kuralları verin.
Biz içeride kendimiz hesaplayalım bunu şeklinde.
Aslında bu şekilde yaptığımız için direkt onların isteğiyle değil bizim önerimizle ilerledik.
Onların da hoşuna gitti.
Çok daha basit, çok daha az efor gerektiren bir şekilde çözmüş olduk süreçleri.
Ve hani bu şekilde ekiplerin arasındaki İletişim kuvvetli olduğu için, herkes birbirini dinlediği, bir akla takılan bir şey olduğunu da sorabildiği için herhangi bir ego savaşı
gibi bir şey olmuyor. Mantık çerçevesinde herkes birbirini dinliyor ve süreçler çok daha hızlı, güzel bir şekilde, herkesin aklına yatan şekilde çözülebiliyor aslında.
Süper. Yani kesinlikle dediğim gibi karşılıklı olarak zaten aslında hepimiz aynı hedef içinde ilerliyoruz.
konu senin ya da benim yapmam üzerine değil.
Sonuçta günün sonunda bu işin düzgün bir şekilde çıkması ve insanlara fayda sağlamak hepimizin kolay bir şekilde çalışması, kolay bir şekilde ilerletmesi.
Dolayısıyla bence gayet güzel handle etmişsiniz süreçleri.
Bir de tabii bu kadar çok ekiple bu kadar çok iletişimin gerektiği bir noktada da belirli şeyler, belirli geliştirmeler, belirli iyileştirmeler yapmak gerekiyor.
Çok iyi handle etmişsiniz.
Süper. Peki, bir şeyi merak ediyorum.
Size yeni projeler geldiğinde, yeni bir iş geldiğinde vs.
ya da bir replatforming ihtiyacı gibi bir durum doğduğunda ekip olarak nasıl ilerliyorsunuz böyle bir durumda?
Genelde ihtiyaçlar doğrultusunda analiz ve işte pros, cons, score, cut gibi yöntemleri de kullanarak değerlendirmelerde bulunmaya çalışıyoruz.
Bunlar genelde oldukça büyük ve etkileri olan işler oluyor.
O yüzden ihtiyaçlar zamanlanması ve planlanması oldukça da önemli oluyor.
Burada genelde fazlandırma yaparak ve iterasyon kültürüyle ilerlemeye çalışıyoruz.
Burada aslında güzel bir örneğimiz de var.
Daha önce geliştirilmiş monolit bir uygulamamız var.
Birçok akış burada yer alıyordu.
Bunun getirdiği dezavantajları hissetmeye başladığımız için planlamalarla birlikte artık belirlediğimiz domenilerde decompose sürecine girmeye başladık.
Az önceden beri konuşuyoruz işte core olduğu için product ve search domenilerini aslında...
merkezimize almıştık.
Buralarda daha esnek hareket etmek, daha rahat feature çıkmak, geliştirme eforu ve reliable cost gibi konuları da hedef alarak aslında ayırma ve replatforming sürecine girdik.
Sonuçlardan bir örnek verebilirim mesela.
Search başlı başına oldukça büyük ve en çok trafik alan ve resource kullanan domeni olduğu için sadece search domenini projelerine ayırarak AWS'de çalışıyorduk, Cloud'da çalışıyorduk.
Oradan Trendyol Data Center kendi clusterlarımıza geçtiğimizde aylık sadece cost'un yaklaşık %15-20'sini save ettik.
Burada ayrıca bağımlılıklarımızı da azalttığımız için hem yeni özelliklerin geliştirilmesi, domenin büyütülmesi de kolaylaştı.
Ayrıca kendi inframızda olduğumuz için de buradaki ciddi maliyetlerden de aslında kurtulmuş olmuştuk.
Çok iyi. Yani gerçekten sonucu gayet iyi almışsınız.
Opexy'de... bir nevi düşüren bir geliştirme olmuş.
Burada yani tabii şey gibi durumlar da var.
Bir projeye başlandığında bir şeye ilerlediği zaman aslında bir noktada fazla plan yapmak da işi bazen altalayabiliyor.
Yani direkt olarak girip yolda bir şeyleri oluşturmak daha iyi olabiliyor.
Tabii bu işleri yaptıktan sonra takip etmesi de oldukça önemli.
Burada sizin Monitoring mekanizmalarınızdan biraz bahsetmek istiyorum, biraz sormak istiyorum.
Sizin geliştirdiğiniz, oluşturduğunuz monitoring alert mekanizmaları nasıl hani bir incident durumu vs.
yaşandığı zaman önceden nasıl haberdar oluyorsunuz?
Monitoring için aslında Nivrelik, Grafana ve Kibana tool'larını kullanıyoruz.
Alert olarak da birçok consumer'ımız olduğu için önce bu consumer'lara Grafana'da lag alertleri tanımlayıp bunların dashboard'unu oluşturduk.
Hangi topikte ne kadar lag olduğu ile alakalı ve bunlar arttığında aslında haberimiz olmasıyla alakalı.
Bununla birlikte servislerimizin de log alertleri ve nivrelik alertlerimizi de tanımlayıp bir anomali durumunda da aslında on-call entegrasyonumuz var.
On-call kişisi önce cep telefonundan aranıyor.
Alertleri ilk olarak o günün on-call'ı inceliyor.
Devam ediyorsa ve müdahale gerekiyorsa o aksiyonlar alınıyor.
Incident gibi durumlar için de ekibin Zoom kanalına bir araya gelip aslında problemleri çöziyoruz birlikte.
Süper. Onkol kişisi demene biraz güldüm.
Bence de güzel bir terim oldu.
Okey süper. Şimdi aslında her ekibe sorduğumuz bir soru sormak istiyorum.
Yani incidentlardan bahsettiğim, incidentlar tabii her gün yaşanabiliyor.
Önemli olan daha önce de bahsettiğimiz gibi incidentların katı bir şekilde olmaması üzerine değil.
Yani sonuçta herhangi bir durumdan yaşanabilir.
Fakat bundan ne gibi bir ders çıkardığımız ve ikinci sonraki aşamada buna olmaması ile alakalı nasıl önlemler aldığımız önem arz ediyor.
Sizin ekipte ne tür...
incidentlar yaşanabiliyor ve sonrasında nasıl aksiyonlar alıyorsunuz?
Bir de böyle yaşadığınız güzel bir güzel demeyelim de yani bir incident örneği bugün dahi unutmayız falan dediğiniz bir örnek var mı?
Aslında bizim incidentlar daha çok dataların işlenmesiyle alakalı olabiliyor.
Ekip gereği daha önceden de bahsettiğimiz gibi product ve search bizde olduğu için bütün product datasını ve bütün bu product'ı ilgilendiren başka verileri toplamamız, dinlememiz
gereken akışlarımız var.
Bunlar için de daha çok işte Mert'in de az önce bahsettiği 60-70 civarı projemiz var.
Bunların %80'i belki %90'ı konsümer projeleri diyebiliriz.
Bunların içerisinde olan bir konsüm ederken yaşanan problemler olabilir ya da verilerin bize beslendiği zamanlarda yaşanan problemler.
Ve daha sonrasında bunun yol açtığı işte search'te yanlış ürün gösterme gibi durumlara yol açılabiliyor.
Yani skorlar yanlış beslenirse sen bir şey aradığında yanlış sırada gelebilir.
Ya da badge'ler beslenmedi diyelim ki.
Dolapta mesela boost diye bir akış var.
Boost'lu ürünler daha öne çıkarılıyor.
Boost akışlarında bir problem olsa boost'lu ürünler çok öne çıkamıyor gibi süreçler var.
Buna benzer de geçtiğimiz aylarda bir problem yaşadık aslında.
Hidden Product diye bir tane feature geliştirildi.
Bu çok görüntülenme almayan, çok iyi olmayan kötü ürünlerin Search'ta gizlenmesi üzerine yapılan bir geliştirmeydi ve bize bu verileri besliyorlardı.
Orada bir yanlış veri beslenme durumu olmuş ve daha sonrasında Search'ta bu ürünler yansımıyor ya da daha fazla yansıyor, tam da çözülemiyor.
Baştan işlememiz lazım bu ürünleri ama yaklaşık işte sallıyorum 3 gündür 4 gündür şu an tam net hatırlamıyorum.
Yanlış besleniyor bize veriler ve sorgu her gün çalışıyor.
Bu sorgunun çalıştığı tablolar işte 3 saatte bir güncelleniyor falan.
Ne beslendi ne beslenmedi tamamen kaçırdık yani.
Sorguyu baştan yazalım diyoruz sorguyu baştan yazamıyoruz falan böyle.
Tablolar değiştiği için. Ne yapacağız, ne edeceğiz falan düşünüyoruz.
En son dedik ki şey yapalım hadi.
Bu Tahsin'in de daha önce bahsettiği DCP projeleri var.
Böyle çok hızlı yazabildiğimiz.
Zaten Trendyol'da open source olarak geliştirilen bir proje.
Dedik ki bu verilerin bulunduğu ana tabloyu okuyalım.
Yani baştan sona bir işletelim.
Ve bizim ilgili Couchbase tablosuna...
Yazalım bunları. Oradan zaten Cargbase'den ayrı bir DSP ile search'a geçiyor falan.
Çok hızlı bir şekilde bu projesini yazdık bunun.
O tabloyu okuyacak. İşte bizim Cargbase'e aktaracak.
Hemen bu TBP'de bilmiyorum daha önceden bahsedildi mi bu Trendyol'un kendi Amazon'un AVS'si diyebilirim.
Çok hızlı bir şekilde orada ayağı kaldırıp aslında bütün tabloyu işleyip verileri düzelttik.
E tabi bu şey ama yani o anda hızlı bir şekilde çözmemiz için gerekli bir şeydi.
Bunu her zaman yapamayız.
Daha sonrasında yani ana problemi çözdükten sonra aslında bizim consumer tarafımızda eksik olan bu error topikleri, retry mekanizmalarını kurduk.
Bize beslenen tarafta yine outboxların kurulmasını istedik.
Orada bir veriler beslenmezse en azından hangi verilerin beslenmediğini onların tablosunda kalsın ki yani kaçırırsak bir daha böyle bir işle uğraşmayalım diye.
Aslında klasik bir incident olduğunda ilk başta en hızlı şekilde nasıl çözebiliriz, günü nasıl kurtarabiliriz mentalitesiyle yaklaşıp o anı kurtarıp daha sonrasında da nerede hata yaptık, neremiz eksikti,
alarmımız mı eksikti konularına bakıp o konuyla alakalı eksiklerimizi kapatıyoruz aslında.
Buna ek olarak bu arada biz artık datayı çok...
Bütün dataları hep async işlediğimiz için biz aslında artık iş geliştirirken de sürekli daha önceki yaşadığımız incidentlardan da böyle faydalanarak aslında işi geliştirirken de bunu
yaşarsak ne yaparız diye çok düşünüyoruz.
Ve beraber payr olarak da aslında bunların testlerini yapıyoruz.
En son geçen hafta bizim bir gamification projemiz var.
Orada da aslında biz order yapan kullanıcılara bir ödül vermek istiyoruz.
Bu orderları farklı bir ekipten alıyoruz.
Order'ın statülerini de farklı ekiplerden alıyoruz ve farklı 5 topiği dinliyoruz.
Geliştirirken sürekli şeyi düşündük.
Hangi topikten hangi eventi kaçırırsak diğer topikleri baştan okumamız gerekir ve bunların sırasını vesaire çıkardık.
Yani bu datayı sürekli async işlememiz ve yaşadığımız incidentler aslında bizim de bir tık gardımızı almamızı sağladı.
Artık iş geliştirirken de sürekli bunları düşünüyoruz diyebilirim.
Son olarak ben de bir takım olarak yaşadığımız ilginç anlardan bir tanesini ekleyeyim buraya.
Sosyal medya kısıtlama veya erişim problemleri olduğunda trafiğimizin böyle 2-3 kart arttığını gördüm.
Burada belli bir pattern yok.
Reklam verilme ya da push atılma gibi durumlar da yoktu.
Bu beklenmedik trafik artışına ilk başta çok anlam verememiştik.
Verileri inceliyorduk.
Hani nerede bir artış olabilir ya da işte herhangi bir yanlış gönderilmiş bir push vesaire olabilir mi diye birçok noktayı incelemiştik.
İlk etapta bunu çok anlamlandıramamıştık.
Tabii bu buradaki yük artışı sistemde yük de getiriyor.
Bazı alarmlar alıyordu.
Diğer ekiplerin de etkilenmesinden dolayı dolaylı etkilendiğimiz durumlar falan da yaşanıyordu.
Bu durumu sonradan fark etmeye başladık.
Aslında kullanıcılar sosyal medya platformlarına erişemediklerinde diğer ulaşılabilir platformlara yöneliyorlar.
Burada zaman geçiriyorlar.
Bu da daha çok böyle alışveriş platformları oluyor.
Burada da Trendyol ve Dolap olarak ilk hakta gelen platformlardan olmamızdan dolayı Buraya çok ciddi bir şekilde trafik geldiğini görmüş olduk, deneyimlemiş olduk.
Bu aslında büyük kitlelere hizmet veren uygulamalar geliştirdiğimizde de bu vesileyle biraz daha görmüş olduk ve yakından hissetmiş olduk aslında.
Bu bize oldukça ilginç gelmişti ve gülümsetmişti.
Artık sosyal olayları da biraz daha yakından takip ediyoruz diyebiliriz.
Süper valla yani ne diyeyim bilemedim.
Gerçekten insınıtlar hep böyle oluyor bu arada yani biz insınıt dinledikten sonra.
her seferinde. Geçmiş olsun demekten başka bir şey bulamıyoruz açıkçası.
O yüzden geçmiş olsun tekrar arkadaşlar.
Ama gayet güzel end of life misliniz süreçleri.
Zaten daha önce de söylediğimiz gibi yani sınıntı yaşamak değil sonrasında bir daha yaşamamak için neler yapabiliriz?
Çözüme odaklı ilerlemek kesinlikle çok daha önemli diyebiliriz.
Buradan tekrar geçmiş olsun diyeyim.
Peki şimdi birçok konu konuştuk.
Ekibe geri dönmek istiyorum.
Ekip olarak siz içeride iletişiminizi kuvvetlendirmek için neler yapıyorsunuz?
Burada da şirket kültürlerimizden biri işte feedback alıp vermek.
Bunu yaygınlaştırmak ve işte nasıl yaklaşılır konularında işlemek için aslında.
Biz de ekip olarak bazı değerlendirmelerde bulunduk.
İşte ortaya bazı fikirler, hikayeler yaratalım, bunlar üzerinde konuşalım gibi bazı düşüncelerimiz vardı.
Burada yapay zekadan da destek alarak bazı fake hikayeler yarattık aslında.
Örneğin işte bir fikir çatışması yaşayan bir ekibi simüle ederek burada herkes yaklaşımlarını, örnek feedbacklerini hazırladı ve üzerine konuşup tartıştığımız bir seri başlattık aslında.
Burada herkes böyle yaklaşımlarına olası böyle işte feedback alıp vermenin biraz daha zor oluyor.
Ya da iletişimin böyle zorlandığımız noktalarda nasıl iletişime geçeceğimizi bilemediğimiz noktalar olabiliyor çünkü.
Bunları böyle daha pratik pratiğe dönüştürerek biraz böyle alıştırmalar da yap diyebiliriz.
Bu aynı zamanda ekibin hem kaynaşmasına hem de ekibin birbirini biraz daha yakından tanımasına da.
zemin hazırlamış oldu.
Burada böyle öğretici deneyimler de kazandırdığımızı düşünüyoruz.
Bunun sonucunda da ekip kendi arasında birebir session'lar düzenlemeye başladı.
Birebir hem feedback alıp verme olsun hem de düzenli iletişimi arttırma üzerine olsun.
Çeşitli session'lar da yaptık.
Onun dışında da gene ekipte bazı işte kahve, sohbet, muhabbet session'larımız var.
Oyun oynadığımız session'larımız var.
Bu oldukça ekibin bence iletişimini de arttırdığını görüyoruz.
Bunlara şimdilik kısaca örnek verebiliriz.
Kesinlikle katılıyorum. Özellikle birebir konusunda.
Dün ekipten bir arkadaşımla da bu konuda konuştuk.
Birebir bence yani tabii ki...
kişiye bağlı, istenildiği zaman yapılan bir şey ama bence herkes birebir toplantıları düzenlemeli, birbirine göndermeli çünkü gün içerisinde bir iş yaparken işte iş arkadaşımızla beraber,
liderimizle beraber vesaire aslında vereceğimiz feedbackleri vermeyi unutabiliyoruz ya da ya ben bunu sonra bir ara söylerim falan diyoruz ama onlar genellikle uçuyor, havaya karışıyor.
Yani böyle unutuyoruz.
Ya da üzerinde durmuyoruz.
Aman bu da feedback verilir mi diyoruz ama yani söyleyebileceğimiz en ufak şey bile hem karşı tarafın kendini geliştirmesi hem bizim buradaki bilincimizi geliştirmek adına oldukça önemli olacağını düşünüyorum.
Bu konuda siz de çok güzel bir pratik yakalamışsınız.
Tebrik ederim. Okey. Yine ekiple alakalı, sizin takımla alakalı böyle son zamanlarda hayata geçirdiğiniz bir proje var mıdır?
Bundan bahsedebilir misiniz? Tabii var.
Hatta çok kısaca bir sözünün de geçtiği gamification diye bir ana maddemiz var son zamanlarda.
Aslında bu işin projenin adı MDR.
Biz de MDR'ın açılımı ne falan diye böyle bayağı bir sorguladık aslında.
Çözememiştik ilk başta falan.
Mission Driven Revert'miş aslında.
Kullanıcılara belli görevler tanımlayıp onlara ödüller verdiğimiz bir geliştirme, bir uygulama.
Aslında buradaki ana amacımız dolap üzerindeki DO ve CR metriklerini yani Daily Active User ve Conversion Rate dediğimiz search'ten gelen order sayılarını,
metriklerini artırmaya çalıştığımız bir geliştirme aslında.
Burada da ilk başta biraz daha POC denmez de ilk önce şey oyunuyla çıkalım dedik.
Şu kadar gün gel bu kuponu al oyunuyla çıktık aslında.
Bunun etkilerini görüp aslında artılarını görüp Daha sonrasında da Opas dediğimiz, bu da order bazında.
Kullanıcıların oluşturduğu 5 sipariş var.
Birinci siparişinde 50 lira kupon kazan, ikincisinde 100 lira kupon kazan gibi bir akışımız olan oyunu da şu an geliştiriyoruz aslında.
Önümüzdeki haftalarda production'a canlıya almış olacağız.
Aslında bu proje aynı zamanda tam bir şey böyle.
Ekip çalışması örneği falan da verebilirim.
Bu proje bize böyle şeyde geldi.
Kasım ortası gibi geldi.
Dediler ki böyle bir projemiz var.
Geliştirmek istiyoruz işte.
Yıl sonuna yetiştirip hani etkilerini görebilir miyiz?
Ona göre de 2025 hedeflerini belirleyeceğiz falan.
Ya sıfırdan Kasım ortasında bir event storming ile aslında akışları çıkarttığımız aralık başına doğru mobil arkadaşlarla işte iOS ve Android'den arkadaşlarla beraber oturup Daha sonrasında böyle
15 günde komple backendini, iOS'unu, Android'ini falan hazırlayıp kalan günlerde testlerini yapıp böyle canlıya aldığımız bir süreç oldu.
Tam olarak böyle şey diyebilirim aynı zamanda buna böyle.
Bütün ekiplerin beraber çalıştığı, omuz omuza çalıştığı değişik güzel bir süreçti.
Valla çok güzelmiş ya.
Ben kişisel olarak da Gamification'ı çok beğendiğim, çok sevdiğim için böyle çeşitli uygulamalarda...
Hatta yani hiç düşünmediğiniz yerlerde bile yedirilmesi benim çok hoşuma gidiyor açıkçası.
Çünkü orada şeyi görebiliyorsun.
Geliştirici ürünün sahibi gerçekten müşteriyi her açıdan değerli kılıyor, değerli buluyor.
Ve her noktada aslında uygulamayı daha keyifli hale getirmek için bir şeyler yapıyor.
Dolayısıyla ellerinize sağlık.
Bence çok güzel bir proje olmuş.
Çok güzel ilerlenmiş.
Bağlantılı olarak şey sorayım.
Böyle projeler içerisinde, ekip içerisinde bir şeyler yapıldığı zaman bir hedef belirleyip, o hedefin arkasından ilerlemek, arkasından koşmak bazen
zor olabiliyor. Bizim de takımlarımızın OKR'ları var bildiğiniz üzere.
Trendyol'da çok popüler, çok uygulanan bir durum.
Sizin buradaki yaklaşımlarınız nasıl oluyor?
OKR'larda ilerleyişiniz, aynı hedefe nasıl ilerliyorsunuz?
Tabii bu oldukça zaten tüm süreci de etkileyen faktörlerden bir tanesi oluyor bence de.
O yüzden biz de roadmap'i belirlemeye çok daha özen gösteriyoruz.
Hedeflerimizi roadmap'i belirlerken sadece product seviyesinde değil ekipçe inceleyip challenge ediyoruz aslında.
Aylık KPI, Northstar, OKR gibi toplantılarımız oluyor.
Burada en önemli şey metriklerimizi takip edip sorguluyoruz.
Hani şu an ne durumdayız resmi görüp ne aksiyonlar alınabilir buna bakıyoruz.
Ve bunu düzenli olarak yaptığımız için de böyle orada iterasyon gibi bir değişim ya da bir sapmalar varsa da erken önlem alma açısından da iyi oluyor.
Roadmap sürekli check ediyoruz.
Bunun dışında brainstormingler yapıyoruz.
Buradan çıkan çok değerli fikirler olabiliyor.
Buraya herkes katılıyor.
Buradan çıkan fikirleri de değerlendiriyoruz.
Onun dışında tek review toplantılarımız oluyor.
Daha çok teknoloji ağırlıklı üzerinde konuşup netleştirdiğimiz konular oluyor.
Bunları da yine roadmap'e getirmeye çalışıyoruz.
Biz de teknolojinin uyumluluğunu sağlayarak önceliklendirme yapmaya çalışıyoruz aslında.
Ayrıca düzenli olarak da gene domain her çek anketleri yapıyoruz.
Burada da gene her şey yolunda ama eksiklikler var mı görme açısından güzel oluyor aslında.
Deyip bitirebiliriz.
Süper, süper.
Yani zaten birçok takıma da bu konuda sormaya çalışıyordu o karlarla alakalı.
Takımın aynı hedef doğrultusunda koşması her zaman önemli.
Her zaman söylediğimiz gibi yani burada aslında bir takım içerisinde ben yok.
biz varız ve aynı hedef içerisinde koşmamız da oldukça önemli.
Yavaş yavaş sona doğru yaklaşıyoruz.
Bir iki sorun kaldı.
Onları sormak istiyorum.
Ekip gelişimi için takım içerisinde sprint işleri haricinde sprint işleri dışında neler yapıyorsunuz?
Yaptığınız şeyler var mı burada?
Var abi aslında haftanın bir günü öğleden sonra takvimimizi R&D session'ı yapmak için ayırdık.
Herkesin kendini geliştirmek istediği konularda aslında okumalar, geliştirmeler yapması için takvimlerimizi ona göre düzenledik.
Bunun dışında lunch and learn'ler düzenliyoruz.
Bu konuları da sadece teknoloji ile sınırlamıyoruz.
Yani herhangi bir yemek tarifi de olabilir ya da çalabildiğimiz bir enstrümanı çalmak da olabilir.
Burayı hiç sınırlamıyoruz.
Yakın zamanda da liderimiz bize piyano çalacaktı.
Bu vesileyle de ona da hatırlatmış olalım.
Bunlar dışında da haftada bir kez TARDIS Service Review toplantımız oluyor aslında.
Çok fazla uygulamamız olduğundan aslında domain normalini arttırmak için Service Review yapmak bize iyi geldi.
Burada bir service ya da bir consumer'ı ya da herhangi bir uygulamayı review ediyoruz ve to-do'larımız olursa ve notlarımız varsa Kullandığımız Excel'e not alıyoruz.
Gerektiğinden roadmap'e işini alıp önceliklendirmeye çalışıyoruz.
Genel olarak sprint dışında yaptığımız şeyler ekip gelişimi için bunlar diyebilirim.
Müzik aleti çalma konusu gerçekten çok ilginç bir şey.
Yani biz genellikle böyle şeyi falan soracağız işte takım tarihinde.
Yani işte böyle haftada bir gün işte yaptığınız şeyler varmış da oyundur vesairedir falan filan.
İlk defa işte böyle...
sprint dışındaki işlerde kendi böyle kendine zayıfladığı vakitlerde böyle bir şey yapan bir ekiple karşılaştım.
Güzelmiş ya gerçekten güzelmiş yani böyle bir latih.
Ben de haftaya kendi ekibime götüreceğim yani bakın böyle böyle ekipler de varmış falan diyeceğim yani.
Hani biz de kişisel zamanında çok keyifli etkinlikler yapıyoruz ama hani sizin bu yaptığınız gerçekten gayet güzelmiş.
Okey son olarak TARDIS ekibinin gelecek planlarından biraz bahsedelim istiyorum.
Gelecekte planladığınız, şunu kesinlikle yapmak istiyoruz dediğiniz bir şey ya da şeyler var mıdır arkadaşlar?
Birkaç tanesinden bahsedebiliriz aslında.
Burada en önemli kritik noktalarımızdan bir tanesi kullanıcı ve keşif deneyimlerini arttırmak en önceliklerimizden aslında.
Bunun için de data science ekipleriyle yakın çalışıyoruz.
Burada daha akıllı ve data ile yönlenen projelerimizi güçlendirmeye devam edeceğiz.
Onun dışında kişiselleştirme ve çeşitlilik sağlama üzerinde çalışıyoruz.
Bu işte en başta arama deneyimlerinde en ilişkili ürünleri bulma sıralama dışında kullanıcıların davranışlarına ve ilgisine göre de kişiselleştirilmiş içerikler dönmek üzerine çalışıyoruz.
AI son dönemde çok popüler malum.
Biz de oldukça yakından takip ediyoruz.
Kendi işlerimize entegre etmeye ve adapte olmaya çalışıyoruz.
Buralarda bazı fikirlerimiz var.
Bunları hayata geçirmek istiyoruz.
Yakında, yakın zamanda başta hattımız ve kullanıcılardan da çok talep gördüğümüz aslında image search projemiz var.
Burada da yine çok... Büyük milyonlarca ürün kataloğundan, ürün görselleri üzerinde aramalar gerçekleştirerek aslında ürünleri bulmaya çalışıyoruz.
Burada da yeni iterasyonlarla devam ediyor olacağız.
Bir de en büyük challenge'larımızdan bir tanesi aslında ürün yüklemeleri ve içerikler genelde kullanıcılardan geldiği için buradaki data kalitesini arttırmak hep bizim için en öncelikli konulardan bir tanesi oluyor.
Çünkü en temelde veriyi kullanıyoruz.
Bunun kalitesi de tüm çıktıkları etkiliyor.
O yüzden önümüzdeki dönemlerde de buradaki içerik kalitelerini iyileştirme üzerine ve AI'yı da kullanarak aslında bazı çalışmalar yapmayı planlıyoruz.
Temelde bunlardan bahsedebiliriz aslında en öncelikli olarak.
Süper. Güzel hedefler.
Umarım yakın zamanda bunlara erişilirsiniz arkadaşlar.
Çok teşekkür ediyorum. Çok keyifli bir bölümdü ki geldiniz.
Ben çok keyif aldım sizi de tanımak.
Harika oldu. Tekrar geldiğiniz için çok teşekkürler.
Biz teşekkür ederiz abi.
Bizim için de keyifli oldu.
Üzgün ağzına sağlık diye.
Çok çok teşekkür ederiz.
Biz teşekkür ederiz tekrar.
Selam ekibin 71.
bölümünde TARDIS ekibiyle beraberdik.
Bir sonraki bölümde farklı bir ekiple tekrar beraberiz.
Bu arada Trendyol Talks Podcast'ı bildiğiniz üzere daha sonra önce söylediğimiz üzere Spotify'da ve çeşitli podcast mecralarını bulabilirsiniz.
Orada da Trendyol kültüründen ve...
Kültürümüzden beslenen iş yapış biçimlerimizden ve ritüellerimizden bahsediyoruz.
Trendyol Talks Podcast'ını da takip etmeyi unutmayın.
Bir sonraki bölümde görüşmek üzere.
Sevgiler, iyi günler.
Bu transkript otomatik olarak çıkarıldı; kayıtla küçük farklar olabilir.
