4. The Concept - ADAPT
● Help disabled passengers when they need assistance at
airports
● Help airports manage requests for assistance
● Approximately 5 months developing the alpha release,
followed by a few weeks of trialling with users
7. Current Passenger Journey
● Call airport beforehand with travel arrangements
● Once arrived at airport, find a help desk and present
yourself
● If mobility impaired they will take you to a holding area
before going through security and then into another
holding area until boarding for flight.
● There can be up to 7 handovers of passengers between
Assistance Staff
● Cannot leave area without assistance (even if not required)
so can’t shop or toilet
8. New Passenger Journey
● Trigger geofence breach when passenger nearing
airport. This puts passenger on the list for
coordinators.
● Passenger requests assistance when needed.
Coordinator is notified and UI is updated
● Coordinator assigns passenger assistant.
● Assistant can see where they are on integrated map
and goes to passenger.
● Two way messaging between passenger and
assistant.
9. Technology
● AWS
○ Lambda, Dynamo, API Gateway, Cognito, S3, SES,
CodeBuild, Cloudformation, SAM, Cloudwatch
● WebSockets and REST
● NoSQL (key-value)
● Push notifications (Android and browser with VAPID)
● Internal Mapping (3rd party)
● Serverless!
10. What is Serverless?
● An architecture that allows developers to focus on
business value instead of infrastructure management by
using a cloud providers services.
● No server management
(provisioning, O/S, patching, etc.)
● Auto-Scaling
● High Availability
● Pay for value
Why?
11. Architecture
● 3 microservices
○ adapt-apis, notifications, profiles
● AWS multi-account (for each service)
○ Staging and PR’s
○ Production
● WebSockets for real time updates to client
● CI and CD
12.
13.
14. Bill by Account
January February March April May June July Total
notifications-staging 2.52 3.39 2.71 1.52 2.04 2.84 2.79 17.81
notifications-production 0.47 0.84 1.31
profiles-staging 1.60 1.41 1.99 1.87 1.48 8.35
profiles-production 0.04 0.49 0.82 1.35
adapt-staging 0.78 4.52 11.40 15.26 30.57 28.52 91.05
adapt-production 4.39 13.22 17.61
Monthly 2.52 4.17 8.83 14.33 19.33 40.63 47.67 137.48
15.
16. Bill by AWS Service
CodeBuild 57.16
CloudWatch 24.97
Tax 22.85
ECR 19.25
S3 7.02
API Gateway 1.96
Dynamo 1.45
Route53 0.50
CloudFront 0.04
Lambda 0.01
Cognito 0.00
17.
18. Things We Learned
● Size limits on API Gateway and Lambda prevented large profile images going through. To solve
this we ask S3 for a signed url the client can use to upload with.
● DynamoDB stream will constantly try failed lambdas preventing any new invocations. To solve
this we catch all possible errors from the lambda and return appropriately.
● WebSockets are hard to automate in testing. To solve this we wrote and open sourced our own
testing framework.
● Direct integration with API Gateway is possible but not recommended. Hard to write VTL without
several attempts. Cannot test.
● Whilst NoSQL (DynamoDB) databases can be relational it is VERY hard. If you know your access
patterns/queries this is a good choice. Otherwise SQL/relational offer more flexibility.
19. Open Source
● Pywsitest
● aws-lambda-decorators
- extract (from event or SSM)
- validation of parameters
- CORS
- logging, exceptions, etc.
● aws-dynamodb-parser