Chicago Microservices Integration Talk

46
Integration in the age of DevOps 5/11/16 Christian Posta @christianposta

Transcript of Chicago Microservices Integration Talk

Page 1: Chicago Microservices Integration Talk

Integration in the age of DevOps

5/11/16 Christian Posta @christianposta

Page 2: Chicago Microservices Integration Talk

Christian Posta Principal Middleware Specialist/Architect

Twitter: @christianposta

Blog: http://blog.christianposta.com

Email: [email protected]

•  Author “Microservices for Java developers” O’Reilly (June 2016)

•  Committer on Apache Camel, Apache ActiveMQ, Fabric8, many others

•  Worked with large Microservices, web-scale, unicorn company

•  Blogger, speaker about DevOps, integration, and microservices

Cloud Native Architectures

Page 3: Chicago Microservices Integration Talk

Cloud Native Architectures

Page 4: Chicago Microservices Integration Talk

•  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

Page 5: Chicago Microservices Integration Talk

Ifchangeishappeningontheoutsidefasterthanontheinsidetheendisinsight.

Jack Welch, former CEO, GE

Cloud Native Architectures

S&P company life expectancy

Page 6: Chicago Microservices Integration Talk

Cloud Native Architectures

Source: Dave Gray, The Connected Company

Page 7: Chicago Microservices Integration Talk

Source: Dave Gray, The Connected Company

Page 8: Chicago Microservices Integration Talk

DevOps is NOT about efficiency. DevOps is a reorg.

Page 9: Chicago Microservices Integration Talk

Cloud Native Architectures

•  Faster software delivery •  Own database (data) •  Faster innovation •  Scalability •  Right technology for the

problem •  Test individual services •  Isolation •  Individual deployments

Page 10: Chicago Microservices Integration Talk

Microservices helps solve the problem of “how do we decouple our services and teams to move quickly at scale to deliver business value”

Cloud Native Architectures

Page 11: Chicago Microservices Integration Talk

•  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

Page 12: Chicago Microservices Integration Talk

PeopletrytocopyNet7lix,buttheycanonlycopywhattheysee.Theycopytheresults,nottheprocess.

Adrian Cockcroft, former Chief Cloud Architect, Netflix

Page 13: Chicago Microservices Integration Talk
Page 14: Chicago Microservices Integration Talk

Callitwhatyouwant;SOA,microservices–it’salljustdistributedsystems

Christian Posta – Red Hat

Cloud Native Architectures

Page 15: Chicago Microservices Integration Talk

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

Page 16: Chicago Microservices Integration Talk

Cloud Native Architectures

If we have to take into account the network, do we still need integration?

Page 17: Chicago Microservices Integration Talk

Cloud Native Architectures

We’ll just do reactive, event-driven distributed systems… still need integration?

Page 18: Chicago Microservices Integration Talk

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

Page 19: Chicago Microservices Integration Talk

Heavy Lifting: Apache Camel for Microservices

Page 20: Chicago Microservices Integration Talk

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”)

Page 21: Chicago Microservices Integration Talk

Real developers ride Camels!

Page 22: Chicago Microservices Integration Talk

Cloud Native Architectures

Apache Camel to the rescue!

•  Automatic retries, backoff algorithms •  Dynamic routing •  Powerful testing/mocking framework •  Circuit breakers •  Backpressure mechanisms •  Beautiful REST DSL with built in Swagger support

Page 23: Chicago Microservices Integration Talk

REST DSL

public 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”); }}

Page 24: Chicago Microservices Integration Talk

Cloud Native Architectures

Quick Demo of Camel

Page 25: Chicago Microservices Integration Talk

Cloud Native Architectures

Page 26: Chicago Microservices Integration Talk

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?

Page 27: Chicago Microservices Integration Talk

Cloud Native Architectures

Shared 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

Page 28: Chicago Microservices Integration Talk
Page 29: Chicago Microservices Integration Talk

Cloud Native Architectures

Immutable infrastructure/deploys •  “we’ll just put it back in Ansible/Chef/Puppet/Salt”

•  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

Page 30: Chicago Microservices Integration Talk

Docker / Linux Containers

Page 31: Chicago Microservices Integration Talk

Kubernetes

Page 32: Chicago Microservices Integration Talk

•  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

Page 33: Chicago Microservices Integration Talk

Red Hat OpenShift

Public PaaS Service

On-premise or Private PaaS Software

Open Source PaaS Project

Page 34: Chicago Microservices Integration Talk

Cloud Native Architectures

Page 35: Chicago Microservices Integration Talk

Cloud Native Architectures

Fuse Integration Services for OpenShift

•  Set of tools for integration developers

•  Package your Fuse/Camel services as Docker images

•  Run locally on CDK (container development kit)

•  Manage them with Kubernetes/OpenShift

•  Flat class loader JVMs

•  Supports Spring, CDI, Blueprint

•  Plugs-in to your existing build/release ecosystem

(Jenkins/Maven/Nexus/Gitlab,etc)

Page 36: Chicago Microservices Integration Talk

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?

Page 37: Chicago Microservices Integration Talk

Cloud Native Architectures

Page 38: Chicago Microservices Integration Talk

Cloud Native Architectures

Quick Demo?

Page 39: Chicago Microservices Integration Talk

•  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

Page 40: Chicago Microservices Integration Talk

•  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?

Page 41: Chicago Microservices Integration Talk

•  Docker native, built on top of Kubernetes

•  1-click CI/CD •  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

Page 42: Chicago Microservices Integration Talk
Page 43: Chicago Microservices Integration Talk
Page 44: Chicago Microservices Integration Talk
Page 45: Chicago Microservices Integration Talk
Page 46: Chicago Microservices Integration Talk

Christian Posta Principal Middleware Specialist/Architect

Twitter: @christianposta

Blog: http://blog.christianposta.com

Email: [email protected]

Questions, Discussion, Demo!