
Konuklar: Alperen Üretmen, Bilgesu Bük, Mert Şen, Mustafa Selim Günaydın
66. bölümümüzde konuğumuz Search Relevance 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 TRPDP ekibinden Cengiz.
Teknoloji ekiplerini tanıdığımız ve süreçler teknolojiler gibi konuları konuştuğumuz Selam Ekip Podcast serisinin 66.
bölümünde Search Relevance ekibiyle birlikteyiz.
Bu ekibi tanıyıp ekip yapısı, kullanılan teknolojiler, pratikler gibi konuları konuşacağız.
Arkadaşlar hepiniz hoş geldiniz.
Hoş bulduk. Hoş bulduk.
Çok keyifli, çok güzel bir ekiple beraberiz.
Her ekipte olduğu gibi. Bugün Search Relevance ekibiyle beraberiz.
Bakalım bu kayıt boyunca kaç defa relevance'ı yanlış telaffuz edeceğim diyeyim.
Bu relevance kelime anlamı konusunda da bugün konuşuruz.
Neden seçildi, nedir karşılığı falan diye.
Ama öncelikle kendinizden biraz bahsedebilir misiniz arkadaşlar?
Tabii ki. Ben başlayayım o zaman.
Ben Alperen. Relevance ekibinde developer olarak çalışıyorum.
Bunun bir yılı yaklaşık Search Core ekibinde geçti.
Bir buçuk yıl kadarı da Elements ekibinde geçti.
Sözü Bilgesu'ya bırakabilirim.
Merhabalar, ben de Bilgesu.
Ben de 9 aydır Search Elements ekibinde developer olarak çalışıyorum.
Ben de sözü Mert'e vereyim.
Merhaba, ben de Mert.
Yaklaşık bir yılı biraz aşkın süredir trend yoldayım ve Search Elements ekibinde developer olarak çalışıyorum.
Ben de Mustafa Yatim. Selamlar, ben de Mustafa Selim.
Bir yıldan beri Trendyol'dayım.
Ben de Relevance ekibinde Deventes rolünde çalışıyorum.
Harika, çok memnun oldum arkadaşlar.
Birbirlerine top atarak iletişim kuran bir ekip.
Çok güzel, çok keyifli.
Tekrardan hoş geldiniz.
Şimdi sanıyorum Relevance ekibi bildiğim kadarıyla yeni bir ekip, yeni kurulmuş bir ekip.
Ekibin kuruluş amacından birazcık bahsedebilir misiniz?
Tabii ki. Görücü yeni bir ekibiz aslında.
2023 yılının başında Search Core ekibinden bölünerek kurulduk.
Search Core ekibi içinde çalışırken relevance yani kullanıcıların daha alakalı sonuçlar görmesiyle ilgili business gittikçe büyüdü.
Her ekibin daha odaklı ilerleyebilmesi için ayrı bir ekibe bölünme ihtiyacı doğdu.
Genel amacımız da az önce söylediğim gibi trend yolda arama yapan bir kullanıcının aradığı ürüne minimum eforla ulaşması, aradığını daha az telefonda scroll ederek bulması gibi amaçlarımız var.
Ekip olarak arama kutusuna lab yazınca kişinin beğeneceği lab label'leri getirmeye çalışıyoruz aslında.
Kuruluş amacımızı bu şekilde özetleyebilirim ben.
Çok güzel örnek.
Lab demeden direkt olarak kaynağına erişim sağlayabiliyoruz yani sizin sayenizde.
Çok güzel, çok güzel. Relevance'ın da buradan alaka anlamına geldiğini...
öğrenmiş olduk arkadaşlar.
İsim seçiminde yani direkt olarak bu mu geldi sizin önünüze?
Yani relevance diyelim bu ekibi falan diye.
Yoksa birkaç seçeneğiniz vardı relevance'ı mı seçtiniz peki?
Relevance, relevancy gibi ayrı ayrı isim önerileri geldi aslında.
Bunların arasında poll yaptığımızı hatırlıyorum en başta.
Tamam biz bu ekibi kuracağız ne isim koyacağız buna diye.
En son relevance'da karar kılmıştık.
Yani böyle mesela final search gibi Altamut Search gibi falan ekip isimleri de düşünebilirdiniz diye düşünüyorum.
GPT'nin ilk böyle öne geldiği zamanlarda aslında ondan da birkaç havalı öneri almıştık.
Ama en sonunda dedik ki o kadar da uçmayalım şimdilik Relamous kalsın.
Daha alakalı sonuç olduğunu da gösteriyor zaten bu ekip ismi.
Evet. Burada kalmıştık.
Güzel güzel bir isim ben gayet beğendim isminizi bence havalı gayet de güzel bir isim.
Teşekkür ederiz. Bayağı da yani aslında bir seneden fazla olmuş.
Çok yani çok yeni bir ekip diyemeyiz ama yine de tabii ki bir nebze trend yolu genelle baktığımızda yeni bir ekip.
Peki sizin ekipte ekip yapısı nasıl?
Siz kaç kişi çalışıyorsunuz ekip içerisinde ve bu kişilerin sorumlulukları nelerdir arkadaşlar?
Ben bahsedebilirim kısaca.
Ekibimiz toplamda 11 kişiden oluşuyor.
7 developer, 2 developer intes, 1 tech lead ve 1 ekip lideri şeklinde aslında.
Ayrıca ekibimiz data science, feature store platform ve machine learning platform ekipleriyle de yakın bir işbirliği içinde çalışıyoruz.
Örnek verecek olursam, data science ekibi feature engineering yaparken ve modeller geliştirirken Feature Store ekibi ise Data Science ekibinin oluşturduğu feature'ların sunulmasını ve kullanılabilir
hale getirilmesini sağlıyor.
Ardından MLP ekibi devreye giriyor ve bu modellerin aslında serving kısmını hallediyor.
Biz de bu ekiplerle birlikte çalışarak sistemlerimizi hem iş ihtiyaçlarına uygun bir şekilde hem de ölçeklenebilir bir şekilde tasarlamaya odaklanıyoruz.
Yani ekip yapımızı bu şekilde özetleyebilirim aslında.
Çok güzel. Yani birçok ekiple birlikte çalışmalı ve bunlardan direkt olarak size gelmesi oldukça iyi.
Hele ki böyle hayati önem taşıyan, trend yolu için hayati önem taşıyan bir domeninde, search domeninde.
Eskiden mesela eski searchlarda, eskiden search yaparken şey, muhabbetini çok iyi hatırlıyorum işte.
Abi iPhone yazıyorum kılıf çıkıyor.
İşte ne bileyim abi şunu yazıyorum bu çıkıyor falan gibi.
Dolayısıyla hani şu an...
Böyle bir duruma gelmiş olmak, bu seviyeye gelmiş olmak gerçekten etkileyici.
Arkada da bayağı bir işlem varmış zaten.
Daha da çok detaylı konuşacağız tabii bunları.
Peki şeyle konuşalım biraz, şey hakkında konuşalım.
Siz ekip olarak hangi servislerden sorumlusunuz?
Şimdi ben mesela client ekibinde çalıştığım için bunu da ayrı olarak da merak ediyorum.
Hangi süreçlerle alakalı çalışıyorsunuz?
Hangi süreçlerle ilgileniyorsunuz?
Hangi servislerden sorumlusunuz?
Tabii ben burada biraz detayı verebilirim.
Aslında Bilgesi onun da söylediği gibi biz Search Relevance ekibi olarak işte developerlar ve data scientistler beraber çalışıyoruz.
Burada ana amacımız tabii kullanıcılara Search Result'ta daha relevant, kişiye özel, kişiselleştirilmiş sonuçlar sunmak.
Yani bunu sağlamak için de birkaç aşamada bir yapı var arkada.
İşte bir kullanıcı arama yaptıktan sonra geçen süreçten biraz bahsedeyim.
Orada bizim servislerimizi de anlatmış olacağım zaten.
İlk aşama bu işte matching dediğimiz ada ürünlerin belirlenmesi aşaması.
Yani kullanıcı işte search box, Trendyol'da o search box'a bir term yazdığında kullanıcı sorgusuna uygun olan binlerce ürün önce aday olarak belirleniyor.
Kaç ürün olduğu sorguya göre değişebilir ama genelde binlerce ürün oluyor.
Trendyol bazında çok fazla ürün olduğu için.
İşte aday ürünleri belirledikten sonra iş artık biraz bunların sırasını belirlemeye geliyor.
Yani 100 bin tane bir pantolon araması sonucunda 100 bin tane ürün meçlenebilir.
Ama hangisinin daha üstlerde görüneceği tabii...
Bayağı önem arz ediyor. Üç aşamadan bahsedeceğim bu matching aşamasından sonra.
Smart Listing, Relevancy ve Rerank dediğimiz.
Bunlar aslında Search Relevancy ekibinin kontrolünde olan süreçler genel olarak.
İlk aşama Smart Listing.
Yani Trendyol'da işte her itemın bir Smart Listing, bazen Content de dediğimiz Content Skoru var.
Bu skorlar Search Relevancy DS, yani Data Science ekibi tarafından oluşturulup Kafka'ya prodüs ediliyor.
Search API'de elastikten ürünleri çekerken yine bu skorları kullanıyor.
Ve işte bu skorlar ürünlerin genel performans metriklerine göre daha fazla ya da daha az olabiliyor.
Satış oranına tıklanma gibi geçmiş performansları önemli oluyor.
Yani sorguyla çok alakası olmayan bir süreç aslında smart listing skor süreci.
Bu skorların belirlenmesinde machine learning modelleri yine kullanılıyor.
Bir sonraki aşamada...
relevancy dediğimiz bir aşama var.
Aslında ada ürünler belirlenmişti.
İşte smart listing skorları var.
Kullanıcının sorgusunu da relevancy de işin içine katıyoruz biraz daha.
Yani en alakalı kategorileri öne çıkarma, cinsiyete göre bazı ürünleri öne çıkarma gibi aşamalar relevancy çatısı altında yapılıyor.
Yani kullanıcının aradığı terime göre bir normalleştirmeyle o arama törümü aslında Couchbase'de bir dokümana git ediyor.
Bu dokümanın içinde de İşte bazı skorlar yine kategori id'leri vesaire yer alıyor.
Bu dokümanları yine Search Elements Data Science ekibi besliyor ama işte consumer'ı, cash base bucket'ı vesaire yine bizim developer'ların kontrolünde.
Lookup da Search API tarafında yapılıyor aslında bu dokümanların.
Biraz önce sen de söylemiştin o kılıf örneğini verdin işte iPhone arıyorum kılıf geliyor gibi.
Aslında iPhone aramasında kılıflar yerine telefonların daha üstte gelmesini sağlayan aşama biraz daha bu relevancy aşaması.
Yani bu dokümanların içinde bu bilgi bulunuyor.
Baktığın zaman tabii kılıflar tıklanma satış oranına bağlı olarak yüksek skorlara sahip.
Ama iPhone aramasında tabii telefonların üstte görünmesi lazım.
Yani kılıfların üstte görünmemesi gerekiyor.
Bunu bu aşamada yapıyoruz.
Bir de işte cinsiyetten de bahsettim.
Erkek kullanıcının tişört aramasıyla.
Kadın kullanıcının tişört araması tabii bayağı fark edebiliyor.
Erkek kullanıcı da daha çok erkek ürününü üstte gösterirken kadın kullanıcı da daha çok kadın ürünü gösteriyoruz.
Bu da yine bu aşamada.
Son aşamada re-rank aşamamız.
En önemli aşamalardan biri re-rank.
Aslında şimdiye kadar en başta seçilen binlerce üründen relevansi ve smart listing ile zaten bir sıralama elde ettik.
Bu sıralamadan sonra en üstteki x sayıda ürün.
Şu an 1000 ürün ama bunun sayısı değişebilir.
En üstteki 1000 üründe re-rank API'ye paslanıyor.
Re-rank'ta bu 1000 ürün tekrar machine learning modeliyle sıralanıp search API'ye dönüyor ve ön yüzde kullanıcıya re-rank'in döndüğü sıralamayla gösteriliyor ürünler.
Prediction yapıyoruz, canlı bir şekilde inference yapıyoruz re-rank aşamasında.
Ve Smart Listing'den bağımsız olarak biraz daha işte genel performans değil, kullanıcı ve arama sorgusunu da işin içine kattığımız bir aşama re-rank.
Nasıl featureler kullanıyoruz? İşte ürünün özellikleri, kullanıcının özellikleri, daha önceki tercihleri ya da arama sorgusuyla ilgili özellikler, arama sorgusunun item'la ilişkileri gibi featureler kullanıyoruz.
Yani Ahmet'le Mehmet'in işte pantolon araması, böyle farklı sıralamalar.
getirebiliyor. Bu da Rerank sayesinde yapılıyor.
Aslında kişiselleştirmeyi biraz burada devreye sokuyoruz.
Böyle özetleyebilirim yani.
Bu anlattığım son üç aşama Search Relevance ekibinin servisleri.
Burada tabi Search Core'la da birlikte çalışıyoruz.
Çünkü mesela Relevancy ve Smart Listing Search API içinde ulaşılan ve kullanılan yapılar.
Rerank API ise ayrı bir API bizim kontrolümüzde.
Ama yine Search API'den gelinen bir API.
Bu şekilde özetleyebilirim.
Genel olarak bunlarla uğraşıyoruz.
Valla Mert yani her aşamasını gayet güzel anlattığını düşünüyorum ve ben gerçekten masal dinliyormuş gibi bir sorçun hikayesi, bir sorçun anıları hikayesini dinliyormuşum gibi oldu.
Çok etkileyici gerçekten. Mesela şeyi sorayım burada.
Ben geldim işte yazarken...
Öyle örnekler kesinlikle görmüşsünüzdür işte yazarken tam yazamadım.
Eldiven yazacağım mesela tam yazamadım işte.
Eldive yazdım ya da işte ne bileyim başka bir şekilde karıştırdım yazacağımı ve gönderdim.
Bunu da aslında ilk aşam yani ikinci aşamada sanıyorum şey yapıyorsunuz düzelterek sorguyu yapıyorsunuz diye anladım.
Yoksa data science tarafında mı yapılıyor öncelikle bu düzeltme?
Bu düzeltme aslında kullanıcıya search önce UI'de bazı suggestions yapılıyor ama yine de yanlış yazıldıysa search API içinde daha re-rank'e paslanmadan yani relevancy ile
ilgili bir logic işletilmeden önce bunun düzeltmesi yapılıyor.
Bu da NLP ekibinin sorumluluğunda olan bir servis.
Ama search API içinde bu servis kullanılarak işte bu query'i doğru kelimeye maplıyor.
Yani user'ın gerçekten aratmak istediği term'e maplıyorlar.
Spelling corrector. Anladım.
İlerleyen bölümlerde NLP ekibiyle de bir bölümümüz olacak.
Orada kendilerine bu soruyu, aynı soruyu tekrar soracağım.
Bir de onlardan dinleyelim diye.
Harika, süper.
Şimdi Data Science ekibinden bahsettik, diğer ekiplerden bahsettik.
Sizin ekiple Data Science ekipleri ve çalıştığınız diğer ekipler arasındaki işbirliği nasıl gerçekleşiyor peki?
Orada nasıl bir iletişim durumu söz konusu?
Yine ben devam edebilirim burada.
Bizim ekibin aslında sorumlulukları gereği birçok farklı ekiple işbirliği yapmamız gerekiyor tabii.
Aslında zaten Data Science ile aynı ekipteyiz diyebiliriz.
Social Elements çatısı altında.
Ortak daily toplantılarımız da oluyor.
İşte Jira boardlarının üzerinden geçiyoruz.
Ayrı boardlarımız var ama dailylerimiz ortak.
Birbirimizi bloklayan durumları veya ihtiyaçlarımızı konuşuyoruz.
İşte bunun dışında bu Slack üzerinden de zaten sürekli iletişimdeyiz.
Eğer bir konu offline olarak ilerlemesi gerekiyorsa bu kanallardan bilgi paylaşımını yapabiliyoruz.
Onun dışında Gsheet gibi araçları çok sıkla kullanıyoruz.
Data Science dışında tabii diğer ekiplerle de işbirliği yapıyoruz.
İşte bir ekip Machine Learning Platform ekibi, bir ekip Feature Store Platform ekibi.
Bu platform ekipleriyle sürekli çalışıyoruz.
Model serving için...
Machine Learning Platform'u kullanıyoruz.
Rerank'te işte o feature'ları almak için, her item için, user için bu feature'ları alabilmek için Feature Store Platform ekibinin sunduğu servisleri kullanıyoruz.
Bir diğer önemli işbirliği yaptığımız ekip de biraz önce de bahsettim, Search Core ekibi.
Çünkü bizim aslında servislerimiz Search API tarafında kullanılıyor ya da çağrılıyor.
Bu yüzden sürekli ekipler olarak da iletişimde kalmamız gerekiyor.
Tabii bu ekiplerle köprüyü kuran da Product Manager'larımız var.
Onlar sayesinde taskların ekipler arasında önceliklenmesi rahat bir şekilde ilerletebiliyor.
Birden fazla ekibi ilgilendiren konularda daha hızlı ve optimize ilerleyebiliyoruz diyebilirim.
Çok güzel, çok güzel. Yani birçok kademeli, birçok aşamalı, birçok layer'lı bir ekip düzeni ve işleyiş ilerliyor içerisinde.
Bunu yönetmesi de oldukça zordur.
Birçok ekipte gördüğümüz gibi sizin ekipte de Genel Trendyol'da gördüğümüz kültür ve iletişim yöntemleri kullanılıyor.
Harika. Fakat tabii çok fazla içeride aslında...
Yani dışarıdan dinlediğimiz zaman işte her zaman için belirli bir yapı içerisinde gerçekleştiği görülebiliyor.
Fakat içeride her zaman işler istenildiği gibi de gitmeyebiliyor.
Böyle zorlanıldığı, sıkıntı yaşanıldığı, challenging zamanlar olabiliyor.
Sizin ekipte nasıl bu tarz durumlar var?
Nasıl challenge'lar var ekibinizde?
Ben bahsedebilirim aslında.
Söz konusu bence Search Relevance ekibi olunca gerçekten oldukça karşımıza karmaşık bir çalışma alanı çıkıyor.
Temel amacımızdan zaten Mert de bahsetti.
Kullanıcıya özel olarak arama sonuçlarını yeniden sıralamak istiyoruz.
Rirenk olarak da şu anda Türkiye ve Gulf pazarlarında faaliyet gösteriyoruz.
Ayrıca sponsorlu olarak işaretlediğimiz ürünler de var.
İlla ki Trendyol'da görmüşsünüzdür.
Biz bunlara da kısaca ads diyoruz ve bu ürünler için de rirenk yapıyoruz.
Aslında ben buradaki şu kritik noktaya parmak basmak istiyorum.
S ve Product Reranking kendine özgü gereksinimleri ve hedefleri var.
Bu nedenle de farklı Machine Learning modelleri kullanıyoruz ve buradaki her bir model feature setini kendi hedeflerine özel bir şekilde aslında uyarlıyor.
Her pazarın dinamikleri ve kullanıcı davranışları da farklı.
Bu nedenle de yaklaşımımızı buna göre şekillendirmemiz gerekiyor.
Aslında biz Search Relevance ekibi olarak tüm bu gereksinimleri destekleyecek bir yapı oluşturmamız gerekiyor aslında.
En büyük challenge'ımız bu.
Buradaki temel zorluğumuz her pazarın kendine özgü dinamiklerini yakalayabilmek ve bunlara adapte olabilmek adına buradaki machine learning modellerinin hızlı
bir şekilde sunulmasını sağlamak diyebilirim.
Bizim buradaki Rerank olarak uzun vadedeki tüm hedefimiz kullanıcıların user feature'larını daha iyi bir şekilde kullanıp kişiselleştirmeyi en üst düzeye çıkarmak ve aynı
zamanda position bias'ı da minimize etmek diyebilirim.
Buradaki position bias ne dersek aslında kullanıcıların genellikle üst sıralarda yer alan sonuçları tercih etmesi diyebiliriz.
Bizim buradaki dengeyi sağlamamız oldukça önemli oluyor.
Kullanıcılara sadece popüler olan ürünleri değil, aynı zamanda kullanıcının tercihlerine de uygun ürünleri sunmamıza olanak sağlıyoruz aslında.
Bir diğer en büyük zorluğumuz ise Mert de birazcık bahsetmişti.
Query elemesi ile personization arasındaki bizim bir doğru dengeyi bulmamız lazım.
Ben de burada böyle bir tane daha spesifik bir örnek verebilirim.
Diyelim ki bir kullanıcı genelde premium markalardan alışveriş yapıyor.
Ve daha çok indirimli ürünler alıyor.
Ve eğer ki kırmızı elbise aradığında ona tabii ki mantıklı olan premium ve indirimli ürünleri ona önceliklendirmek en mantıklısı.
Ancak bu sefer de kullanıcının geçmişiyle ilgili ürünleri de çok fazla öne çıkarırsak sorgumuzun asıl nedeni olan kırmızı elbiseyi de kaybedebiliriz.
Aslında buradaki bu dengeyi kurmak renk açısından oldukça kritik oluyor.
Bu nedenle de sürekli bir öğrenme ve iyileştirme prensibiyle çalışıyoruz ve modelleri detaylı A-B testleriyle değerlendiriyoruz.
Çünkü aslında her bir renk iterasyonunda test ettiğimiz Machine Learning modeli farklı feature'lardan faydalanıyor ve her seferinde aslında ürünlerin sıralaması daha da optimize edilmeye
çalışılıyor. Bazen de aynı anda birden fazla A-B test aktif olabiliyor.
Bu durum aslında süreç yönetimini bizim için biraz zorlaştırabiliyor.
Ama buna rağmen iş hedeflerine katkıda bulunabilmek için biz burada sürekli çaba gösteriyoruz.
Bunun yanında aslında Mert'in de bahsettiği ekibimizin birçok farklı ekiple, Machine Learning Platform ve Feature Store Platform ekipleriyle de yakın bir şekilde çalıştığımızdan bahsetti.
Yeni modelleri canlıya alırken de latency'mizi kabul edilebilir sınırlar içinde tutmak da bizim için oldukça kritik bir öneme sahip oluyor.
Burada biz kontrollü bir şekilde ilerliyoruz ve birlikte çalıştığımız tüm ekiplerle beraber detaylı load testler gerçekleştirip olası sorunları erken aşamada tespit etmeye
çalışıyoruz. Son olarak da aslında ekibimizin bir diğer challenge'ı olan feature'ların saklanması ve DUCAP süreçlerinde kullanılması diyebilirim.
Data Science ekibinin aslında oluşturduğu ve bize Kafka aracıyla gönderilen bu feature'ları depolamak ciddi bir altyapı ve operasyonel yük gerektiriyor.
Bu sorumluluğumuzu da aslında Feature Star Platform ekibine devretme açamasındayız.
Bu da aslında bizim üzerimizdeki yükü biraz hafifletecek.
Tüm bu aslında aktardığım zorluklara rağmen hem ekipçe hem de birlikte çalıştığımız tüm ekiplerle Birlikte oldukça başarılı işler çıkarıyoruz.
Kullanıcıya özel aslında kişiselleştirilmiş arama sonuçları konusunda oldukça iyi bir noktada olduğumuzu düşünüyorum.
Ve daha da gelişmek için aslında ekipçe elimizden geleni yapacağız ilerleyen süreçlerde.
Harika, harika bilgisayar.
Yani dolu dolu anlattın.
Gerçekten her süreç, her challenge'ınız oldukça yoğun, oldukça dolu.
Ama gayet de iyi şekilde üstesinden geliyorsunuz.
Umarım bu şekilde devam eder süreçleriniz.
Kişiselleştirmeden bahsettin Bilgesu.
Ben burada bir merak ettim.
Kişiselleştirmeyi hangi aşamada yapıyorsunuz?
Burada yani çok zor bir iş ya bu.
Her kişiye ayrı şekilde işte öneriler vermek.
Çünkü genel olarak zor.
Hani biz client tarafında da bunda oldukça zorlanıyoruz.
Yani günün sonunda güzel bir iş çıkarsak da bu yine de zor olduğunu değiştirmiyor.
Bunu tam olarak nasıl başarıyorsunuz?
Yani biraz önce smart listing relevancy ve re-rank gibi aşamalardan ben bahsetmiştim.
Kişiselleştirmede trend yol search'unda aslında re-rank aşamasına kadar uygulanmıyor.
Yani ilk aşamada ürünler biraz daha genel ölçütlere göre sıralanıyor.
Henüz diyelim tabii buna.
Ama işte arama sonuçlarını kişiselleştirmek için re-rank'te kullanıcıya özel bir yaklaşım benimseyebiliyoruz.
Çünkü orada... Hem kullanıcı feature'larını hem de query term'i biraz daha kontekstin içine daha fazla katabiliyoruz.
Yani biraz önce de verdiğim örneğin aynısı.
Ahmet ve Mehmet'in pantolon aramasını farklılaştıran ana unsur re-rank oluyor burada.
İşte bu aşamada kullanıcının tabii bazı feature'larını tutuyoruz demiştik.
Bu feature'lar da clickstream datalarından elde ediliyor genel olarak.
Geçmiş arama davranışları, tıklama geçmişi, bazı alışveriş tercihlerine dair veriler ya da işte demografik bilgileri gibi.
Kullanıcı odaklı özellikleri her kullanıcı için biz tutuyoruz ve bu feature'ları machine learning modeline giderken aslında her user için kullanıyoruz.
Burada da işte bir örnek vereyim yine.
Kullanıcı daha önce belirli bir markayı sıkça tercih etmişse brand propensitelerinden ya da işte bir kategoriyi çokça tercih ediyorsa kategori propensiti gibi feature'lar var.
Bu feature'larla re-rank algoritması çalışıp kullanıcıya özel şeyler sunmuş oluyoruz.
Genel olarak re-rank da yapıyoruz yani bu süreci.
Tabii sürekli iyileştirilebilecek bir süreç.
O yüzden sürekli iter etmeye çalışıyoruz.
Süper, süper zaten.
Bizim trend yolu kültürlerimizden biri.
Sürekli daha iyisini, daha iyisi için çalışmak, sürekli iter etmek.
Güzelmiş vallahi re-rank tarafında olması ve gayet amaca uygun şekilde ilerlemesi çok güzel.
Yani ben çok beğendim. Peki, birazcık daha böyle artık.
Daha civcivli noktalardan konuşmaya başlayalım isterseniz.
Teknoloji konuşalım. Ekibinizde kullandığınız teknolojiler nelerdir arkadaşlar?
Biraz bilgi alabilir miyiz bu konuda?
Tabii ki. Programlama dili anlamında ağırlıklı olarak Golang kullanıyoruz.
Eskiden daha çok Java projelerimiz vardı Search Core'dayken de.
Parça parça onları Go'ya geçiriyoruz.
Az da olsa Java projemiz hallenmeye vücut.
Test ve Data Science tarafında Python'da yazılmış projelerimiz de var.
Database anlamında backend kısmında biz developerlar daha çok Couchbase kullanıyoruz.
Data Science ekiplerimiz de ağırlıklı olarak BigQuery kullanıyor.
Tabi bu bir tek bunu kullanıyorlar anlamında değil, ağırlıklı olarak yine diğerlerine hakimiz.
Message Queue anlamında Kafka kullanıyoruz.
Bizim farklı farklı uygulamalarımız var.
Bunlar birbiriyle REST'le de anlaşabiliyor, gRPC'yle de anlaşabiliyorlar.
Kod yönetiminde zaten şirketçe GitHub üzerindeyiz.
Onun üzerinden yönetiyoruz repolarımızı.
Monitoring için Grafana, Nivrelik, Kibana ve şirket üzerinde kullanılan Trendyol Builder Platform yani TBP'yi kullanıyoruz.
Bunun yanında kullandığımız ve bahsetmediğimiz birçok teknoloji daha var.
Scala dili, Airflow deckleri, Kubernetes gibi.
Yani kısaca zengin bir teknoloji elfazemiz bulunuyor ekip içinde.
Çok ilginç Scala'yı geçenlerde bir bölümde yine duydum.
O ekibe de sormuştum yani böyle size legacy mi kaldı yoksa bunu özellikle mi tercih ettiniz falan tarzında.
Tabii hani maintain edilme sürecinde maintain edildiği sürece yani iyi bir şekilde verimli bir şekilde maintain edildiği sürece oldukça on the point bir dil yani amaca yönelik bir dil.
Size de sormuş olayım hani özellikle mi tercih ettiniz yoksa hani böyle bir şey yapılmıştı biz de onu maintain ediyoruz mu diyorsunuz?
Yok en başta analizini yaparak.
almıştık biz bu işi. Ama Mert burada daha ayrıntılı bilgi verebilir sanırım.
Orada direkt birebir analizin kısmında uğraşan da oydu.
Ona paslayabilirim sözü burada.
Evet ya aslında bu iş biraz şeyden çıkmıştı.
Biz user ve item vektörlerini de biraz işte bu relevan sürecinde kullandığımız bir projemiz var.
Şu an henüz canlı değil ama.
Bu projede İşte bazı clickstream datalarını toplayıp bize aslında o user vektörünü oluşturup Kafka'ya basacak bir yapıya ihtiyacımız vardı.
Burada Apache Flink kullanmıştık.
Flink'le birlikte de Scala kullanmanın bizi rahat ettireceğini düşünmüştük.
Trendyol'da da çokça örnekleri olduğu için.
O yüzden aslında Scala'yı Flink'le beraber kullanmıştık yani bu süreçte.
O yüzden öyle bir seçimimiz olmuştu.
Anladım, anladım. Okey, demek ki bundan sonra Scala'ya şaşırmamam gerekiyor.
Ben bu kadar yoğun kullanıldığını bilmiyordum açıkçası.
Süper, ellerinize sağlık.
Gayet güzel görünüyor süreç.
Java projelerini de Go'ya geçirmeniz ayrıca güzel.
Böyle güncel teknolojileri kullanmak da çok önemli.
Şimdi bu kadar fazla teknoloji, bu kadar işte kompleks yapılar falan filan böyle bir kompleksitesi yüksek olan bir ortamda durumda kaliteyi de sağlamak aslında önemli
bir nokta. Kaliteli iş yapmak, kaliteyi maintain etmek bir önemli bir nokta.
Siz kaliteyi sağlamak için genelde nasıl bir yol izliyorsunuz?
Şöyle aslında genel hatlarıyla test ortamını şöyle özetleyeyim.
Trendyol'un geliştirmiş olduğu gatek entegrasyonu var.
Bununla birlikte aslında servislerimizi izole bir şekilde geliştirmelerin son haliyle diplo edebiliyoruz.
Bahsettiğimiz gibi bizim için en büyük challenge data.
Testlerde de bu datanın bozulmadığından emin olmamız gerekiyor.
Bunun için de data collector projeleriyle canlı ortamdan aldığımız güncel dataları kullanıyoruz.
Ve kendi izole datastorumuza ekliyoruz ilk başta.
Yani testlerimizi diğer ortamları hiç etkilemeden komple izole bir şekilde kuşabiliyoruz.
Ayrıca regresyon ve yeni eklenen testlerle birlikte otomasyon pipeline'da o geliştirmeyle birlikte yürütülüyor.
Tabii bir sorun yoksa MR mersleniyor ardından.
Sonrasında kontrollü bir şekilde sırasıyla stage pre-prod ortamlarına deploy ediyoruz.
Bu süreçte Kibana, Grafana, Nivrelik üzerinden Süreci takip ediyoruz aynı zamanda.
Her şey yolundaysa production ortamına geçiş yapıyoruz.
Performans etkisini görmemiz gereken işlerde ise performans testleri yapıyoruz.
Bu nedenle metrikler bizim için çok önemli.
İşlerimizi kolaylaştırmak adına servis ve datastore metriklerini aldığımız bir metrik toplama projesi geliştirdik.
Bu sayede aslında servislerdeki response time, latency, network kullanımı, CPU, memory usage değişimleri, Aynı zamanda datastore'daki CPU RAM operasyon değişimlerini ezizle ve
yaptığımız geliştirmeyle kolayca kıyaslayabiliyoruz.
Bu şekilde aslında özetleyebilirim.
Süper, süper.
Yani zaten gatek kullanımı ve QA proses süreçleri birçok ekipte aşağı yukarı aynı kalitede ilerliyor.
Sizde de gayet güzel bir noktada ilerliyor.
Şeyi de sormak istiyorum. Şimdi bu süreç içerisinde işte...
Çeşitli modeller oluşturuluyor, bu modeller işte test ediliyor vs.
konuları var. Bu modellerin test edilmesi için sizin ekibin geliştirdiği çözümler var mı?
Ne gibi, nasıl testler yapıyorsunuz?
Öncelikle şöyle, evet ekibimiz yani machine learning modellerinin test edilmesi için çözümler geliştirdi ve bunları sürekli olarak...
Hangi testleri yapabiliriz ML modelle birlikte?
Ne tür testler yaparız?
Daha iyi hale getirmeye çalışıyoruz aslında.
Test süreçlerimizde de genel olarak hem acceptance testleri hem contract testleri yapıyoruz.
En önemlisi şu an bizim için modellerimizde entegre çalışan API testleri de diyebiliriz.
Bir de Kafka Couchbase sistemleri arasındaki veri akışını kontrol ettiğimiz consumer testleri var ayrıca.
Bir de modellerimizde gönderdiğimiz parametreleri kontrol edebileceğimiz bir geliştirmemiz var.
Aslında buna güvenerek biraz daha dataları kontrol edebiliyoruz.
Bunlarla birlikte aslında modelde verdiğimiz verileri çok daha yakından inceliyoruz.
A-B testlerinde mesela modellerin doğru parametrelerle çalışıp çalışmadığını ve sonuçların sistemle uyumlu olup olmadığını bu sayede kolayca görebiliyoruz.
Bu da bize sonuçların güvenilirini görmemizi sağlıyor.
Bir diğer hedefimiz de aslında Hemen modellerine daha kapsamlı testler uygulamak bahsettiğim gibi.
Şu anda üzerinde çalıştığımız projelerden biri farklı arama terimlerinin model bazlı nasıl performans gösterdiğini görmek.
Yani kullanıcıların aradığı terimlere ne kadar uygun ürünler çıkıyor.
Her iterasyonu bunu görmek istiyoruz.
Bunun için bir puanlama sistemi geliştiriyoruz ki eski ve yeni modellerde kıyaslayarak arama terimlerine ne kadar doğru ürünler döndüğünü daha net görebilelim.
Sonuçta bütün bu çalışmalar sayesinde hem modellerimizi daha iyi tanıyoruz hem de kullanıcılarımıza daha kaliteli doğru sonuçlar sunabiliyoruz.
Bu süreçte tabii sürekli yeni şeyler öğreniyoruz.
Bu da bizim için keyifli olan kısmı.
Süper. Harika.
Şimdi QA taraflarının işte testi vesaire konuştuktan sonra tabii aslında hep böyle şeyleri konuşuyoruz.
Güzel günleri konuşuyoruz.
Güneşli sabahları konuşuyoruz ama bu işin bir de...
Gece karanlığı var.
Incident'da bahsedelim birazcık da.
Biz her ekiple konuşuyoruz bu konuyu.
Sizin böyle yaşadığınız bir incident, unutamadığınız bir incident olayınız var mı?
Ve sonrasında nasıl aksiyonlar aldınız?
Benim bir örneğim var bu konuyla ilgili.
Trendyol'a daha yeni girdiğimde böyle üçüncü haftamdı sanıyorum.
Artık hani ekipteki herkesle işte bazı işlere payer olarak giriyoruz falan.
Beni de daha iyi onboard edebilmek için.
Tam o sırada bir cluster migration işi vardı.
İşte ona bir arkadaşımızla peer girmiştik.
Ekipten bir arkadaşımızla.
Ben de tabii işin genelini ben yapıyordum.
Bana yaptırıyorlardı yani. En son o zaman TBP geçişi yapılmamıştı.
Argo üzerinde deploy ediyorduk.
Ve bir manifest komite attım aslında.
Tabi bu cluster, yani normalde bir cluster migrate ederken ne yaparsın?
İşte yeni cluster'a podları çıkarsın.
Oradakine emin olduktan sonra eskisini öldürürsün.
Ama biz aynı commit'te neden yaptığımızı bilmiyorum ama aynı commit'te bunu yapmaya çalışmıştık.
Sonra tam ben böyle işte zoom'dayız iki kişi.
O commit'i attığımı hatırlıyorum.
Sonra diğer arkadaşın elektriği gitti.
Ben commit'i atar atmaz.
Ve alertler düşmeye başladı böyle Slack'ten.
İşte neredesin diyorum o da yok.
Elektrik gitmiş. Gelemedi falan baya bir süre.
Sonra işte tabii ekibin yardımıyla birlikte aslında hemen alertler düştü ama.
ekibin yardımıyla re-rank'i tekrar toparladık.
Orada yani şey iyiydi hani hiç böyle ekipten yanlış bir duygu hissetmedim yani.
Bir hataydı ama tabii Trendyol kültürüne de uygun olacak şekilde diyebilirim.
Hep böyle iyi karşılandı yani.
Orada sadece sorunu çözmeye odaklandık.
Sonrasında tabii incident kaydını işte post-mortemini hazırlamıştık.
Öyle bir anım var yani Trendyol'u 3.
haftamda böyle bir anı anlatabilirim.
Çok çok geçmiş olsun.
Yani hoş bir olay değilmiş.
Ben de dinlerken böyle bir tüylerim diken diken oldu.
Ama bundan tabii ki çıkardığınız sonuçlar daha önemli ve ekibin soğukkanlı bir şekilde hemen çözüme odaklı ilerlemesi oldukça güzel.
Bizim zaten Trendo'daki kültürümüz de bunu gerektiriyor.
Hepimiz de zaten böyle düşünüyoruz.
O yüzden tekrar tebrik ederim sonraki aksiyonlarınız için.
diyerek yavaş yavaş artık kapanışa doğru geçiyoruz.
Son iki sorum olacak. Şimdi çok güzel şeyler dinledik.
Peki bundan sonraki projeleriniz ve bundan sonraki ilerleyişiniz nasıl olacak?
Tabii ben bahsedebilirim aslında burada.
Oldukça yoğun bir backlogumuz var aslında Social Events ekibi olarak.
Bizi heyecanlandıran bir sürü proje sırada bekliyor.
Ben bunlardan kısaca bahsedeyim aslında.
İlk olarak farklı ülkelerdeki Trendyol Marketplace'inde re-rank uygulamaktan başlayabilirim.
Şu anda Türkiye ve GAF pazarlarında başarılı bir şekilde re-rank yapıyoruz.
Ancak bu başarıyı diğer pazarlara da taşımak istiyoruz.
İlk etapta da CE pazarına odaklanmak planlarımız arasında.
Burada her pazarın kendine özgü dinamikleri ve kullanıcı davranışları bulunduğu için re-rank yaptığımız her bir market için farklı feature setleri ve özel olarak eğitilmiş machine learning
modellerimiz bulunuyor.
Bu durumda aslında Search'ün performansını pozitif olarak etkiliyor.
Bu nedenle re-rank uyguladığımız alanları ve Trantio Marketplace'indeki kapsamımızı olabildiğince genişletmek istiyoruz ki kişiselleştirilmiş bir Search deneyimini her pazarda sağlayabilelim.
Aynı zamanda hem Merchant Store'da hem de FlySail gibi Trantio'nun içindeki platformlarda da re-rank uygulamayı planlarımız içinde diyebilirim.
Aslında bir diğer projemiz olan Munchat ve Pirarenk'ten de belki bahsedebilirim.
Aslında bu projede user ve item vektörlerinin benzerliklerini kullanarak arama sonuçlarını iyileştirmeye amaçlıyoruz.
Yani aslında kullanıcının geçmiş davranışlarıyla ürünün özellikleri arasındaki benzerlikleri kullanarak yani Vector Search yardımıyla daha doğru ve kişiselleştirmiş öneriler sunmayı
hedefliyoruz. Ben burada aslında pre-renkten de belki ufacık bahsedebilirim.
Daha öncesinde Search API'den Mert de bahsetmişti.
En yüksek skora sahip işte 1000 ürünün renke gönderildiğinden.
Aslında pre-renk burada daha doğru ve verimli bir seçim yapıp renke daha optimize bir ürün havuzu oluşturmamıza yardımcı oluyor.
Şu anda da bu kapsamda request anında user vektörlerini real-time olarak aslında oluşturup kullanmayı planlıyoruz.
Bu projelerle aslında biz kullanıcı deneyimini daha dinamik ve daha kişiselleştirmiş bir hale getirmeye başlıyoruz.
Bu aktardığım projeler ve aslında daha da fazlası için biz analizlerimizi yapmaya ve uygulama planlarımızı oluşturmaya kararlılıkla devam ediyoruz.
Gelecekte hayata getirdiğimiz projelerin bizi oldukça heyecanlandırıyor diyebilirim.
Çok güzel. Valla bilgisayar ağzına sağlık.
Çok güzel özetledin. Gerçekten umarım başarılarınız kat kat artar arkadaşlar.
Yavaş yavaş son sorumu da sorayım bizim artık.
Fix sorularımızdan biri.
Ekip var nargileye gider.
Ekip var araba sevdası vardır.
Ekip var işte oyundan hoşlanır.
Vesaire vesaire.
Siz ekip olarak nasıl eğleniyorsunuz arkadaşlar?
Tabii ekip olarak eğlenceye de es geçmiyoruz.
Çalışırken bahsettiğimiz gibi sürekli zoomda odalarda oluyoruz.
Soru sormak, sohbet etmek istediğimizde aynı odalarda buluşuyoruz.
Bir de birlikte cuma günleri sohbet edip oyun oynadığımız bir ayrı bir zamanımız var.
Genelde Gartic, Gartic Phone, Smash Kart gibi oyunlar oynuyoruz.
Eventlerde bir araya geldiğimizde Vampir Köylü, Jenga gibi oyunlar oynuyoruz.
Biraz yemeğe de düşkünüz açıkçası.
Ekip günleri dışında birlikte kahvaltıya veya akşam yemeği için mekanlar araştırıp farklı tatlar denemeye gidiyoruz.
Yakın zaman içinde bir yemek ağırlıklı yine Gaziantep gezisi planlıyorduk.
Bakalım. Yani gerçekten başka bir cevap beklemiyordum.
Yani her ekip de çünkü Trendle gelindi mi sanırım böyle.
Her ekip biz yemeği seven bir şirketiz anladığım kadarıyla.
Yani böyle gastronomi üzerine düşkün bir şirketiz.
Süper. Süper valla.
Arkadaşlar çok teşekkür ederim.
Yani aklı gitti valla.
Ben çok memnun oldum. sizle tanıştığıma, ekibinizi dinlediğime.
Yani çok güzel işler yapıyorsunuz ve artık yani bir Search yaptığım zaman aklıma gelecek ekiplerden biri de siz olacaksınız.
O yüzden geldiğiniz, katıldığınız için çok teşekkür ederim.
Biz de çok teşekkür ederiz.
Biz teşekkür ederiz. Süper.
66. bölümde Search Relevance ekibi bizlerle birlikteydi.
Sonraki bölümlerde farklı ekiplerle birlikte farklı bölümler kaydedeceğiz.
Bunun yanında... Yakın zamanda Trendyol Talks adında yeni bir podcast içerisinde Olmasaydı Ne Olurdu adında bir seriye başladık.
Bu seri içerisinde Trendyol kültüründen, kültürümüzden beslenen iş yapış biçimlerimizden ve ritüellerimizden konuşuyoruz, bahsediyoruz.
Trendyol Talks adı altında tüm podcast platformlarında bulabilirsiniz diyeyim.
Kendinize iyi bakın, görüşmek üzere.
Bu transkript otomatik olarak çıkarıldı; kayıtla küçük farklar olabilir.
