microservices and container development - red...
TRANSCRIPT
Microservices and Container Development
Red Hat Day – Montreal May 19th, 2016
Martin Sauvé[email protected](514)220-8113
2
Hoshi RyokanJapanese InnFounded 718 A.D.46 generations of management1300 years in the businessGuiness World Record!
3
Source: Yale School of Management
75% on the index will be replaced by 2027
S&P 500 Company Life Expectancy
“Company must embrace creative destruction”Richard Foster, Yale School of Management
Even Hoshi Ryokan Inn is threatened by new Japanese fiscal laws
5
What are Microservices ?
It’s a distributed system architecture! (Sounds familiar ?)
Can you make a change to a service and deploy it without changing anything else ?
This session won’t make you an expert In microservice architecture!
No precise definition, but….
MicroservicesKey Concepts
6
• Loose Coupling – Change independently, use of API• Cross-Functional teams around business capabilities• Resilience – Failure can be isolated, design for failure• Heterogeneous technology – right tool for the job• Product not Project• Scaling • Smart endpoints and dumb pipes• Ease of deployment – culture of automation
http://martinfowler.com/
MicroservicesIntegration is KEY – Fine GrAIN Distributed Systems
7
• API Driven, REST• Messaging (JMS, AMQP, STOMP…)• Transformation• EIPs
MicroservicesDeveloper Concerns
8
• How can I run them locally ?• How to package them ?• How to test ?• How do I specify the configuration ?• How do I isolate runtime and processes ?• How do I discover services ?
Modern integration PlatformJboss Fuse
11
Smart Endpoints Enterprise IntegrationPatterns
Small Footprint
Modern Application PlatformOpenshift Enterprise
12
ContainerizedApp Services
Container OrchestrationAt Scale
User Experience
InfrastructureOperating System
Docker Engine/bin/lib /bin/lib
App App App App
• Lightweight• Isolation
• Discovery• Replication
• Ci/CD• Source to Image• Automation
MicroservicesUsing Jboss Fuse with Apache Camel
13
• Very small java library• Distributed-system toolkit• EIP based• Declarative language, REST DSL for example• Embeddable
MicroservicesKey Concepts with OpenShift
14
• Loose Coupling • Cross-Functional teams • Resilience • Heterogeneous technology • Product not Project• Scaling • Ease of deployment – culture of automation
Fuse Integration Service (FIS) on OpenShif
Multi-tenancy, resource isolation
Kubernetes scheduling and replicationLeverage Docker eco-system
Only so much a tool can do, this is about process and people!
OpenShif Auto-Scale, target resource utilization
OpenShif, Jenkins….
17
Red
Hat
CD
KVa
gran
t Box
Red
Hat
CD
KVa
gran
t Box
What is the CDK ?OpenShif in a Box …. litteraly
Host (your laptop)
VirtualizationProvider
VM Management
Development VM
Container Services
Container Orchestration
Containers Your apps!
18
CDK - how to install ?
Step 0: Pre-requisite check
Step 1: Download from http://developers.redhat.com/
Step 2: Vagrant up
20
JBoss Developer Platform All-in-one container development
• CDK• Vagrant• Virtual Box• Cygwin• Eclipse Docker Tooling
22
Pieces and
Relations
Pods
Services Routes
SDN
Replication Controller
DeploymentConfiguration
Build Configuration Image Stream
Source To Image (S2I)
Integrated Docker Registry
Persistent Volumes
Persistent Volume Claims
What is a Kubernetes Application ?
23
Container Development Process Part 1 – Local Development
Application
ServicesSource
Code/Build/Test RegistryDocker ImageBuild Deploy
App TemplateDC/BC/RC Deploy
Commit
24
Container Development Tools Part 1 – Local Development
Application
Services
SourceCode/Build/Test Registry
Docker ImageBuild Deploy
App TemplateDC/BC/RC
Deploy
STI
Commit
25
Container Development Process Part 2 – Life Cycle (simplification)
Application
ServicesCommitJava/Ruby…
Build
DeployQA
CommitJSON/YAML
DeployQA
Release
RegistryQA
Test
DeployProd
RegistryProd
Release DeployProd
Test
OrchestrationOrchestration
26
Container Development Tools Part 2 – Life Cycle (simplification)
Application
ServicesCommitJava/Ruby…
Build
DeployQA
CommitJSON/YAML
DeployQA
Release
RegistryQA
Test
DeployProd
RegistryProd
Release DeployProd
Test
OrchestrationOrchestration
STI
MicroservicesDeveloper Concerns
27
• How can I run them locally ? • How to package them ? • How to test ? • How do I specify the configuration ?• How do I isolate runtime and processes ?• How do I discover services ?
CDKDOCKERARQUILLAN
TEMPLATES, ENV VARSDOCKER
KUBERNETES