Fleet Engine ve Fleet Etkinlikleri Referans Çözümü ile neredeyse gerçek zamanlı etkinlikler oluşturun

Sahada faaliyet gösteren filodan gelen neredeyse gerçek zamanlı sinyaller, işletmeler için çeşitli açılardan faydalıdır. Örneğin, işletmeler bunları kullanarak:

  • Filolarının performansını izleyin ve olası sorunları erken aşamada tespit edin.
  • Doğru tahmini varış zamanları ve takip bilgileri sağlayarak müşteri hizmetlerini iyileştirme
  • Verimsizlikleri belirleyip gidererek maliyetleri azaltma
  • Sürücü davranışını izleyerek ve olası tehlikeleri belirleyerek güvenliği artırma
  • Verimliliği artırmak için sürücü rotalarını ve programlarını optimize etme
  • Araç konumunu ve hizmet saatlerini izleyerek düzenlemelere uyun

Bu belgede, geliştiricilerin Google Haritalar Platformu'nun "Mobilite hizmetleri"nden ("Son Kilometre Filo Çözümü" (LMFS) veya "Talep Üzerine Yolculuk ve Teslimat Çözümü" (ODRD)) gelen sinyalleri nasıl uygulanabilir özel etkinliklere dönüştürebileceği açıklanmaktadır. GitHub'da bulunan Filo Etkinlikleri Referans Çözümü'nün temel kavramları ve tasarım kararları da ele alınır.

Bu belge şu kişiler için geçerlidir:

  • Google Haritalar Platformu'nun "Mobilite hizmetleri" ve temel bileşenlerinden biri olan "Filo Motoru" hakkında bilgi sahibi olan mimarlar. "Mobilite hizmetleri" konusunda yeniyseniz ihtiyaçlarınıza bağlı olarak Son Kilometre Filo Çözümü ve/veya Talep Üzerine Yolculuk ve Teslimat Çözümü hakkında bilgi edinmenizi öneririz.
  • Google Cloud'a aşina olan mimarlar. Google Cloud'u yeni kullanmaya başlayanlar için Google Cloud'da akış verisi ardışık düzenleri oluşturma başlıklı makalenin önceden okunması önerilir.
  • Diğer ortamları veya yazılım yığınlarını hedefliyorsanız Fleet Engine'in entegrasyon noktalarını ve önemli hususlarını anlamaya odaklanın. Bu bilgiler yine geçerli olacaktır.
  • Filolardaki etkinliklerin nasıl oluşturulabileceğini ve kullanılabileceğini keşfetmekle genel olarak ilgilenenler.

Bu belgenin sonunda, bir akış sisteminin temel unsurları ve dikkat edilmesi gereken noktaları hakkında temel bir anlayışa sahip olmanın yanı sıra Filo Etkinlikleri Referans Çözümü'nü oluşturan Google Haritalar Platformu ve Google Cloud'daki yapı taşları hakkında da bilgi sahibi olacaksınız.

Filo Etkinlikleri Referans Çözümüne Genel Bakış

Filo Etkinlikleri Referans Çözümü, mobilite müşterilerinin ve iş ortaklarının Fleet Engine ve Google Cloud bileşenleri üzerinde önemli etkinlikler oluşturmasını sağlayan açık kaynaklı bir çözümdür. Referans çözüm, şu anda Last Mile Fleet Solution'ı kullanan müşterileri desteklemektedir. On-demand Rides and Delivery desteği yakında kullanıma sunulacaktır.

Çözüm, görevler veya seyahatlerle ilişkili belirli verilerdeki değişikliklere göre otomatik olarak etkinlikler oluşturur. Bu etkinlikleri kullanarak paydaşlara aşağıdaki gibi bildirimler gönderebilir veya filonuz için başka işlemleri tetikleyebilirsiniz.

  • Görev varış tarihi için tahmini varış saati değişikliği
  • Görev varışıyla ilgili tahmini varış zamanı değişikliği
  • Görev varışına kalan süre
  • Göreve varış için kalan mesafe
  • TaskOutcome durum değişikliği

Referans çözümün her bir bileşeni, işletme ihtiyaçlarınıza uyacak şekilde özelleştirilebilir.

Mantıksal yapı taşları

Şema : Aşağıdaki şemada, Filo Etkinlikleri referans çözümünü oluşturan üst düzey yapı taşları gösterilmektedir.

Filo etkinliklerine genel bakış ve mantıksal yapı taşları

Referans çözümü aşağıdaki bileşenleri içerir:

  • Etkinlik Kaynağı: Orijinal etkinlik akışının geldiği yer. Hem "Son Kilometre Filo Çözümü" hem de "İsteğe Bağlı Yolculuk ve Teslimat Çözümü", Fleet Engine RPC çağrısı günlüklerini geliştiricilerin kullanımına sunulan etkinlik akışlarına dönüştürmeye yardımcı olan Cloud Logging ile entegrasyona sahiptir. Bu, tüketilecek temel kaynaktır.
  • İşleme: Ham RPC çağrısı günlükleri, günlük etkinlikleri akışında hesaplama yapan bu blok içinde durum değişikliği etkinliklerine dönüştürülür. Bu tür bir değişikliği algılamak için bu bileşenin bir durum deposu gerekir. Böylece, yeni gelen etkinlikler önceki etkinliklerle karşılaştırılabilir ve değişiklik algılanabilir. Etkinlikler her zaman ilgi çekici tüm bilgileri içermeyebilir. Bu tür durumlarda, bu blok gerektiğinde arka uçlara arama yapabilir.
    • Durum deposu: Bazı işleme çerçeveleri, kendi başına kalıcı olan ara veriler sağlar. Aksi takdirde, durumu kendi başınıza depolamak için (bunlar bir araca ve etkinlik türüne özgü olmalıdır) K-V türü bir veri kalıcılığı hizmeti iyi bir seçenek olacaktır.
  • Sink (Özel Etkinlikler): Algılanan durum değişikliği, bundan yararlanabilecek tüm uygulamalara veya hizmetlere sunulmalıdır. Bu nedenle, bu özel etkinliği aşağı akışta kullanılmak üzere bir etkinlik yayınlama sisteminde yayınlamak doğal bir seçimdir.
  • Aşağı akış hizmeti: Oluşturulan etkinlikleri kullanan ve kullanım alanınıza özgü işlemler gerçekleştiren kod.

Hizmet seçimi

"Son Kilometre Filo Çözümü" veya "İsteğe Bağlı Yolculuk ve Teslimat Çözümü" (2023'ün 3. çeyreğinin sonlarında kullanıma sunulacak) için referans çözümün uygulanması söz konusu olduğunda"Kaynak " ve "Hedef" için teknoloji seçimi kolaydır. Öte yandan, "İşleme" geniş bir seçenek yelpazesine sahiptir. Referans çözümde aşağıdaki Google hizmetleri seçilmiştir.

Şema : Aşağıdaki şemada, referans çözümünü uygulamak için kullanılan Google Cloud hizmeti gösterilmektedir.

Filo Etkinlikleri referans çözümü oluşturma yapı taşları

Cloud projesi düzeni

Varsayılan olarak çok projeli dağıtımı kullanmanızı öneririz. Bu sayede Google Haritalar Platformu ve Google Cloud kullanımları net bir şekilde ayrılabilir ve tercih ettiğiniz faturalandırma düzenlemenize bağlanabilir.

Etkinlik Kaynağı

"Last Mile Fleet Solution" ve "On-demand Rides and Deliveries Solution", API isteği ve yanıt yüklerini Cloud Logging'e yazar. Cloud Logging, günlükleri seçilen bir veya daha fazla hizmete iletir. Burada Cloud Pub/Sub'a yönlendirme mükemmel bir seçimdir ve günlüklerin kod yazmadan etkinlik akışına dönüştürülmesine olanak tanır.

Sink

Google Cloud'da Cloud Pub/Sub, neredeyse gerçek zamanlı mesaj teslimi için tercih edilen sistemdir. Kaynaktan gelen etkinliklerin Pub/Sub'a nasıl teslim edildiği gibi, özel etkinlikler de sonraki aşamalarda kullanılmak üzere Pub/Sub'a yayınlanır.

İşleniyor

Olay işlemede aşağıdaki bileşenler rol oynar. Diğer yapı taşları gibi, işleme bileşenleri de tamamen sunucusuzdur ve hem yukarı hem de aşağı yönde iyi ölçeklenir.

  • İlk sürüm için işlem platformu olarak Cloud Functions (*)
    • Sunucusuzdur, maliyetleri yönetmek için ölçeklendirme kontrolleriyle ölçeği artırıp azaltır.
    • Uygulama kolaylığına katkıda bulunan Filo Motoru ile ilgili API'ler için istemci kitaplıklarının kullanılabilirliği göz önüne alındığında programlama dili olarak Java tercih edildi
  • Durum deposu olarak Cloud Firestore
    • Sunucusuz Anahtar-Değer deposu
  • Yukarı ve aşağı akış bileşenleriyle entegrasyon noktası olarak Cloud Pub/Sub
    • Gevşek bağlı, neredeyse gerçek zamanlı entegrasyon

İşlevler, varsayılan ayarlarla olduğu gibi kullanılabilir ancak yeniden yapılandırılabilir. Yapılandırma parametreleri dağıtım komut dosyaları aracılığıyla ayarlanır ve ilgili Terraform modülü README dosyalarında ayrıntılı olarak belgelenir.

*Not: Bu referans çözüm, farklı koşulları karşılamanıza yardımcı olabilecek alternatif uygulamalar yayınlamayı planlamaktadır.

Dağıtım

Referans çözüm dağıtım sürecini tekrarlanabilir, özelleştirilebilir, kaynak kodu kontrol edilebilir ve güvenli hale getirmek için otomasyon aracı olarak Terraform seçilmiştir. Terraform, Google Cloud için zengin destek sunan, yaygın olarak kullanılan bir IaC (Kod Olarak Altyapı) aracıdır.

Terraform modülleri

Tek bir büyük monolitik referans çözümü dağıtım modülü oluşturmak yerine, bağımsız olarak kullanılabilen Terraform modülleri olarak yeniden kullanılabilir otomasyon blokları uygulanır. Modüller, çok çeşitli yapılandırılabilir değişkenler sunar. Bu değişkenlerin çoğu, hızlı bir şekilde kullanmaya başlayabilmeniz için varsayılan değerlere sahiptir. Ayrıca, ihtiyaçlarınıza ve tercihlerinize göre özelleştirme esnekliği de sunar.

Referans çözümüne dahil edilen modüller:

  • Fleet Engine günlük kaydı yapılandırması: Fleet Engine ile kullanılacak Cloud Logging ile ilgili yapılandırmaları otomatikleştirin. Referans çözümde, Fleet Engine ile ilgili günlükleri belirtilen bir Pub/Sub konusuna yönlendirmek için kullanılır.
  • Filo Etkinlikleri bulut işlevi dağıtımı: Örnek işlev kodu dağıtımını içerir ve projeler arası güvenli entegrasyon için gereken izin ayarlarının otomasyonunu da yönetir.
  • Tam referans çözümü dağıtımı: Önceki iki modülü çağırır ve çözümün tamamını kapsar.

Güvenlik

IAM, Google Cloud'un hizmet hesabı kimliğine bürünme gibi güvenlikle ilgili en iyi uygulamalarıyla birlikte en az ayrıcalık ilkelerini uygulamak için kullanılır. Google Cloud'un güvenlik üzerinde daha fazla kontrol sağlamak için sunduğu özellikler hakkında daha fazla bilgi edinmek için aşağıdaki makaleleri inceleyin.

Sonraki işlemler

Artık Filo Etkinlikleri Referans Çözümü'ne erişip daha ayrıntılı bir şekilde incelemeye hazırsınız. Başlamak için GitHub'a gidin.

Ek

İhtiyaçlarınızı toplayın

İhtiyaçlarınızı sürecin daha erken aşamalarında toplamanızı öneririz.

Öncelikle, gerçek zamanlıya yakın olayları neden kullanmak istediğinizi veya neden kullanmanız gerektiğini ayrıntılarıyla açıklayın. İhtiyaçlarınızı netleştirmenize yardımcı olacak bazı soruları aşağıda bulabilirsiniz.

  • Bir etkinlik akışının yararlı olması için hangi bilgiler gerekir?
    • Sonuç yalnızca Google hizmetlerinde yakalanan veya üretilen verilerden elde edilebilir mi? Yoksa, entegre dış sistemlerle veri zenginleştirmesi mi gerekiyor? Bu sistemler nelerdir ve hangi entegrasyon arayüzlerini sunarlar?
    • Bir işletme olarak ölçmek istediğiniz metrikler nelerdir? Nasıl tanımlanır?
    • Etkinlikler genelinde metrikleri hesaplamanız gerekiyorsa ne tür bir toplama işlemi gerekir? Mantıksal adımları düzenlemeye çalışın. (ör. Kaynak kısıtlamaları altında performansı hesaplamak için yoğun saatlerde filonun bir alt bölümündeki HDS'lere karşı TSH/TSH'yi karşılaştırın.)
  • Neden toplu yerine etkinliğe dayalı bir modelle ilgileniyorsunuz? Bu, daha düşük gecikme (işlem süresi) veya gevşek bağlı entegrasyon (çeviklik) için mi?
    • Düşük gecikme için "low" (düşük) olarak tanımlayın. Dakika mı? Saniye mi? Bir saniyeden kısa mı? Peki gecikme süresi nedir?
  • Ekip olarak teknoloji yığınına ve ilgili becerilere yatırım yaptınız mı? Bu durumda, söz konusu çözüm nedir ve hangi entegrasyon noktalarını sağlar?
    • Mevcut sistemlerinizin karşılayamadığı veya filonuzdan gelen etkinlikleri işlerken zorlanabileceği herhangi bir şart var mı?

Tasarım ilkeleri

Her zaman izlenecek bir düşünce sürecine sahip olmak faydalıdır. Bu, özellikle aralarından seçim yapabileceğiniz çeşitli seçenekler olduğunda tutarlı tasarım kararları vermenize yardımcı olur.

  • Varsayılan olarak daha basit seçenekler sunulur.
  • Varsayılan olarak daha kısa sürede değer elde etme. Daha az kod, daha kısa öğrenme süreci.
  • Gecikme ve performans için maksimum optimizasyon yerine belirlediğiniz hedefi karşılamayı amaçlayın. Ayrıca, genellikle karmaşıklık eklenmesine yol açtığı için aşırı optimizasyondan da kaçının.
  • Aynı durum maliyet için de geçerlidir. Maliyetleri makul tutun. Henüz yüksek değerli ancak nispeten daha pahalı hizmetleri kullanmaya karar verebileceğiniz aşamada olmayabilirsiniz.
  • Deneysel bir aşamada, ölçeği küçültmek ölçeği büyütmek kadar önemli olabilir. Bir üst sınırla ölçeklendirme ve aynı zamanda ölçeği küçültme (ideal olarak sıfıra) esnekliği sunan bir platformu göz önünde bulundurun. Böylece hiçbir şey yapmadığınızda para harcamazsınız. Her zaman açık altyapı ile yüksek performans, ihtiyaç duyduğunuzdan emin olduğunuzda yolculuğun ilerleyen aşamalarında değerlendirilebilir.
  • Daha sonra hangi alanlarda çalışmanız gerektiğini belirleyebilmek için gözlemleyin ve ölçün.
  • Hizmetleri gevşek bir şekilde bağlı tutun. Bu sayede, daha sonra parçaları tek tek değiştirmeniz kolaylaşır.
  • Son olarak, güvenlik gevşek olamaz. Herkese açık bir bulut ortamında çalışan bir hizmet olarak sistemde güvenli olmayan kapılar olamaz.

Akış kavramları

Etkinliğe dayalı veya akış tabanlı işlemlere nispeten yeni başladıysanız bilmeniz gereken temel kavramlar vardır. Bunlardan bazıları toplu işlemden çok farklı olabilir.

  • Ölçek : İşlenecek veri miktarı hakkında genellikle iyi bir fikrinizin olduğu toplu işlemenin aksine, akışta bu mümkün değildir. Bir şehirdeki trafik sıkışıklığı, belirli bir bölgeden aniden çok sayıda etkinlik oluşturabilir ve bunları yine de işleyebilmeniz gerekir.
  • Pencereleme : Etkinlikleri tek tek işlemek yerine, genellikle bir zaman çizelgesindeki etkinlikleri hesaplama için bir birim olarak daha küçük "pencereler" halinde gruplandırmak istersiniz. "Sabit pencereler (ör. her takvim günü)", "kayan pencereler (son 5 dakika)", "oturum pencereleri (bu gezi sırasında)" gibi çeşitli pencereleme stratejileri arasından seçim yapabilirsiniz. Pencere ne kadar uzun olursa sonuçların üretilmesindeki gecikmeler de o kadar uzun olur. Gereksinimlerinizi karşılayan doğru modeli ve yapılandırmayı seçin.
  • Tetikleme : Nispeten daha uzun pencereler kullanmaktan başka seçeneğinizin olmadığı durumlar vardır. Yine de etkinlik oluşturmak için pencerenin sonunu beklemek yerine arada ara sonuçlar yayınlamak isteyebilirsiniz. Bu kavram, önce hızlı sonuçlar döndürmenin, ardından bunları düzeltmenin değerli olduğu kullanım alanlarında uygulanabilir. Bir teslimatın %25, %50 ve% 75 tamamlanma oranında ara durum yayınladığınızı düşünün.
  • Sıralama : Etkinlikler, oluşturuldukları sırayla sisteme ulaşmayabilir. Özellikle gecikmeye ve karmaşık yönlendirme yollarına neden olan mobil ağlar üzerinden iletişim kurulan kullanım alanlarında. "Etkinlik zamanı" (etkinliğin gerçekleştiği zaman) ile "işlem zamanı" (etkinliğin sisteme ulaştığı zaman) arasındaki farkı bilmeniz ve etkinlikleri buna göre işlemeniz gerekir. Genel olarak, etkinlikleri "event time" temelinde işlemek istersiniz.
  • Mesaj teslimatı - En az bir kez ve tam olarak bir kez: Farklı etkinlik platformları, bunları farklı şekillerde destekler. Kullanım alanınıza bağlı olarak yeniden deneme veya tekilleştirme stratejilerini göz önünde bulundurmanız gerekir.
  • Eksiksizlik : Sıralama değişikliğinde olduğu gibi, mesajların kaybolma ihtimali vardır. Bu durum, cihazın pil ömrü nedeniyle uygulama ve cihazın kapatılması, telefona istemeden zarar verilmesi, tünelde bağlantının kaybolması veya alınan ancak yalnızca kabul edilebilir bir pencerenin dışında olan bir mesajdan kaynaklanabilir. Eksiklik sonuçlarınızı nasıl etkiler?

Bu liste tam kapsamlı değildir, yalnızca bir giriş niteliğindedir. Aşağıda, her birini daha iyi anlamanıza yardımcı olabilecek, şiddetle tavsiye edilen bazı kaynaklar verilmiştir.

Katkıda bulunanlar

Bu belge Google tarafından yönetilir. Bu makale ilk olarak aşağıdaki katkıda bulunanlar tarafından yazılmıştır.

Başlıca yazarlar:

  • Mary Pishny | Ürün Yöneticisi, Google Haritalar Platformu
  • Ethel Bao| Yazılım Mühendisi, Google Haritalar Platformu
  • Mohanad Almiski | Software Engineer, Google Maps Platform
  • Naoya Moritani | Çözüm Mühendisi, Google Haritalar Platformu