SlideShare a Scribd company logo
1 of 117
Download to read 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

More Related Content

What's hot

A Hitchhiker's Guide to Cloud-Native API Gateways
A Hitchhiker's Guide to Cloud-Native API GatewaysA Hitchhiker's Guide to Cloud-Native API Gateways
A Hitchhiker's Guide to Cloud-Native API GatewaysQAware GmbH
 
How to Scale Operations for a Multi-Cloud Platform using PCF
How to Scale Operations for a Multi-Cloud Platform using PCFHow to Scale Operations for a Multi-Cloud Platform using PCF
How to Scale Operations for a Multi-Cloud Platform using PCFVMware Tanzu
 
PCF Cloud-Native Workshop Slides
PCF Cloud-Native Workshop SlidesPCF Cloud-Native Workshop Slides
PCF Cloud-Native Workshop SlidesVMware Tanzu
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolithJudy Breedlove
 
How to Overcome Data Challenges When Refactoring Monoliths to Microservices
How to Overcome Data Challenges When Refactoring Monoliths to MicroservicesHow to Overcome Data Challenges When Refactoring Monoliths to Microservices
How to Overcome Data Challenges When Refactoring Monoliths to MicroservicesVMware Tanzu
 
Building REST APIs with Spring Boot and Spring Cloud
Building REST APIs with Spring Boot and Spring CloudBuilding REST APIs with Spring Boot and Spring Cloud
Building REST APIs with Spring Boot and Spring CloudKenny Bastani
 
LIVE DEMO: Pivotal Cloud Foundry
LIVE DEMO: Pivotal Cloud FoundryLIVE DEMO: Pivotal Cloud Foundry
LIVE DEMO: Pivotal Cloud FoundryVMware Tanzu
 
Cloud Foundry Technical Overview
Cloud Foundry Technical OverviewCloud Foundry Technical Overview
Cloud Foundry Technical Overviewcornelia davis
 
Accelerate Digital Transformation with Pivotal Cloud Foundry on Azure
Accelerate Digital Transformation with Pivotal Cloud Foundry on AzureAccelerate Digital Transformation with Pivotal Cloud Foundry on Azure
Accelerate Digital Transformation with Pivotal Cloud Foundry on AzureVMware Tanzu
 
Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...
Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...
Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...VMware Tanzu
 
Moving at the speed of startup with Pivotal Cloud Foundry 1.11
Moving at the speed of startup with Pivotal Cloud Foundry 1.11Moving at the speed of startup with Pivotal Cloud Foundry 1.11
Moving at the speed of startup with Pivotal Cloud Foundry 1.11VMware Tanzu
 
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Daniel Oh
 
Manchester geek night pcf 101
Manchester geek night   pcf 101Manchester geek night   pcf 101
Manchester geek night pcf 101Sufyaan Kazi
 
Building Cloud Native Architectures with Spring
Building Cloud Native Architectures with SpringBuilding Cloud Native Architectures with Spring
Building Cloud Native Architectures with SpringKenny Bastani
 
Cloud Native Middleware Microservices - 10 Lessons Learned
Cloud Native Middleware Microservices - 10 Lessons LearnedCloud Native Middleware Microservices - 10 Lessons Learned
Cloud Native Middleware Microservices - 10 Lessons LearnedKai Wähner
 
Pivotal Cloud Foundry 2.3: A First Look
Pivotal Cloud Foundry 2.3: A First LookPivotal Cloud Foundry 2.3: A First Look
Pivotal Cloud Foundry 2.3: A First LookVMware Tanzu
 
Pivotal microservices spring_pcf_skillsmatter.pptx
Pivotal microservices spring_pcf_skillsmatter.pptxPivotal microservices spring_pcf_skillsmatter.pptx
Pivotal microservices spring_pcf_skillsmatter.pptxSufyaan Kazi
 
How to Architect and Develop Cloud Native Applications
How to Architect and Develop Cloud Native ApplicationsHow to Architect and Develop Cloud Native Applications
How to Architect and Develop Cloud Native ApplicationsSufyaan Kazi
 
Adopting Azure, Cloud Foundry and Microservice Architecture at Merrill Corpor...
Adopting Azure, Cloud Foundry and Microservice Architecture at Merrill Corpor...Adopting Azure, Cloud Foundry and Microservice Architecture at Merrill Corpor...
Adopting Azure, Cloud Foundry and Microservice Architecture at Merrill Corpor...VMware Tanzu
 
PaaS on Openstack
PaaS on OpenstackPaaS on Openstack
PaaS on OpenstackOpen Stack
 

What's hot (20)

A Hitchhiker's Guide to Cloud-Native API Gateways
A Hitchhiker's Guide to Cloud-Native API GatewaysA Hitchhiker's Guide to Cloud-Native API Gateways
A Hitchhiker's Guide to Cloud-Native API Gateways
 
How to Scale Operations for a Multi-Cloud Platform using PCF
How to Scale Operations for a Multi-Cloud Platform using PCFHow to Scale Operations for a Multi-Cloud Platform using PCF
How to Scale Operations for a Multi-Cloud Platform using PCF
 
PCF Cloud-Native Workshop Slides
PCF Cloud-Native Workshop SlidesPCF Cloud-Native Workshop Slides
PCF Cloud-Native Workshop Slides
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolith
 
How to Overcome Data Challenges When Refactoring Monoliths to Microservices
How to Overcome Data Challenges When Refactoring Monoliths to MicroservicesHow to Overcome Data Challenges When Refactoring Monoliths to Microservices
How to Overcome Data Challenges When Refactoring Monoliths to Microservices
 
Building REST APIs with Spring Boot and Spring Cloud
Building REST APIs with Spring Boot and Spring CloudBuilding REST APIs with Spring Boot and Spring Cloud
Building REST APIs with Spring Boot and Spring Cloud
 
LIVE DEMO: Pivotal Cloud Foundry
LIVE DEMO: Pivotal Cloud FoundryLIVE DEMO: Pivotal Cloud Foundry
LIVE DEMO: Pivotal Cloud Foundry
 
Cloud Foundry Technical Overview
Cloud Foundry Technical OverviewCloud Foundry Technical Overview
Cloud Foundry Technical Overview
 
Accelerate Digital Transformation with Pivotal Cloud Foundry on Azure
Accelerate Digital Transformation with Pivotal Cloud Foundry on AzureAccelerate Digital Transformation with Pivotal Cloud Foundry on Azure
Accelerate Digital Transformation with Pivotal Cloud Foundry on Azure
 
Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...
Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...
Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...
 
Moving at the speed of startup with Pivotal Cloud Foundry 1.11
Moving at the speed of startup with Pivotal Cloud Foundry 1.11Moving at the speed of startup with Pivotal Cloud Foundry 1.11
Moving at the speed of startup with Pivotal Cloud Foundry 1.11
 
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
 
Manchester geek night pcf 101
Manchester geek night   pcf 101Manchester geek night   pcf 101
Manchester geek night pcf 101
 
Building Cloud Native Architectures with Spring
Building Cloud Native Architectures with SpringBuilding Cloud Native Architectures with Spring
Building Cloud Native Architectures with Spring
 
Cloud Native Middleware Microservices - 10 Lessons Learned
Cloud Native Middleware Microservices - 10 Lessons LearnedCloud Native Middleware Microservices - 10 Lessons Learned
Cloud Native Middleware Microservices - 10 Lessons Learned
 
Pivotal Cloud Foundry 2.3: A First Look
Pivotal Cloud Foundry 2.3: A First LookPivotal Cloud Foundry 2.3: A First Look
Pivotal Cloud Foundry 2.3: A First Look
 
Pivotal microservices spring_pcf_skillsmatter.pptx
Pivotal microservices spring_pcf_skillsmatter.pptxPivotal microservices spring_pcf_skillsmatter.pptx
Pivotal microservices spring_pcf_skillsmatter.pptx
 
How to Architect and Develop Cloud Native Applications
How to Architect and Develop Cloud Native ApplicationsHow to Architect and Develop Cloud Native Applications
How to Architect and Develop Cloud Native Applications
 
Adopting Azure, Cloud Foundry and Microservice Architecture at Merrill Corpor...
Adopting Azure, Cloud Foundry and Microservice Architecture at Merrill Corpor...Adopting Azure, Cloud Foundry and Microservice Architecture at Merrill Corpor...
Adopting Azure, Cloud Foundry and Microservice Architecture at Merrill Corpor...
 
PaaS on Openstack
PaaS on OpenstackPaaS on Openstack
PaaS on Openstack
 

Similar to Red Hat Agile integration workshop - Atlanta

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
 
CA World 2014 Release Automation Coexistence in the Enterprise
CA World 2014 Release Automation Coexistence in the EnterpriseCA World 2014 Release Automation Coexistence in the Enterprise
CA World 2014 Release Automation Coexistence in the EnterpriseMark Sigler
 
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
 

Similar to Red Hat Agile integration workshop - Atlanta (20)

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
 
CA World 2014 Release Automation Coexistence in the Enterprise
CA World 2014 Release Automation Coexistence in the EnterpriseCA World 2014 Release Automation Coexistence in the Enterprise
CA World 2014 Release Automation Coexistence in the Enterprise
 
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
 

More from Judy Breedlove

Agile integration activation: get hands on with ap-is
Agile integration activation: get hands on with ap-isAgile integration activation: get hands on with ap-is
Agile integration activation: get hands on with ap-isJudy Breedlove
 
The 3 pillars of agile integration: Container, Connector and API
The 3 pillars of agile integration:  Container, Connector and APIThe 3 pillars of agile integration:  Container, Connector and API
The 3 pillars of agile integration: Container, Connector and APIJudy Breedlove
 
Preparing your organization for microservices
Preparing your organization for microservicesPreparing your organization for microservices
Preparing your organization for microservicesJudy Breedlove
 
Transform the internal it landscape with APIs and integration
Transform the internal it landscape with APIs and integrationTransform the internal it landscape with APIs and integration
Transform the internal it landscape with APIs and integrationJudy Breedlove
 
An API-focused approach to Agile Integration
An API-focused approach to Agile IntegrationAn API-focused approach to Agile Integration
An API-focused approach to Agile IntegrationJudy Breedlove
 
Introduction to red hat agile integration (Red Hat Workshop)
Introduction to red hat agile integration (Red Hat Workshop)Introduction to red hat agile integration (Red Hat Workshop)
Introduction to red hat agile integration (Red Hat Workshop)Judy Breedlove
 
An API-focused approach to Agile Integration
An API-focused approach to Agile IntegrationAn API-focused approach to Agile Integration
An API-focused approach to Agile IntegrationJudy Breedlove
 
Transform the internal it landscape with APIs
Transform the internal it landscape with APIsTransform the internal it landscape with APIs
Transform the internal it landscape with APIsJudy Breedlove
 
The Three Pillars of Agile Integration: Connector, Container & API
The Three Pillars of Agile Integration: Connector, Container & APIThe Three Pillars of Agile Integration: Connector, Container & API
The Three Pillars of Agile Integration: Connector, Container & APIJudy Breedlove
 
Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...Judy Breedlove
 
Navigating Cloud Adoption: Trends that Challenge and Inspire Designers
Navigating Cloud Adoption:  Trends that Challenge and Inspire DesignersNavigating Cloud Adoption:  Trends that Challenge and Inspire Designers
Navigating Cloud Adoption: Trends that Challenge and Inspire DesignersJudy Breedlove
 
Monoliths to microservices workshop
Monoliths to microservices workshopMonoliths to microservices workshop
Monoliths to microservices workshopJudy Breedlove
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshJudy Breedlove
 
The Future of Cloud Native Apps - Chicago Intro
The Future of Cloud Native Apps - Chicago IntroThe Future of Cloud Native Apps - Chicago Intro
The Future of Cloud Native Apps - Chicago IntroJudy Breedlove
 
Serverless and serverfull - where microservices compliments serverless
Serverless and serverfull - where microservices compliments serverlessServerless and serverfull - where microservices compliments serverless
Serverless and serverfull - where microservices compliments serverlessJudy Breedlove
 
Cloud-Native Microservices
Cloud-Native MicroservicesCloud-Native Microservices
Cloud-Native MicroservicesJudy Breedlove
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolith Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolith Judy Breedlove
 
Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...Judy Breedlove
 
Red Hat: Three Pillars of Integration
Red Hat:  Three Pillars of IntegrationRed Hat:  Three Pillars of Integration
Red Hat: Three Pillars of IntegrationJudy Breedlove
 

More from Judy Breedlove (20)

Putting data to work
Putting data to workPutting data to work
Putting data to work
 
Agile integration activation: get hands on with ap-is
Agile integration activation: get hands on with ap-isAgile integration activation: get hands on with ap-is
Agile integration activation: get hands on with ap-is
 
The 3 pillars of agile integration: Container, Connector and API
The 3 pillars of agile integration:  Container, Connector and APIThe 3 pillars of agile integration:  Container, Connector and API
The 3 pillars of agile integration: Container, Connector and API
 
Preparing your organization for microservices
Preparing your organization for microservicesPreparing your organization for microservices
Preparing your organization for microservices
 
Transform the internal it landscape with APIs and integration
Transform the internal it landscape with APIs and integrationTransform the internal it landscape with APIs and integration
Transform the internal it landscape with APIs and integration
 
An API-focused approach to Agile Integration
An API-focused approach to Agile IntegrationAn API-focused approach to Agile Integration
An API-focused approach to Agile Integration
 
Introduction to red hat agile integration (Red Hat Workshop)
Introduction to red hat agile integration (Red Hat Workshop)Introduction to red hat agile integration (Red Hat Workshop)
Introduction to red hat agile integration (Red Hat Workshop)
 
An API-focused approach to Agile Integration
An API-focused approach to Agile IntegrationAn API-focused approach to Agile Integration
An API-focused approach to Agile Integration
 
Transform the internal it landscape with APIs
Transform the internal it landscape with APIsTransform the internal it landscape with APIs
Transform the internal it landscape with APIs
 
The Three Pillars of Agile Integration: Connector, Container & API
The Three Pillars of Agile Integration: Connector, Container & APIThe Three Pillars of Agile Integration: Connector, Container & API
The Three Pillars of Agile Integration: Connector, Container & API
 
Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...
 
Navigating Cloud Adoption: Trends that Challenge and Inspire Designers
Navigating Cloud Adoption:  Trends that Challenge and Inspire DesignersNavigating Cloud Adoption:  Trends that Challenge and Inspire Designers
Navigating Cloud Adoption: Trends that Challenge and Inspire Designers
 
Monoliths to microservices workshop
Monoliths to microservices workshopMonoliths to microservices workshop
Monoliths to microservices workshop
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service mesh
 
The Future of Cloud Native Apps - Chicago Intro
The Future of Cloud Native Apps - Chicago IntroThe Future of Cloud Native Apps - Chicago Intro
The Future of Cloud Native Apps - Chicago Intro
 
Serverless and serverfull - where microservices compliments serverless
Serverless and serverfull - where microservices compliments serverlessServerless and serverfull - where microservices compliments serverless
Serverless and serverfull - where microservices compliments serverless
 
Cloud-Native Microservices
Cloud-Native MicroservicesCloud-Native Microservices
Cloud-Native Microservices
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolith Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolith
 
Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...
 
Red Hat: Three Pillars of Integration
Red Hat:  Three Pillars of IntegrationRed Hat:  Three Pillars of Integration
Red Hat: Three Pillars of Integration
 

Recently uploaded

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

Red Hat 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