Upload
ceposta
View
943
Download
7
Embed Size (px)
Citation preview
CLOUD NATIVE CAMEL RIDING WITH KUBERNETES AND OPENSHIFT
@christianposta 17 June 2016
Ifchangeishappeningontheoutsidefasterthanontheinsidetheendisinsight.
Jack Welch, former CEO, GE
Company listed on Standard & Poors life expectancy
Do we need “integration?”
What kind of challenges are we going to run into?
Where do Containers fit into this?
WE’RE OFF TO DO MICROSERVICES!
Christian Posta Principal Middleware Architect @ Red Hat
Twitter: @christianposta
Blog: http://blog.christianposta.com
Email: [email protected]
• “Microservices for Java developers” (6/2016)
• Committer Apache Camel, ActiveMQ, Fabric8
• Worked with large Microservices, web-scale,
unicorn company
• Blogger, speaker about DevOps, integration,
and microservices
• Single, self-contained, autonomous
• Isolated and Resilient to faults
• Faster software delivery • Own their own data • Easier to understand
individually • Scalability • Right technology for the
problem • Test individual services • Individual deployments
MICROSERVICES
Infrastructure for scale
Organizational structure
Identify a useful domain model with boundaries
TRANSFORMATION CHALLENGES
DOMAIN COMPLEXITY IS REAL
• Break things into smaller, understandable models
• Surround a model and its “context” with a boundary
• Implement the model in code or get a new model
• Explicitly map between different contexts
• Model transactional boundaries as aggregates
Book checkout / purchase Title Search
Recommendations
Weekly reporting
DO WE NEED INTEGRATON?
• REST, RPC
• Messaging (ActiveMQ, JMS, AMQP, STOMP, Kafka, etc)
• Legacy (SOAP, mainframe, file processing, proprietary)
• Managed file processing
• Streaming
• Message transformation
• EIPs
DO WE NEED INTEGRATON?
REAL DEVELOPERS RIDE CAMELS!
• Small Java library
• Very popular (200+ components for “dumb pipes”)
• Powerful EIPs (routing, transformation, error handling)
• Distributed-systems swiss-army knife!
• Declarative DSL
• Embeddable into any JVM (EAP, Karaf, Tomcat, Spring Boot, Dropwizard, Wildfly Swarm, no container, etc)
APACHE CAMEL
INTEGRATION HEAVY LIFTING: APACHE CAMEL
• Automatic retries, back-off algorithms
• Dynamic routing
• Powerful testing/mocking framework
• Circuit breakers, fallbacks
• Idempotent consumers
• Backpressure mechanisms
• Beautiful REST DSL with built in Swagger support
CAMEL FOR RESILIENT MICROSERVICES
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”); }
EXPOSE REST END POINT
public class OrderProcessorRouteBuilder extends RouteBuilder { @Override public void configure() throws Exception { from(“jms:topic:foo”)
.hystrix() .to(“http://fooservice/”).onFallback() .transform().constant(“fallback foo!”).end()
}
CIRCUIT BREAKER/FALLBACK
public class OrderProcessorRouteBuilder extends RouteBuilder { @Override public void configure() throws Exception { from(“jms:topic:foo”)
.idempotentConsumer(header(“fooMessageId”), memoryCache).to(“http://fooservice/”).log(“got response ${body}”);
}
IDEMPOTENT CONSUMER
• 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?
PROBLEMS DEVELOPING MICROSERVICES
LINUX CONTAINERS
RED HAT OPENSHIFT
• Developer focused workflow
• Enterprise ready, supported
• 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
FUSE INTEGRATION SERVICES
https://docs.openshift.com/enterprise/3.1/using_images/xpaas_images/fuse.html
• 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)
FUSE INTEGRATION SERVICES
• How to run them all locally?
• How to package them
• How to test?
• Vagrant? VirtualBox? VMs?
• Specify configuration
• Process isolation
• Service discovery
• Multiple versions?
PROBLEMS DEVELOPING MICROSERVICES: SOLVED
MICROSERVICES PLATFORM ON KUBERNETES/OPENSHIFT
Christian Posta Principal Middleware Specialist/Architect
Twitter: @christianposta
Blog: http://blog.christianposta.com
Email: [email protected]
Questions, Discussion, Demo!