
Transkript
Evet, programa daha giriş yapmış olduk.
Selam Barış, Fırat. Hoş geldiniz Selam'daki programına.
Merhaba, hoş bulduk.
Hoş bulduk. Evet, artık böyle açıyoruz programları.
Hoş geldiniz diyerek. Bu kaçıncı programımız oldu?
10. 10 mı? 10, yanılmıyorsam 10 olması lazım.
Güzel. Yoksa 11 mi? 12.
11, 11. Evet, 11 galiba.
Evet, böyle bir şey. 9'dan büyük bir şey.
14. Evet, peki 9'dan büyük olan bu programımız da bugün Channel Search ekibinden.
Gizem ve Volkan bizlerle birlikte.
Hoş geldiniz arkadaşlar. Hoş bulduk.
Hoş bulduk. Bugün Channel Search ekibini konuşacağız.
Ne yapar, ne eder, ne yer, ne içer gibi konulara gireceğiz.
Öncelikle ama biraz böyle kendinizden bahsederseniz, backgroundlarınızdan bahsederseniz güzel olur.
Sonrasında Channel Search konuşmaya başlarız.
Selam tekrar. Ben başlayayım.
Ben Gizem. Yaklaşık 4 senedir QA Engineer olarak çalışıyorum.
İlk iş yerim dolaptı.
Dolaptan sonra Trendyol'a geçtim.
Trendyol'da da bir 3 senelik tecrübem var diyeyim.
2,5 seneye yakın mobil ekipte Android tarafındaydım.
Daha sonra rotasyonla Search ekibine geçtim.
Search ekibinden de 2-3 ay sonra Channel Search ekibine ayrıldık.
2 kere rotasyon yapmış olduğum gibi bir şey oldu diyebilirim.
Kısaca bu şekilde bahsedeyim.
Selamlar tekrar Volkan Mende.
Toplamda 10 yıl kadarlık bir çalışma geçmişim var.
NetAşk'ta başlamıştım.
5 yıl kadar orada çalıştım.
Sonrasında Abivas'a da çalışmaya başladım.
3 yıl kadar oradaydım. Buraya da Search takımında çalışmaya başladım aslında.
11 ay kadar önce geldim.
Gizem'in de bahsettiği gibi takım bir süre sonra Channel Search ve Trendyol Search olarak ayrıldı.
Şu an Channel Search tarafında çalışmalarımıza devam ediyoruz diyebilirim aslında.
O zaman tekrar hoş geldiniz diyelim.
Search dediniz, bir channel search dediniz.
Biraz bunu açabilir misiniz?
Channel search nedir?
Hangi, neler yapıyorsunuz biraz?
Kısaca ondan bahsedebilir misiniz?
Tabii. Channel search aslında açmadık.
İyi dedin. Channel search dediğimiz aslında kanalların olduğu yani market gibi ya da yemek gibi kanalların içerisinde bulunduğu arama takımının Bölümü aslında diyebiliriz.
Yani yemeğin, yemek uygulamasının, trend olu yemeğin, search işi ve aynı zamanda market tarafının arama işlemlerini yaptığımız bölümü diyebiliriz aslında.
Tamamen şeyde kullandığımız, yemekte ve hızlı market projesinde kullandığımız search, yukarıdaki arama tarafı tamamen sizde yani değil mi?
Aynen. Yemek ve market için markete girdiğinizde ürünleri, kategorileri getirdiğimiz ya da işte ürün kategorileri seçtiğinizde ürünleri getirdiğimiz gibi ya da yemek tarafında yukarıda arama bölümüne gidip mesela burger
yazdığınızda ya da başka bir şey yazdığınızda arama sonuçlarını getirip listelenmesini sağlayan aslında ekip diyebiliriz genel olarak.
Her ikisi için de benzer şeyler.
Peki Trendyol'da zaten bununla ilgili çalışan bir altyapı vardı ya.
Siz de bahsettiğiniz Search ekibi vardı.
Oradan... rotasyonla geçtiniz.
Burada trend yolunun search'unu kullanmama nedeniniz neydi?
Aslında şöyle söyleyebiliriz.
İlk başladığımızda market tarafını yaparken trend yolu tarafındaki altyapıyı kullanarak başladık.
Ama yemek tarafında ise çok daha farklı yeni bir yapı implement edildi.
Çünkü burada hem lokasyon bazlı arama vardı.
Yani elastik tarafında yapılan işlemlerde değişiklik vardı.
Hem de işte datanın beslenmesi ya da arka tarafta handle edilme şekliyle alakalı farklılıklar olduğu için orada tamamen çok daha farklı bir mimari kullanıldı.
Ama market tarafında ise normal search...
çeki gibi bir uygulama tarafından işte Couchbase, buralara biraz daha detayına gireriz muhtemelen ama alıp elastiğe besleme gibi daha farklı bir yönetim şekli var.
Aslında market tarafı biraz Trendyol tarafındaki Search'e benziyor diyebiliriz ama yemek tarafında çok daha farklı ekipler var.
Mesela datayı besleyen, yani ekranlardan restoran açılır, restoranın altında işte section'lar açılır, altında ürünler tanımlanır.
Besleyen ekip de çok farklı.
Arkada dönen yapılar da biraz daha farklı.
Yani iki tarafın aslında Search mekanizması birbirinden farklı denebilir.
Genel olarak. Evet. Product yapısı da bir aile farklı değil mi?
Yemeğin farklı ama dediğin gibi hızlı market bayağı trend yola benziyor.
Aynen. Yani dökümanların yapıları da çok farklı.
Tutuluş şekilleri de. Aynı şekilde mesela market tarafında elastik indeksi üzerinde mesela şu an storlar üzerinden mesela işler yürüyor.
Ama yemek tarafına baktığımızda ise orada mesela geolokasyona göre search yapılıyor.
Yani geopoint dediğimiz arka planda farklı bir elastik yapısında bir mekanizma.
var aslında. Yani o anlamda birbirinden farklı dokümanlar.
Yine zaten sahip olduğu datalar da farklı.
Yani mesela market tarafında kategori varken yemek tarafında sectionlar var gibi.
Yani arka taraftaki yapılar farklı.
Bayağı. Ya yakın zamanda aslında Pim ekibini de aldık.
Pim'in açılımı Product Information Management.
Umarım doğrudur. Aslında benim bildiğim kadarıyla ürünler Pim tarafında duruyor.
Yani market de olsa, meal de olsa ürünler büyük ihtimal Pim tarafında duruyordur diye varsayıyorum.
Ama çok yanlış da olabilir. Siz hangi domenlerle ve takımlarla yakın çalışıyorsunuz?
Aslında PIM dediğin birazcık farklı.
Bizim aslında market tarafında search yapmak için kullandığımız data source'u besleyen indexing ekibiyle birlikte çalışıyoruz.
Yemek tarafında da Atlas ekibiyle.
Atlas ekibini aslında iki tarafla birlikte çalışıyoruz.
Hem yemek datalarının girişinin yapıldığı kısım hem de BFF katmanında birlikteyiz diyebilirim.
Hem meal hem de grocery tarafında client'ın BFF'leriyle bağlantılı çalışıyoruz.
Yani biz hani birebir gittiğimiz bir client yok.
BFF'leri anlatmam gerekirse de market tarafında BFF'imiz Zeus ekibi, yemek tarafında da BFF'imiz Atlas ekibi.
Onun dışında bağlantılı olduğumuz Data Science ekibi var.
Data Science ekibiyle birlikte Search Relevancy'leriyle ilgili işler yapıyoruz genelde.
Onun dışında ekstra bir de check-out ekibiyle birlikte çalışıyoruz.
O da yemek tarafında işte sepet tarafındaki işlemlerde birlikte çalışıyoruz diyebilirim.
Channel deyince aslında ben şey diye varsaydım markettir veya işte yemektir diye varsaydım ama başka channel'lar var mı?
Şimdilik başka channel'lar yok.
Market ve yemek özelindeyiz.
Ama tabii planlar arasında...
Bunları çok arttırmak da var.
Büyük ihtimalle zaten işte Trendyol Search'tan ayrılmamızın sebeplerinden bir tanesi de buydu.
Geleceğe yatırım yani.
O yüzden bizi bekleyen yeni channel'ların olduğunu biliyoruz, düşünüyoruz diyeyim.
Çok güzel. Yeni channel'lar da gelir o zaman inşallah.
Yakın zamanda diyeyim. Biraz şeyler bahsedebilir misiniz?
Ekip yapısından. Kaç kişisiniz?
Ekipteki insanların rolleri neler?
Tabii bahsedelim. Biz şu anda toplamda 9 kişiyiz.
Bir tane product owner'ımız var.
Bir QA, bir QA tech lead'imiz var.
Toplamda 5 developer'ız ve bir tane team lead'le beraber aslında 9 kişilik bir ekip.
Ve bu ekipe de sürekli yani bu channel'ların büyümesinden bahsediyoruz.
Yani channel tarafındaki search yarın öbür gün başka channel'lar da olduğunda yani süper app yolunda, vizyonda ilerlediğimiz için farklı kanallar eklendiğinde de ihtiyacın artmasına bağlı olarak aslında takımımıza yeni kişiler
katmak için de aslında çalışıyoruz bir yandan.
Ama şu anda toplamda 9 kişiyiz diyebiliriz.
Peki hem yeni bir pandemi döneminde kurulan bir takım olması, ekibin de yeni olmasıyla.
Sen de Volkan 11 ay oldu demiştin yanlış hatırlamıyorsam.
Burada böyle ekibe yeni gelen arkadaşları onboard etmek için uyguladığınız bir strateji var mı?
Var aslında. Şöyle anlatayım.
Ben buraya başladığımda Nisan ayıydı ve önceki işlerimde çalışırken aslında eve kapandığımız dönemdi.
Yani 1-2 hafta kadarlık sürede.
Eve kapanmıştık ve iş yerine gitmiyorduk.
Öyle bir dönemde başladım. O yüzden aslında çok büyük korkularım vardı.
Ama burada uygulanan onboarding sisteminde aslında öncelikle mesela buraya başlamadan bilgisayarım geldi.
Ve hemen işte birlikte çalışacağım kişi tarafından mesela bir gün öncesinde arandım ve genel yapıyla alakalı neler yapacağız, onboarding programında neler varla alakalı aslında bilgi aldım badimden.
Bu aslında bir bakıma şöyle iyi oluyor.
Hani rahatlamanızı sağlıyor buraya başlamadan önce.
Çünkü hani beni ne bekliyor?
Hani o konuda bilgi almış oluyorsunuz.
Sonra geldikten sonra işte takımla tanışma, zaten sürekli videolarımız açık ve o şekilde iletişim kuruyoruz.
Toplantılarda da öyle hep videolarımız açıktır.
O yüzden de mesela hani insanlarla tanışma, anlaşma ve kaynaşma çok iyi oluyor.
Ve peer olarak ilerlediğimiz için de aslında bu birazcık daha kısa sürüyor.
Yani aslında onboarding programı olarak yaptığımız, uyguladığımız sistemde de Kişi geldikten sonra aslında takımla tanışıyor.
Sonra bilgisayarına gerekli kurulumlar yapılıyor.
Bu genelde ilk gün oluyor. Ve ben şeye çok şaşırmıştım.
Mesela buraya geldikten sonra hani milyonlarca tiket açmam gerekmedi bir şeyleri kurdurabilmek için.
O süreç bayağı bir hızlı ilerliyor.
Onun dışında işte çevresel bilimlerin açılması, trackpad'li, monitörlü, klavye'li bunların eve gelmesi süreci.
Ondan sonra da aslında yavaş yavaş sisteme girmeye başlıyorsunuz.
Yani body'niz tarafından size API'ler anlatılıyor, işte sistemlere erişimleriniz açılıyor.
İşte ne nerede, neyi nasıl kullanıyoruz bunlarla alakalı bayağı bir detaylı.
Yani takım KPI'larının metriklerinin üzerinden geçilmesi, işte Jira kullanımı.
GitLab erişimleri mesela projeleri yönettiğimiz şeylerde projelerin hepsi çekilir mesela ilk hafta içinde.
Ve baya ilk haftanın sonunda aslında her şeyi görmüş, her şeye erişebilmiş ve her şeyi kullanabilir hale geliyorsunuz.
O bence inanılmaz. Yani böyle anlatınca da böyle sevgi kelebeği gibi oluyorum biraz ama genelde öyle duyuluyor dışarıdan.
Ama gerçekten onboarding programı olarak inanılmaz yani.
Ben çok şaşırmıştım. Ve şeyin sonunda da bir anket geliyor doldurmanız için bir ayın sonunda.
Ve orada bir checklist var.
O checkliste baktığımda gerçekten hepsinin üzerinden geçtiğimizi gördüm.
Bu beni çok şaşırtmıştı. Genelde yeni başlayan insanların yaptığı en büyük yorumlardan bir tanesi bu.
Yani gidiyorum işte hiçbir şeye erişemiyorum, yetki alamıyorum, sistemleri bilmiyorum, ne yapılıyor etc.
Hani o bayağı iyi burada onboarding programı.
Biz de bu checklist üzerine ilerliyoruz yeni birileri geldiği zaman aslında genel olarak.
Ben de ekleme yapmak istiyorum burada.
Hem developerlarla birlikte Volkan'ın bahsettiği onboarding süreçleri ilerliyor.
Bunun dışında biz QA tarafında da bir sesyon yapıyoruz aramıza yeni katılan arkadaşlar.
Hem otomasyon projelerinin üzerinden geçiyoruz.
Hem de pipeline'daki QA test aşamasından bahsediyoruz aslında.
Onun dışında bizim farklı diyebileceğimiz QA ortamında testlerimizi koştuğumuz izole bir data ortamımız var.
Bu datalarımızı işte production'dan çekiyoruz ama istediğimiz gibi manipüle edebiliyoruz.
Burası hakkında bilgi veriyoruz.
Yine işte pipeline'ın adımlarından tek tek bahsediyoruz.
Test projelerinin de işte hangi ortamlarda çalışıyor.
Bizim iki tane pipeline'ımız var.
Bir tanesi QA çalışıyor, bir tanesi stage'de çalışıyor.
Bunlar hakkında bilgi veriyoruz.
Ben de hani dedim Android ekibindeydim.
Channel Search'a geçtim diye.
Bu geçişim tam doğum iznimin bitişine denk gelmişti.
Ve şey hani zaten 3-4 aydır çalışmıyordum.
Bir anda pat diye böyle ve hani mobile API bayağı farklı şeyler aslında domainler.
O yüzden çok böyle üzülmüştüm.
Bir hafta boyunca ağlamıştım hatta.
Ben ne yapacağım? Alışamayacağım kesin diye.
Herkes beni böyle telkin etmeye çalışıyordu falan.
Ama hani Bayağı önyargım vardı bu arada.
Ama şu an hani böyle kendimi bulmuş gibi hissediyorum ve benim için aşırı aşırı rahat geçti.
O işte onboarding süreci gerçekten çok güzel.
Ben hani hep ilk başladığımdan beri sanki Channel Search ekibindeymişim gibi hissettim ve hiç hani gerçek bir zorlukla karşılaşmadım diyebilirim.
Hani bunu da ekleyeyim istedim.
Süpermiş. Genelde burada başarılı hikayeleri dinliyoruz ama böyle kötümser başladığın bir süreci bir şekilde pozitife çevirmek de aslında çok değerli.
Ekip de sanırım bunun için bayağı uğraştı.
Bayağı sevindim ben. Çok güzelmiş.
Aslında siz soru çekimine ayrıldınız ve zaten belli başlı teknolojiler kullanıyordunuz.
Böyle yeni kullandığınız teknolojiler var mı?
Ya da belki bu süreç içerisinde onlar da yeni teknolojiye başlamışsınız, siz de başlamışsınızdır.
Neler kullanıyorsunuz?
Neden seçtiniz bunları? Bir de ek olarak böyle database...
Q ya da işte API bazında ya da başka komponentler olarak ortak kullandığınız bir şeyler var mıydı ilk etapta yoksa komple böyle devrimsel bir şekilde bir dönüşüm mü oldu?
Tamamen ayrı bir infra mı yapıldı?
Aslında şöyle söyleyebilirim.
En başta da bahsetmiştim market tarafı ve yemek tarafı diye.
Aslında baktığımızda iki taraf içinde çok çok farklı bir şey yok.
Yani gene data source olarak kullandığımız şeylerde bahsedeyim.
Mesela elastik şu anda kullandığımız bir search engine.
Zaten hani çok kuvvetli bir search engine birçok manada.
Birçok özellik açıyor. Mesela index, update, bulk, API gibi birçok API ile sizi işleri kolaylaştırıyor.
Artı performans olarak çok iyi.
Ve kibana üzerinden takip edebiliyorsunuz.
Sızıca scale edebiliyorsunuz.
Ki bizim için çok önemli. önemli scale.
Hani birçok konuda hani kasımayı yoğunluğunda da kullanabilmek için sistemlerimizin hepsine scale edilebilir olması çok önemli.
O yüzden mesela elastik bu anlamda çok kuvvetli.
Aynı zamanda data source olarak da Couchbase mesela ek olarak kullanıyoruz.
Yine yemek tarafında da market tarafında da aslında data source olarak benzer yapılar var.
Çok farklı değil. Onun dışında da işte API'lerimizi yazarken Java kullanıyoruz ama burada tabii şey yok.
Yani ille Java ile her şey Java ile yazılacak diye bir şey yok.
Şu anda API'lerimiz Spring Frame'a kullanarak Java'da yazıyoruz ama mesela buna ek olarak Kafka'dan konsüm edeceğimiz, yani Data Science ekibinin skorlar için ya da bazı şeyleri boost diyebilmek için koyduğu dataları mesela Kafka'dan alıp
konsümörleri Go ile yazarak mesela hani daha hızlı, daha performanslı diye hem Memory Positivity daha az diye, GVM'ye ihtiyaç duymuyor diye.
Mesela konsümörlerimizin Go'da yazmayı tercih ediyoruz.
O yüzden aslında direkt bir dil bağımlılığımız yok diyebilirim.
Yine az önce bahsettiğim gibi Kafka kullanıyoruz.
Ve Kafka kullanırken de aslında ekipler arasında, bu yemek tarafındaki ekiplerde de çok fazla var.
Yani datayı Kafka...
üzerine bırakması, işte sistem dağınıldığında sonra kaldığı yerden devam edebilmesi, mesajların kalıcı olması gibi özelliklerinden kaldığı yerden devam edebilmesi gibi artı yine hızlıca scale olabilmesi gibi.
Çünkü multi-d'si üzerinde baktığınızda mesela yapıları scale edilebiliyor olması gerekiyor.
O yüzden de Kafka mesela dağıtık olduğu için bu anlamda tercih edilebilir oluyor.
Onun haricinde de işte source management için GitLab kullanıyoruz.
Niye GitLab kullanıyoruz? Çünkü işte MR'larımız burada açılıyor.
MR review'larımızı burada yapıyoruz.
Artı pipeline özellikleri de bunun içerisinde geliyor.
Yine kodu pushladığımızı direkt pipeline üzerinde orada koşup deploymentlarımızı yapabiliyoruz.
O yüzden bunların hepsini bir arada yapabildiğimiz için mesela Git'le bir tercih olabiliyor.
Tasklarımızı Jira üzerinde yönetiyoruz.
Yine aynı şekilde flowchart özelliği var mesela task Jira üzerinde.
Buradan metriklerimizi alıyoruz.
Yani bir ekibin cycle time'ı, lead time'ı ya da bir open ya da işte block süresine kadar bir bunların çıktılarını alabiliyoruz oradan flowchart üzerinden.
Ve aynı zamanda planning poker'i de mesela Jira üzerinden yapabiliyoruz.
O yüzden çok çok iyi ve kullanması güzel diyebilirim.
Onun dışında containerlarımız Kubernetes üzerinde.
Yine aynı şekilde Kubernetes üzerinde uygulamalarımızı kullanıyoruz.
Bunun haricinde de monitoring için Prometheus Grafana var.
Bir de Nivre'lik kullanıyoruz. Yani apilerimizin şeyi çok önemli.
Yani mesela kod yazıyoruz ama performanslı mı gerçekten bu kod?
Çünkü şundan dolayı hani...
Kasıma yoğunluğunda sistemler scale edilip biraz rahatlatılabiliyor ama bizim apilerimizin response time'ının da belirli bir şey üzerine çıkmaması, değer üzerine çıkmaması gerekiyor.
O yüzden bunları oradan takip edebiliyoruz.
Aynı zamanda alertlerimizi de mesela oradan takip ederiz.
Onun dışında da genel olarak aslında kullandığımız işte Postman gibi ya da işte Sonar gibi, Swagger gibi ekstra şeyler var genel olarak.
Bir de biz genelde mesela yapılarımızı Lucidchart üzerinde tutuyoruz.
Orada hem bizim onboarding sürecinde anlatmak için çok faydalı oluyor hem de yapının diğer ekiplere de açık olabilmesi açısından Lucidchart üzerinde durması güzel oluyor.
Yani genel olarak aslında...
Kullandığımız yapı böyle diyebilirim.
Ve buradaki yapılar da aslında yemek ve market tarafı için ortak.
Sadece işte arka planda çalışan ekipler, paylaşılan data ya da datanın handle edildiği yer gibi böyle farklılıklar var.
Ama tool'lar genel olarak böyle.
Ama bir dil bağımlılığı var diyemeyiz direkt.
Yani her şeyimizi Java ile yazıyoruz diyemeyiz.
Mesela önceden bizim API'lerimiz mesela .NET'te yazılmış.
Ama .NET tarafında core .NET'de mesela yaşanan problemlerden dolayı HTTP faktörde mesela sorun olmuş.
O yüzden bir benchmark çalışması yapılmış.
Ve Java'da daha fazla aktığı mesela görülmüş.
O yüzden mesela Java'ya geçmiş.
O yüzden aslında sistemlerimizi sürekli yeniliyoruz diyebilirim bu anlamda.
Test tarafından da bahsedeyim ben.
Otomasyon testlerimizi Cucumber ile BDD yaklaşımıyla yazıyoruz.
Java dilini kullanıyoruz.
Burada aslında Java seçmemizin bir sebebinde ekiple ortak bir dil olması.
Bu ekiple ortak dil kullanmak şöyle artı sağlıyor.
Ben kendi adıma bunu söyleyeyim.
Bir sıkıntıyla karşılaştım ve hakikaten araştırıyorum araştırıyorum bir türlü çözümünü bulamadım.
Bu reddede işte developerlara sorduğum zaman onlardan cevap alabiliyorum.
Bu yüzden bence developerlarla ortak bir dil kullanmak bayağı fayda sağlıyor.
Onun dışında da performans testlerimiz var.
Performans testleri içinde Locust kullanıyoruz ve Python'la yazıyoruz diye özet geçeyim.
Çok güzel bir şey. Teşekkürler.
Şeyi merak ediyorum ben. Bu search tarafı bayağı bir hızlı büyüyen bir business aslında.
Ve baktığın zaman aslında bu yemek market tarafı gibi çorumlar arttıkça search'ün üzerinde olan yük de aslında artmaya başlıyor bir yerden sonra.
Ve ben son kullanıcı olarak özellikle açken bir şeyi hemen arayıp ve onu bulabilmek istiyorum.
Siz de bununla ilgili az önce anlattığınız çeşit çeşit.
integration testler gibi süreçleri işletiyorsunuz.
Peki burada deployment süreçlerini nasıl işletiyorsunuz?
Neler var? Yani bir kodu deployment süreci nasıl ilerliyor?
Onu anlatabilir misiniz biraz? Anlatayım.
Deployment sürecimiz aslında her iş teste gelip done olduktan sonra deploy edilecek şekilde ilerliyor.
Yani işte bir işi planlamada aldık, indeve geldi, code review'den geçti.
Teste geldi, testte işte bug çıktıysa bug'ları fixlendi vs.
En sonunda da işte yine pipeline'da testi geçtikten sonra işi merge ettik ve canlıya deploy edebilir hale gelmiş oluyor.
Diployumuzu yapıyoruz. Burada aslında benimsediğimiz prensip toplu deploy yerine her feature'ı kendi kendine yani ayrı tek başına deploy etmek.
Bu baya bizim özen gösterdiğimiz bir şey.
Sıklık olarak da her gün mutlaka en az bir kere deployment yapıyoruz.
Bazı günler 10 tane yaptığımız bile oluyor.
Bazen işte o deployment kanalının yarısını biz yazmış oluyoruz falan.
Böyle şeylerde hani aslında şey oluyor, güzel oluyor.
Bir yerde bence motivasyon da sağlıyor.
Evet hani nitelik çok önemli ama bugün işte 10 tane deploy çıktık, var ya çok çalıştık falan şeyleri oluyor yani.
Evet evet o kesinlikle önemli ya.
En azından ekip olarak...
O olgunluğa ilişmiş olmak da bence güzel bir şey.
Sık sık depo edebiliyor olmak.
Yani sık sık depo edebilmek dedik ama bunları da sağlamak için bazı pratikler var.
İşte ne bileyim CodeReview ve buradaki test süreci de bayağı kritik.
Siz CodeReview yapıyor musunuz?
Pair yapıyor musunuz? Test süreci nasıl ilerliyor bu işlerde?
Ondan da bahsedeyim.
Az önce de dediğim gibi her iş geliştirdikten sonra CodeReview'e açılıyor.
CodeReview'den teste geçmesi için de en az ikiye prova alması koşulumuz var.
Hatta bazı işleri analiz olarak alıyoruz mesela.
Mutlaka analizleri de toplantı ile tüm takım birlikte revüve ediyoruz ve işi o şekilde kapatıyoruz.
Bizde tüm işler Payr ilerliyor.
Bir Payr Metrics'imiz var.
O Excel'de işte herkesin...
Birbiriyle pay yapmasına özen gösterecek şekilde her hafta planlama sonrasında pay'leri belirliyoruz.
Bir sprint boyunca o haftanın pay'leri kimse aldıkları her işi birlikte ilerletiyorlar.
Genelde de deployment'ları bizde QA yapıyor.
Ama mesela çok büyük işler var veya işte birbirini etkileyen birden fazla iş var.
Böyle sıkıntı çıkarabileceğini öngördüğümüz işlerde developerlarla birlikte diplomatiği yaptığımızda oluyor.
Integration test yazıyoruz.
Bunun dışında her geliştirmenin unit testini de yazıyoruz.
Developerlar geliştirmeleri unit testiyle yazıyor.
Bu unit testlerin feature branchinde ve developta %90 coverage sağlıyor olmasını bekliyoruz.
Sonlarda tüm metriklerde A olması gerekiyor.
Onun dışında da planlamadan sonra her işin test case'lerini çıkartıyoruz.
Bu case'lerin otomasyon testlerini de yazıyoruz.
Yapıyı etkileyecek response time'leri yükseltme ihtimali olan işlerde deployment yapmadan önce performans testinde koşup before after karşılaştırmasını yapıp ona göre bir karara varıyoruz.
Daha sonra da feature branch'in testleri sakses olursa dediğim gibi az önce de işi mulçluyoruz.
Developed'daki kodunda deployment'dan önce tekrar otomasyon testleri çalışıyor.
Ve yine orada da otomasyon testleri sakses olmadan deployment'ı yapamıyoruz aslında.
Burada gitmek istediğimiz nokta diyeyim bizim ekip olarak.
İşin geliştirmesiyle testinin aynı anda başlaması.
Şu an bunun için çalışıyoruz.
Search tarafındayken minik minik başlamıştık.
Burada da biraz şeyimizi oturttuktan sonra artık yavaş yavaş buna başlayacağız.
Planlamada mesela bir iki tane pilot iş seçiyoruz.
Eş zamanlı başlaması için.
Developer geliştirme yaparken ben de QA olarak onun otomasyon testini.
Aynı zamanda yazıyorum ve aslında işin geliştirmesi de bittiğinde testi de hazır oluyor ve hızlı bir şekilde deployment yapabilir hale geliyoruz.
Bir de ben Gizem'in söylediklerine bir ek yapmak istedim.
Hani az önce de bahsettik ya çok fazla deployment yapıyoruz, çok sık deployment yapıyoruz.
O yüzden aslında pipeline'ımızın çok kuvvetli olması lazım.
Gizem'in de anlattığı gibi bir sürü süreçlerden geçiyor.
aslında. Ama bu pipeline'ımız biz yani one click deployment dediğimiz yani tıklayayım 15 dakika içerisinde o pipeline'den geçip kod canlıya çıkabilsin.
Bu vizyonla ilerleyip aslında bu noktayı ilerlemek için.
Bir de ek olarak şu an p-test kullanmaya başladık.
Bu da aslında şunu yapıyor. Yazdığımız unit testleri mütehit ederek yani shift ederek yani bozarak aslında test case'lerimizin üzerinde koşup o test case'lerin ölmesini bekliyor.
Yani aslında yazdığımız testi test eden Bir tane uygulama.
Bu da şey açısından çok iyi oluyor.
Gerçekten ben cover edebildim mi?
Use case'lerim doğru mu? Gerçekten doğru test kodu yazabildim mi?
Bunu verifiye etmiş oluyor. Aslında pipeline'in kuvvetli olması açısından da bu P-Rest'e gerçekten kullanılabilir.
Şu an bir tane hapimizde uygulamaya başladık.
KPI'lerimizi de ekledik.
Yani takip ediyoruz şu anda.
Diğer hapilerimizi de uygulayacağız diyebilirim.
Ben size bir reklam yapayım biraz.
Bu mutation testing ve p-testing ile ilgili senin bir yazın vardı Trendyol Medium sayfasında.
Merak edenler varsa oraya bakabilirler diyeyim.
Ve topu fırata atayım.
Teşekkür ederim. Ya ben de p-testing soracaktım ama yazı varsa daha sonra okuyabilirim de.
Kontrat testi soracaktım ben.
Aslında siz sonuçta Zeus'a da çalışıyorsunuz.
Trendyol webleri çalışıyorsunuz.
Kontratın bozulup bozulmanı nasıl anlıyorsunuz?
Kontrak testlerini yazıyoruz.
Bahsettiğim test otomasyon kısmında kontrakları da kontrol ediyoruz.
Bunlar az önce işte pipeline'da dedik ya bir işte feature branch'de otomasyon testleri çalışıyor pipeline'da.
O geçtikten sonra işimi aşılıyoruz ve o iş tekrar işte develop'a gittikten ve deploy olacağı zamanda da tekrar stage'de testler koşuyor.
Burada stage'de testler koşarken de aslında hani kontrak bir yerde bozulduysa testimiz patlıyor ve müdahale ediyoruz.
Genelde Trendyol'da nivrelik kullanılıyor ama sizin böyle monitoring için, alert mekanizması için kullandığınız tool'lar neler orada?
Aynen, alertler için aslında nivrelik kullanıyoruz.
Nivrelikte tanınmış olduğumuz rule'larla aslında error'ların belirli bir threshold üstüne çıkmasıyla bizim Slack kanallarımıza bu mesajlar düşüyor.
Yani alertler düşüyor ve hemen hızlıca tıklayıp o error'ları görebiliyoruz detayını.
Aynı zamanda mesela hangi poddan gelmiş, onun adı, idsini alıp mesela Kibana üzerinde gidip Grafana'da mesela sorgulayıp o podu.
Hani memory'de mi bir sıkıntı var, CPU'da mı bir sıkıntı var?
Onları da mesela takip edebiliyoruz grafana üzerinde.
Yine aynı şekilde elastik metrikleri de mesela o grafana üzerine tutuluyor.
Ve elastikte bir sıkıntı mı var mesela orada grafana da mesela bunu izleyebiliyoruz.
Aynı şekilde kübernce spotlarının metrikleri de yine orada.
Buna ek olarak da mesela indexing takımı var bizim, datalarımızı besleyen.
Indexing takımının invalidasyonları, yani bir data değiştiği zaman invalidasyon atıyorlar ve data değişmiş oluyor.
Bu invalidasyonları takip edebildiğimiz yine aynı şekilde Kibana üzerinde bir alan var.
Bir incident oluştuğu zaman da Slack grubumuzda alert düşüyor ve hızlıca müdahale ediyoruz.
Aslında P1 ise direkt bu alertlerden bulunup çözülebiliyor.
Yine aynı şekilde market ve yemek için ayrı ayrı olmak üzere Slack gruplarımız var.
Ve bu Slack gruplarında işte hem feedbackleri alabiliyoruz orada.
Bir problem yaşandıysa işte şunu yaptım ama olmadı ya da bunu buraya girdim ama gelmedi gibi.
Bu tarz kullanıcılardan da yani şirketi içerisindeki kullanıcılardan da yine bu şekilde sorunların raporlandığı durumlar oluyor genel olarak.
Oradan da yine sorunları bulup çözüyoruz.
Biraz konuyu değiştirecek bir şey sormak istiyorum.
Sizin takım olarak en büyük challenge'ınız nedir?
Bizden çok zorlayan şey ne oluyor?
Burada aslında iki tane challenge var denebilir genel olarak.
Birisi business anlamda.
Yani search gerçekten çok büyük bir alan.
Ve yani gidebilirsiniz çok çok fazla şey var.
İşte NLP'si var, machine learning'i var.
Hani gerçekten bir dipsiz kuyu denebilir aslında genel olarak.
Ama bizim aslında yapmak istediğimiz şey bir törme.
Yani bir arama yapıldığı zaman en relevant result'ı vermek.
Çünkü kullanıcı bir şey aradığı zaman, alakasız ürünleri gördüğü zaman hani farklı düşünebiliyor ya da soğuyabiliyor.
Aslında yapmış yapılmış olan aramanın kalitesinin yüksek olması lazım.
O yüzden de biz bu maksatla aslında arka planda bazı stratejiler koşuyoruz.
Yani aslında genel olarak baktığımızda işte aradım geldi, işte indeksten sorguladım geldi gibi değil de arka planda aslında çalıştırdığımız stratejiler var.
Ve bu stratejilerle en iyi sonucu vermeye çalışıyoruz.
Yani arandı mesela, bulamadıysam yanlış yazdı acaba deyip mesela fazil uygulamak gibi.
Ya da bulamadıysam kategoriyi arayayım, kategoriye göre getireyim gibi.
Böyle arka planda işlettiğimiz aslında stratejiler var.
Birincisi bu. Yani en relevant sonucu vermek.
İkincisi de aslında scale konusu.
Bu da az önce bahsettiğim gibi gerçekten hani bazı dönemlerde özellikle çok yoğun kullanımlarda responsanlarımızdaki artışlar yani kullanıcı işte mesela bir Kasım ayında arama yaptığı zaman hani bunun
geç geliyor olması ya da aramanın sonucunun gelmiyor olması gibi durumlarda hani burada scale'in yaptığımız her işin içine dahil edilmiş ve performanslı bir şekilde çalışıyor olması en önemli işlerimizden bir tanesi.
Yani bir işin 10 tane handle edilmesi şekli vardır ama en iyisini bulmak için aslında genel olarak benchmark'lar yapıyoruz.
Hani bunu mu kullanalım, şunu mu kullanalım, hangisi daha iyi olur gibi.
O yüzden ikincisi de scale diyebilirim.
Yani aslında gerçekten çok az sorun çıkan bir ekip gibi hissediyorum bu konuştuğumuzun üzerine ama yine de şeyi soracağım.
Son Retro'da ne konuştunuz?
Böyle Retro'dan çıkan ve böyle iyileştiğiniz bir şey var mıdır?
Bunu da ben anlatayım. Özellikle son Retro'da konuştuğumuz bir problemimiz vardı, o da şu.
Şimdi yeni kurulan bir takım olduğumuz için ve ekibe de yeni dahil olan kişiler olduğu için henüz velositimizi tam belirlemedik.
Bu yüzden sprintte ne kadar işi eritebiliyoruz görmek için çok fazla iş aldık.
Bu da psikolojik olarak bizi bayağı etkiledi ve ekip olarak bunun farkına varıp Retro'da bunu dile getirdik.
Daha sonraki sprint biraz daha optimum düzeyde iş aldık ve gerçekten başarılı bir sprint geçirdik.
Bir de bir örnek daha vereceğim.
O da peyir sırasında use together kullanıyoruz.
Burada ama sadece peyirler birbirleriyle ekran ve ses paylaşımında bulunuyor.
Onun dışında işte atıyorum ben Volkan'la bir peyirdeyim ama işte bana ulaşmak isteyen Ahmet var diyelim.
Ama işte sileyime bakmıyorum vs.
bana bir şekilde ulaşılamıyor.
Bunun kötü bir uygulama olduğunu fark ettik.
Ve herkesin aslında hani ofisteyken birbirimize erişme kolaylığını tekrar sağlayabilmek için.
Discord'da kanal oluşturup hani her payir bir kanala girsin diye bir karar verdik.
Bunu da uygulamaya başladık ve gerçekten çok işe yaradı.
İşte yine ben hani Volkan'la payirdeyken Ahmet ben ulaşmak istediği zaman Discord'da geliyor.
İşte hello diyor, ne yapıyorsunuz diyor.
Biz işte onu duyup hemen işte yanına gidip, yanına gidip dediğim yani şey olarak Discord'da yanına gidip işte sorun ne, ne oldu bunları konuşup hemen işte birbirimizle.
iletişim kurabilir hale geliyoruz.
Bayağı hızlı bir iletişim sağlıyor.
Özellikle remote çalıştığımız bu pandemi döneminde de bence bayağı faydalı bir pratik oluyor diyebilirim.
Biz de çok benzer bir şey yapıyoruz.
Onur söylemişti galiba bize daha önceki programlardan birinde.
Biz de uygulamaya başladık. Biz Discord yerine Zoom'u kullanıyoruz.
Herhangi birisi peer yapmaya başladığı zaman iki kişi direkt Zoom kanalı oluşturuyorlar ve onu bizim bir şeyden paylaşıyorlar.
Peer kanalımız var. Oradan paylaşıyorlar.
Herhangi birisi işte böyle yarım saat, bir saatlik böyle boşluğu bir şey olduğu zaman hemen istediği kişinin yanına gidip hemen eline dair olabiliyor.
Bizim için bayağı güzel oldu.
Sizde de anlaşılan böyle güzel bir etkisi olmuş.
Aynen bu dediğin Zoom olayını mesela biz Kasım ayında yapmıştık.
Zaten hani 7-24 sürekli nöbet tutan birileri olduğu için işte sabahtan bir tane Zoom açılıyordu.
İşte ilk atıyorum.
3-4 saat Ahmet ve Mehmet var.
İşte ben ama gizem olarak hani nöbet saatinde değil ama merak ediyorum ne olup ne bitiyor.
Ben de girip hemen o Zoom linkinden dahil oluyordum.
Veya işte yine bizim bitti, başkası girdi.
Merak eden herkes o anda gelip olaydan haberdar olabiliyordu.
Bu yüzden gerçekten Zoom da güzel bir pratik gerçekten.
Askerlik şey olmuş, nöbet sistemi gibi olmuş.
Yeni gelenler olduktan sonra kanalı boşaltıyorsunuz, yeni gelenler geliyor değil mi?
Aynen. First in, first out.
Canlı sistemde yaşadığınız bir problemi, incident örnek var mı?
Son zamanlardan aklınıza gelen böyle.
Ve nasıl çözdünüz? Sonrasında bir daha yaşanmaması için nasıl aksiyonlar aldınız?
Biz aslında incident yaşamıyoruz diyeyim.
Bunun sebebi de production deployment'larına cluster cluster çıkıyor olmamız.
Yani biz hani deployment yapacağımız zaman önce bir cluster'a deployment yapıp onu takip ediyoruz.
Eğer herhangi bir sıkıntı varsa podlardan sadece bir tanesi etkileniyor.
Diğerleri zaten ayakta olmuş oluyor.
Eğer bir sıkıntı varsa az önce Volkan bahsetmişti işte Slack'ten alertler geliyor vs.
Zaten biz de Nivrelik'ten deployment'ı takip ediyor oluyoruz.
Burada bir response time'da artış olduğunda, alert geldiğinde, işte error olduğunda Hemen fark edip hızlıca deployment'ı geri alıyoruz.
Diplomat'ı geri almak dediğimde bir önceki canlıya çıkmış pipeline'ı tekrar çalıştırmak oluyor.
Ben geçen gün kokoreç aradım.
Neyse tam espri yapacaktım ama tutmayın.
Hadi yap yap. Hala yapabilirsin ya.
Bir yan geldi falan diyecektim ama yani böyle bir şey yaşanmadı o yüzden.
Bir daha istirahat.
Aynen aynen. Bir daha kimse gelmesin diye.
Arkadaşlar bu arada teşekkürler yayına katıldığınız için.
Yavaş yavaş böyle kapatalım diyorum.
Ama kapatmadan önce Volkan'ın bir sözü vardı.
Bir piano resta verecekti bize.
Aynen. Heyecanını çalamazsam bilemiyorum tabii ya.
Deneyelim. Gizem de belki şarkı söyler o esnada.
Mükemmel bir ortam. Gizem sen eşlik edebilirsin.
Böyle bildiğimiz bir pop şarkısı falan var mı?
Volkan. Piyano ile çalınabilen.
Karabiberim. Genelde böyle şey yani popüler işte klasik parçalar şeyler yani böyle bizim söylediğimiz ama yani öğrenmek lazım.
Gene böyle ortamlarda çalmak için derler ya Akdeniz akşamları mesela gitar çalan herkes mutlaka çalar yani.
Evet aslında. Piyanonun Akdeniz akşamları ne acaba?
Yani değil mi? Evet.
Ses bu arada iyi geliyor mu size?
Güzel geliyor. Bayağı güzel geliyor.
Çok güzeldi
gerçekten. Aynen. Ben biraz utandım ya.
Karabiberim falan. Ellerine sağlık Volkan.
Teşekkürler. Çok teşekkürler.
Teşekkürler. Ne oldu?
İyidir sen. Ne oldu?
Ne yaptım? Kapandı sandım.
Herkes bir anda susunca.
Böyle kapansın bu da o zaman.
O zaman böyle kapansın.
Yani o kadar iyiydi ki şu an ne konuşacağımı bilmiyorum.
Direkt müzikle kapanıyor değil mi?
Azalarak gidiyor falan. O zaman tekrar teşekkürler arkadaşlar diyeyim ve gerçekten kapatalım.
Biz teşekkür ederiz.
Sağ olun.
Bu transkript otomatik olarak çıkarıldı; kayıtla küçük farklar olabilir.
