Microservices and Containers in the Middleware World April 2016 JPoint Moscow, Russia Kai Wähner Technology Evangelist kwaehner@tibco.com LinkedIn / Xing @KaiWaehner www.kai-waehner.de
Key Takeaways A cloud-native architecture enables flexible and agile development Modern middleware leverages containers and Microservices Just using Jenkins and Docker is not enough
Agenda 1) Digital Transformation 2) Middleware 3) Microservices and Containers 4) A Cloud-Native Architecture 5) Cloud Native Middleware 6) Live Demo
Agenda 1) Digital Transformation 2) Middleware 3) Microservices and Containers 4) A Cloud-Native Architecture 5) Cloud Native Middleware 6) Live Demo
The Digital Transformation cannot be stopped!
Evolving Demands from the Business AGILITY & SPEED WEB SCALE REDUCED CYCLE TIMES FAIL FAST LOWER COST
Agenda 1) Digital Transformation 2) Middleware 3) Microservices and Containers 4) A Cloud-Native Architecture 5) Cloud Native Middleware 6) Live Demo
Middleware Middleware is computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue. Middleware makes it easier for software developers to implement communication and input/output, so they can focus on the specific purpose of their application. (https://en.wikipedia.org/wiki/middleware) Wikipedia
Middleware - Buzzwords Keywords PAST: Application Integration, EAI, Broker, Process, Application, Integration, Enterprise, Hub and Spoke, Backbone, Scalability, Platform, Batch Keywords PRESENT: Service Integration, Bus, SOA, BPM, Service, ESB, Flexibility, Distribution, Events, EDA, Real Time, Event Correlation, Open, Standards, Extensibility Keywords FUTURE: Integration of Everything, Gateway, ibpms, Cloud, IoT, Microservice, API, Continuous Delivery, Self-Service, Prediction
Middleware The Double Burden?... ESB frameworks are generally characterized as heavyweight complex, centralized and difficult... Electronic Services: Concepts, Methodologies, Tools and Applications, Information - Science Reference (15. Juli 2010)
Middleware Example: Enterprise Service Bus (ESB) An enterprise service bus (ESB) is a software architecture model used for designing and implementing communication between mutually interacting software applications in a serviceoriented architecture (SOA). Its primary use is in enterprise application integration (EAI) of heterogeneous and complex landscapes. http://en.wikipedia.org/wiki/enterprise_service_bus (Wikipedia, 2016)
Is the ESB dead? #NoESB Akana (former SOA Software) https://blog.soa.com/noesb/ Gartner https://www.gartner.com/user/registration/webinar?resid=2855231&commid=128383&channelid=5500&srcid=null
Definition of the Term ESB in 2016 What to use an ESB for? Integration, orchestration, choreography, routing, (some kinds of) event processing / correlation / business activity monitoring Legacy Integration (e.g. with a powerful SAP or Mainframe connector) API and REST integration and business services Messaging (WebSockets, MQTT, AMQP, ) Internet of Things Deploy these services independently from each other with a standardized interface to a scalable runtime platform; automatically.
Agenda 1) Digital Transformation 2) Middleware 3) Microservices and Containers 4) A Cloud-Native Architecture 5) Cloud Native Middleware 6) Live Demo
Microservices Suite of small services running in its own process Communication via lightweight mechanisms Built around business capabilities Independently deployable, written in different languages and using different data stores Bare minimum of centralized management Shorter time to results and increased flexibility
Various Forms of Microservices API Gateway Integration Service Integration Service SaaS Service BPM Service Service Service Service Service Monolith application SOA
How to deploy independent Microservices? == The Momentum of Containers Garden / Warden
Why Containers? http://www.slideshare.net/andersjanmyr/docker-the-future-of-devops
Build, Ship, and Run Any App, Anywhere http://www.slideshare.net/ andersjanmyr/ docker-the-future-of-devops
An Open Standard for Containers... https://www.opencontainers.org/
Agenda 1) Digital Transformation 2) Middleware 3) Microservices and Containers 4) A Cloud-Native Architecture 5) Cloud Native Middleware 6) Live Demo
Cloud Native enables... scalable services resiliency automatic load balancing and failover DevOps usage public cloud platforms, but also private or hybrid vendor-agnostic deployment focus on business problems
Cloud-Native Architecture Microservices and Containers are just the Foundation!
Requirements for a Cloud-Native Architecture Microservices and Containers [as discussed ] Continuous Integration and Continuous Delivery Scripting / Automatic Test and Deployment Service Discovery Dynamic Distributed Configuration Management Scalability and Failover Cluster Management (Scheduling and Orchestration) Load Balancing (Server-side and Client-side) Cloud Native Platform Self-Service Agile Infrastructure Private / Public / Hybrid PaaS
Continuous Integration and Continuous Delivery Scripting / Automatic Test and Deployment BENEFITS Accelerated Time to Market Building the Right Product Improved Productivity and Efficiency Reliable Releases Improved Product Quality Improved Customer Satisfaction Build Management Ant, Maven, Gradle, Continuous Integration Jenkins, Bamboo, Continuous Delivery Chef, Puppet, Salt, http://en.wikipedia.org/wiki/continuous_delivery
Continuous Integration and Continuous Delivery Internal Service Discovery for a Scalable Runtime Service Registry Eureka Apache Zookeeper Consul Etcd Cluster Frameworks with implicit Service Registry Kubernetes Mesos Marathon Amazon AWS ELB https://docs.pivotal.io/spring-cloud-services/service-registry/ PaaS Cloud Platforms reusing an existing Service Registry Pivotal Cloud Foundry is based on Eureka
Continuous Integration and Continuous Delivery External Service Discovery for an Open API Examples for API Management: JBoss apiman, Apigee, Akana, TIBCO Mashery, Layer7
Continuous Integration and Continuous Delivery Dynamic Distributed Configuration Management Features Effect changes dynamically at runtime Change multi-dimensional properties based on a complex request or deployment context Use Cases Enable / disable features based on request context Change UI presentation logic Override behaviors of patterns (e.g. Circuit Breaker) Change log level after observing issues in a service Examples Netflix Archaius, Spring Cloud Config http://techblog.netflix.com/2012/06/annoucing-archaius-dynamic-properties.html
Scalability and Failover Cluster Management (Scheduling and Orchestration) Features Orchestrate the combination of container scheduling and managing hosts Select relevant hosts (applying rules and constraints) Load containers onto the specific hosts Start, stop, and manage the life cycle of the process Designed to be fault-tolerant and scalable Examples Swarm (Docker-native) Fleet (CoreOS low-level framework) Kubernetes (open source d by Google) Adopted by others (IBM, Red Hat, Microsoft ) Mesos Marathon (most powerful and complex) For large scale; multi-use (e.g. Containers, Hadoop) https://www.oreilly.com/ideas/swarm-v-fleet-v-kubernetes-v-mesos https://www.digitalocean.com/community/tutorials/the-docker-ecosystem-an-introduction-to-common-components
Scalability and Failover Server-side and Client-side Load Balancing (LB) Features Distributes network or application traffic across a number of servers Used to increase capacity (concurrent users) and reliability of applications Server-Side External Load Balancing ( Edge Services ) Client-Side Internal Load Balancing ( Mid-Tier Services ) www.devcentral.f5.com Why also Client-Side LB? Inter-Service-Communication (1 hop instead of 2 hops) Implicit LB, no need for an external LB Traditional LB with IP addresses and host names not sufficient Registering and de-registering servers with load balancer on the fly No restrictions on the protocol or method of communication Examples F5 internal / DMZ, server-side Netflix Ribbon internal / within cloud platform, client-side AWS ELB (Elastic Load Balancer) public cloud, server-side
Cloud Native Architecture What Cloud Native Solutions are available?
Cloud Native Platform (Infrastructure-as-a-Service) IaaS Choose your IaaS Servers Storage Private or Hybrid Cloud Network Reduced costs of Infra Self-hosted & Controlled Env
Cloud Native Platform (Platform-as-a-Service) Choose your PaaS / Container Cloud-Native App Dev OS & Containers Scalability Self-service agile infrastructure Routing Logging / Monitoring Elasticity & Scalability PaaS
Cloud Native Platform IaaS Servers Storage Network Choose your IaaS Choose your PaaS / Container Private or Hybrid Cloud Cloud-Native App Dev Reduced costs of Infra Self-service agile infrastructure Self-hosted & Controlled Env Elasticity & Scalability OS & Containers Scalability Routing Logging / Monitoring PaaS
PaaS Platforms on top of IaaS in 2016 What container and PaaS tools are used to manage OpenStack applications? OpenStack Survey, April 2016: http://www.openstack.org/assets/survey/april-2016-user-survey-report.pdf
Cloud Foundry
Kubernetes (K8S) http://kubernetes.io/docs/getting-started-guides/#cloud
Kubernetes on Google Cloud Platform
Apache Mesos http://www.slideshare.net/docker/building-web-scale-apps-with-docker-and-mesos/30
SaaS The Other Cloud Native Alternative you have no control! You just use the service! https://www.linkedin.com/pulse/saas-vs-paas-iaas-ultimate-guide-when-use-what-sonia-patel
Container-as-a-Service Containers as a service (CaaS) is a form of container-based virtualization in which container engines, orchestration and the underlying compute resources are delivered to users as a service from a cloud provider. The basic resource for CaaS is a container, rather than a virtual machine (VM) or a bare metal hardware host system http://searchcloudcomputing.techtarget.com/definition/containers-as-a-service-caas
Agenda 1) Digital Transformation 2) Middleware 3) Microservices and Containers 4) A Cloud-Native Architecture 5) Cloud Native Middleware 6) Live Demo
Microservices and Containers in the Middleware World Some Middleware examples Integration Services / APIs, Integration, Orchestration API Management Publish and Monetize Microservices (internal, partner, public) Log Management Monitor distributed Microservices in a central way Event Processing Correlation of Microservices events in real time All the above Middleware components control and leverage other Microservices have to support Microservice characteristics itself (Containers, CI / CD, Elastic Scalability, etc.) to fit into a cloud-native architecture
Integration PaaS PaaS Integration Platform Omnichannel client apps Integration Apps & Services Build consumable Web APIs out of backend web services like SOAP, SAP, Oracle, IBM MQ, etc. API Choreography Microservices Microservices Microservices (Node/Java/Python) (Node/Java/Python) (Node/Java/Python) Functional Microservices Functional Microservices Build focused business functionality-oriented apps without getting into code complexity Integration Apps & Services ESB & Common Services API Choreography Visually choreograph APIs leveraging the PaaS Integration Tooling (e.g. data mapper, connectors) Backend Legacy Apps
SaaS Integration Solution Web-based Integration Edge-Services Citizen Developer
API Creation API Packaging and Distribution API Management API Management PORTAL ANALYTICS API PACKAGER TRAFFIC MANAGEMENT SECURITY APIs API Gateway ADVANCED SECURITY TRAFFIC MANAGEMENT TRANSFORM
Sensors Application Logs Transactions Monitoring Configuration Messaging Data Discovery Streaming Analytics Log Management WEB UI WS API Analysis Tools Operational Intelligence Platform Centralize and Store of Record Search, Auto-id, OOTB Parsing, Correlation Forensics and Alerts Reports
Event Processing Temporal analytic: If vibration spike is followed by temp spike then voltage spike [within 12 minutes] then flag high severity alert. Voltage Temperature Vibration Correlation of Microservice Events in Real Time Device history
Agenda 1) Digital Transformation 2) Middleware 3) Microservices and Containers 4) A Cloud-Native Architecture 5) Cloud Native Middleware 6) Live Demo
Cloud Native Architecture for the Live Demo Partner App.com Web App Android App iphone App ROUTER HEALTH MGR LOGGING CONTROLLER NATS SVC BROKER SaaS Gateway App Gateway App BW CE App BW CE App MongoDB PaaS BW CE App Node App Spring App Java App Cloud Foundry Legacy TIBCO ESB eftl EMS BW6
Live Demo Cloud-Native Microservices with Pivotal Cloud Foundry, Docker, Kubernetes, TIBCO BusinessWorks Container Edition, TIBCO Mashery and Papertrail Cloud (PaaS, Microservices, Container) IDE (REST, APIs, Integration) Administration (Deployment, Versioning) Operations (Failover, Scalability, Log Management) Log Management (Distributed Search and Correlation) Open API (Packaging, External Discovery)
Key Takeaways A cloud-native architecture enables flexible and agile development Modern middleware leverages containers and Microservices Just using Jenkins and Docker is not enough
Questions? Kai Wähner kwaehner@tibco.com @KaiWaehner www.kai-waehner.de LinkedIn / Xing Please connect!