Weglot

Web sitesi tarayıcımızı inşa etmek: Weglot'un teknolojisine bir bakış

Web sitesi tarayıcımızı inşa etmek: Weglot'un teknolojisine bir bakış
Etienne
Yazan:
Etienne
Gözden geçiren:
Güncelleme:
19 Haziran 2023
26 Mayıs 2025

Birçok Weglot kullanıcısı, web sitelerinin tüm URL'lerinin doğru bir şekilde çevrildiğinden emin olmak ister( Weglot tarafından verilen ilk makine çevirisi katmanından sonra). Birçoğu için, birçok dile çevrilmiş büyük bir web sitesine sahipseniz, bu zaman alıcı olabilir.

Ayrıca kullanıcılarımızdan gelen geri bildirimlerden, bazılarının ilk web sitesi çeviri projelerine başlarken kafalarının biraz karıştığını fark ettik. Çeviri listesinde neden sadece ana sayfa URL'lerini görebildiklerini ve diğer tüm sayfaları göremediklerini veya içeriklerinin çevirilerini nasıl oluşturacaklarını merak ediyorlardı.

Dolayısıyla, bu alanda iyileştirmeye açık bir alan olduğunu biliyorduk. Kullanıcılarımızın gemiye daha kolay binmelerine ve projelerini daha hızlı ve verimli bir şekilde yönetmelerine yardımcı olabilirdik, ancak tek sorun henüz bir çözümümüzün olmamasıydı.

Zaten tahmin edebileceğiniz gibi... bu, kullanıcının web sitesinin URL'lerini taramasına ve çevrilmiş içeriğini Weglot Dashboard'dan hızlı ve verimli bir şekilde oluşturmasına olanak tanıyan URL'leri Yönet özelliğinin yayınlanmasına yol açtı.

Yakın zamanda bu özellik Çeviri Listesi'nden daha esnek ve güçlü hale getirildiği yeni URL'ye göre çeviri yönetimi sayfasına taşındı, bu nedenle size bu özelliğin nasıl hayata geçirildiğini anlatmanın tam zamanı olduğunu düşündük.

Golang kurtarmaya geliyor

2020'nin başında pandemi nedeniyle yaşadığım karantina, zaman yetersizliği nedeniyle ertelemek zorunda kaldığım programlama dili Golang'ı öğrenmeyi nihayet ele alma fırsatı verdi.

Golang (ya da kısaca Go), Google tarafından üretilen ve son birkaç yıldır büyük ilgi gören bir dildir.

GOLANG

Geliştiricilerin hızlı, sağlam ve eşzamanlı kod yazmalarına yardımcı olmak için tasarlanmış statik olarak derlenmiş bir programlama dilidir. Basitliği, performanstan ödün vermeden büyük ve karmaşık programların yazılmasına ve sürdürülmesine olanak tanır: Golang, Python ve C'nin beklenmedik çocuğu olarak görülebilir: (oldukça) yazması kolay ve gerçekleştirmesi hızlı.

Bana göre yeni bir programlama dili (ya da yeni bir framework ya da her neyse) öğrenmenin en iyi yolu, öğrendiklerinizi uygulamaya koyabileceğiniz iyi bir proje bulmaktır. Bu kolay bir iş değil: eğer geliştiriciler bunu okuyorsa, bunun ne kadar zor olabileceğini bilirler

İyi bir yan proje bazı özellikleri karşılamalıdır:

  • Kapsam, geliştiricinin programı oluştururken öğrenmekte olduğu teknolojiyi yeterince öğrenebilmesi için yeterince büyük olmalıdır: konsola 'Merhaba dünya' yazdırmak, yeni bir dili kavramak için nadiren yeterlidir.
  • Kapsam, geliştiricinin muhtemelen projeyi tamamlamadan vazgeçeceği kadar büyük olmamalıdır (hepimiz o yollardan geçtik).
  • Son olarak, yapması eğlenceli olmalı! Bir yapılacaklar listesini 200. kez programlamak çok eğlenceli olmayacaktır, muhtemelen nasıl çalıştıracağınızı kavramsallaştırdığınız anda pes edeceksiniz. 
  • Bonus puan: Yan proje ideal olarak gerçek dünyadaki bir sorunu çözecektir, bu da göreve odaklanmaya yardımcı olur.

Peki bundan neden bahsediyorum? Golang öğrenmeye başlamak için harika bir yan projenin ne olabileceğini düşünürken, bir web tarayıcısının yukarıdaki tanıma mükemmel bir şekilde uyabileceği ve Weglot kullanıcıları için düzeltmek istediğimiz bazı sorunları da çözebileceği aklıma geldi.

Bir düşünelim, bir web tarayıcısı (genellikle 'bot' olarak adlandırılır), en basit haliyle, bir web sitesini ziyaret etmek ve bilgi almak için yapılmış bir programdır.

Bir web tarayıcısının tipik bir kullanım durumu, bir web sitesinin her sayfasını keşfetmek ve ziyaret etmek ve ardından bir site haritası oluşturmak olabilir. Ya da içeriğini indekslemek, örneğin Google botlarını düşünün.

Bizim durumumuzda, kullanıcılarımızın web sitelerini taramak ve sitelerinin tüm URL'lerini geri almak için kullanabilecekleri bir şeye ihtiyacımız vardı. 

Ayrıca çeviriler oluşturmak için yeni bir yol arıyorduk. Weglot'a aşina olmayanlar için yan not...'çeviri oluşturmak', URL'lerinizin (ve içindeki içeriğin) Weglot çevirileri listenizde görünmesi ve çevirilerde manuel düzenlemeler yapmanıza olanak sağlaması anlamına gelir.

Bu noktada, kullanıcıların bunları oluşturmak için web sitelerini çevrilmiş bir dilde ziyaret etmeleri gerekiyordu. Web sitenizin yalnızca birkaç sayfası olduğunda ve çok fazla çevrilmiş diliniz olmadığında gerçekten işe yarıyor, ancak binlerce sayfalık çok büyük bir web sitesine sahipseniz hızla bunaltıcı bir görev haline gelebilir.

Bu görevi otomatikleştirmek için bir web tarayıcısı kullanma fikri hızla ideal bir çözüm gibi görünmeye başladı ve Golang eşzamanlı programlama özellikleri için mükemmel bir kullanım örneği olacaktı!

Böylece Ocak 2020'de Golang'ın temellerini öğrenirken bir web tarayıcısının prototipini oluşturmaya başladım ve çok geçmeden Weglot'un CTO'su Rémy'ye gösterebileceğim bir şeyim oldu. 

Çok fazla bir şey değildi, bir URL'yi girdi olarak alan ve bulduğu her aynı alan bağlantısını ziyaret ederek web sitesini taramaya başlayan basit bir programdı, ancak hızlı ve etkiliydi.

Hızlı bir gösterimin ardından Rémy, sunulan çözümden ve POC'yi (kavram kanıtı) tamamlamak için araştırma ve geliştirme için gereken zamanı ayırmaktan ve ardından çözümü gelecekteki üretim kullanımı için nasıl barındırabileceğimizi düşünmekten heyecan duydu.

POC
Remy'ye gösterdiğim POC'nin geç ve daha sofistike bir versiyonu

Bir yazılım mühendisi olarak, kendi başınıza bir şey üzerinde çalıştığınızda ve daha sonra ürününüzü tamamen geliştirmek için zaman verildiğinde gerçekten harika hissediyorsunuz. Bu harika bir onaylanma hissi ve beni üretime hazır bir ürün elde edene kadar(ki hala önümüzde uzun bir yol vardı) motive ediyordu.

Barındırma Sorunu

Hala içerik oluşturma özelliğine ve farklı CMS entegrasyonlar arasındaki farkları dikkate almak için bazı ek çalışmalara ihtiyaç duyan botu tamamlamanın yanı sıra, botu nasıl barındırabileceğimizi ve kullanıcılarımıza nasıl sunabileceğimizi düşünmeye başladım.

İlk düşüncem klasik ve kendini kanıtlamış bir çözüm kullanmaktı: AWS'de bir hesaplama örneği oluşturmak ve botu bir web sunucusunun arkasına yerleştirmek. İyi bir fikir gibi görünüyordu ancak üzerinde düşündükçe birkaç konu hakkında daha fazla endişe duymaya başladım.

İlk olarak, sunucunun alması gereken ücret ve aynı anda kaç kullanıcının bu özelliği kullanacağı hakkında hiçbir fikrim yoktu. Sağlanan kapasite yeterliyse ancak aniden çok sayıda kullanıcı aynı anda farklı çok büyük web sitelerini tararsa ne olur?

Daha önce bir Go programı barındırma deneyimim olmadığı için, hangi kaynakların (CPU, RAM...) harika bir kullanıcı deneyimi sağlamak için yeterli olacağını belirlemek zordu.

Ayrıca, klasik 'her zaman açık' web sunucusunun en verimli çözüm olmadığını düşündüm. İnsanlar web sitelerini sürekli taramayacaktı: URL'lerinizi içe aktardıktan ve içeriğinizi oluşturduktan sonra, sık sık yeni / güncellenmiş içerik yayınlasanız bile botu günlük olarak kullanmamanız gerekiyordu.

Bunu düşününce, sunucusuz barındırma için mükemmel bir kullanım durumu gibi görünmeye başladı.

Birkaç yıl önceki sunucusuz trendini kaçıranlar için nasıl çalıştığını hızlıca özetleyeceğim:

  • Sunucusuz olarak adlandırılmasına rağmen, kod hala bir sunucu üzerinde çalışır
  • Her zaman çalışan ve bağlantıları dinleyen bir sunucunun aksine, sunucusuz kod talep üzerine çalışır, sunucusuz kod tetiklendiğinde, bulut sağlayıcısı kodun çalışması için bazı kaynaklar sağlayacak ve tahsis edecektir.

Bu barındırma modeli hemen 2 ana avantajla birlikte gelir:

  • Geliştiricilerin altyapıyı yönetmesi gerekmez, her şey sağlayıcı tarafından yapılır. Bu, sunucu güvenliği veya yapılandırması hakkında endişelenmenize gerek olmadığı anlamına gelir.
  • En önemlisi, tasarım gereği ölçeklenebilir! 

Bir sunucunun botu çalıştırmak için hangi kaynaklara ihtiyaç duyacağını tahmin etmenin zor olduğunu söylediğimi hatırlıyor musunuz? Artık bununla uğraşmanıza gerek yok, her istek için kodunuzu içinde çalıştırmak için yeni bir durumsuz izole konteyner oluşturulur, sunucunun kapasitesini aşma riski yoktur, her istek içinde çalışmak için kendi konteynerine sahip olur.

Yani, mümkün olan tüm dünyaların en iyisinde her şey en iyisi için mi? Neredeyse!

2020'de sunucusuz bilgi işlem 5 dakika ile sınırlıydı (en azından AWS için, Google Cloud Platform veya Microsoft Azure'da sunucusuz barındırma konusunda deneyimim yok). Bu barındırma modeli, örneğin bir pdf oluşturmak veya görüntüleri kırpmak gibi kısa görevler için tasarlandığından çok mantıklı. 

Ancak bizim durumumuzda 5 dakikalık süre zorlu bir sorundu. Küçük, hızlı yanıt veren bir web sitesini taramak için fazlasıyla yeterli olsa da, kolayca on binlerce sayfaya sahip olabilen ve bazen yanıt vermesi biraz yavaş olan büyük e-ticaret web siteleri için görevi tamamlamadan önce kesinlikle sınıra ulaşacaktır.

AWS 2020'nin başlarında bir duyuru yaptığında tam da sunucusuzdan vazgeçmek üzereydim - 5 dakika sınırını 15 dakikaya çıkaracaklardı! 

Ne yazık ki, AWS'de sık sık olduğu gibi, yeni özellikleri duyurduklarında bunlar hakkında çok fazla bilgi vermiyorlar, süre sınırı uzatıldı ancak nasıl elde edileceğine dair hiçbir açıklama yoktu.

Limiti 15 dakikaya nasıl uzatacağımı bulmak için yaptığım birçok deneme yanılma ve araştırmadan sizi kurtaracağım ama sizi temin ederim ki bu hiç kolay olmadı 🙂

5 dakika sınırı aslında altyapı düzeyinde uygulanan bir sınırdı, AWS farklı hizmetleri arasında 5 dakikadan fazla bir HTTP bağlantısını sürdürmez, çözüm basitçe sunucusuz kodu bir HTTP çağrısıyla tetiklememekti, başka birçok yol var, bizim durumumuzda SQS ile bir tetikleme ayarladık: AWS mesaj kuyruklama hizmeti.

Sonuçların İletilmesi

Barındırma sorunu çözüldükten sonra, günü sonlandırmadan önce tamamlamamız gereken bir görev daha vardı. 

Şimdiye kadar ölçeklenebilir ve uygun maliyetli bir şekilde barındırılan çalışan bir botumuz vardı, ihtiyacımız olan son şey bot tarafından üretilen verileri kullanıcılara geri göndermekti.

Bu özelliğin mümkün olduğunca etkileşimli olmasını istediğim için bot ile Weglot kontrol paneli arasında gerçek zamanlı iletişim kurmayı tercih ettim.

Bu tür bir özellik için gerçek zamanlı olmak zorunlu değildir, her zaman uzun yoklama gibi daha basit bir çözümle yetinebilirsiniz, ancak kullanıcılarımızın tarayıcı işine başlar başlamaz geri bildirim alacağından emin olmak istedim ve dürüst olalım, bu aynı zamanda botun parlamasına ve potansiyelini göstermesine izin vermenin bir yoluydu 🙂

O zamanlar gerçek zamanlı iletişimi idare edecek bir şeyimiz olmadığından (bunu kullanmıyorduk) kanıtlanmış bir çözüme gitmeye karar verdik, nodejs'de basit bir websocket sunucusu yazdık ve bir EC2 AWS örneğinde barındırdık.

Websocket sunucusuyla iletişimi gerçekleştirmek ve dağıtımı otomatikleştirmek için bot üzerinde biraz çalıştıktan sonra, nihayet üretime geçmeden önce test etmeye hazırdık.

Bir yan proje olarak başlayan şey sonunda gösterge tablosuna girdi. 

Tarayıcıyı yazarken ve karşılaştığım sayısız sorunu çözerken çok eğlendim. Sonunda çok şey de öğrendim: yeni bir programlama dili ve AWS ekosisteminde yeni beceriler.

Go kesinlikle tekrar kullanacağım bir dil, ağ görevleri ve işbirlikçi programlama için gerçekten parlıyor. Ayrıca Js, PHP veya Python gibi dillere kıyasla düşük bellek ayak izi nedeniyle sunucusuz hesaplama ile eşleştirmek için çok iyi bir dil.

Bot bizim için yeni perspektifler açtığından, gelecek için bazı planlarımız var. Kelime sayım aracımızı daha verimli ve performanslı hale getirmek için yeniden yazmayı planlıyoruz, ayrıca önbelleği ısıtmak (verilerle doldurmak) için de kullanabiliriz.

Umarım Weglot'un teknolojisine bu bakıştan benim bu makaleyi yazmaktan keyif aldığım kadar keyif almışsınızdır, botu kendiniz denemekten çekinmeyin!

yön simgesi
Weglot'u keşfedin

Sitelerini Weglot ile çeviren 110.000'den fazla markaya katılın

Web sitenizi yapay zeka ile anında çevirin, insan düzenlemeleriyle iyileştirin ve dakikalar içinde yayına alın.

Bu makalede şunları inceleyeceğiz:
Roket simgesi

Başlamaya hazır mısınız?

Weglot'un gücünü anlamanın en iyi yolu, onu bizzat görmektir. Hiçbir taahhüt olmadan ücretsiz deneyin.

Weglot'un gücünü anlamanın en iyi yolu, onu bizzat görmektir. Hiçbir taahhüt olmadan ücretsiz deneyin.

Web sitenizi henüz bağlamaya hazır değilseniz, kontrol panelinizde bir demo web sitesi mevcuttur.

Beğenebileceğiniz diğer yazılar

Hiçbir öğe bulunamadı.
SSS simgesi

Sıkça sorulan sorular

Hiçbir öğe bulunamadı.

Mavi ok

Mavi ok

Mavi ok