SlideShare uma empresa Scribd logo
1 de 117
Baixar para ler offline
Agile Integration
Jeremy Davis
jeremy.davis@redhat.com
@argntprgrmr
Ram Maddali
rmaddali@redhat.com
@RamMaddali
Agenda
8:30 AM – 9:00 AM
INTRODUCTION & SETTLE IN
9:00 AM – 10:00 AM
AGILE INTEGRATION JOURNEY
10:00 AM – 10:30 AM
INTEGRATION DEMO
10:30 AM – 10:45 AM
BREAK
10:45 AM – 12:00 AM
DISTRIBUTED INTEGRATION AND MICROSERVICE
12:00 AM – 1:00 PM
LUNCH
Agenda
1:00 PM – 2:00 PM
API FIRST
2:15 PM – 3:30 PM
CONTAINER
2:00 PM – 2:15 PM
BREAK
4:45 PM – 5:15 PM
SUMMARY / Q & A
3:30 PM – 4:45 PM
API Management
AGILE INTEGRATION JOURNEY
Waterfall
CI/CD
Server/VM
Container
Data Center
Cloud
Monolith
MicroservicesAPIs
Webservices
BE COMPETITIVE
Developing software
Developing microservices...
INTEGRATION
AGILE INTEGRATION
SOA
Microservices
Event-Base
Container
API
DEVOPS
SOA AND ESB
ESB
Contract
Platform Data
Application
UDDI Process Flow
INSERT DESIGNATOR, IF NEEDED13
● Stringent scalability
● Slow team co-ordination
● Complex service registry
● Long software delivery cycle
SOA AND ESB
MICROSERVICES
MICROSERVICES
Faster Software Delivery
Resource Scalability
Failure Isolation
MICROSERVICES
Development
Security
DBA
Operation
Release
● Simple,small
● Boundary and Replaceable
● Independence
microservice
API
MICROSERVICES
Client API Routing
Protocol
Endpoints
Transformation
SMART ENDPOINT
APIS
APIs
RESTFul
HTTP
Swagger
Documentations
JSON
XML
APIManagement
●
●
●
●
AUTOMATION
TESTS PRODDEV
CI/CD
Pipelines
source
repository
CI/CD
engine
dev container target
environment
CONTAINERS
VIRTUAL MACHINES
CONTAINERS
CONTAINERS
●
●
●
INSERT DESIGNATOR, IF NEEDED27
CONTAINERS Rapid software
releases
Multi-tenancy
Guarantee high
availability
Scaling
management
Failure
detection
INSERT DESIGNATOR, IF NEEDED28
CONTAINERS
ALL TOGETHER NOW
CI/CD Container CloudMicroservicesAPIs
BE COMPETITIVE
AGILE INTEGRATION
Cloud native solutions
Lean artifacts,
individually deployable
Container based scaling
and high availability
● Lightweight
● Pattern Based
● Reusable
Connectors
● Microservice Based
● Cloud native
solutions
● Lean artifacts,
individually
deployable
● Container based
scaling and high
availability
● Well defined,
re-usable, and well
managed end-points
● Ecosystem leverage
Flexibility Scalability Re-Usability
AGILE INTEGRATION
Cloud native solutions
Lean artifacts,
individually deployable
Container based scaling
and high availability
Flexibility Scalability Re-Usability
FUSE FUSE
3SCALE
OPENSHIFT
KUBERNETES
DOCKER
FABRIC8
APACHE KARAF
SPRING BOOT
AGILE INTEGRATION
Container Container Container
Container
Client
APIManagement
RESTFul API RESTFul APIAMQP
RESTFul API
RESTFul
API
ClientClient
API
API
API
Mgmt
MUST READ !
Download your copy:
https://developers.redhat.com/promotions/microservi
ces-for-java-developers/
@christianposta
DISTRIBUTED INTEGRATION
Agile Integration
● Lightweight
● Pattern Based
● Reusable Connectors
● Microservices Based
● Cloud native
solutions
● Lean artifacts,
individually
deployable
● Container based
scaling and high
availability
● Well defined,
re-usable, and well
managed
end-points
● Ecosystem
leverage
Flexibility Scalability Re-Usability
Distributed
Integration
DISTRIBUTED INTEGRATION - Microservice
microservice by
Red Hat JBoss Fuse
● Lightweight
○ Spring Boot deployment
○ DSL
○ S2i
● Pattern Base
○ Enterprise Integration Pattern
● Reusable Connector
○ Camel components
Building microservice with Fuse
RED HAT JBOSS FUSE
microservice
160+
Endpoint Components
Database
Msg
Broker
….
XML
JSON
HL7
…...
HTTP
Netty
FTP
….
REST
API
Resource
Connector
Twitter
FB
Salesforce
SaaS
….
Building microservice with Fuse
RED HAT JBOSS FUSE
microservice
160+
Endpoint Components
Database
Msg
Broker
….
XML
JSON
HL7
…...
HTTP
Netty
FTP
….
REST
API
Resource
Connector
Twitter
FB
Salesforce
SaaS
….
Composing Microservice with Fuse
RED HAT JBOSS FUSE
microservice microservice microservice microservice
microservice
Enterprise
Integration
Patterns
Red Hat JBoss Fuse
APACHE CAMEL
SPRING-BOOT APACHE KARAF
CONTAINER
OPENSHIFT
JBOSS
DEVELOPER
STUDIO
Camel define routing
and mediation rules
based on Enterprise
Integration Pattern and
with 160+ built-in
components
INSERT DESIGNATOR, IF NEEDED42
PATTERN BASED
Split
orders
Send
each order
to it’s
process service
Electronics
Others
Aggregator
Normalizer
Content Enricher
Resequencer
INSERT DESIGNATOR, IF NEEDED43
WHAT IS APACHE CAMEL?
Split
orders
Send
each order
to it’s
process service
Electronics
Others
Customer
Purchase
from("file:work/cbr/input")
.split(xpath("//orders"))
.choice()
.when(xpath("/order:order/order:type = 'E'"))
.to("activemq:queue:electronic/us")
.otherwise()
.recipientList(simple("http4://otherservice"));
INSERT DESIGNATOR, IF NEEDED44
WHAT IS APACHE CAMEL?
<route id="cbr-route">
<from id="_from1" uri="file:work/cbr/input"/>
<split id="_split1">
<xpath>//orders</xpath>
<choice id="_choice1">
<when id="_when1">
<xpath>/order:order/order:type = 'E'</xpath>
<to id="_to1" uri="activemq:queue:electronic"/>
</when>
<otherwise id="_otherwise1">
<recipientList id="_recipientList1">
<simple>http4://otherservice</simple>
</recipientList>
</otherwise>
</choice>
</split>
</route>
INSERT DESIGNATOR, IF NEEDED45
CAMEL DSL
JBOSS
DEVELOPER
STUDIO
Java DSL
Blueprint DSL (XML)
Spring DSL (XML)
INSERT DESIGNATOR, IF NEEDED46
ENDPOINT CONFIGURATION
file://myfolder/directory? delete=true&readLock=changed
Programmatic Example:
FileEndpoint fileEp = new FileEndpoint();
fileEp.setFile(new File(“/some/dir”));
fileEp.setDelete(true);
fileEp.setReadLock(“changed”);
from(fileEp).to(...);
URI Example:
Component
Name Configuration
Parameters
INSERT DESIGNATOR, IF NEEDED47
CAMEL BEAN INJECTION
<beans ....>
<bean class="org.apache.camel.component.servlet.CamelHttpTransportServlet"
id="camelHttpTransportServlet"/>
<bean
class="org.springframework.boot.web.servlet.ServletRegistrationBean" id="servlet">
<property name="name" value="CamelServlet"/>
<property name="servlet" ref="camelHttpTransportServlet"/>
<property name="urlMappings" value="/demos/*"/>
</bean>
<bean class="com.redhat.fisdemoblockchain.MockBitcoinApp" id="mockBitcoinApp"/>
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<!-- … -->
<route>
</camelContext>
</beans>
@BeanInject("mockBitcoinApp")
MockBitcoinApp mockBitcoinApp;
INSERT DESIGNATOR, IF NEEDED48
160+ ENDPOINT COMPONENTS
activemq cxf kubernetes jasypt
activemq-journal cxfrs freemarker javaspace
amqp dataset ftp/ftps/sftp jbi
atom db4o gae jcr
bean direct hdfs jdbc
bean validation ejb hibernate jetty
browse esper hl7 jms
cache event http jmx
cometd exec ibatis jpa
crypto file irc jt/400
INSERT DESIGNATOR, IF NEEDED49
160+ ENDPOINT COMPONENTS
INSERT DESIGNATOR, IF NEEDED50
CAMEL ROUTE
Producer
● Produce requests
● End of route
● Dispatching outgoing
requests
Consumer
● Consume requests
● Start of a route
● Dispatching
outgoing replies
Processor
● Intermediate node in
the pipeline
● standard processors
or customized ones
CAMEL EXCHANGE in ROUTE
PROCESSOR PROCESSOR PROCESSOR
PRODUCER
Exchange
Exchange
In In In
In
Out Out Out
Out
RUNNING CAMEL
Spring Boot Karaf
Spring DSL/Java
Spring Boot Starter module
Fat JARs
Stand-alone App
Embedded dependency
Pre-configured, pre-sugared
Small and lightweight
Blueprint DSL/Java
Blueprint module
Bundles
Modularized
Explicit dependency
Versioned
Hot redeploy
Container
Fuse and Spring Boot
Application
Camel Spring Boot Starter
Camel route
Configurations
Auto-wires components
Tomcat, Undertow
JDBC
Messaging
(application.properties/yml)
Auto-detects
routes
Auto-configure
Camelcontext, register
Camel utilities
TESTING
Spring Boot Karaf
@RunWith(SpringRunner.class)
@SpringBootTest annotation
Autowire CamelContext
Extends CamelBlueprintTestSupport
camel-test-blueprint
Specify Camel blueprint descriptor
location
ASSERT
● # of messages are received on each endpoint,
● Payloads are received in the right order,
● Messages arrive match some kind of Predicate
TESTING
<route id="cbr-route">
<from id="_from1" uri="file:work/cbr/input"/>
<choice id="_choice1">
<when id="_when1">
<xpath>/order:order/order:type = 'E'</xpath>
<to id="_to1" uri="activemq:queue:electronic"/>
</when>
<otherwise id="_otherwise1">
<to id="_to1" uri="activemq:queue:others"/>
</otherwise>
</choice>
</route> public void configure() throws Exception {
// mock the for testing
interceptSendToEndpoint("activemq:queue:electronic")
.skipSendToOriginalEndpoint()
.to("mock:catchElectronic");
}
CAMEL SPRING BOOT TESTING EXAMPLE
@RunWith(SpringRunner.class)
@ActiveProfiles("dev")
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class ApplicationTest {
@Autowired
private TestRestTemplate restTemplate;
@Autowired
private CamelContext camelContext;
@Test
public void testProfile() {
ResponseEntity<Accounts> profileResponse
= restTemplate.getForEntity("/demos/account/profile/123456", Accounts.class);
assertThat(profileResponse.getStatusCode()).isEqualTo(HttpStatus.OK);
Accounts account = profileResponse.getBody();
assertThat(account.getAcctname()).isEqualTo("Simon C");
assertThat(account.getBalance()).isEqualTo(5000);
assertThat(account.getAddr()).isEqualTo("43 SLIVER EAGLE ST, RIVER");
}
}
INSERT DESIGNATOR, IF NEEDED57
MORE INFORMATION
● Camel in Action
● Apache Camel Developer’s
Cookbook
● Community website
○ http://camel.apache.org/
LAB ONE
Container
Integration
Container
A
P
I
API management
Customer Data
ID
Balance
VIP Status
Customer Data
{“ID”,
“Balance”,
“VIP Status”}
LAB ONE
http://bit.ly/2i015H4
VM Password:
r3dh4t1!
APIs
Agile Integration
● Well defined, re-usable, and
well managed end-points
● Ecosystem leverage● Lightweight
● Pattern Based
● Reusable
Connectors
● Microservice Based
● Cloud native
solutions
● Lean artifacts,
individually
deployable
● Container based
scaling and high
availability
Re-UsabilityFlexibility Scalability
API
API
Multiple Device
Support
Device are not
limited to
screen
Voice enable
Drome, VR
Customer/
Vendor/
Partner
More complex
ecosystem
SaaS
Frequency
Data volume
Monetize
Service
Increased
revenue
market share
Open up new
opportunities
Modularize and
agility
Enhanced
developer
experience
Reuse code
Hide
implementation
details
Scalability in
Distributed
System
Able to flexibly
allocate
resource
Cloud enabled
API FIRST
microservice by
RED HAT JBOSS FUSE
REST DSL
Swagger
API Doc
API
Data
Format Transform
3ScaleAPImanagement
APPLYING API BEST PRACTICES
Simply but concrete naming for the URI.
Use HTTP Method for CRUD if possible:
● READ -> GET
● CREATE -> PUT
● UPDATE -> POST
● DELETE -> DELETE
● Globally recognized standard, easy consumable
<get uri="customer/{customerid}">
<to uri="direct:getCustomerinfo"/>
</get>
<get uri="product/{id}">
<to uri="direct:productInventory"/>
</get>
<get uri="account/profile/{acctid}">
<to uri="direct:getprofile"/>
</get>
APPLYING API BEST PRACTICES
Make the most out of HTTP Errors
Setting the right granularity of data and using the common data format
Clear automatic generated documentation
Continuous Improvement
Building APIs
● Native support
● Intuitive tooling
● Light weight
● Flexible service
and code re-use
from backend
Deploy APIs
● Flexibility to scale
● Load balancing
● zero downtime
● Security
Distributing APIs
● Authorization
● Clear documentation
● Enforce policies
● Community
Performance Analyst
● Number of Hits
● Average response time
● Revenue earned
Business alignment
● Change in market
● Government regulation
● New service launch
Versioning
● Retire
● Update
● New Service
● Internal service
re-creation
API
API FIRST
microservice by
RED HAT JBOSS FUSE
REST DSL
Swagger
API Doc
API
Data
Format Transform
microservice by
RED HAT JBOSS FUSE
API
microservice by
RED HAT JBOSS FUSE
Consume
Exposes
3ScaleAPImanagement
External clients
Community,
Partners,
Customers
SERVICE RESILIENCE
JBoss Fuse
microservice
API
JBoss Fuse
microservice
API
microservice
microservice
API
microservice
microservice
API
Chain reaction
JBoss Fuse
microservice
API
SLOW!!
Client
Circuit Breaker
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
<hystrix>
<to uri="http://fooservice.com/slow"/>
<onFallback>
<transform>
<constant>Fallback message</constant>
</transform>
</onFallback>
</hystrix>
<to uri="mock:result"/>
</route>
</camelContext>
JBoss Fuse
microservice
API
API
Service SaaS
Slow! No
response!
Timeout
Fallback
INSERT DESIGNATOR, IF NEEDED70
CONVERTING BETWEEN DATA FORMAT
● Marshal
○ Java Bean → Textual format
● Unmarshal
○ Textual, Binary format → Java Bean
● Dozer
○ Fine-grained integration
■ mapping literal values
■ Use expressions
INSERT DESIGNATOR, IF NEEDED71
DIFFERENT DATA FORMAT
INSERT DESIGNATOR, IF NEEDED72
MARSHAL/UNMARSHAL WITH TOOLS
<marshal>
<xmljson/>
</marshal>
<marshal>
<bindy classtype=”example.Product" type="Csv">
</marshal>
<marshal>
<jaxb partClass=“example.TradeOrder” contextPath=“example"/>
</marshal>
INSERT DESIGNATOR, IF NEEDED73
DATA FORMAT EXAMPLE
Input XML File:
<root>
<child1>text1</child1>
<child2>text2</child2>
</root>
Camel Route:
...
from(“file:///xmlsourcedir”)
.unmarshal().jaxb()
.process(...)
.marshal().json()
.to(“file:///jsondestdir”);
...
Output JSON File:
{"root":
{"child1": "text1",
"child2": "text2"}
}
Transformation Tooling
XML
JSON
JAVA
Customize
Drag and drop
mapping
Set property
Set variable
Set expression
Add transformation
Add custom
transformation
REST DSL
<camelContext xmlns="http://camel.apache.org/schema/spring">
<rest path="/say">
<get uri="/hello">
<to uri="direct:hello"/>
</get>
<get uri="/bye" consumes="application/json">
<to uri="direct:bye"/>
</get>
<post uri="/bye">
<to uri="mock:update"/>
</post>
</rest>
<route>
<from uri="direct:hello"/> …
</route>
<route>
<from uri="direct:bye"> …
</route>
</camelContext>
Verb
defining
http
method
Basepath
The service
path
Uri template
The service
method and
parameters
Consumes
Accept data format
setting
REST DSL
<restConfiguration bindingMode="auto" component="servlet" port="8080"/>
Message Body Direction Binding Mode Message Body
XML Incoming auto, xml, json_xml POJO
POJO Outgoing auto, xml, json_xml XML
JSON Incoming auto, xml, json_xml POJO
POJO Outgoing auto, xml, json_xml JSON
● camel-netty4-http
● camel-jetty
● camel-servlet
● camel-undertow
SWAGGER
<restConfiguration apiContextPath="api-docs" bindingMode="json"
component="servlet" contextPath="/demos">
<apiProperty key="cors" value="true"/>
<apiProperty key="api.title" value="API for demo"/>
<apiProperty key="api.version" value="1.0.0"/>
</restConfiguration>
<get uri="/{id}" outType="com.redhat.User">
<description>Find user by id</description>
<param name="id" type="path" description="The id of the user to get" dataType="int"/>
<to uri="bean:userService?method=getUser(${header.id})"/>
</get
LAB TWO
http://bit.ly/2h3JGxL
CONTAINERS
Agile Integration
●
●
● Cloud native solutions
● Lean artifacts, individually
deployable
● Container based scaling
and high availability
● Lightweight
● Pattern Based
● Reusable
Connectors
● Community
Sourced
● Well defined,
re-usable, and well
managed
end-points
● Ecosystem
leverage
ScalabilityFlexibility Re-Usability
Container
CONTAINERS
●
●
●
●
OPENSHIFT
CONTAINERS
Developer’s Local Env (laptop, desktop)
CDK
JBDS
VCS (Git)
Build
Run
Test
Jenkins
Nexus
(Library
Management)
Deployment Pipeline
Automatic Testing
Release management
Failure feedback
OPENSHIFT
OPENSHIFT
CONTAINERS
● Containerized application run in Pods
● Pods exposed as a Service
● Edge router http://myapp.com
○ Integration API endpoints (JBoss pods)
○ database (MySQL pods with persistent storage)
○ Messaging (TBD...)
OPENSHIFT
CONTAINERIZED APPS RUN IN PODS
OPENSHIFT
PODS
● A small group of tightly coupled
Containers
● Ensures collocation
● Docker containers share resources
within the pod
○ Volumes
○ Network / IP
○ Port space
○ CPU / Mem allocations
● Pod health probes
OPENSHIFT
KUBERNETES
OPENSHIFT
PODS EXPOSED AS SERVICE
● Defines a group of Pods and how to access them
○ Labels and Selectors
● Decouple providers and accessors of services
● Don’t depend on Pod IPs directly
● Use a single IP that doesn’t change
● Virtual IP load balancing and discovery
POD
SERVICE
POD
10.0.1.1 10.0.1.2
CLIENT Name: amq
IP: 170.30.10.10
SERVICE DISCOVERY
POD
SERVICE
POD
10.0.1.
1
10.0.1.2
CLIENT Name: amq
IP: 170.30.10.10
POD
10.0.1.3
Service label
common label you apply to
each of the pods
Service proxy
single IP address that other
services can call
ROUTES
POD
SERVICE
PODPOD
SERVICE
POD
ROUTE
CLIENT CLIENTCLIENTRouters support the
following protocols:
● HTTP
● HTTPS (with SNI)
● WebSockets
● TLS with SNI
OPENSHIFT
FAILURE RECOVERY
POD
SERVICE
PODPOD
SERVICE
POD
ROUTE
POD
Rebalance traffics
Redirect request to
available Pods
Replace failing pod
Starts another pod and
bind to serviceHealth Checks
periodically performs
diagnostics on a running
container.
REPLICATION CONTROLLER
● Ensures that a specified number of Pod
replicas is running
● Holds Pod Templates for creating new
Pods
● Autoscaling
● Rolling Updates
OPENSHIFT
BUILDING IMAGES
● Build strategies
○ Source Source-to-Image (S2I)
○ Binary Source-to-Image (S2I)
OPENSHIFT
S2I
Docker
Custom
Git
Dockerfile
Binary
Image Build Docker Image
Build
Source
Build
Strategy
NEED UPDATE FOR BINARY S2i
OPENSHIFT
codeGit
Repository
Source-to-Image
(S2I)
Application
Container
deploy
CODE
BUILD
DEPLOY
Container
Image
Image
Registry
OPSDEV
BUILDING IMAGES
OPENSHIFT
PIPELINE
OpenShift
Jekins
Image
Repository
Git
Pods
Build
Deploy
Webhook
Git push
Pipeline
starts
Build
application
image
Running application
container in different
environment
OPENSHIFT
PIPELINE
node('maven') {
stage('build') {
openshiftBuild(buildConfig: 'buildconfigname', showBuildLogs: 'true')
}
stage('staging') {
openshiftDeploy(deploymentConfig: 'deploymentconfigame')
}
….
}
OPENSHIFT
● Deployment strategy determines the deployment process for containers
● Rolling strategy
○ Performs rolling updates
○ Supports life-cycle hooks for injecting code into deployment process
○ Waits for pods to pass readiness check before scaling down old components
○ Used by default if no strategy specified on deployment configuration
● Recreate strategy
○ Has basic rollout behavior
○ Scales down previous deployment before deploying the new one
○ Supports life-cycle hooks for injecting code into deployment process
● Custom strategy for custom deployment behaviour
DEPLOYMENTS
OPENSHIFT
● Reducing downtime and risk associated with release
● Two identical environments in containing two
different releases (Blue and Green)
● After validating new release, can switch all traffic to
new version
● Quickly roll application back if you find issues
BLUE-GREEN DEPLOYMENT
router
OPENSHIFT
● A/B testing is a way of testing features in
application for various reasons like usability,
popularity, noticeability, etc
● Usually associated with application UI however
the back-end services need to be available
● Can implement with either application-level or
static switches
A/B DEPLOYMENT
OPENSHIFT
CONTAINER
Developer’s Local Env (laptop, desktop)
CDK
JBDS
VCS (Git)
Build
Run
Test
Jenkins
Nexus
(Library
Management)
Deployment Pipeline
Automatic Testing
Release management
Failure feedback
LAB THREE
http://bit.ly/2yL7GPP
API Management
Take Control of Your APIs
Creating & Exposing APIs is just the start
Security &
Authentication
Version Control
Documentation
Policies
Access Control
Monitoring
Lifecycle
Management
Provisioning
Alerts
Metering & Billing
Testing
Developer Portal
Scalability
Reliability
API Life-cycle
The API Lifecycle Management Approach
DEFINE: Identify the API services that deliver value to
the business layer
DEVELOP: Design, code, test, document standardize
templates
PUBLISH: Run security with defined policies and
controls
SUPPORT: Offer community, forums, documentation to
interact and collaborate
RETIRE: EOL, un-publish, communicate and remove
from market place following version control best
practice
3scale API Management
RBDMS
SAP
NoSQL
WS
REST
JMS
+ more
FUSE INTEGRATION
SERVICE
JBoss Fuse
Service API
JBoss Fuse
Service API
JBoss Fuse
Service API
Developers
Partners
Mobile App
Affiliates
Internal Projects
+ more
API MANAGEMENT
Access control and
security
API contracts and
rate limits
Analytics and
reporting
Developer portal and
docs
Billing and payments
3Scale API Management
Stack
Access control Security
API contracts Rate limits
Analytics Reporting
Dev portal Docs
Billing Payments
Admin Console
Dev Portal
API
Management
Traffic Manager
APIs
Applications
Consumers
HTTP / HTTPS
Security, usage &
rate limits
3scale API Management
microservice
microservice
microservice
OpenShift
3scale
Proxy
CLIENT
JBoss Fuse
microservice
API
3scale API Management
Platform
Deployment Options
Full SaaS: Hosted API Manager & API Gateways
Real Time Admin Portal
Sync / Authorize
API Provider
API Gateway API Manager
API Provider
Administrators
Mobile Apps Developer Apps
Branded Dev PortalSwagger Doc
API Consumers
Developers
Deployment Options
Hybrid: Hosted Manager - Self-managed Gateway
Real Time Admin Portal
Sync / Authorize
API Provider
API Gateway API Manager
API Provider
Administrators
Mobile Apps Developer Apps
Branded Dev PortalSwagger Doc
Developers
API Consumers
Deployment Options
Full On-Premise
Real Time Admin Portal
Sync / Authorize
API Provider
API Gateway
(Openshift)
API Manager
API Provider
Administrators
Mobile Apps Developer Apps
Branded Dev PortalSwagger Doc
API Consumers
Developers
Deployment Options
On-premise: Self-managed APIs
Real Time Admin Portal
Sync / Authorize
API Provider
API Gateway
(Openshift)
API Manager
API Provider
Administrators
Mobile Apps Developer Apps
Branded Dev PortalSwagger Doc
API Consumers
Developers
Deployment Options
On-premise: Self-managed APIs & External Self-managed Gateway
Real Time Admin Portal
Sync / Authorize
API Provider
API Gateway
(Native/Docker)
API Manager
API Provider
Administrators
Mobile Apps Developer Apps
Branded Dev PortalSwagger Doc
API Consumers
Developers
Native
apicast-gateway code from
upstream repo running on:
Openresty (NGINX + LUA)
for Red Hat Enterprise Linux
Docker
apicast-gateway
Docker Image
from Red Hat Registry
Openshift
Openshift API Gateway
Template (which will pull in
apicast-gateway Docker
Image)
Inside or Outside the same
API manager Cluster
Self-managed API Gateway
Deployment Options
Lab Four
http://bit.ly/2z29V1Q
Summary
THANK YOU
plus.google.com/+RedHat
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHatNews

Mais conteúdo relacionado

Mais procurados

API Deep Dive: APIC EM Rest API
API Deep Dive: APIC EM Rest API API Deep Dive: APIC EM Rest API
API Deep Dive: APIC EM Rest API Cisco DevNet
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetNormandy JUG
 
Successful Patterns for running platforms
Successful Patterns for running platformsSuccessful Patterns for running platforms
Successful Patterns for running platformsPaul Czarkowski
 
JavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor AppJavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor AppJoe Kutner
 
More than Data
More than DataMore than Data
More than Datamilesoc
 
What's Coming in Java EE 8
What's Coming in Java EE 8What's Coming in Java EE 8
What's Coming in Java EE 8PT.JUG
 
Puppet devops wdec
Puppet devops wdecPuppet devops wdec
Puppet devops wdecWojciech Dec
 
Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019RackN
 
Modern web application development with java ee 7
Modern web application development with java ee 7Modern web application development with java ee 7
Modern web application development with java ee 7Shekhar Gulati
 
Oracle SOA Suite Everywhere
Oracle SOA Suite EverywhereOracle SOA Suite Everywhere
Oracle SOA Suite EverywhereRupesh Das
 
Spring5 New Features - Nov, 2017
Spring5 New Features - Nov, 2017Spring5 New Features - Nov, 2017
Spring5 New Features - Nov, 2017VMware Tanzu Korea
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugToshiaki Maki
 
Java Serverless in Action - Voxxed Banff
Java Serverless in Action - Voxxed BanffJava Serverless in Action - Voxxed Banff
Java Serverless in Action - Voxxed BanffDavid Delabassee
 
Cloud Foundry Introduction for CF Meetup Tokyo March 2016
Cloud Foundry Introduction for CF Meetup Tokyo March 2016Cloud Foundry Introduction for CF Meetup Tokyo March 2016
Cloud Foundry Introduction for CF Meetup Tokyo March 2016Tomohiro Ichimura
 
Pimp Your Pipeline - Central Configuration Management - Jens Saade
Pimp Your Pipeline - Central Configuration Management - Jens SaadePimp Your Pipeline - Central Configuration Management - Jens Saade
Pimp Your Pipeline - Central Configuration Management - Jens Saadeyoungculture
 
Java EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil GaurJava EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil GaurTakashi Ito
 
General Capabilities of GraalVM by Oleg Selajev @shelajev
General Capabilities of GraalVM by Oleg Selajev @shelajevGeneral Capabilities of GraalVM by Oleg Selajev @shelajev
General Capabilities of GraalVM by Oleg Selajev @shelajevOracle Developers
 
Ocs F5 Bigip Bestpractices
Ocs F5 Bigip BestpracticesOcs F5 Bigip Bestpractices
Ocs F5 Bigip BestpracticesThiago Gutierri
 
PLNOG15: The Power of the Open Standards SDN API’s - Mikael Holmberg
PLNOG15: The Power of the Open Standards SDN API’s - Mikael Holmberg PLNOG15: The Power of the Open Standards SDN API’s - Mikael Holmberg
PLNOG15: The Power of the Open Standards SDN API’s - Mikael Holmberg PROIDEA
 
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersJava EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersBruno Borges
 

Mais procurados (20)

API Deep Dive: APIC EM Rest API
API Deep Dive: APIC EM Rest API API Deep Dive: APIC EM Rest API
API Deep Dive: APIC EM Rest API
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume Nodet
 
Successful Patterns for running platforms
Successful Patterns for running platformsSuccessful Patterns for running platforms
Successful Patterns for running platforms
 
JavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor AppJavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor App
 
More than Data
More than DataMore than Data
More than Data
 
What's Coming in Java EE 8
What's Coming in Java EE 8What's Coming in Java EE 8
What's Coming in Java EE 8
 
Puppet devops wdec
Puppet devops wdecPuppet devops wdec
Puppet devops wdec
 
Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019
 
Modern web application development with java ee 7
Modern web application development with java ee 7Modern web application development with java ee 7
Modern web application development with java ee 7
 
Oracle SOA Suite Everywhere
Oracle SOA Suite EverywhereOracle SOA Suite Everywhere
Oracle SOA Suite Everywhere
 
Spring5 New Features - Nov, 2017
Spring5 New Features - Nov, 2017Spring5 New Features - Nov, 2017
Spring5 New Features - Nov, 2017
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
 
Java Serverless in Action - Voxxed Banff
Java Serverless in Action - Voxxed BanffJava Serverless in Action - Voxxed Banff
Java Serverless in Action - Voxxed Banff
 
Cloud Foundry Introduction for CF Meetup Tokyo March 2016
Cloud Foundry Introduction for CF Meetup Tokyo March 2016Cloud Foundry Introduction for CF Meetup Tokyo March 2016
Cloud Foundry Introduction for CF Meetup Tokyo March 2016
 
Pimp Your Pipeline - Central Configuration Management - Jens Saade
Pimp Your Pipeline - Central Configuration Management - Jens SaadePimp Your Pipeline - Central Configuration Management - Jens Saade
Pimp Your Pipeline - Central Configuration Management - Jens Saade
 
Java EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil GaurJava EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil Gaur
 
General Capabilities of GraalVM by Oleg Selajev @shelajev
General Capabilities of GraalVM by Oleg Selajev @shelajevGeneral Capabilities of GraalVM by Oleg Selajev @shelajev
General Capabilities of GraalVM by Oleg Selajev @shelajev
 
Ocs F5 Bigip Bestpractices
Ocs F5 Bigip BestpracticesOcs F5 Bigip Bestpractices
Ocs F5 Bigip Bestpractices
 
PLNOG15: The Power of the Open Standards SDN API’s - Mikael Holmberg
PLNOG15: The Power of the Open Standards SDN API’s - Mikael Holmberg PLNOG15: The Power of the Open Standards SDN API’s - Mikael Holmberg
PLNOG15: The Power of the Open Standards SDN API’s - Mikael Holmberg
 
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersJava EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c Developers
 

Destaque

Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)Lucas Jellema
 
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases DistributedRedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases DistributedRedis Labs
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for MicroservicesChris Richardson
 
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration MicroservicesWSO2
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterJulien Dubois
 

Destaque (7)

Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
 
Dynomite @ RedisConf 2017
Dynomite @ RedisConf 2017Dynomite @ RedisConf 2017
Dynomite @ RedisConf 2017
 
Netflix conductor
Netflix conductorNetflix conductor
Netflix conductor
 
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases DistributedRedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for Microservices
 
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipster
 

Semelhante a Agile integration workshop Atlanta

Agile integration workshop Seattle
Agile integration workshop SeattleAgile integration workshop Seattle
Agile integration workshop SeattleJudy Breedlove
 
Cloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftCloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftSerhat Dirik
 
Tuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on MobicentsTuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on MobicentsJean Deruelle
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316Jupil Hwang
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSAOracle Korea
 
Camel on Cloud by Christina Lin
Camel on Cloud by Christina LinCamel on Cloud by Christina Lin
Camel on Cloud by Christina LinTadayoshi Sato
 
Hybrid Integration with SAP
Hybrid Integration with SAPHybrid Integration with SAP
Hybrid Integration with SAPBizTalk360
 
App Mod 01: Moving existing apps to the cloud
App Mod 01: Moving existing apps to the cloudApp Mod 01: Moving existing apps to the cloud
App Mod 01: Moving existing apps to the cloudJudy Breedlove
 
Hybrid integrationwithsap (Glenn Colpaert @ Integration Monday)
Hybrid integrationwithsap (Glenn Colpaert @ Integration Monday)Hybrid integrationwithsap (Glenn Colpaert @ Integration Monday)
Hybrid integrationwithsap (Glenn Colpaert @ Integration Monday)Codit
 
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkCloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkRed Hat Developers
 
SAP FIORI COEP Pune - pavan golesar (ppt)
SAP FIORI COEP Pune - pavan golesar (ppt)SAP FIORI COEP Pune - pavan golesar (ppt)
SAP FIORI COEP Pune - pavan golesar (ppt)Pavan Golesar
 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassPaul Withers
 
#JavadayEcuador Monolith to Microservices
#JavadayEcuador Monolith to Microservices#JavadayEcuador Monolith to Microservices
#JavadayEcuador Monolith to MicroservicesAlberto Salazar
 
DevOps Course Contents.docx
DevOps Course Contents.docxDevOps Course Contents.docx
DevOps Course Contents.docxFuturepoint13
 
Mule soft step up session
Mule soft step up sessionMule soft step up session
Mule soft step up sessionAmit Behere
 
Continuous Deployment @ AWS Re:Invent
Continuous Deployment @ AWS Re:InventContinuous Deployment @ AWS Re:Invent
Continuous Deployment @ AWS Re:InventJohn Schneider
 
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...Amazon Web Services
 
Seattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js WorkshopSeattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js WorkshopJimmy Guerrero
 
Hybrid Integration with SAP
Hybrid Integration with SAPHybrid Integration with SAP
Hybrid Integration with SAPGlenn Colpaert
 

Semelhante a Agile integration workshop Atlanta (20)

Agile integration workshop Seattle
Agile integration workshop SeattleAgile integration workshop Seattle
Agile integration workshop Seattle
 
Cloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftCloud Native Applications on OpenShift
Cloud Native Applications on OpenShift
 
Tuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on MobicentsTuning and development with SIP Servlets on Mobicents
Tuning and development with SIP Servlets on Mobicents
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 
Camel on Cloud by Christina Lin
Camel on Cloud by Christina LinCamel on Cloud by Christina Lin
Camel on Cloud by Christina Lin
 
Hybrid Integration with SAP
Hybrid Integration with SAPHybrid Integration with SAP
Hybrid Integration with SAP
 
App Mod 01: Moving existing apps to the cloud
App Mod 01: Moving existing apps to the cloudApp Mod 01: Moving existing apps to the cloud
App Mod 01: Moving existing apps to the cloud
 
Hybrid integrationwithsap (Glenn Colpaert @ Integration Monday)
Hybrid integrationwithsap (Glenn Colpaert @ Integration Monday)Hybrid integrationwithsap (Glenn Colpaert @ Integration Monday)
Hybrid integrationwithsap (Glenn Colpaert @ Integration Monday)
 
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkCloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
 
56k.cloud training
56k.cloud training56k.cloud training
56k.cloud training
 
SAP FIORI COEP Pune - pavan golesar (ppt)
SAP FIORI COEP Pune - pavan golesar (ppt)SAP FIORI COEP Pune - pavan golesar (ppt)
SAP FIORI COEP Pune - pavan golesar (ppt)
 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClass
 
#JavadayEcuador Monolith to Microservices
#JavadayEcuador Monolith to Microservices#JavadayEcuador Monolith to Microservices
#JavadayEcuador Monolith to Microservices
 
DevOps Course Contents.docx
DevOps Course Contents.docxDevOps Course Contents.docx
DevOps Course Contents.docx
 
Mule soft step up session
Mule soft step up sessionMule soft step up session
Mule soft step up session
 
Continuous Deployment @ AWS Re:Invent
Continuous Deployment @ AWS Re:InventContinuous Deployment @ AWS Re:Invent
Continuous Deployment @ AWS Re:Invent
 
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
 
Seattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js WorkshopSeattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js Workshop
 
Hybrid Integration with SAP
Hybrid Integration with SAPHybrid Integration with SAP
Hybrid Integration with SAP
 

Mais de Jeremy Davis

Meet Quarkus: A Mostly Code Introduction to Supersonic, Subatomic Java
Meet Quarkus: A Mostly Code Introduction to Supersonic, Subatomic JavaMeet Quarkus: A Mostly Code Introduction to Supersonic, Subatomic Java
Meet Quarkus: A Mostly Code Introduction to Supersonic, Subatomic JavaJeremy Davis
 
7 Strategies for Building Majestic Monoliths _ UJUG.pdf
7 Strategies for Building Majestic Monoliths _ UJUG.pdf7 Strategies for Building Majestic Monoliths _ UJUG.pdf
7 Strategies for Building Majestic Monoliths _ UJUG.pdfJeremy Davis
 
Domain Driven Design, Event Storming and Event Driven Applications
Domain Driven Design, Event Storming and Event Driven ApplicationsDomain Driven Design, Event Storming and Event Driven Applications
Domain Driven Design, Event Storming and Event Driven ApplicationsJeremy Davis
 
7 Strategies for Building Majestic Monoliths
7 Strategies for Building Majestic Monoliths7 Strategies for Building Majestic Monoliths
7 Strategies for Building Majestic MonolithsJeremy Davis
 
Mutiny on the JVM: Taming Complexity in the Heart of Reactive Java
Mutiny on the JVM: Taming Complexity in the Heart of Reactive JavaMutiny on the JVM: Taming Complexity in the Heart of Reactive Java
Mutiny on the JVM: Taming Complexity in the Heart of Reactive JavaJeremy Davis
 
Event Driven Architecture with Quarkus,Kafka, Kubernetes
Event Driven Architecture with Quarkus,Kafka, Kubernetes Event Driven Architecture with Quarkus,Kafka, Kubernetes
Event Driven Architecture with Quarkus,Kafka, Kubernetes Jeremy Davis
 
Eda,quarkus,kafka,kubernetes
Eda,quarkus,kafka,kubernetesEda,quarkus,kafka,kubernetes
Eda,quarkus,kafka,kubernetesJeremy Davis
 
Event Driven Architecture with Quarkus,Kafka and Kubernetes
Event Driven Architecture with Quarkus,Kafka and KubernetesEvent Driven Architecture with Quarkus,Kafka and Kubernetes
Event Driven Architecture with Quarkus,Kafka and KubernetesJeremy Davis
 
Kubernetes (and OpenShift) for developers
Kubernetes (and OpenShift) for developersKubernetes (and OpenShift) for developers
Kubernetes (and OpenShift) for developersJeremy Davis
 
Supersonic, Subatomic, Kubernetes Native Java : Microservices Day Dallas
Supersonic, Subatomic, Kubernetes Native Java : Microservices Day DallasSupersonic, Subatomic, Kubernetes Native Java : Microservices Day Dallas
Supersonic, Subatomic, Kubernetes Native Java : Microservices Day DallasJeremy Davis
 
Supersonic, Subatomic, Kubernetes native java
Supersonic, Subatomic, Kubernetes native javaSupersonic, Subatomic, Kubernetes native java
Supersonic, Subatomic, Kubernetes native javaJeremy Davis
 
Serverless or Serverfull Microservices Day Phoenix
Serverless or Serverfull Microservices Day PhoenixServerless or Serverfull Microservices Day Phoenix
Serverless or Serverfull Microservices Day PhoenixJeremy Davis
 
Get Reactive: Microservices, Programming, and Systems
Get Reactive: Microservices, Programming, and SystemsGet Reactive: Microservices, Programming, and Systems
Get Reactive: Microservices, Programming, and SystemsJeremy Davis
 

Mais de Jeremy Davis (13)

Meet Quarkus: A Mostly Code Introduction to Supersonic, Subatomic Java
Meet Quarkus: A Mostly Code Introduction to Supersonic, Subatomic JavaMeet Quarkus: A Mostly Code Introduction to Supersonic, Subatomic Java
Meet Quarkus: A Mostly Code Introduction to Supersonic, Subatomic Java
 
7 Strategies for Building Majestic Monoliths _ UJUG.pdf
7 Strategies for Building Majestic Monoliths _ UJUG.pdf7 Strategies for Building Majestic Monoliths _ UJUG.pdf
7 Strategies for Building Majestic Monoliths _ UJUG.pdf
 
Domain Driven Design, Event Storming and Event Driven Applications
Domain Driven Design, Event Storming and Event Driven ApplicationsDomain Driven Design, Event Storming and Event Driven Applications
Domain Driven Design, Event Storming and Event Driven Applications
 
7 Strategies for Building Majestic Monoliths
7 Strategies for Building Majestic Monoliths7 Strategies for Building Majestic Monoliths
7 Strategies for Building Majestic Monoliths
 
Mutiny on the JVM: Taming Complexity in the Heart of Reactive Java
Mutiny on the JVM: Taming Complexity in the Heart of Reactive JavaMutiny on the JVM: Taming Complexity in the Heart of Reactive Java
Mutiny on the JVM: Taming Complexity in the Heart of Reactive Java
 
Event Driven Architecture with Quarkus,Kafka, Kubernetes
Event Driven Architecture with Quarkus,Kafka, Kubernetes Event Driven Architecture with Quarkus,Kafka, Kubernetes
Event Driven Architecture with Quarkus,Kafka, Kubernetes
 
Eda,quarkus,kafka,kubernetes
Eda,quarkus,kafka,kubernetesEda,quarkus,kafka,kubernetes
Eda,quarkus,kafka,kubernetes
 
Event Driven Architecture with Quarkus,Kafka and Kubernetes
Event Driven Architecture with Quarkus,Kafka and KubernetesEvent Driven Architecture with Quarkus,Kafka and Kubernetes
Event Driven Architecture with Quarkus,Kafka and Kubernetes
 
Kubernetes (and OpenShift) for developers
Kubernetes (and OpenShift) for developersKubernetes (and OpenShift) for developers
Kubernetes (and OpenShift) for developers
 
Supersonic, Subatomic, Kubernetes Native Java : Microservices Day Dallas
Supersonic, Subatomic, Kubernetes Native Java : Microservices Day DallasSupersonic, Subatomic, Kubernetes Native Java : Microservices Day Dallas
Supersonic, Subatomic, Kubernetes Native Java : Microservices Day Dallas
 
Supersonic, Subatomic, Kubernetes native java
Supersonic, Subatomic, Kubernetes native javaSupersonic, Subatomic, Kubernetes native java
Supersonic, Subatomic, Kubernetes native java
 
Serverless or Serverfull Microservices Day Phoenix
Serverless or Serverfull Microservices Day PhoenixServerless or Serverfull Microservices Day Phoenix
Serverless or Serverfull Microservices Day Phoenix
 
Get Reactive: Microservices, Programming, and Systems
Get Reactive: Microservices, Programming, and SystemsGet Reactive: Microservices, Programming, and Systems
Get Reactive: Microservices, Programming, and Systems
 

Último

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Último (20)

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

Agile integration workshop Atlanta

  • 2. Agenda 8:30 AM – 9:00 AM INTRODUCTION & SETTLE IN 9:00 AM – 10:00 AM AGILE INTEGRATION JOURNEY 10:00 AM – 10:30 AM INTEGRATION DEMO 10:30 AM – 10:45 AM BREAK 10:45 AM – 12:00 AM DISTRIBUTED INTEGRATION AND MICROSERVICE 12:00 AM – 1:00 PM LUNCH
  • 3. Agenda 1:00 PM – 2:00 PM API FIRST 2:15 PM – 3:30 PM CONTAINER 2:00 PM – 2:15 PM BREAK 4:45 PM – 5:15 PM SUMMARY / Q & A 3:30 PM – 4:45 PM API Management
  • 4.
  • 5.
  • 12. SOA AND ESB ESB Contract Platform Data Application UDDI Process Flow
  • 13. INSERT DESIGNATOR, IF NEEDED13 ● Stringent scalability ● Slow team co-ordination ● Complex service registry ● Long software delivery cycle SOA AND ESB
  • 15. MICROSERVICES Faster Software Delivery Resource Scalability Failure Isolation
  • 17. ● Simple,small ● Boundary and Replaceable ● Independence microservice API MICROSERVICES
  • 19. APIS
  • 27. INSERT DESIGNATOR, IF NEEDED27 CONTAINERS Rapid software releases Multi-tenancy Guarantee high availability Scaling management Failure detection
  • 28. INSERT DESIGNATOR, IF NEEDED28 CONTAINERS
  • 31. AGILE INTEGRATION Cloud native solutions Lean artifacts, individually deployable Container based scaling and high availability ● Lightweight ● Pattern Based ● Reusable Connectors ● Microservice Based ● Cloud native solutions ● Lean artifacts, individually deployable ● Container based scaling and high availability ● Well defined, re-usable, and well managed end-points ● Ecosystem leverage Flexibility Scalability Re-Usability
  • 32. AGILE INTEGRATION Cloud native solutions Lean artifacts, individually deployable Container based scaling and high availability Flexibility Scalability Re-Usability FUSE FUSE 3SCALE OPENSHIFT KUBERNETES DOCKER FABRIC8 APACHE KARAF SPRING BOOT
  • 33. AGILE INTEGRATION Container Container Container Container Client APIManagement RESTFul API RESTFul APIAMQP RESTFul API RESTFul API ClientClient API API API Mgmt
  • 34. MUST READ ! Download your copy: https://developers.redhat.com/promotions/microservi ces-for-java-developers/ @christianposta
  • 36. Agile Integration ● Lightweight ● Pattern Based ● Reusable Connectors ● Microservices Based ● Cloud native solutions ● Lean artifacts, individually deployable ● Container based scaling and high availability ● Well defined, re-usable, and well managed end-points ● Ecosystem leverage Flexibility Scalability Re-Usability Distributed Integration
  • 37. DISTRIBUTED INTEGRATION - Microservice microservice by Red Hat JBoss Fuse ● Lightweight ○ Spring Boot deployment ○ DSL ○ S2i ● Pattern Base ○ Enterprise Integration Pattern ● Reusable Connector ○ Camel components
  • 38. Building microservice with Fuse RED HAT JBOSS FUSE microservice 160+ Endpoint Components Database Msg Broker …. XML JSON HL7 …... HTTP Netty FTP …. REST API Resource Connector Twitter FB Salesforce SaaS ….
  • 39. Building microservice with Fuse RED HAT JBOSS FUSE microservice 160+ Endpoint Components Database Msg Broker …. XML JSON HL7 …... HTTP Netty FTP …. REST API Resource Connector Twitter FB Salesforce SaaS ….
  • 40. Composing Microservice with Fuse RED HAT JBOSS FUSE microservice microservice microservice microservice microservice Enterprise Integration Patterns
  • 41. Red Hat JBoss Fuse APACHE CAMEL SPRING-BOOT APACHE KARAF CONTAINER OPENSHIFT JBOSS DEVELOPER STUDIO Camel define routing and mediation rules based on Enterprise Integration Pattern and with 160+ built-in components
  • 42. INSERT DESIGNATOR, IF NEEDED42 PATTERN BASED Split orders Send each order to it’s process service Electronics Others Aggregator Normalizer Content Enricher Resequencer
  • 43. INSERT DESIGNATOR, IF NEEDED43 WHAT IS APACHE CAMEL? Split orders Send each order to it’s process service Electronics Others Customer Purchase from("file:work/cbr/input") .split(xpath("//orders")) .choice() .when(xpath("/order:order/order:type = 'E'")) .to("activemq:queue:electronic/us") .otherwise() .recipientList(simple("http4://otherservice"));
  • 44. INSERT DESIGNATOR, IF NEEDED44 WHAT IS APACHE CAMEL? <route id="cbr-route"> <from id="_from1" uri="file:work/cbr/input"/> <split id="_split1"> <xpath>//orders</xpath> <choice id="_choice1"> <when id="_when1"> <xpath>/order:order/order:type = 'E'</xpath> <to id="_to1" uri="activemq:queue:electronic"/> </when> <otherwise id="_otherwise1"> <recipientList id="_recipientList1"> <simple>http4://otherservice</simple> </recipientList> </otherwise> </choice> </split> </route>
  • 45. INSERT DESIGNATOR, IF NEEDED45 CAMEL DSL JBOSS DEVELOPER STUDIO Java DSL Blueprint DSL (XML) Spring DSL (XML)
  • 46. INSERT DESIGNATOR, IF NEEDED46 ENDPOINT CONFIGURATION file://myfolder/directory? delete=true&readLock=changed Programmatic Example: FileEndpoint fileEp = new FileEndpoint(); fileEp.setFile(new File(“/some/dir”)); fileEp.setDelete(true); fileEp.setReadLock(“changed”); from(fileEp).to(...); URI Example: Component Name Configuration Parameters
  • 47. INSERT DESIGNATOR, IF NEEDED47 CAMEL BEAN INJECTION <beans ....> <bean class="org.apache.camel.component.servlet.CamelHttpTransportServlet" id="camelHttpTransportServlet"/> <bean class="org.springframework.boot.web.servlet.ServletRegistrationBean" id="servlet"> <property name="name" value="CamelServlet"/> <property name="servlet" ref="camelHttpTransportServlet"/> <property name="urlMappings" value="/demos/*"/> </bean> <bean class="com.redhat.fisdemoblockchain.MockBitcoinApp" id="mockBitcoinApp"/> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route> <!-- … --> <route> </camelContext> </beans> @BeanInject("mockBitcoinApp") MockBitcoinApp mockBitcoinApp;
  • 48. INSERT DESIGNATOR, IF NEEDED48 160+ ENDPOINT COMPONENTS activemq cxf kubernetes jasypt activemq-journal cxfrs freemarker javaspace amqp dataset ftp/ftps/sftp jbi atom db4o gae jcr bean direct hdfs jdbc bean validation ejb hibernate jetty browse esper hl7 jms cache event http jmx cometd exec ibatis jpa crypto file irc jt/400
  • 49. INSERT DESIGNATOR, IF NEEDED49 160+ ENDPOINT COMPONENTS
  • 50. INSERT DESIGNATOR, IF NEEDED50 CAMEL ROUTE Producer ● Produce requests ● End of route ● Dispatching outgoing requests Consumer ● Consume requests ● Start of a route ● Dispatching outgoing replies Processor ● Intermediate node in the pipeline ● standard processors or customized ones
  • 51. CAMEL EXCHANGE in ROUTE PROCESSOR PROCESSOR PROCESSOR PRODUCER Exchange Exchange In In In In Out Out Out Out
  • 52. RUNNING CAMEL Spring Boot Karaf Spring DSL/Java Spring Boot Starter module Fat JARs Stand-alone App Embedded dependency Pre-configured, pre-sugared Small and lightweight Blueprint DSL/Java Blueprint module Bundles Modularized Explicit dependency Versioned Hot redeploy
  • 53. Container Fuse and Spring Boot Application Camel Spring Boot Starter Camel route Configurations Auto-wires components Tomcat, Undertow JDBC Messaging (application.properties/yml) Auto-detects routes Auto-configure Camelcontext, register Camel utilities
  • 54. TESTING Spring Boot Karaf @RunWith(SpringRunner.class) @SpringBootTest annotation Autowire CamelContext Extends CamelBlueprintTestSupport camel-test-blueprint Specify Camel blueprint descriptor location ASSERT ● # of messages are received on each endpoint, ● Payloads are received in the right order, ● Messages arrive match some kind of Predicate
  • 55. TESTING <route id="cbr-route"> <from id="_from1" uri="file:work/cbr/input"/> <choice id="_choice1"> <when id="_when1"> <xpath>/order:order/order:type = 'E'</xpath> <to id="_to1" uri="activemq:queue:electronic"/> </when> <otherwise id="_otherwise1"> <to id="_to1" uri="activemq:queue:others"/> </otherwise> </choice> </route> public void configure() throws Exception { // mock the for testing interceptSendToEndpoint("activemq:queue:electronic") .skipSendToOriginalEndpoint() .to("mock:catchElectronic"); }
  • 56. CAMEL SPRING BOOT TESTING EXAMPLE @RunWith(SpringRunner.class) @ActiveProfiles("dev") @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) public class ApplicationTest { @Autowired private TestRestTemplate restTemplate; @Autowired private CamelContext camelContext; @Test public void testProfile() { ResponseEntity<Accounts> profileResponse = restTemplate.getForEntity("/demos/account/profile/123456", Accounts.class); assertThat(profileResponse.getStatusCode()).isEqualTo(HttpStatus.OK); Accounts account = profileResponse.getBody(); assertThat(account.getAcctname()).isEqualTo("Simon C"); assertThat(account.getBalance()).isEqualTo(5000); assertThat(account.getAddr()).isEqualTo("43 SLIVER EAGLE ST, RIVER"); } }
  • 57. INSERT DESIGNATOR, IF NEEDED57 MORE INFORMATION ● Camel in Action ● Apache Camel Developer’s Cookbook ● Community website ○ http://camel.apache.org/
  • 58. LAB ONE Container Integration Container A P I API management Customer Data ID Balance VIP Status Customer Data {“ID”, “Balance”, “VIP Status”}
  • 60. APIs
  • 61. Agile Integration ● Well defined, re-usable, and well managed end-points ● Ecosystem leverage● Lightweight ● Pattern Based ● Reusable Connectors ● Microservice Based ● Cloud native solutions ● Lean artifacts, individually deployable ● Container based scaling and high availability Re-UsabilityFlexibility Scalability API
  • 62. API Multiple Device Support Device are not limited to screen Voice enable Drome, VR Customer/ Vendor/ Partner More complex ecosystem SaaS Frequency Data volume Monetize Service Increased revenue market share Open up new opportunities Modularize and agility Enhanced developer experience Reuse code Hide implementation details Scalability in Distributed System Able to flexibly allocate resource Cloud enabled
  • 63. API FIRST microservice by RED HAT JBOSS FUSE REST DSL Swagger API Doc API Data Format Transform 3ScaleAPImanagement
  • 64. APPLYING API BEST PRACTICES Simply but concrete naming for the URI. Use HTTP Method for CRUD if possible: ● READ -> GET ● CREATE -> PUT ● UPDATE -> POST ● DELETE -> DELETE ● Globally recognized standard, easy consumable <get uri="customer/{customerid}"> <to uri="direct:getCustomerinfo"/> </get> <get uri="product/{id}"> <to uri="direct:productInventory"/> </get> <get uri="account/profile/{acctid}"> <to uri="direct:getprofile"/> </get>
  • 65. APPLYING API BEST PRACTICES Make the most out of HTTP Errors Setting the right granularity of data and using the common data format Clear automatic generated documentation
  • 66. Continuous Improvement Building APIs ● Native support ● Intuitive tooling ● Light weight ● Flexible service and code re-use from backend Deploy APIs ● Flexibility to scale ● Load balancing ● zero downtime ● Security Distributing APIs ● Authorization ● Clear documentation ● Enforce policies ● Community Performance Analyst ● Number of Hits ● Average response time ● Revenue earned Business alignment ● Change in market ● Government regulation ● New service launch Versioning ● Retire ● Update ● New Service ● Internal service re-creation API
  • 67. API FIRST microservice by RED HAT JBOSS FUSE REST DSL Swagger API Doc API Data Format Transform microservice by RED HAT JBOSS FUSE API microservice by RED HAT JBOSS FUSE Consume Exposes 3ScaleAPImanagement External clients Community, Partners, Customers
  • 68. SERVICE RESILIENCE JBoss Fuse microservice API JBoss Fuse microservice API microservice microservice API microservice microservice API Chain reaction JBoss Fuse microservice API SLOW!! Client
  • 69. Circuit Breaker <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="direct:start"/> <hystrix> <to uri="http://fooservice.com/slow"/> <onFallback> <transform> <constant>Fallback message</constant> </transform> </onFallback> </hystrix> <to uri="mock:result"/> </route> </camelContext> JBoss Fuse microservice API API Service SaaS Slow! No response! Timeout Fallback
  • 70. INSERT DESIGNATOR, IF NEEDED70 CONVERTING BETWEEN DATA FORMAT ● Marshal ○ Java Bean → Textual format ● Unmarshal ○ Textual, Binary format → Java Bean ● Dozer ○ Fine-grained integration ■ mapping literal values ■ Use expressions
  • 71. INSERT DESIGNATOR, IF NEEDED71 DIFFERENT DATA FORMAT
  • 72. INSERT DESIGNATOR, IF NEEDED72 MARSHAL/UNMARSHAL WITH TOOLS <marshal> <xmljson/> </marshal> <marshal> <bindy classtype=”example.Product" type="Csv"> </marshal> <marshal> <jaxb partClass=“example.TradeOrder” contextPath=“example"/> </marshal>
  • 73. INSERT DESIGNATOR, IF NEEDED73 DATA FORMAT EXAMPLE Input XML File: <root> <child1>text1</child1> <child2>text2</child2> </root> Camel Route: ... from(“file:///xmlsourcedir”) .unmarshal().jaxb() .process(...) .marshal().json() .to(“file:///jsondestdir”); ... Output JSON File: {"root": {"child1": "text1", "child2": "text2"} }
  • 74. Transformation Tooling XML JSON JAVA Customize Drag and drop mapping Set property Set variable Set expression Add transformation Add custom transformation
  • 75. REST DSL <camelContext xmlns="http://camel.apache.org/schema/spring"> <rest path="/say"> <get uri="/hello"> <to uri="direct:hello"/> </get> <get uri="/bye" consumes="application/json"> <to uri="direct:bye"/> </get> <post uri="/bye"> <to uri="mock:update"/> </post> </rest> <route> <from uri="direct:hello"/> … </route> <route> <from uri="direct:bye"> … </route> </camelContext> Verb defining http method Basepath The service path Uri template The service method and parameters Consumes Accept data format setting
  • 76. REST DSL <restConfiguration bindingMode="auto" component="servlet" port="8080"/> Message Body Direction Binding Mode Message Body XML Incoming auto, xml, json_xml POJO POJO Outgoing auto, xml, json_xml XML JSON Incoming auto, xml, json_xml POJO POJO Outgoing auto, xml, json_xml JSON ● camel-netty4-http ● camel-jetty ● camel-servlet ● camel-undertow
  • 77. SWAGGER <restConfiguration apiContextPath="api-docs" bindingMode="json" component="servlet" contextPath="/demos"> <apiProperty key="cors" value="true"/> <apiProperty key="api.title" value="API for demo"/> <apiProperty key="api.version" value="1.0.0"/> </restConfiguration> <get uri="/{id}" outType="com.redhat.User"> <description>Find user by id</description> <param name="id" type="path" description="The id of the user to get" dataType="int"/> <to uri="bean:userService?method=getUser(${header.id})"/> </get
  • 80. Agile Integration ● ● ● Cloud native solutions ● Lean artifacts, individually deployable ● Container based scaling and high availability ● Lightweight ● Pattern Based ● Reusable Connectors ● Community Sourced ● Well defined, re-usable, and well managed end-points ● Ecosystem leverage ScalabilityFlexibility Re-Usability Container
  • 82. OPENSHIFT CONTAINERS Developer’s Local Env (laptop, desktop) CDK JBDS VCS (Git) Build Run Test Jenkins Nexus (Library Management) Deployment Pipeline Automatic Testing Release management Failure feedback
  • 84. OPENSHIFT CONTAINERS ● Containerized application run in Pods ● Pods exposed as a Service ● Edge router http://myapp.com ○ Integration API endpoints (JBoss pods) ○ database (MySQL pods with persistent storage) ○ Messaging (TBD...)
  • 86. OPENSHIFT PODS ● A small group of tightly coupled Containers ● Ensures collocation ● Docker containers share resources within the pod ○ Volumes ○ Network / IP ○ Port space ○ CPU / Mem allocations ● Pod health probes
  • 88. OPENSHIFT PODS EXPOSED AS SERVICE ● Defines a group of Pods and how to access them ○ Labels and Selectors ● Decouple providers and accessors of services ● Don’t depend on Pod IPs directly ● Use a single IP that doesn’t change ● Virtual IP load balancing and discovery POD SERVICE POD 10.0.1.1 10.0.1.2 CLIENT Name: amq IP: 170.30.10.10
  • 89. SERVICE DISCOVERY POD SERVICE POD 10.0.1. 1 10.0.1.2 CLIENT Name: amq IP: 170.30.10.10 POD 10.0.1.3 Service label common label you apply to each of the pods Service proxy single IP address that other services can call
  • 90. ROUTES POD SERVICE PODPOD SERVICE POD ROUTE CLIENT CLIENTCLIENTRouters support the following protocols: ● HTTP ● HTTPS (with SNI) ● WebSockets ● TLS with SNI
  • 91. OPENSHIFT FAILURE RECOVERY POD SERVICE PODPOD SERVICE POD ROUTE POD Rebalance traffics Redirect request to available Pods Replace failing pod Starts another pod and bind to serviceHealth Checks periodically performs diagnostics on a running container.
  • 92. REPLICATION CONTROLLER ● Ensures that a specified number of Pod replicas is running ● Holds Pod Templates for creating new Pods ● Autoscaling ● Rolling Updates
  • 93. OPENSHIFT BUILDING IMAGES ● Build strategies ○ Source Source-to-Image (S2I) ○ Binary Source-to-Image (S2I)
  • 94. OPENSHIFT S2I Docker Custom Git Dockerfile Binary Image Build Docker Image Build Source Build Strategy NEED UPDATE FOR BINARY S2i
  • 97. OPENSHIFT PIPELINE node('maven') { stage('build') { openshiftBuild(buildConfig: 'buildconfigname', showBuildLogs: 'true') } stage('staging') { openshiftDeploy(deploymentConfig: 'deploymentconfigame') } …. }
  • 98. OPENSHIFT ● Deployment strategy determines the deployment process for containers ● Rolling strategy ○ Performs rolling updates ○ Supports life-cycle hooks for injecting code into deployment process ○ Waits for pods to pass readiness check before scaling down old components ○ Used by default if no strategy specified on deployment configuration ● Recreate strategy ○ Has basic rollout behavior ○ Scales down previous deployment before deploying the new one ○ Supports life-cycle hooks for injecting code into deployment process ● Custom strategy for custom deployment behaviour DEPLOYMENTS
  • 99. OPENSHIFT ● Reducing downtime and risk associated with release ● Two identical environments in containing two different releases (Blue and Green) ● After validating new release, can switch all traffic to new version ● Quickly roll application back if you find issues BLUE-GREEN DEPLOYMENT router
  • 100. OPENSHIFT ● A/B testing is a way of testing features in application for various reasons like usability, popularity, noticeability, etc ● Usually associated with application UI however the back-end services need to be available ● Can implement with either application-level or static switches A/B DEPLOYMENT
  • 101. OPENSHIFT CONTAINER Developer’s Local Env (laptop, desktop) CDK JBDS VCS (Git) Build Run Test Jenkins Nexus (Library Management) Deployment Pipeline Automatic Testing Release management Failure feedback
  • 104. Take Control of Your APIs Creating & Exposing APIs is just the start Security & Authentication Version Control Documentation Policies Access Control Monitoring Lifecycle Management Provisioning Alerts Metering & Billing Testing Developer Portal Scalability Reliability
  • 105. API Life-cycle The API Lifecycle Management Approach DEFINE: Identify the API services that deliver value to the business layer DEVELOP: Design, code, test, document standardize templates PUBLISH: Run security with defined policies and controls SUPPORT: Offer community, forums, documentation to interact and collaborate RETIRE: EOL, un-publish, communicate and remove from market place following version control best practice
  • 106. 3scale API Management RBDMS SAP NoSQL WS REST JMS + more FUSE INTEGRATION SERVICE JBoss Fuse Service API JBoss Fuse Service API JBoss Fuse Service API Developers Partners Mobile App Affiliates Internal Projects + more API MANAGEMENT Access control and security API contracts and rate limits Analytics and reporting Developer portal and docs Billing and payments
  • 107. 3Scale API Management Stack Access control Security API contracts Rate limits Analytics Reporting Dev portal Docs Billing Payments Admin Console Dev Portal API Management Traffic Manager APIs Applications Consumers HTTP / HTTPS Security, usage & rate limits
  • 109. Deployment Options Full SaaS: Hosted API Manager & API Gateways Real Time Admin Portal Sync / Authorize API Provider API Gateway API Manager API Provider Administrators Mobile Apps Developer Apps Branded Dev PortalSwagger Doc API Consumers Developers
  • 110. Deployment Options Hybrid: Hosted Manager - Self-managed Gateway Real Time Admin Portal Sync / Authorize API Provider API Gateway API Manager API Provider Administrators Mobile Apps Developer Apps Branded Dev PortalSwagger Doc Developers API Consumers
  • 111. Deployment Options Full On-Premise Real Time Admin Portal Sync / Authorize API Provider API Gateway (Openshift) API Manager API Provider Administrators Mobile Apps Developer Apps Branded Dev PortalSwagger Doc API Consumers Developers
  • 112. Deployment Options On-premise: Self-managed APIs Real Time Admin Portal Sync / Authorize API Provider API Gateway (Openshift) API Manager API Provider Administrators Mobile Apps Developer Apps Branded Dev PortalSwagger Doc API Consumers Developers
  • 113. Deployment Options On-premise: Self-managed APIs & External Self-managed Gateway Real Time Admin Portal Sync / Authorize API Provider API Gateway (Native/Docker) API Manager API Provider Administrators Mobile Apps Developer Apps Branded Dev PortalSwagger Doc API Consumers Developers
  • 114. Native apicast-gateway code from upstream repo running on: Openresty (NGINX + LUA) for Red Hat Enterprise Linux Docker apicast-gateway Docker Image from Red Hat Registry Openshift Openshift API Gateway Template (which will pull in apicast-gateway Docker Image) Inside or Outside the same API manager Cluster Self-managed API Gateway Deployment Options