SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Architectural Overview of
Distributed ParcelTracking
and Management System
Mark Cheeseman
mcheeseman@visaglobal.com.au
http://hombredequeso.id.au/
Public Health Warning (Required by Law…)
The following presentation includes graphic scenes of UI torture and
SQL Server abuse that may disturb some viewers.
Usable User Interface design and relational use of relational databases
were both harmed in the making of this product.
Viewers who suspect they may find such scenes disturbing may wish
to confirm the presence of a sick bag in the back of the seat before
you.
Website/ API
Business Services
Process Bookings
Produce Labels
Customs
Billing
Parcel Scan In/ Out
...
Tracking
Website
Customs
Customers
Parcel
Recipients
AusPost
NZ Post
Whip
Operators
Conceptual Diagram
...
Website API *
Tracking
Website *
API Update Service
Tracking Update
Service
Parcel Audit
Service *
AusPost Service *
Billing Service *
Booking Service *
Cyberfreight
Service *
MAWB Service
NZ Post Service * NZ Post API Service
Reporting Service *
Scan Processing
Service*
Email Processing
Service *
File Transfer
Service
Customers/
Operators
(Web Browser)
Scan/Print
(Application)
Parcel Recipients
(Web Browser)
Cyberfreight
(Application)
NZ Post (API)
Cyberfreight
Customs (SMTP)
AusPost (SFTP)
Logical Diagram
Bus
* = has own database
Azure VM
Azure
Service Bus
NSB Message
Transport
Physical Diagram
Azure SQL
Server
· API
· Booking
· AusPost
· Cyberfreight
· ...
Azure SQL
Server
· Tracking Website
Azure Web App
Website/API
(ASP.NET MVC API)
Azure Web App
Tracking Website
(ASP.NET MVC API)
RavenDb
Server
· Booking NSB EP
· AusPost NSB EP
· NZPost NSB EP
· ...
Service: Booking NSB Endpoint
Service: AusPost NSB Endpoint
Service: NZPost NSB Endpoint
Service: Cyberfreight NSB Endpoint
...
REST API: Siren
Specification:
https://github.com/kevinswiber/siren
{
"class": ["booking"],
"properties": {
"bookingNumber": "BREDH10000910",
"merchant": "Red Hare",
"merchantCode": "REDH",
"parcelCount": 1000,
"created": "2015-05-24T11:47:37.4721121Z",
"processes": "Labelling, Customs",
"parcelsRecordedForCustomsCount": 1000,
"parcelsRecordedForCustomsTimestamp": "2015-05-24T11:47:41.2653291Z",
"ausPostLabelsGenerated": "2015-05-24T11:47:48.9757701Z",
"ausPostLabelsRecordedForCustomsCount": 1000,
"ausPostLabelsRecordedForCustomsTimestamp": "2015-05-24T11:48:00.2774165Z",
"labelledSpreadsheetCreated": "2015-05-24T11:48:02.6825541Z"
},
"entities": [
{
"class": ["bookingSubmission"],
"rel": ["/rel/booking-bookingsubmission"],
"links": [
{
"rel": ["self"],
"href": "http://localhost:54747/api/Merchant/BookingSubmissions/92be90a5-710d-40ef-bb6c-a4a201672282"
}
]
}
],
"links": [
{
"rel": ["self"],
"href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910"
},
{
"rel": ["file","xlsx","booking/labelledContent"],
"href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910/labelledContent"
}
],
"actions": [
{
"name": "post-bookingDespatchManifestRequest",
"title": "Generate Despatch Manifest For Booking",
"method": "POST",
"href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910/bookingDespatchManifestRequests",
"type": "application/x-www-form-urlencoded",
"fields": []
}
]
}
GET http://localhost:54747/api
/Merchant/Bookings/BREDH10000910
{
"class": ["booking"],
"properties": {
"bookingNumber": "BREDH10000910",
"merchant": "Red Hare",
"merchantCode": "REDH",
"parcelCount": 1000,
"created": "2015-05-24T11:47:37.4721121Z",
"processes": "Labelling, Customs",
"parcelsRecordedForCustomsCount": 1000,
"parcelsRecordedForCustomsTimestamp": "2015-05-24T11:47:41.2653291Z",
"ausPostLabelsGenerated": "2015-05-24T11:47:48.9757701Z",
"ausPostLabelsRecordedForCustomsCount": 1000,
"ausPostLabelsRecordedForCustomsTimestamp": "2015-05-24T11:48:00.2774165Z",
"labelledSpreadsheetCreated": "2015-05-24T11:48:02.6825541Z"
},
"entities": [
{
"class": ["bookingSubmission"],
"rel": ["/rel/booking-bookingsubmission"],
"links": [
{
"rel": ["self"],
"href": "http://localhost:54747/api/Merchant/BookingSubmissions/92...82"
LogicalView
]
}
],
"links": [
{
"rel": ["self"],
"href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910"
},
{
"rel": ["file","xlsx","booking/labelledContent"],
"href": "http://localhost:54747/api/Merchant/Bookings
/BREDH10000910/labelledContent"
}
],
"actions": [
{
"name": "post-bookingDespatchManifestRequest",
"title": "Generate Despatch Manifest For Booking",
"method": "POST",
"href": "http://localhost:54747/api/Merchant/Bookings
/BREDH10000910/bookingDespatchManifestRequests",
"type": "application/x-www-form-urlencoded",
"fields": []
}
]
API Event Store
Bus (NSB)
API Update
Service
WEB API
Event Stream to Siren
Entity Transform
Event
Store
Http Request (GET)
NSB Events from various endpoints
(Booking, AusPost, Customs)
“Event Store”
Events
NSB Events
Siren Entity
Business Processes Involving
Multiple Services
(Long Running Business Processes)
ProcessManager: Saga asProcessController
Booking
Endpoint*
Saga
AusPost
Endpoint*
Customs
Endpoint*
7. Booking “fully”
accepted
Saga
State
Fastway
Endpoint*
1. BookingReceivedEvent
2. CreateApLabelsCommand
3. CreateFwLabelsCommand
6. CreateConsolidations
Command
5. ApLabelsCreatedEvent
4. FwLabelsCreatedEvent
ProcessManager: Routing Slip
Booking
Endpoint*
AusPost
Endpoint*
Customs
Endpoint*
Fastway
Endpoint*
ProcessBooking
SubmissionCommand
Routing Slip (on Booking Message):
1. AusPostEndpoint
2. FastwayEndpoint
3. CustomsEndpoint
Booking Booking Booking
Booking
(“fully” accepted)
ProcessManager: Event Driven Booking Processeson Event
Booking
Endpoint*
AusPost
Endpoint*
Customs
Endpoint*
Fastway
Endpoint*
1. BookingCreatedEvent
2. AusPostLabelsCreatedEvent
3. FastwayLabelsCreatedEvent
Booking Representation on all Events:
{
Guid BookingId
BookingProcess[] Processes
}
public enum BookingProcess
{
Labelling = 1,
Customs = 2,
AusPostPreLabelled = 3
}
4. Booking “fully”
accepted
Solving Big(ish) Data on the Bus
AusPost Service *
Booking Service *
Cyberfreight
Service *
NZ Post Service * NZ Post API Service
Email Processing
Service *
File Transfer
Service
The IdealisticVision...
(Logical) Bus
AusPost Service *
Booking Service *
Cyberfreight
Service *
NZ Post Service * NZ Post API Service
Email Processing
Service *
File Transfer
Service
Bus: Message Bus+ Data Bus
OHS
ACL
ACL
ACL
OHS
OHS
ACL
ACL
(Message) Bus(Data) Bus
AusPost Service *
Booking Service *
Cyberfreight
Service *
NZ Post Service * NZ Post API Service
Email Processing
Service *
File Transfer
Service
Data BusImplementation
SQL
Database
NSB (Physical) Transport:
Azure Service Bus
Data Bus: Implemention via
SQL queries
Not AllTransports are Created Equal…
References
Siren Specification
https://github.com/kevinswiber/siren
Richardson Maturity Model (for API's)
http://martinfowler.com/articles/richardsonMaturityModel.html
Recommended books on REST
Richardson and Amundsen, RESTfulWeb APIs.
Webber et. al., REST in Practice: Hypermedia and Systems Architecture
Messaging in General
Hohpe andWoolf, Enterprise Integration Patterns
(for various forms of routing as process management see ch. 7)
Blog Series on NServiceBus and Process Management Patterns
https://lostechies.com/jimmybogard/2013/05/14/saga-patterns-wrap-up/
(Top of post has links to all post in series)
https://lostechies.com/jimmybogard/2014/10/02/nservicebus-5-0-behaviors-in-action-routing-
slips/
Event Based Systems
VaughnVernon, Implementing Domain-Driven Design, ch. 8.
Dynamic Event Replay Mechanism
http://blogs.msdn.com/b/davidebb/archive/2010/01/18/use-c-4-0-dynamic-to-drastically-
simplify-your-private-reflection-code.aspx

Weitere ähnliche Inhalte

Was ist angesagt?

Bulletproof Ajax
Bulletproof AjaxBulletproof Ajax
Bulletproof Ajax2tique
 
jQuery and AJAX with Rails
jQuery and AJAX with RailsjQuery and AJAX with Rails
jQuery and AJAX with RailsAlan Hecht
 
jQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends ForeverjQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends Foreverstephskardal
 
jQuery Mobile Workshop
jQuery Mobile WorkshopjQuery Mobile Workshop
jQuery Mobile WorkshopRon Reiter
 
User Switcher for Cascade Server
User Switcher for Cascade ServerUser Switcher for Cascade Server
User Switcher for Cascade Serverhannonhill
 
domain driven design talk
domain driven design talkdomain driven design talk
domain driven design talkRui Sun
 
HTML5 - The 2012 of the Web - Adobe MAX
HTML5 - The 2012 of the Web - Adobe MAXHTML5 - The 2012 of the Web - Adobe MAX
HTML5 - The 2012 of the Web - Adobe MAXRobert Nyman
 
Salesforce integration with Box.com, docuSign & QuickBooks made easy
Salesforce integration with Box.com, docuSign & QuickBooks made easySalesforce integration with Box.com, docuSign & QuickBooks made easy
Salesforce integration with Box.com, docuSign & QuickBooks made easySaxon Global inc
 
HTML5 - The 2012 of the Web
HTML5 - The 2012 of the WebHTML5 - The 2012 of the Web
HTML5 - The 2012 of the WebRobert Nyman
 

Was ist angesagt? (12)

Bulletproof Ajax
Bulletproof AjaxBulletproof Ajax
Bulletproof Ajax
 
jQuery and AJAX with Rails
jQuery and AJAX with RailsjQuery and AJAX with Rails
jQuery and AJAX with Rails
 
Yammer Api SDK
Yammer Api SDKYammer Api SDK
Yammer Api SDK
 
jQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends ForeverjQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends Forever
 
jQuery Mobile Workshop
jQuery Mobile WorkshopjQuery Mobile Workshop
jQuery Mobile Workshop
 
Empty
EmptyEmpty
Empty
 
User Switcher for Cascade Server
User Switcher for Cascade ServerUser Switcher for Cascade Server
User Switcher for Cascade Server
 
domain driven design talk
domain driven design talkdomain driven design talk
domain driven design talk
 
HTML5 - The 2012 of the Web - Adobe MAX
HTML5 - The 2012 of the Web - Adobe MAXHTML5 - The 2012 of the Web - Adobe MAX
HTML5 - The 2012 of the Web - Adobe MAX
 
Apex & jQuery Mobile
Apex & jQuery MobileApex & jQuery Mobile
Apex & jQuery Mobile
 
Salesforce integration with Box.com, docuSign & QuickBooks made easy
Salesforce integration with Box.com, docuSign & QuickBooks made easySalesforce integration with Box.com, docuSign & QuickBooks made easy
Salesforce integration with Box.com, docuSign & QuickBooks made easy
 
HTML5 - The 2012 of the Web
HTML5 - The 2012 of the WebHTML5 - The 2012 of the Web
HTML5 - The 2012 of the Web
 

Andere mochten auch

Delivering a Parcel Tracking System for the Future
Delivering a Parcel Tracking System for the FutureDelivering a Parcel Tracking System for the Future
Delivering a Parcel Tracking System for the FutureDLT Solutions
 
Courier Management System(Dhl software documentation)
Courier Management System(Dhl software documentation)Courier Management System(Dhl software documentation)
Courier Management System(Dhl software documentation)Udaka Ayas
 
Cisco uc broschure cc only
Cisco uc broschure cc onlyCisco uc broschure cc only
Cisco uc broschure cc onlyMullrich1012
 
Parcel management system - Proposal
Parcel management system - ProposalParcel management system - Proposal
Parcel management system - ProposalTahmina Khatoon
 
Courier project abstract
Courier project abstractCourier project abstract
Courier project abstractRahul Chanda
 
Courier Management System By Mukesh
Courier Management System By MukeshCourier Management System By Mukesh
Courier Management System By MukeshMukesh Kumar
 

Andere mochten auch (6)

Delivering a Parcel Tracking System for the Future
Delivering a Parcel Tracking System for the FutureDelivering a Parcel Tracking System for the Future
Delivering a Parcel Tracking System for the Future
 
Courier Management System(Dhl software documentation)
Courier Management System(Dhl software documentation)Courier Management System(Dhl software documentation)
Courier Management System(Dhl software documentation)
 
Cisco uc broschure cc only
Cisco uc broschure cc onlyCisco uc broschure cc only
Cisco uc broschure cc only
 
Parcel management system - Proposal
Parcel management system - ProposalParcel management system - Proposal
Parcel management system - Proposal
 
Courier project abstract
Courier project abstractCourier project abstract
Courier project abstract
 
Courier Management System By Mukesh
Courier Management System By MukeshCourier Management System By Mukesh
Courier Management System By Mukesh
 

Ähnlich wie Distributed Parcel Tracking/Management System Overview

Going Serverless with Azure Functions
Going Serverless with Azure FunctionsGoing Serverless with Azure Functions
Going Serverless with Azure FunctionsShahed Chowdhuri
 
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...Naoki (Neo) SATO
 
The Future of Progressive Web Apps - Google for Indonesia
The Future of Progressive Web Apps - Google for IndonesiaThe Future of Progressive Web Apps - Google for Indonesia
The Future of Progressive Web Apps - Google for IndonesiaRobert Nyman
 
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013Kiril Iliev
 
The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016Robert Nyman
 
The top 10 security issues in web applications
The top 10 security issues in web applicationsThe top 10 security issues in web applications
The top 10 security issues in web applicationsDevnology
 
amis-adf-enterprise-mobility
amis-adf-enterprise-mobilityamis-adf-enterprise-mobility
amis-adf-enterprise-mobilityLuc Bors
 
Medium TechTalk — iOS
Medium TechTalk — iOSMedium TechTalk — iOS
Medium TechTalk — iOSjimmyatmedium
 
The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016Robert Nyman
 
Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3masahiroookubo
 
Microservice Websites (microXchg 2017)
Microservice Websites (microXchg 2017)Microservice Websites (microXchg 2017)
Microservice Websites (microXchg 2017)Gustaf Nilsson Kotte
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha
 
JavaScript & Cloud: the AWS JS SDK and how to work with cloud resources
JavaScript & Cloud: the AWS JS SDK and how to work with cloud resourcesJavaScript & Cloud: the AWS JS SDK and how to work with cloud resources
JavaScript & Cloud: the AWS JS SDK and how to work with cloud resourcesCorley S.r.l.
 
Clean architectures with fast api pycones
Clean architectures with fast api   pyconesClean architectures with fast api   pycones
Clean architectures with fast api pyconesAlvaro Del Castillo
 
Microservice Websites – Micro CPH
Microservice Websites – Micro CPHMicroservice Websites – Micro CPH
Microservice Websites – Micro CPHGustaf Nilsson Kotte
 
How We Brought Advanced HTML5 Viewing to ADF
How We Brought Advanced HTML5 Viewing to ADFHow We Brought Advanced HTML5 Viewing to ADF
How We Brought Advanced HTML5 Viewing to ADFSeanGraham5
 
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developeraPetr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developeraWebExpo
 

Ähnlich wie Distributed Parcel Tracking/Management System Overview (20)

Going Serverless with Azure Functions
Going Serverless with Azure FunctionsGoing Serverless with Azure Functions
Going Serverless with Azure Functions
 
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
 
The Future of Progressive Web Apps - Google for Indonesia
The Future of Progressive Web Apps - Google for IndonesiaThe Future of Progressive Web Apps - Google for Indonesia
The Future of Progressive Web Apps - Google for Indonesia
 
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
 
The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016
 
The top 10 security issues in web applications
The top 10 security issues in web applicationsThe top 10 security issues in web applications
The top 10 security issues in web applications
 
amis-adf-enterprise-mobility
amis-adf-enterprise-mobilityamis-adf-enterprise-mobility
amis-adf-enterprise-mobility
 
Nodejs.meetup
Nodejs.meetupNodejs.meetup
Nodejs.meetup
 
Medium TechTalk — iOS
Medium TechTalk — iOSMedium TechTalk — iOS
Medium TechTalk — iOS
 
The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016The Future of Progressive Web Apps - View Source conference, Berlin 2016
The Future of Progressive Web Apps - View Source conference, Berlin 2016
 
Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3
 
Microservice Websites (microXchg 2017)
Microservice Websites (microXchg 2017)Microservice Websites (microXchg 2017)
Microservice Websites (microXchg 2017)
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
 
06 web api
06 web api06 web api
06 web api
 
JavaScript & Cloud: the AWS JS SDK and how to work with cloud resources
JavaScript & Cloud: the AWS JS SDK and how to work with cloud resourcesJavaScript & Cloud: the AWS JS SDK and how to work with cloud resources
JavaScript & Cloud: the AWS JS SDK and how to work with cloud resources
 
Clean architectures with fast api pycones
Clean architectures with fast api   pyconesClean architectures with fast api   pycones
Clean architectures with fast api pycones
 
Microservice Websites – Micro CPH
Microservice Websites – Micro CPHMicroservice Websites – Micro CPH
Microservice Websites – Micro CPH
 
How We Brought Advanced HTML5 Viewing to ADF
How We Brought Advanced HTML5 Viewing to ADFHow We Brought Advanced HTML5 Viewing to ADF
How We Brought Advanced HTML5 Viewing to ADF
 
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developeraPetr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
 
- Webexpo 2010
- Webexpo 2010- Webexpo 2010
- Webexpo 2010
 

Kürzlich hochgeladen

Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 

Kürzlich hochgeladen (20)

Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 

Distributed Parcel Tracking/Management System Overview

  • 1. Architectural Overview of Distributed ParcelTracking and Management System Mark Cheeseman mcheeseman@visaglobal.com.au http://hombredequeso.id.au/
  • 2. Public Health Warning (Required by Law…) The following presentation includes graphic scenes of UI torture and SQL Server abuse that may disturb some viewers. Usable User Interface design and relational use of relational databases were both harmed in the making of this product. Viewers who suspect they may find such scenes disturbing may wish to confirm the presence of a sick bag in the back of the seat before you.
  • 3. Website/ API Business Services Process Bookings Produce Labels Customs Billing Parcel Scan In/ Out ... Tracking Website Customs Customers Parcel Recipients AusPost NZ Post Whip Operators Conceptual Diagram ...
  • 4. Website API * Tracking Website * API Update Service Tracking Update Service Parcel Audit Service * AusPost Service * Billing Service * Booking Service * Cyberfreight Service * MAWB Service NZ Post Service * NZ Post API Service Reporting Service * Scan Processing Service* Email Processing Service * File Transfer Service Customers/ Operators (Web Browser) Scan/Print (Application) Parcel Recipients (Web Browser) Cyberfreight (Application) NZ Post (API) Cyberfreight Customs (SMTP) AusPost (SFTP) Logical Diagram Bus * = has own database
  • 5. Azure VM Azure Service Bus NSB Message Transport Physical Diagram Azure SQL Server · API · Booking · AusPost · Cyberfreight · ... Azure SQL Server · Tracking Website Azure Web App Website/API (ASP.NET MVC API) Azure Web App Tracking Website (ASP.NET MVC API) RavenDb Server · Booking NSB EP · AusPost NSB EP · NZPost NSB EP · ... Service: Booking NSB Endpoint Service: AusPost NSB Endpoint Service: NZPost NSB Endpoint Service: Cyberfreight NSB Endpoint ...
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 12. { "class": ["booking"], "properties": { "bookingNumber": "BREDH10000910", "merchant": "Red Hare", "merchantCode": "REDH", "parcelCount": 1000, "created": "2015-05-24T11:47:37.4721121Z", "processes": "Labelling, Customs", "parcelsRecordedForCustomsCount": 1000, "parcelsRecordedForCustomsTimestamp": "2015-05-24T11:47:41.2653291Z", "ausPostLabelsGenerated": "2015-05-24T11:47:48.9757701Z", "ausPostLabelsRecordedForCustomsCount": 1000, "ausPostLabelsRecordedForCustomsTimestamp": "2015-05-24T11:48:00.2774165Z", "labelledSpreadsheetCreated": "2015-05-24T11:48:02.6825541Z" }, "entities": [ { "class": ["bookingSubmission"], "rel": ["/rel/booking-bookingsubmission"], "links": [ { "rel": ["self"], "href": "http://localhost:54747/api/Merchant/BookingSubmissions/92be90a5-710d-40ef-bb6c-a4a201672282" } ] } ], "links": [ { "rel": ["self"], "href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910" }, { "rel": ["file","xlsx","booking/labelledContent"], "href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910/labelledContent" } ], "actions": [ { "name": "post-bookingDespatchManifestRequest", "title": "Generate Despatch Manifest For Booking", "method": "POST", "href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910/bookingDespatchManifestRequests", "type": "application/x-www-form-urlencoded", "fields": [] } ] } GET http://localhost:54747/api /Merchant/Bookings/BREDH10000910
  • 13. { "class": ["booking"], "properties": { "bookingNumber": "BREDH10000910", "merchant": "Red Hare", "merchantCode": "REDH", "parcelCount": 1000, "created": "2015-05-24T11:47:37.4721121Z", "processes": "Labelling, Customs", "parcelsRecordedForCustomsCount": 1000, "parcelsRecordedForCustomsTimestamp": "2015-05-24T11:47:41.2653291Z", "ausPostLabelsGenerated": "2015-05-24T11:47:48.9757701Z", "ausPostLabelsRecordedForCustomsCount": 1000, "ausPostLabelsRecordedForCustomsTimestamp": "2015-05-24T11:48:00.2774165Z", "labelledSpreadsheetCreated": "2015-05-24T11:48:02.6825541Z" }, "entities": [ { "class": ["bookingSubmission"], "rel": ["/rel/booking-bookingsubmission"], "links": [ { "rel": ["self"], "href": "http://localhost:54747/api/Merchant/BookingSubmissions/92...82" LogicalView
  • 14. ] } ], "links": [ { "rel": ["self"], "href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910" }, { "rel": ["file","xlsx","booking/labelledContent"], "href": "http://localhost:54747/api/Merchant/Bookings /BREDH10000910/labelledContent" } ], "actions": [ { "name": "post-bookingDespatchManifestRequest", "title": "Generate Despatch Manifest For Booking", "method": "POST", "href": "http://localhost:54747/api/Merchant/Bookings /BREDH10000910/bookingDespatchManifestRequests", "type": "application/x-www-form-urlencoded", "fields": [] } ]
  • 15. API Event Store Bus (NSB) API Update Service WEB API Event Stream to Siren Entity Transform Event Store Http Request (GET) NSB Events from various endpoints (Booking, AusPost, Customs) “Event Store” Events NSB Events Siren Entity
  • 16. Business Processes Involving Multiple Services (Long Running Business Processes)
  • 17. ProcessManager: Saga asProcessController Booking Endpoint* Saga AusPost Endpoint* Customs Endpoint* 7. Booking “fully” accepted Saga State Fastway Endpoint* 1. BookingReceivedEvent 2. CreateApLabelsCommand 3. CreateFwLabelsCommand 6. CreateConsolidations Command 5. ApLabelsCreatedEvent 4. FwLabelsCreatedEvent
  • 18. ProcessManager: Routing Slip Booking Endpoint* AusPost Endpoint* Customs Endpoint* Fastway Endpoint* ProcessBooking SubmissionCommand Routing Slip (on Booking Message): 1. AusPostEndpoint 2. FastwayEndpoint 3. CustomsEndpoint Booking Booking Booking Booking (“fully” accepted)
  • 19. ProcessManager: Event Driven Booking Processeson Event Booking Endpoint* AusPost Endpoint* Customs Endpoint* Fastway Endpoint* 1. BookingCreatedEvent 2. AusPostLabelsCreatedEvent 3. FastwayLabelsCreatedEvent Booking Representation on all Events: { Guid BookingId BookingProcess[] Processes } public enum BookingProcess { Labelling = 1, Customs = 2, AusPostPreLabelled = 3 } 4. Booking “fully” accepted
  • 20. Solving Big(ish) Data on the Bus AusPost Service * Booking Service * Cyberfreight Service * NZ Post Service * NZ Post API Service Email Processing Service * File Transfer Service The IdealisticVision... (Logical) Bus
  • 21. AusPost Service * Booking Service * Cyberfreight Service * NZ Post Service * NZ Post API Service Email Processing Service * File Transfer Service Bus: Message Bus+ Data Bus OHS ACL ACL ACL OHS OHS ACL ACL (Message) Bus(Data) Bus
  • 22. AusPost Service * Booking Service * Cyberfreight Service * NZ Post Service * NZ Post API Service Email Processing Service * File Transfer Service Data BusImplementation SQL Database NSB (Physical) Transport: Azure Service Bus Data Bus: Implemention via SQL queries
  • 23. Not AllTransports are Created Equal…
  • 24. References Siren Specification https://github.com/kevinswiber/siren Richardson Maturity Model (for API's) http://martinfowler.com/articles/richardsonMaturityModel.html Recommended books on REST Richardson and Amundsen, RESTfulWeb APIs. Webber et. al., REST in Practice: Hypermedia and Systems Architecture
  • 25. Messaging in General Hohpe andWoolf, Enterprise Integration Patterns (for various forms of routing as process management see ch. 7) Blog Series on NServiceBus and Process Management Patterns https://lostechies.com/jimmybogard/2013/05/14/saga-patterns-wrap-up/ (Top of post has links to all post in series) https://lostechies.com/jimmybogard/2014/10/02/nservicebus-5-0-behaviors-in-action-routing- slips/ Event Based Systems VaughnVernon, Implementing Domain-Driven Design, ch. 8. Dynamic Event Replay Mechanism http://blogs.msdn.com/b/davidebb/archive/2010/01/18/use-c-4-0-dynamic-to-drastically- simplify-your-private-reflection-code.aspx