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

Yerel olarak faaliyet gösteren filodan gelen neredeyse gerçek zamanlı sinyaller, işletmelere çeşitli şekillerde yardımcı olur. Örneğin, işletmeler bunları kullanarak:

  • Filolarının performansını izleyin ve potansiyel sorunları erken aşamada belirleyin.
  • 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" ("Last Mile Fleet Solution" (LMFS) veya "On-demand Rides and Deliveries Solution" (ODRD)) sinyallerini 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ınmaktadı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 İsteğe Bağlı 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ı dokümanı önceden okumaları ö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 de 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. Talep Üzerine Yolculuk ve Teslimat desteği yakında kullanıma sunulacaktır.

Çözüm, görevler veya gezilerle 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ışıyla ilgili tahmini varış zamanı değişikliği
  • Görev varışı için tahmini varış zamanındaki göreli değişiklik
  • 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 Mil 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 blokta 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, değişikliği algılamak için önceki etkinliklerle karşılaştırılabilir. 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.
  • Alıcı (Ö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. Diğer 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 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 istek 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

Etkinlik işleme sürecinde 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.
    • Filo Motoru ile ilgili API'ler için istemci kitaplıklarının kullanılabilirliği göz önüne alındığında, uygulama kolaylığına katkıda bulunmak amacıyla programlama dili olarak Java
  • 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şılamaya 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 kontrollü 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, yapılandırılabilir çok çeşitli değişkenler sunar. Bu değişkenlerin çoğu, varsayılan değerlere sahiptir. Böylece hızlı bir şekilde başlayabilir, ancak ihtiyaçlarınıza ve tercihlerinize göre özelleştirme esnekliğine de sahip olursunuz.

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 Cloud Functions dağıtımı: Örnek işlev kodu dağıtımını içerir ve güvenli projeler arası 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

Gereksinimlerinizi belirleyin

Gereksinimlerinizi sürecin başlarında toplamanızı öneririz.

Öncelikle, neredeyse anlık etkinliklerle neden ilgilendiğinizi veya bunları neden kullanmanız gerektiğini 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 harici sistemlerle veri zenginleştirme mi gerekiyor? Bu sistemler nelerdir ve hangi entegrasyon arayüzlerini sunarlar?
    • İşletme olarak hangi metrikleri ölçmek istersiniz? 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ındaki performansı hesaplamak için yoğun saatlerde filonun bir alt bölümündeki HDS'lere karşı tahmini varış zamanını/gerçek varış zamanını 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" değerini tanımlayın. Dakika? 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, değer elde etme süresi daha kısadır. Daha az kod, daha kısa öğrenme süreci.
  • Gecikme ve performans için maksimum optimizasyon değil, belirlediğiniz eşiği karşılamayı hedefleyin. Ayrıca, genellikle karmaşıklığa yol açtığı için aşırı optimizasyondan da kaçının.
  • Aynı durum maliyet için de geçerlidir. Maliyeti makul tutun. Henüz yüksek değerli ancak nispeten daha pahalı hizmetleri kullanmayı taahhüt edebileceğiniz bir durumda olmayabilirsiniz.
  • Deneysel bir aşamada, ölçeği küçültmek ölçeği büyütmek kadar önemli olabilir. Üst sınırla ölçeklendirme ve ölçeği küçültme (ideal olarak sıfıra) esnekliği sunan bir platform kullanın. Böylece hiçbir şey yapmadığınızda para harcamazsınız. Her zaman açık altyapıyla yüksek performans, yolculuğun ilerleyen aşamalarında, ihtiyaç duyduğunuzdan emin olduğunuzda 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ışla ilgili kavramlar

Etkinliğe dayalı veya akışa dayalı işlemlere nispeten yeni başladıysanız bilmeniz gereken temel kavramlar vardır. Bunlardan bazıları toplu işleme yönteminden ç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 durumunda 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ı, bu konuda farklı destek sunar. 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ı, telefonda istenmeden oluşan hasar, tünelde bağlantının kaybolması veya kabul edilebilir bir zaman aralığının dışında alınan bir mesajdan kaynaklanabilir. Eksiklik sonuçlarınızı nasıl etkiler?

Bu liste tam kapsamlı değildir, yalnızca bir tanıtımdır. Aşağıda, her biriyle ilgili anlayışınızı daha da derinleştirmenize yardımcı olabilecek, şiddetle tavsiye edilen bazı okuma materyalleri 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