Integration in the age of DevOps
-
Upload
albert-wong -
Category
Software
-
view
217 -
download
0
Transcript of Integration in the age of DevOps
Integration in the Age of DevOps
Albert [email protected]
Cloud Native Architectures
• Trying to incorporate new technology?• Trying to copy what others (Netflix, Amazon) are
doing?• Tactical automation?• Created a “DevOps” team?• Exploring cloud services?• Build/deploy automation?• OpenSource?• Piecemeal integration?
How are you keeping up with change?
Cloud Native Architectures
Cloud Native Architectures
• Faster software delivery• Own database (data)• Faster innovation• Scalability• Right technology for the
problem• Test individual services• Isolation• Individual deployments
Microservices helps solve the problem of “how do we decouple our services and teams to move quickly at scale to deliver business value”
• If my services are isolated at the process level, I’m doing #microservices
I’m doing microservices if…
• If I use REST/Thrift/ProtoBuf instead of SOAP, I’m doing #microservices
• If I use JSON, I’m doing #microservices
• If I use Docker / SpringBoot / Dropwizard / embedded Jetty, I’m doing #microservices
Cloud Native Architectures
Fallacies of distributed computing• Reliable networking• Latency is zero• Bandwidth is infinite• Network is secure• Topology doesn’t change• Single administrator• Transport cost is zero• Network is homogenous
https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
Cloud Native ArchitecturesIf we have to take into account the network, do we still need integration?
Cloud Native ArchitecturesWe’ll just do reactive, event-driven distributed systems… still need integration?
Cloud Native Architectures
Yes; we need reliable integration!• REST, RPC• Messaging (ActiveMQ, JMS, AMQP, STOMP, Kafka,
etc)• Legacy (SOAP, mainframe, file processing,
proprietary)• Managed file processing• Streaming• Message transformation• EIPs
Heavy Lifting: Apache Camel for Microservices
Cloud Native Architectures
Apache Camel to the rescue!• Small Java library• Distributed-system swiss-army knife!• Powerful EIPs• Declarative DSL• Embeddable into any JVM (EAP, Karaf, Tomcat,
Spring Boot, Dropwizard, Wildfly Swarm, no container, etc)
• Very popular (200+ components for “dumb pipes”)
• “Smart endpoints, dumb pipes”• Endpoint does one thing well • Metadata used for further routing• Really “dynamic” with rules engine (eg,
Drools/BRMS)
Apache Camel features easy to use visual editorDynamic Routing
Apache Camel features easy to understand configREST DSLpublic class OrderProcessorRouteBuilder extends RouteBuilder {
@Override public void configure() throws Exception {
rest().post(“/order/socks”).description(“New Order for pair of socks”).consumes(“application/json”).route()
.to(“activemq:topic:newOrder”) .log(“received new order ${body.orderId}”)
.to(“ibatis:storeOrder?statementType=Insert”); }}
Cloud Native Architectures
Cloud Native Architectures
Typical problems developing microservices• How to run them all locally?• How to package them (dependency management)• How to test?• Vagrant? VirtualBox? VMs?• Specify configuration• Process isolation• Service discovery• Multiple versions?
Cloud Native ArchitecturesShared infrastructure platforms headaches• Different teams• Different rates of change• VM sprawl• Configuration drift• Isolation / multi-tenancy
• Performance• Real-time vs batch• Compliance• Security• Technology choices
Cloud Native Architectures
Immutable infrastructure/deploys• “we’ll just put it back in Ansible”• Avoid chucking binaries / configs together and
hope!• Cattle vs Pets• Don’t change it; replace it• System created fully from automation; avoid drift• Eliminate manual configuration/intervention
Docker / Linux Containers
Kubernetes
• Developer focused workflow• Enterprise ready• Higher level abstraction above containers for
delivering technology and business value• Build/deployment triggers• Software Defined Networking (SDN)• Docker native format/packaging• CLI/Web based tooling
OpenShift
Cloud Native Architectures
Fuse Integration Services for OpenShift• Set of tools for integration developers • Build/package your Fuse/Camel
services as Docker images• Run locally on CDK• Deploy on top of OpenShift• Plugs-in to your existing build/release
ecosystem (Jenkins/Maven/Nexus/Gitlab,etc)
• Manage them with Kubernetes/OpenShift
• Flat class loader JVMs• Take advantage of existing
investment into Karaf with additional options like “just enough app server” deployments
• Supports Spring, CDI, Blueprint
• Small VM run locally by developers
• Full access to Docker, Kubernetes, OpenShift
• Deploy your suite of microservices with ease!
• Uses Vagrant/VirtualBox
• Getting Started on Linux,
Mac or Windows!
http://bit.ly/1U5xU4z
Cloud Native Architectures
RED HAT JBOSS FUSE
Development and tooling
Develop, test, debug, refine, deploy
JBoss Developer Studio
Web services frameworkWeb services standards, SOAP,
XML/HTTP, RESTful HTTP
Integration frameworkTransformation, mediation, enterprise
integration patterns
Management and monitoring
System and web services metrics, automated discovery,
container status, automatic updates
JBoss Operations Network
+ JBoss Fabric
Management Console (hawtio)
Apache CXF Apache Camel
Reliable MessagingJMS/STOMP/NMS/MQTT, publishing-subscribe/point-2-point, store and forward
Apache ActiveMQ
ContainerLife cycle management, resource management, dynamic deployment,
security and provisioning
Apache Karaf + Fuse Fabric
RED HAT ENTERPRISE LINUXWindows, UNIX, and other Linux
Cloud Native Architectures
Typical problems developing microservices• How to run them all locally?• How to package them • How to test?• Vagrant? VirtualBox? VMs?• Specify configuration• Process isolation• Service discovery• Multiple versions?
Cloud Native Architectures
Cloud Native Architectures
Quick Demo?
• Trying to incorporate new technology?• Trying to copy what others (Netflix, Amazon) are
doing?• Tactical automation?• Created a “DevOps” team?• Exploring cloud services?• Build/deploy automation?• OpenSource?• Piecemeal integration?
How are you keeping up with change?
Cloud Native Architectures
• 100% open source, ASL 2.0• Technology agnostic (java,
nodejs, python, golang, etc)• Built upon decades of
industry practices• 1-click automation• Cloud native (on premise,
public cloud, hybrid)• Complex build/deploy
pipelines (human workflows, approvals, chatops, etc)
• Comprehensive integration inside/outside the platform
What if you could do all of this right now with an open-source platform?
• Docker native, built on top of Kubernetes API
• Out of the box CI/CD, management UI
• Logging, Metrics• ChatOps• API Management• iPaaS/Integration• Chaos Monkey• Lots and lots of
tooling/libraries to make developing cloud-native applications easier
http://fabric8.io
Cloud Native Architectures
Quick Demo?