Containing your development – why Cloud IDEs are the future?

Steve Poole @spoole167 Andy Watson @AndyRWatson About me

Steve Poole Andy Watson @spoole167 @AndyRWatson

Developer advocate for Developer advocate for Runtimes Eclipse CodeWind Cloud: it’s what we always wanted Today, our Cloud story is really a container story Containers are giving us new opportunities As long as the answer is “container” We’re all set on a future with containers

Containers offer immutability and repeatability

Enabling new architectures The idea was to swap larger long running systems With many, many fast starting , short lived ones Initially we thought containers made it easy..

FROM jetty RUN apt-get update COPY my.war /webapps

Store code Compile and Build the image Push the image in Git Test locally locally It’s not turned out that way It’s tough being a container developer

#worksfineonjdk9 #workslikeheavenonjdk11

What does the dev environment look like? 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…

In a container in your desktop

In a container in your CI system Your development Lifecycle Runs on your desk To produce an image … Doesn’t look very “immutable” does it?

In a container in your desktop

In a container in your CI system Your development Lifecycle Runs on your desk To produce an image … Do these match? A common tale

your Your local your CI system production environment system What you build here

your Your local your CI system production environment system Doesn’t match what builds here

your Your local your CI system production environment system Or what runs here

your Your local your CI system production environment system And…

What runs in production

your Your local your CI system production environment system Is difficult to test here

your Your local your CI system production environment system And almost impossible to test here

your Your local your CI system production environment system And where we thought we’d have one architecture… Traditional Monolith in a box microservice Serverless / eventing

function function APP APP APP APP µFrame FRAME FRAME FRAMEWORK work FRAMEWORK WORK WORK Java / µF µF APP APP JVM APP SERVER APP SERVER SERVER SERVER

Java / Java / Java / JVM Java / JVM JVM JVM µF µF

OS OS OS

HARDWARE HARDWARE HARDWARE

We’re using them all To deliver we have multiple stages of verification

What the IDE What the full build What the full build What the dev CI thinks thinks in the container full build thinks thinks

1 What the prod CI What the dev CI What actually What the prod CI container build container build happened full build thinks thinks thinks

Because we can’t be certain a developer's action won’t break the production system Cloud Computing is not perfect - yet

But who cares about a little rain? Developer Experience Runtimes Platforms

“Containerisation” is disruptive Traditional Monolith in a box microservice Serverless / eventing

function function APP APP APP APP µFrame FRAME FRAME FRAMEWORK work FRAMEWORK WORK WORK Java / µF µF APP APP JVM APP SERVER APP SERVER SERVER SERVER

Java / Java / Java / JVM Java / JVM JVM JVM µF µF

OS OS OS

HARDWARE HARDWARE HARDWARE

To enable these choices you need new things… An industrial shipyard AKA Kubernetes Now add tools to manage these systems..

Umm…. Enough tools for you? Building, testing and deploying is changing too In the cloud a single server You don’t want is too high a to be left risk hanging around – waiting for the CI system to come back Containers are changing everything about how we work Roughly 80% of development is containerized. For many companies the complexity is too hard to manage… So they don’t.

“Testing in production” is becoming the new normal It’s ironic

The person who knows what that the code is supposed to do

Is greatly hampered by the process of delivering the code

And the business, which needs faster delivery

Is taking risks to short circuit its own processes..

43 A little bit more rain than you expected? Any sun on our horizon? We can’t turn off the internet So we are evolving the tools as we go Development of Cloud applications is hard

your Your local your CI system production environment system Development of Cloud applications is hard

developers need access to an environment that matches production as closely as possible

your Your local your CI system production environment system Development of Cloud applications is hard

While being able to deliver code faster than ever before

your Your local your CI system production environment system How do we build a new development approach?

your Your local your CI system production environment system This is not a new challenge

Its just got 10x, 100x harder..

Developing and testing modern applications is truly difficult What can we do to reduce the complexity?

What the IDE What the full build What the full build What the dev CI thinks thinks in the container full build thinks thinks

1

What the prod CI What the dev CI What actually What the prod CI container build container build happened full build thinks thinks thinks Eclipse Cloud Development Tools working group https://ecdtools.eclipse.org

• Eclipse Codewind Accelerate the adoption of Cloud Integrated Development Environment (IDE) and container- • based workspace management • Eclipse Theia • Eclipse Open VSX Engages with the Eclipse and broader developer community to ensure broad adoption of emerging standards for cloud- based developer tool Introducing Eclipse codewind @AndyRWatson @EclipseCodewind Cloud Deployment

Built into container

Initial cloud development has been ‘late binding’: Developers test with the application Commit Code

runtime installed on their laptop and running Local dev as a process, then CI/CD pipeline builds and Debug Test deploys as a container “Well it worked ok on my machine !” What is ‘Cloud-native Development’?

If you’re deploying containers it’s better to develop in them too: • Higher fidelity – OS, runtime, libraries, fixpack levels, all exactly match production • Developers are directly testing the output of the build • Services injected and used as they will be in production • Ability to debug on and exploit containers and Kubernetes So why isn’t development cloud-native today?

• History prior to cloud; momentum • Apps deployed to multiple (non-cloud) environments • The ‘container penalty’: • Slow to build initial container • No iterative development • Harder to access logs and other files in the container • Shell access • … • Tools looking to help to remove the container penalty Inner loop becoming more complicated ? Tooling

• Often tied to a vendor or cloud offering ? • IDE specific plugins ? • Same experience for all developers • Levels of support consistent across platforms ? Eclipse Codewind

Extension to popular IDEs to support cloud-native development for Kubernetes

Rapidly create, iterate, test, debug, and extend applications running in containers

Reduce need to use container / kubernetes command line Why Eclipse Codewind?

Why full open source / open community? • Proprietary tools have started to emerge from several vendors, but no shared tools, vision, or community. Start to foster some tools reuse and compatibility

Why Eclipse? • Strong history of developing IDE tools & community. Eclipse ‘classic’ IDE, Theia, and Che are already there Local IDE – Docker Desktop Local IDE Support

Eclipse VS Code Tech Preview - IntelliJ Hosted / Cloud IDE Support

• Fully hosted Eclipse Che IDE • Multiple cloud workspaces • Support for VS Code extensions

Benefits: • Easy access, zero configuration • Test and debug directly on Kubernetes

• Security constrained development Che Local IDE to Remote Kube Support

• Test and debug directly on Kubernetes • Reduces resource requirements on Eclipse VS Code Che local machine • Look and feel of still developing locally Containerization Methods

• DevFile Templates for popular languages / frameworks • Springboot, • MicroProfile, • Express,

• Define container environment and dependencies • Templates exist in their own repository • Configurable / Expandable to meet your own needs devFile container Templates dependencies Container develop Features Codewind’s Developer Tools

• Create projects from extensible list of templates • Project info – container ports, endpoints, etc. • Container build & runtime status • Console output directly in the IDE • Shell into running containers • Debugging • … Integrated Application Performance Monitoring

• Lightweight, live performance monitoring for key metrics including HTTP response times, throughput, memory, and CPU use

• Available metrics based on language Java and Node Profilers

• Identify CPU intensive methods directly within Visual Studio Code to focus optimization where it counts Load Testing Dashboard

• Integrated performance dashboard • Run repeatable load tests against application endpoints • Easily configurable, including payloads • Compare results against historical performance to spot regressions Demo Easily Install Codewind via the Marketplaces! Visit codewind.dev YouTube – Eclipse Codewind Twitter - @EclipseCodewind /eclipse/codewind What can we do to reduce the complexity?

What the IDE What the full build What the full build What the dev CI thinks thinks in the container full build thinks thinks

1

What the prod CI What the dev CI What actually What the prod CI container build container build happened full build thinks thinks thinks What can we do to reduce the complexity?

What the IDE What the full build What the full build What the dev CI thinks thinks in the container full build thinks thinks

1

What the prod CI What the dev CI What actually What the prod CI container build container build happened full build thinks thinks thinks

What “dev mode” thinks What can we do to reduce the complexity?

What the IDE What the full build What the full build What the dev CI Whatthinks “dev mode” thinksthinks in the container full build thinks thinks

1

What the prod CI What the dev CI What actually What the prod CI container build container build happened full build thinks thinks thinks What can we do to reduce the complexity?

What the IDE What the full build What the full build What the dev CI thinks What “devthinks mode” thinksin the container full build thinks thinks

1

What the prod CI What the dev CI What actually What the prod CI container build container build happened full build thinks thinks thinks What can we do to reduce the complexity?

What the IDE What the full build What the full build What the dev CI thinks thinks in the container full build thinks thinks

1

What the prod CI What the dev CI What actually What the prod CI container build container build happened full build thinks thinks thinks What can we do to reduce the complexity?

What the IDE What the full build What the full build What the dev CI thinks thinks in the container full build thinks thinks

1

What the prod CI What the dev CI What actually What the prod CI container build container build happened full build thinks thinks thinks

What “containerized builders” think What can we do to reduce the complexity?

What the IDE What the full build What the full build What the dev CI thinks thinks in the container full build thinks thinks What “containerized1 builders” think What the prod CI What the dev CI What actually What the prod CI container build container build happened full build thinks thinks thinks

What “containerized builders” think What can we do to reduce the complexity?

What the IDE What the full build What the full build What the dev CI thinks What “devthinks mode” thinksin the container full build thinks thinks What “containerized1 builders” think What the prod CI What the dev CI What actually What the prod CI container build container build happened full build thinks thinks thinks

What “containerized development” thinks What can we do to reduce the complexity?

What the IDE What the full build What the full build What the dev CI thinks thinks in the container full build thinks thinks What

1 containerized development What the prod CI What the dev CI What actually What the prod CI container build containerthinks build happened full build thinks thinks thinks

What “containerized development” thinks What can we do to reduce the complexity?

What the IDE What the full build What the dev CI thinks thinks full build thinksWhat

1 containerized development What the dev CI What actually thinks happened container build thinks

What “containerized development” thinks What can we do to reduce the complexity?

“devWhat mode” the IDE What the dev CI thinks full build thinksWhat

1 containerized development What the dev CI What actually thinks happened container build thinks

What “containerized development” thinks What can we do to reduce the complexity?

“dev mode” What the dev CI full build thinksWhat

1 containerized development What the dev CI What actually thinks happened container build thinks

And finally … A new pipeline: Cloud based, containerized development

Dev Test Prod

Containerized development

Provides development environments that match production at scale Provides a streamlined delivery process that has much less risk A process that can deliver faster than ever Developer experience is the least evolved part of the move to cloud

IDE’s are exploring alternatives https://code.visualstudio.com/docs/remote/remote-overview

Eclipse codewind is working to seamlessly integrate containerised tools into popular IDEs

The Kubernetes-Native IDE for Developer Teams Cloud IDEs are going “all in”

Red Hat CodeReady Workspaces Hosted development isn’t about stealing laptops Or forcing developers off their favorite IDE Hosted development offers

• Reduced mismatch between development and production environments • Faster onboarding for new team members (no more local setup needed) • Generally much faster “get up and go” for new projects • Easier access to cloud resources for prototyping etc • Improved options for enterprise governance Q&A..

codewind.dev

https://ecdtools.eclipse.org • @spoole167 • @AndyRWatson Eclipse Cloud Development Tools working group Let us know what you thought of today’s session.

Take a moment to complete the following survey:

http://ibm.biz/WUG-dev-survey More Developer webinars coming up … • June 4th Reactive Microservice in Action • June 11th Afterlife tales: Troubleshooting containerized applications

Enroll: http://ibm.biz/WUG-dev-series

Join and follow the community to stay informed: http://ibm.biz/WUG-community Join the CAB We’re here to WebSphere and Cloud Pak for Applications Customer Advisory Board help [email protected] Join 260+ other members https://ibm.webex.com/meet/claudiab Be part of customer round tables and http://ibm.biz/WASCABCommunityResources deep dive meetings http://ibm.biz/WebSphereAdvisoryBoard

Weekly meetings Monthly meetings Special Engage when you have time:

Thursday and Business Partner Cloud Pak Week ✓ Stay in the loop at meetings Friday track ✓ Share solutions and pain points Previews ✓ Connect with other customers 9:15 am EST Other time zones ✓ Access to resources and experts Demos ✓ Customized meetings ✓ Special offers Labs, workshops JOIN JOIN 1-on-1

IBM Cloud Paks / WAS CAB / 2020 102 Technical Advocate What’s New Technical Planning What’s Next Architectural Program Discussions Roadmap Discussions Best Practices Your bridge (or direct line) into Requirements the IBM’s development team

And, in this case: If interested, reach out to your Tech Sales WebSphere Application Server representative or Sam Wong - [email protected] Liberty IBM Cloud Pak for Applications A Lab Advocate does not circumvent normal support processes and is not an alternative to IBM fee service offerings