Sahada faaliyet gösteren filodan gelen neredeyse gerçek zamanlı sinyaller, işletmelere çeşitli şekillerde yardımcı olur. Örneğin, işletmeler bu bilgileri kullanarak:
- Filolarının performansını izleme ve olası sorunları erken aşamada belirleme
- 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ırın
- Verimliliği artırmak için sürücü rotalarını ve programlarını optimize etme
- Araç konumunu ve hizmet saatlerini izleyerek yönetmeliklere uyma
Bu belgede, geliştiricilerin Google Haritalar Platformu'nun "Mobilite hizmetleri" ("Last Mile Fleet Solution" (LMFS) veya "On-demand Rides and Deliveries Solution" (ODRD)) hizmetlerinden 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ı 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 geçerli olacaktır.
- Filolardaki etkinliklerin nasıl oluşturulabileceğini ve kullanılabileceğini keşfetmekle genel olarak ilgilenenler.
Bu belgenin sonunda, Filo Etkinlikleri Referans Çözümü'nü oluşturan Google Haritalar Platformu ve Google Cloud'daki yapı taşlarının yanı sıra bir akış sisteminin temel unsurları ve dikkat edilmesi gereken noktaları hakkında temel bir anlayışa sahip 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 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öreve varış için tahmini varış zamanı 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şletmenizin ihtiyaçlarına uyacak şekilde özelleştirilebilir.
Mantıksal yapı taşları
Diyagram : Aşağıdaki diyagramda, Filo Etkinlikleri referans çözümünü oluşturan üst düzey yapı taşları gösterilmektedir.
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ı 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 ö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. Ancak bu durumda, durumu kendi başınıza depolamak için (bunlar bir araç 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 tüketim için 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ü uygulama söz konusu olduğunda"Kaynak " ve "Havuz" 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.
Diyagram : Aşağıdaki diyagramda, referans çözümünü uygulamak için kullanılan Google Cloud hizmeti gösterilmektedir.
Cloud projesi düzeni
Varsayılan olarak çok projeli dağıtım kullanmanızı öneririz. Bunun nedeni, Google Haritalar Platformu ve Google Cloud kullanımlarının net bir şekilde ayrılabilmesi ve seçtiğiniz faturalandırma düzenlemesine bağlanabilmesidir.
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.
- Günlük kaydı | Filo Performansı (LMFS kullanıcıları için)
- Günlük kaydı | Seyahat ve Sipariş İlerleme Durumu (ODRD kullanıcıları için)
- Pub/Sub'a yönlendirilen günlükleri görüntüleme : Günlük kaydı → Pub/Sub entegrasyonuna genel bakış
Sink
Google Cloud'da Cloud Pub/Sub, neredeyse gerçek zamanlı mesaj teslimi için tercih edilen sistemdir. Kaynaktan gelen etkinliklerin Pub/Sub'a teslim edilme şekline benzer şekilde, özel etkinlikler de sonraki işlemler için Pub/Sub'da 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 (*)
- Sunucusuz, maliyetleri yönetmek için ölçeklendirme kontrolleriyle ölçeği artırıp azaltır
- Java, programlama dili olarak kullanılır. Bunun nedeni, Fleet Engine ile ilgili API'ler için istemci kitaplıklarının kullanılabilir olması ve bu kitaplıkların uygulamayı kolaylaştırmasıdır.
- 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çilir. Terraform, Google Cloud için zengin destek sunan, yaygın olarak kullanılan bir IaC (Kod Olarak Altyapı) aracıdır.
- Google Cloud Platform Sağlayıcı: "Google Cloud Platform Sağlayıcı" tarafından desteklenen kaynağın dokümanları
- Terraform'u kullanmayla ilgili en iyi uygulamalar: Google Cloud'da en iyi şekilde nasıl kullanacağınıza dair kapsamlı rehberlik
- Terraform Kayıt Defteri: Google ve topluluk tarafından desteklenen ek modüller
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ılmak üzere 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 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
Gereksinimlerinizi toplayın
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 ö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ındaki performansı hesaplamak için yoğun saatlerde filonun bir alt kümesinde SLO'lara karşı TVS/ATA'yı karşılaştırın.)
- Neden toplu iş yerine etkinliğe dayalı bir modelle ilgileniyorsunuz? Bu, daha düşük gecikme süresi (işlem süresi) için mi yoksa gevşek bağlı bir entegrasyon (çeviklik) için mi?
- Düşük gecikme için "low" değerini 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, bu özellik nedir ve hangi entegrasyon noktalarını sağlar?
- Mevcut sistemlerinizin karşılayamadığı veya filonuzdan gelen etkinlikleri işlerken zorlanabileceği herhangi bir koşul 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 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 bir aşamada olmayabilirsiniz.
- Deneysel bir aşamada, ölçeği küçültmek ölçeği büyütmek kadar önemli olabilir. Üst sınırla ölçeği artırma ve ölçeği azaltma (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, 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ışla ilgili kavramlar
Etkinliğe dayalı veya akışa dayalı işlemlere nispeten yeni başladıysanız bilmeniz gereken önemli 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 bu etkinlikleri 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 "etkinlik zamanı"na göre işlemek istersiniz.
- Mesaj teslimi - 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ı, 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, sadece bir giriş niteliğindedir. Aşağıda, her birini daha iyi anlamanıza yardımcı olabilecek, şiddetle tavsiye edilen bazı kaynakları bulabilirsiniz.
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