Click here to load reader
Upload
jerome-louvel
View
298
Download
0
Embed Size (px)
Citation preview
NG
@jlouvel
Looking backward
More APIs
API centricsoftware
Mobile app backend
IoTbackend
Micro service
Partner API gateway
Web app backend
PublicAPI
gateway
Social botbackend
Automatedworkflow
More participants
User
Developer
Writer
Tester Oper
ator
APITeam
Manager
More approaches
Cont
ract
-driv
en
Code-driven
Behavior-driven
Data-drivenSe
rvice
-driv
en
APIProject
Test-driven
API x DevOps = Better software delivery
DEV
API centricsoftware
QAOPS
Looking forward
clie
nt &
ser
ver
API Centric
DevOps
Next version 3
Java
8HTTP 2.0
reacti
ve
REST
DSL
API Centric
Java EE
Currentversion 2
clie
nt &
ser
ver
Java
7HTTP 1.1
synch
ronous
REST
portable
New runtime stack
Converters InjectorsAuthenticators
Reactive Streams 1.0
Java 8.0
Restlet FrameworkRuntime
Netty 4.1 SLF4J 1.7
Summer kickoff● Simplified code base
○ Removed multi-editions support and kept only 8 extensions○ Java EE, GAE and GWT specific code removed○ Only Java SE with compatibility with Android and OSGi
○ Used a new repository to remove historical weight from Git (binary dependencies)
● Reset build○ Now regular Maven project structure and dependencies
○ Gradle is considered (now supported by default in Eclipse Neon!)
● Put new runtime stack in place○ Java 8, SLF4J, Netty, Reactive Streams
REST Fest hack day● Made Netty to Restlet API communication work :-)
○ Lots of debugging to make get an HTTP request/response work○ Used a Reactive Streams adapter for Netty developed by Play! Team
■ Opportunity to contribute back and help moved as subproject of Netty (HTTP 2.0)
○ Still limited to in-memory representations
● Started refactoring the Restlet API○ Refactoring the Representation class to separate the data from the metadata better○ Introducing a new Data class hierarchy
■ Facilitate support streaming data
■ Pending work before I go back home :)
● https://github.com/restlet/restlet-framework
Restlet API processing
Restlet annotatedJava interfaces
Dynamic Restletclient proxy
Clientprogram
Dynamic Restlet server component
Server implementation
Serverconfiguration
HTTP
call
Java
call
Java
call
Clientconfiguration
uses implements introspects
(re)generate
implements
API contract definition
What’s next?● Collect feedback from the community
○ Reach out to Restlet Framework users
○ Reach out to other API developers and DevOps practitioners
● Push REST support further○ Reactive REST with built-in HTTP 2.0 connector
● Make programming web APIs even more accessible○ Introduce new abstractions to simplify writing servers and client○ Support API contract driven approach with code generation and regeneration
○ Look at best ways to add API tooling and DSL support
● Release a 3.0 milestone by the end of 2016