SOA and APIs: Fearless Lessons from the...
Transcript of SOA and APIs: Fearless Lessons from the...
1
SOA and APIs:
Fearless Lessons from the Field Mike Amundsen
Principal API Architect
@mamund
2
Fearless
3
Fearless
4
Fearless
5
Mike Amundsen
Architect, Developer, Presenter
Hypermedia Junkie
Principal API Architect for Layer 7
“Help people build great APIs for the Web”
Personal Mission
“Improve the quality and usability of information on the Web.”
6
THE CHALLENGE
7
More Devices
8
More Apps
9
More APIs
10
The Challenge
Mobility
11
The Challenge
Agility
12
The Challenge
Mobility = Agility
13
The Challenge
Increase Agility
14
The Challenge
Maintain Stability
15
Lessons from the field
Models and tools
REST and Hypermedia
Broad Experience
SOAP, CRUD, and Hypermedia
High-level View
The USE Paradigm
16
REST AND HYPERMEDIA
17
REST and Hypermedia
REST is an architectural model for
widely distributed systems
18
REST and Hypermedia - Space
http://www.flickr.com/photos/jram23/3088003105/
19
REST and Hypermedia - Time
http://www.flickr.com/photos/alancleaver/2661425133/
20
REST and Hypermedia - Model
http://www.flickr.com/photos/usnationalarchives/5476286211/
21
REST and Hypermedia - Tools
http://http://www.flickr.com/photos/36247316@N00/3108399560/
22
REST and Hypermedia
Hypermedia is a tool for
implementing remote, evolvable
systems
23
REST and Hypermedia - Space
http://www.flickr.com/photos/jram23/3088003105/
24
REST and Hypermedia - Time
http://www.flickr.com/photos/alancleaver/2661425133/
25
REST and Hypermedia – Evolvable
http://www.flickr.com/photos/isherwoodchris/5811756295/
26
REST and Hypermedia – Evolvable
http://http://www.flickr.com/photos/ecbiosheron/4139220163/
27
REST and Hypermedia – Evolvable
http://http://http://www.flickr.com/photos/nrg07/4735858552/
28
REST and Hypermedia – Real World
http://www.flickr.com/photos/smaku/233763545/
29
SOAP, CRUD, AND HYPERMEDIA
30
SOAP is for Components
http://www.flickr.com/photos/amberwalker/5755325926/
31
SOAP is for Components
32
SOAP is for Components
Strong on XML, Weak on HTTP
33
CRUD is for Objects
http://www.flickr.com/photos/topekalibrary/4294393624/
34
CRUD is for Objects
35
CRUD is for Objects
Strong on HTTP, Weak on Workflow
36
Hypermedia is for Messages
37
Hypermedia is for Messages
38
Hypermedia is for Messages
Strong on HTTP, Strong on Workflow
39
SOAP, CRUD, Hypermedia
Moving away from SOAP
40
SOAP, CRUD, Hypermedia
Implementing CRUD
41
SOAP, CRUD, Hypermedia
Heading toward Hypermedia
42
THE USE PARADIGM
43
Usable
Usability is the ease of use and learnability of
a human-made object.
44
Usable – Action Life Cycle
45
Usable – Focus on tasks
http://www.flickr.com/photos/somoamsterdam/4833837888/
46
Usable – Employ empirical measurement
47
Usable – Iterative design
http://www.flickr.com/photos/aajbutler/5448088057/
48
Usable
Focus
49
Usable
Measure
50
Usable
Iterate
51
Scalable
Scalability is the ability of a system, network,
or process, to handle a growing amount of
work in a capable manner.
52
Scalable – Out vs. Up
53
Scalable
http://www.flickr.com/photos/27976837@N00/4347462236/
54
Scalable – DevOps
http://www.flickr.com/photos/friendlydragon/3864150771/
55
Scalable – Where it counts
56
Scalable
Scale Out
57
Scalable
Automate
58
Scalable
Where it counts
59
Evolvable
Evolvability is defined as the capacity of a
system for adaptive change.
60
Evolvable
61
Evolvable (pandere – to stretch)
http://www.flickr.com/photos/kenjonbro/6277623578/
62
Evolvable (vertere – to turn)
http://www.flickr.com/photos/erdero/2274374743/
63
Evolvable
Versions “break”, extensions don’t.
64
SUMMARY
65
Summary - Challenge
Mobility
Agility
Stability
66
Summary – Models
http://www.flickr.com/photos/usnationalarchives/5476286211/
67
Summary – Tools
http://http://www.flickr.com/photos/36247316@N00/3108399560/
68
Summary – Components
http://http://www.flickr.com/photos/36247316@N00/3108399560/
69
Summary – Objects
http://www.flickr.com/photos/topekalibrary/4294393624/
70
Summary – Messages
71
Summary – Usable
72
Summary – Scalable
73
Summary – Evolvable
74
SOA and APIs:
Fearless Lessons from the Field Mike Amundsen
Principal API Architect
@mamund