Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Agile integration workshop Atlanta

160 views

Published on

We are entering a new era of microservices and containers which is reshaping how enterprise IT is delivering services with a focus on agility. As a result, developing, integrating, and connecting smaller discrete services has become more complex. Application programming interfaces (APIs) are increasingly being used to unlock core systems, collaborate with partners and reach customers in new ways. A platform architectural approach provides a foundation to deliver innovative solutions across today's hybrid environments.

Join Red Hat for a no-cost, 1-day, hands-on technical workshop. Take a journey to agile integration by taking back more control of your applications.

Published in: Technology
  • ⇒ www.HelpWriting.net ⇐ This service will write as best as they can. So you do not need to waste the time on rewritings.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Agile integration workshop Atlanta

  1. 1. Agile Integration Jeremy Davis jeremy.davis@redhat.com @argntprgrmr Ram Maddali rmaddali@redhat.com @RamMaddali
  2. 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. 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. 4. AGILE INTEGRATION JOURNEY
  5. 5. Waterfall CI/CD Server/VM Container Data Center Cloud Monolith MicroservicesAPIs Webservices BE COMPETITIVE
  6. 6. Developing software
  7. 7. Developing microservices...
  8. 8. INTEGRATION
  9. 9. AGILE INTEGRATION SOA Microservices Event-Base Container API DEVOPS
  10. 10. SOA AND ESB ESB Contract Platform Data Application UDDI Process Flow
  11. 11. INSERT DESIGNATOR, IF NEEDED13 ● Stringent scalability ● Slow team co-ordination ● Complex service registry ● Long software delivery cycle SOA AND ESB
  12. 12. MICROSERVICES
  13. 13. MICROSERVICES Faster Software Delivery Resource Scalability Failure Isolation
  14. 14. MICROSERVICES Development Security DBA Operation Release
  15. 15. ● Simple,small ● Boundary and Replaceable ● Independence microservice API MICROSERVICES
  16. 16. Client API Routing Protocol Endpoints Transformation SMART ENDPOINT
  17. 17. APIS
  18. 18. APIs RESTFul HTTP Swagger Documentations JSON XML APIManagement ● ● ● ●
  19. 19. AUTOMATION
  20. 20. TESTS PRODDEV CI/CD
  21. 21. Pipelines source repository CI/CD engine dev container target environment
  22. 22. CONTAINERS
  23. 23. VIRTUAL MACHINES CONTAINERS
  24. 24. CONTAINERS ● ● ●
  25. 25. INSERT DESIGNATOR, IF NEEDED27 CONTAINERS Rapid software releases Multi-tenancy Guarantee high availability Scaling management Failure detection
  26. 26. INSERT DESIGNATOR, IF NEEDED28 CONTAINERS
  27. 27. ALL TOGETHER NOW
  28. 28. CI/CD Container CloudMicroservicesAPIs BE COMPETITIVE
  29. 29. 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
  30. 30. 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
  31. 31. AGILE INTEGRATION Container Container Container Container Client APIManagement RESTFul API RESTFul APIAMQP RESTFul API RESTFul API ClientClient API API API Mgmt
  32. 32. MUST READ ! Download your copy: https://developers.redhat.com/promotions/microservi ces-for-java-developers/ @christianposta
  33. 33. DISTRIBUTED INTEGRATION
  34. 34. 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
  35. 35. DISTRIBUTED INTEGRATION - Microservice microservice by Red Hat JBoss Fuse ● Lightweight ○ Spring Boot deployment ○ DSL ○ S2i ● Pattern Base ○ Enterprise Integration Pattern ● Reusable Connector ○ Camel components
  36. 36. 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 ….
  37. 37. 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 ….
  38. 38. Composing Microservice with Fuse RED HAT JBOSS FUSE microservice microservice microservice microservice microservice Enterprise Integration Patterns
  39. 39. 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
  40. 40. INSERT DESIGNATOR, IF NEEDED42 PATTERN BASED Split orders Send each order to it’s process service Electronics Others Aggregator Normalizer Content Enricher Resequencer
  41. 41. 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"));
  42. 42. 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>
  43. 43. INSERT DESIGNATOR, IF NEEDED45 CAMEL DSL JBOSS DEVELOPER STUDIO Java DSL Blueprint DSL (XML) Spring DSL (XML)
  44. 44. 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
  45. 45. 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;
  46. 46. 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
  47. 47. INSERT DESIGNATOR, IF NEEDED49 160+ ENDPOINT COMPONENTS
  48. 48. 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
  49. 49. CAMEL EXCHANGE in ROUTE PROCESSOR PROCESSOR PROCESSOR PRODUCER Exchange Exchange In In In In Out Out Out Out
  50. 50. 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
  51. 51. 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
  52. 52. 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
  53. 53. 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"); }
  54. 54. 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"); } }
  55. 55. INSERT DESIGNATOR, IF NEEDED57 MORE INFORMATION ● Camel in Action ● Apache Camel Developer’s Cookbook ● Community website ○ http://camel.apache.org/
  56. 56. LAB ONE Container Integration Container A P I API management Customer Data ID Balance VIP Status Customer Data {“ID”, “Balance”, “VIP Status”}
  57. 57. LAB ONE http://bit.ly/2i015H4 VM Password: r3dh4t1!
  58. 58. APIs
  59. 59. 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
  60. 60. 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
  61. 61. API FIRST microservice by RED HAT JBOSS FUSE REST DSL Swagger API Doc API Data Format Transform 3ScaleAPImanagement
  62. 62. 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>
  63. 63. 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
  64. 64. 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
  65. 65. 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
  66. 66. SERVICE RESILIENCE JBoss Fuse microservice API JBoss Fuse microservice API microservice microservice API microservice microservice API Chain reaction JBoss Fuse microservice API SLOW!! Client
  67. 67. 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
  68. 68. 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
  69. 69. INSERT DESIGNATOR, IF NEEDED71 DIFFERENT DATA FORMAT
  70. 70. 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>
  71. 71. 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"} }
  72. 72. Transformation Tooling XML JSON JAVA Customize Drag and drop mapping Set property Set variable Set expression Add transformation Add custom transformation
  73. 73. 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
  74. 74. 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
  75. 75. 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
  76. 76. LAB TWO http://bit.ly/2h3JGxL
  77. 77. CONTAINERS
  78. 78. 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
  79. 79. CONTAINERS ● ● ● ●
  80. 80. 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
  81. 81. OPENSHIFT
  82. 82. 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...)
  83. 83. OPENSHIFT CONTAINERIZED APPS RUN IN PODS
  84. 84. 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
  85. 85. OPENSHIFT KUBERNETES
  86. 86. 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
  87. 87. 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
  88. 88. ROUTES POD SERVICE PODPOD SERVICE POD ROUTE CLIENT CLIENTCLIENTRouters support the following protocols: ● HTTP ● HTTPS (with SNI) ● WebSockets ● TLS with SNI
  89. 89. 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.
  90. 90. REPLICATION CONTROLLER ● Ensures that a specified number of Pod replicas is running ● Holds Pod Templates for creating new Pods ● Autoscaling ● Rolling Updates
  91. 91. OPENSHIFT BUILDING IMAGES ● Build strategies ○ Source Source-to-Image (S2I) ○ Binary Source-to-Image (S2I)
  92. 92. OPENSHIFT S2I Docker Custom Git Dockerfile Binary Image Build Docker Image Build Source Build Strategy NEED UPDATE FOR BINARY S2i
  93. 93. OPENSHIFT codeGit Repository Source-to-Image (S2I) Application Container deploy CODE BUILD DEPLOY Container Image Image Registry OPSDEV BUILDING IMAGES
  94. 94. OPENSHIFT PIPELINE OpenShift Jekins Image Repository Git Pods Build Deploy Webhook Git push Pipeline starts Build application image Running application container in different environment
  95. 95. OPENSHIFT PIPELINE node('maven') { stage('build') { openshiftBuild(buildConfig: 'buildconfigname', showBuildLogs: 'true') } stage('staging') { openshiftDeploy(deploymentConfig: 'deploymentconfigame') } …. }
  96. 96. 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
  97. 97. 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
  98. 98. 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
  99. 99. 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
  100. 100. LAB THREE http://bit.ly/2yL7GPP
  101. 101. API Management
  102. 102. 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
  103. 103. 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
  104. 104. 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
  105. 105. 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
  106. 106. 3scale API Management microservice microservice microservice OpenShift 3scale Proxy CLIENT JBoss Fuse microservice API 3scale API Management Platform
  107. 107. 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
  108. 108. 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
  109. 109. 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
  110. 110. 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
  111. 111. 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
  112. 112. 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
  113. 113. Lab Four http://bit.ly/2z29V1Q
  114. 114. Summary
  115. 115. THANK YOU plus.google.com/+RedHat linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHatNews

×