12. 12
REST and AMQP
Ground
SpaceChange from String to Number
‘1537980241
’
1537980241
153798024
1
153798024
1
153798024
1
Errors can also be
introduced from the
opposite direction
13. 13
Messaging Involves A LOT of DATA
curl -X POST "https://<server>/CMOB/CMOB-Platform-Ground-
RMQ/work/acct/start" -H "accept: application/json" -H "Content-
Type: application/json" -d "{ "endpoint": “acct/start", "data": {
"common": { "vesselId": "N5001", "eventTime": "2018-02-
13T19:08:46.503Z", "flightId": "N805JB_150122132435" },
"session_id": "123e4567-e89b-12d3-a456-426655440000",
"auth": { "type": "user", "uid": "joe_user@awesome.com"
}, “address": "08.37.96.40", “modem":
"00:A0:BC:DE:96:34", "serviceId": 71, "category": "PED" }}"
Difficult to spot errors and trends
18. 18
Sometimes DATA is CLOSE but not Quite…
00:A0:40:02:01:FC
00A0400201FC00:a0:40:02:01:fc
00a0400201fc
19. 19
DATA – Other Challenges
RESOLUTION Mismatch
SAME Field copied in MESSAGE Duplicated Messages DATA Hard to Find
§ Aircraft ID
§ Tail ID
§ Vessel ID
§ Vehicle ID
EPOCH Time 1534786056
MILLISeconds
SECONDS
"data": {
"common": {
“aircraftId": "N999VX",
"eventTime": "2018-02-13T19:08:46.503Z",
"flightId": "N999VX"_150122132435"
},
“address": "08.37.96.40",
"aircraftNumber": "N999VX",
One field with MANY Names
20. 20
If you deliver all over the world,
your data cannot be all over the map!
24. 24
API Message Hierarchy
FIELDS
Describes the basic
attributes as the building
blocks for objects and
messages.
OBJECTS
Used to collect fields (or
other objects) into new
objects for messages.
MESSAGES
Used to describe the
collection of fields and
objects that will actually be
transported
System engineering controls the data
fields
System engineers, architects and
developers all collaborate on objects
APIs and Messages are viewed,
commented and edited across the
entire DevOps Team. APIs are
versioned in multiple ways using
SwaggerHub and Git
Standards are enforced at all
levels
25. 25
Increases your speed of execution – build collaborate review and update
Used to describe the collection of fields and objects that will actually be transported from at least one entity to
another and possible more. This is the data of the message without regard to any transport.
26. 26
MARKUP Up Front for all Transport Information
The API can represent the interfaces we are tracking. The description includes the: General Description,
Technologies: (e.g. HTTP, RMQ, JSON, etc), Addressing Strategy and Security. For each "flow" on the
interface, a table can be populated to define triggers, latency, guaranteed delivery, etc.
Tables
Descriptions,
technologies, addressing,
security
28. 28
SwaggerHub Domain Models
A Source of Components for Creative Design
A single Domain Data Field = well engineered single unit
Six humble bricks are a lesson in the infinite creativity and imagination we possess
individually, and collectively. Samuel Williams
29. 29
Scaling a company requires a fundamentally different set of business
mechanics than the startup phase.
In the startup phase, a group of people are
running around trying
1. to develop a vision
2. recruit an all-star team
3. find product/service-market fit
4. building great customer experiences
5. make everything repeatable and scalable.
In the scale-up phase, the quick, nimble, iterative approach begins to break down. The
problems you deal with begin growing increasingly complex and you’re not able to move
fast”
Khuram Zaman, CEO of Fifth Tribe
31. 31
Reuse hierarchy of definitions
from data dictionary, objects and
messages from domains or APIs.
Reuse a definition in another API.
(back references do not resolve
through multiple documents.
Share APIs (ICDs) across teams
with version and access control.
N/A Infrastructure could be built for
access and version control.
Create global models and
reusable styles with style
validators used across all assets.
N/A Compliance could be
enforced through reviews.
Generate code for API consumers
(internal and external) to
download.
Yes with codegen
Mock API functionality to share
among stakeholders before
actual implementation is created
N/A
Integrate with code repository
(GitHub) so that data is stashed
with every ‘save’.
Manual process to stash code to
GitHub
Future goal to automatically
create and fun automated testing
(Jenkins).
N/A may be available outside the
environment
Code
Generation
Reuse Schema
$ref
Collaboration
Standardized
Models
Mock APIs
CM
Acceptance
Testing
Load Testing
Future goal to test how APIs
perform under load for scalability
N/A may be available outside the
environment
SmartBear Commercial Vs Swagger Open Source
Design and document REST APIs in an industry accepted, machine
and human readable format, Swagger 2.0 and OAS 3.0
Viasat CMOB C. Recker 20180725