Microservices with Red Hat Ruud Zwakenberg - ruud@redhat.com Senior Solutions Architect June 2017 JBoss Fuse and 3scale API Management
Disclaimer The content set forth herein is Red Hat confidential information and does not constitute in any way a binding or legal agreement or impose any legal obligation or duty on Red Hat. This information is provided for discussion purposes only and is subject to change for any or no reason.
Preface Building a horizontally scalable API on your enterprise systems is not difficult with the integration tools from Red Hat. Ruud Zwakenberg explains how to build a modern, micro services based API with JBoss Fuse and 3scale API management.
Agenda From SOA to Microservices The benefits of microservices Building microservices with Red Hat Red Hat JBoss Fuse Red Hat OpenShift Red Hat 3scale API Management https://github.com/jbossdemocentral/coolstore-microservice https://github.com/jbossdemocentral/jboss-fis-weightwatcher https://github.com/rmarting/fis-demo
SOA is dead, long live SOA Services microservices
Separation of responsibilities Flexibility Standardisation Enabled BPM SOA Full monty Takes time Expensive Needs governance Needs organisational changes
Microservices - doing SOA the right way Keep the services orientation (services are not a bad idea) Kill the service overhead (you don t need it) Focus on the business (in the end, they pay the bills)
What we had Big, expensive monolithic systems $$$ $$$$ $$$$$ Difficult to maintain Difficult to integrate Difficult to scale
What we wanted App App App Shared Service Shared Service Shared Service Sharable Enterprise services
We even added a big fat Enterprise Service Bus App App App Enterprise Service Bus Cheaper! Faster! More Agile! Shared Service Shared Service Shared Service
Challenges This is your system App App App Easy Enterprise Service Bus Adding new features is difficult Shared Service Shared Service Shared Service Trouble! Bad Time to Market!
So what we did App App App We stuffed everything in here Enterprise Service Bus and here Shared Service Shared Service Shared Service
We ended up with this Difficult to upgrade Difficult to change Difficult to scale Difficult to manage Very expensive App App Our own legacy Yeahh, we made a new monolith! Our very fat Enterprise Service Bus Shared Service Shared Service Shared Service
So, what now? App App App Dedicated business microservices Enterprise Service Bus Put the bus on a diet Shared Service Shared Service Shared Service
Microservices = pragmatic SOA Services should be small and perform a a single function Services are dedicated to a business goal Well defined simple API (REST) Services should be fault tolerant Independently deployable Service runs in its own process Build by Continuous Delivery Each service is elastic, resilient, composable, minimal, and complete Dedicated storage
Microservices benefits - Agility Design Develop Test Deploy Manage Update Crusty monolith
Microservices benefits - Agility Design Develop Test Deploy Manage Update Design Develop Test Deploy Manage Update Design Develop Test Deploy Manage Update Awesome microservices Design Develop Test Deploy Manage Update
Microservices benefits - Scaling & High Availability Crusty monolith Traditional scaling Overhead?!?
Microservices benefits - Scaling Awesome microservices Microservices scaling Only scale what s necessary
Microservices Architecture - What do you need to build it?
Microservices Architecture - What do you need to build it? API Layer Red Hat 3scale Microservices Development Platform Red Hat JBoss Fuse Container Platform Red Hat OpenShift
JBoss Fuse - Good fit for Microservices Extremely lightweight Container ready Easy to integrate with CI/CD Easy fallback procedures Polyglot (XML, Java, Groovy, Scala) Self monitoring out of the box
JBoss Fuse Components JBoss Development Studio Your Eclipse-based IDE Apache Camel Apache CXF Integration routes, flows SOAP / REST interfacing Fabric8 Apache A-MQ Platform management JMS / Message Broker Apache Karaf OSGi Container Bonus: JBoss EAP J2EE Application Server
JBoss Visual Development - Routes
JBoss Visual Development - Data mapping
Visual Debugging
Service Implementation
Service Binding REST
Service Contracts
Microservices Architecture - What do you need to build it? API Layer Red Hat 3scale Microservices Development Platform Red Hat JBoss Fuse Container Platform Red Hat OpenShift
Service deployment and scaling Microservice are your backbone, scaling is a must Docker containers managed by OpenShift provides a manageable environment for the JBoss platform JBoss Fuse (with JBoss EAP) images can be managed using Fabric8 and Kubernetes
10,000 foot overview
Source 2 Image Walk Through Code Build Container Image Registry Deploy
CONTINUOUS DELIVERY PIPELINE DEVELOPER GIT SERVER ARTIFACT REPOSITORY RELEASE MANAGER GO LIVE? OPENSHIFT CI/CD PIPELINE (JENKINS) IMAGE BUILD & DEPLOY PROMOTE TO TEST PROMOTE TO UAT PROMOTE TO PROD INTEGRATED IMAGE REGISTRY INTEGRATED IMAGE REGISTRY OPENSHIFT CLUSTER OPENSHIFT CLUSTER NON-PROD DEV TEST UAT PROD 34 OPENSHIFT TECHNICAL OVERVIEW
Microservices Architecture - What do you need to build it? API Layer Red Hat 3scale Microservices Development Platform Red Hat JBoss Fuse Container Platform Red Hat OpenShift
API Management API Management Key Benefits for MSA OpenShift & Fuse
API Management - What you actually need API Layer API Management = Service Management = SOA Governance
API Management - What you actually need API Layer For your service users Secure Gateway between service consumers and providers Nice developer portal
API Management - What you actually need API Layer For your service admins Service rate limiter Monitoring API monetising
Red Hat 3scale API Management Modular No single point of failure Cloud access Highly scalable
Access Control & Security Authenticate and restrict access to your APIs. Protect backend services. Multiple authentication mechanisms API Key App ID / App Key Oauth 2.0 Can be combined with IP / Domain referrer whitelisting Authenticate traffic Restrict by policy Drop unwelcome calls Protect backend services Generate overage alerts Impose rate limits
API Contracts and Rate Limits Package your APIs. Create access tiers. Set rate limits. API services Allow/restrict access to - Endpoint A - Endpoint t B Package #1 Internal Teams your API end points along with rate limits Rate limits - X Calls / Minute - Y Calls / Day Package #2 Package #3 Strategic Partners Developers API services - Free - $X per Month - $Y per Call
Analytics & Reporting Track and monitor usage. Get reports by API, app, method and metric.
Developer & Partner Portal Your brand. Your user experience. Your user interface.
Microservices Architecture with Red Hat Middleware
Demo material https://github.com/jbossdemocentral/coolstore-microservice https://github.com/jbossdemocentral/jboss-fis-weightwatcher https://github.com/rmarting/fis-demo
THANK YOU plus.google.com/+redhat facebook.com/redhatinc linkedin.com/company/red-hat twitter.com/redhatnews youtube.com/user/redhatvideos