Modern Development: How Containers Are Changing Everything
Steve Poole @spoole167
About me
IBM Developer advocate for Runtimes
Making Java Real Since Version 0.9
Open Source Advocate
DevOps Practitioner (whatever that means!)
Steve Poole
@spoole167
Cloud: it’s what we always wanted
Today, our Cloud story is really a container story
Containers can go anywhere
Do anything
Are super versatile
Containers are giving us new opportunities
As long as the answer is “container”
With new performance profiles new systems are emerging
OS
Java / JVM
APP SERVER
FRAMEWORK
HARDWARE
APP
Traditional
OS
Java / JVM
APP SERVER
FRAMEWORK
HARDWARE
APP
Monolith in a box
OS
HARDWARE
Java / JVM
APP SERVER
FRAMEWORK
APP
Java / JVM
APP SERVER
FRAMEWORK
APP
microservice
function
Java / JVM
µFramework
function
Serverless / eventing
µF
µF
µF
µF
We’re all set on a future with containers
• Containers offer immutability and repeatability
• But there are immediate challenges…
Cloud Computing is not perfect - yet
But who cares about a little rain?
OS
Java / JVM
APP SERVER
FRAMEWORK
HARDWARE
APP
Traditional
OS
Java / JVM
APP SERVER
FRAMEWORK
HARDWARE
APP
Monolith in a box
OS
HARDWARE
Java / JVM
APP SERVER
FRAMEWORK
APP
Java / JVM
APP SERVER
FRAMEWORK
APP
microservice
function
Java / JVM
µFramework
function
Serverless / eventing
µF
µF
µF
µF
To enable these choices you need new things…
A shipyard to manage the containers
AKA Docker swarm / Kubernetes
Tools to manage the complexities of microservice based systems..
Umm….
Enough tools for you?
More consequences
Quite often containersare full of trash
They don’t behave as expected (or at all)
And debugging is hugely painful
It’s tough being a container developer
#worksfineonjdk9
#workslikeheavenonjdk11
Add in the build cycle
#worksfineonjdk9
#workslikeheavenonjdk11
Add IDEs, tests, test data and quality tools..
#worksfineonjdk9
#workslikeheavenonjdk11
Wait, there’s more…
#worksfineonjdk9
#workslikeheavenonjdk11
The CI/CD Pipeline
Now add more frameworks and languages
Add containers and clouds…
Your development LifecycleRuns on your desk
In a container inyour desktop
In a container inyour CI system
To produce an image …
Doesn’t look very “immutable” does it?
Your development LifecycleRuns on your desk
In a container inyour desktop
In a container inyour CI system
To produce an image …Do these match?
Deployment tools are heavyweight and complex
So the developers use different ones.
ToolsCodeTools
The lifecycle is too complex.
So developers use cut-down versions
ToolsLifecycle
The ‘code’ makes all the choices.
And it’s all in the hands of the developer
ToolsCodeCode
Dependencies
SCM system
CI/CD system
Runtime levels
Dev tools
What to build
What to test
What environments
Business Logic
1
We have multiple systems of verification
Because we can’t be certain a developers action won’t break the production system
What the IDE thinks
What the full build thinks
What the full build in the
container thinks
What the dev CI full build thinks
What the dev CI container build
thinks
What the prod CI full build thinks
What the prod CI container build
thinks
What actually happened
It’s ironic
34
The person who knows what that the code is supposed to do
Is greatly hampered by the process of delivering the code
Building, testing and deployingis changing too
In the cloud a single server is too high a risk
You don’t want to be left hanging around – waiting for the CI system to come back
All Change: Central server outside the cluster
All Change: Separate pipelines in the cluster
One more..
Containers are not just Docker.Operating Systems are becoming containerizedContainerised OS’s are not configured – they are deployed
We’re entering a new world of substantially increased complexity –many new tools, many new ways of working.
Containers are changing everything about how we work
And the tooling is not keeping up
A little bit more rain than you expected?
It’s not all bad..
help is coming
The CNCF is helping bring direction and structure…
Containers are more than Docker
You ain’tseen nothing
yet
Kabanero.io – exploring the future
IDE based Developer tools
Development in a container – with a twist.
Tekton
Ready-to-go Kubernetes native toolchains, fully documented,
Pre tailored Appsody deployments for Kubernetes
kAppNavNavigation and visualization tools
for your applications
49
50
1
What the IDE thinks
What the full build thinks
What the full build in the
container thinks
What the dev CI full build thinks
What the dev CI container build
thinks
What the prod CI full build thinks
What the prod CI container build
thinks
What actually happened
Kabanero Lifecycle tooling
51
1
What the IDE thinks
What the full build thinks
What the full build in the
container thinks
What the dev CI full build thinks
What the dev CI container build
thinks
What the prod CI full build thinks
What the prod CI container build
thinks
What actually happened
Build tools
Test tools
perf tools
Build tools
Test tools
perf tools
Build tools
Test tools
perf tools
Build tools
Test tools
perf tools
Build tools
Test tools
perf tools
Kabanero Lifecycle tooling
52
1
What the IDE thinks
What the full build thinks
What the full build in the
container thinks
What the dev CI full build thinks
What the dev CI container build
thinks
What the prod CI full build thinks
What the prod CI container build
thinks
What actually happened
Simplifies and enhances development in containers by extending industry standard IDEs with features to write, debug, and deploy cloud-native applications.
Build tools
Test tools
perf tools
Build tools
Test tools
perf tools
Build tools
Test tools
perf tools
Build tools
Test tools
perf tools
Build tools
Test tools
perf tools
CodeWind
Build tools
Test tools
perf tools
Build tools
Test tools
perf tools
53
1
What the IDE thinks
What the full build thinks
What the full build in the
container thinks
What the dev CI full build thinks
What the dev CI container build
thinks
What the prod CI full build thinks
What the prod CI container build
thinks
What actually happened
Simplifies and enhances development in containers by extending industry standard IDEs with features to write, debug, and deploy cloud-native applications.
CodeWind
54
1
What the IDE thinks
What the full build thinks
What the full build in the
container thinks
What the dev CI full build thinks
What the dev CI container build
thinks
What the prod CI full build thinks
What the prod CI container build
thinks
What actually happened
Reduces the number of ‘opinions’ too
CodeWind
55
1
What the IDE thinks
What the full build thinks
What the full build in the
container thinks
What the dev CI full build thinks
What the dev CI container build
thinks
What the prod CI full build thinks
What the prod CI container build
thinks
What actually happened
Reduces the number of ‘opinions’ too
CodeWind
What the container build thinks
56
Lifecycle ToolsCodeCode
CodeWindTools in containers. (stacks)Code on the desktop (template)Smarts in the IDE
Discover and integrate
Group Name / DOC ID / Month XX, 2018 / © 2018 IBM Corporation 57
58
1
What the IDE thinks
What the full build thinks
What the full build in the
container thinks
What the dev CI full build thinks
What the dev CI container build
thinks
What the prod CI full build thinks
What the prod CI container build
thinks
What actually happened
Appsody
59
1
What the IDE thinks
What the full build thinks
What the full build in the
container thinks
What the dev CI full build thinks
What the dev CI container build
thinks
What the prod CI full build thinks
What the prod CI container build
thinks
What actually happened
Appsody
What the container build thinks
Appsody
The ‘code’ makes all the choices.
And it’s all in the hands of the developer
ToolsCodeCode
Dependencies
SCM system
CI/CD system
Runtime levels
Dev tools
What to build
What to test
What environments
Business Logic
Appsody
The ‘code’ makes all the choices.
And it’s all in the hands of the developer
ToolsCodeCode
Dependencies
SCM system
CI/CD system
Runtime levels
Dev tools
What to build
What to test
What environments
Business Logic
Appsody
ToolsCodeCode
Dependencies
SCM system
CI/CD system
Runtime levels
Dev tools
What to build
What to test
What environments
Business Logic
Appsody
ToolsCodeCode
Dependencies
SCM system
CI/CD system
Runtime levels
Dev tools
What to build
What environments
Tests
Business Logic
StackTemplate
“Appsody init”
Desktop
Appsody
ToolsCodeCode
Dependencies
SCM system
CI/CD system
Runtime levels
Dev tools
What to build
What environments
StackDesktop
Tests
Business Logic
Appsody
CodeCode
Dependencies
SCM system
CI/CD system
Runtime levels
Dev tools
What to build
What environments
Tests
Business Logic
StackDesktop Template
“Appsody run”
Appsody
CodeCode
Dependencies
SCM system
CI/CD system
Runtime levels
Dev tools
What to build
What environments
Tests
Business Logic
StackDesktop Template
“Appsody run”
Appsody
CodeCode
Dependencies
SCM system
CI/CD system
Runtime levels
Dev tools
What to build
What environments
Tests
Business Logic
StackDesktop Appsody
“Appsody run”
Dependencies
SCM system
CI/CD system
Runtime levels
Dev tools
What to build
What environments
Tests
Business Logic
Appsody
Code
Dependencies
SCM system
CI/CD system
Runtime levels
Dev tools
What to build
What environments
Tests
Business Logic
StackDesktop Appsody
“Appsody run”
Dependencies
SCM system
CI/CD system
Runtime levels
Dev tools
What to build
What environments
Tests
Business Logic
One opinion, immutable metadata. Everywhere
69
Kabanero is helping reduce complexity
1
What the IDE thinks
What the full build thinks
What the full build in the
container thinks
What the dev CI full build thinks
What the dev CI container build
thinks
What the prod CI full build thinks
What the prod CI container build
thinks
What actually happened
Containers are here to stay – they don’t need to as difficult as they are.
Keep watching.
kabanero.io
cncf.io
@spoole167
70