Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Odo improving the developer experience on OpenShift - hack & sangria

269 views

Published on

How to be more productive as a mere developer creating applications that need to be deployed and running on an OpenShift platform

Published in: Software
  • Be the first to comment

Odo improving the developer experience on OpenShift - hack & sangria

  1. 1. Jorge Morales @jorgemoralespou Odo: Improving the developer experience on OpenShift
  2. 2. Complex for many, simple for few
  3. 3. What’s all this OpenShift and Kubernetes thing?
  4. 4. https://developers.redhat.com/blog/2018/06/28/why- kubernetes-is-the-new-application-server/ https://blog.jessfraz.com/post/hard-multi-tenancy-in-kubernetes/ Kubernetes is the new kernel Kubernetes is the new Application Server https://www.infoworld.com/article/3322120/kubernetes/sorry-linux-kubernetes-is-now- the-os-that-matters.html Kubernetes is the new OS Kubernetes is the new systemd https://twitter.com/kelseyhightower/status/1088828102480781313
  5. 5. OpenShift extends Kubernetes to make developer lives easier
  6. 6. The Kubernetes platform for developers
  7. 7. HOW OPENSHIFT ENABLES DEVELOPER PRODUCTIVITY SPRING & JAVA EE MICROSERVICES FUNCTIONS LANGUAGES DATABASES APPLICATION SERVICES LINUX WINDOWS* CODE BUILD TEST DEPLOY MONITORREVIEW Self-service Infrastructure Automated build & deploy CI/CD pipelines Consistent environments Configuration management App logs & metrics
  8. 8. What’s all this Developer Experience thing?
  9. 9. Developer Experience (DX) is the equivalent to User Experience (UX) when the user of the software or system is a developer.
  10. 10. User Experience (UX) Developer Experience (DX)
  11. 11. “It just needs to work! Not look good!”
  12. 12. Developers want to have choice ● Choice of architectures ● Choice of programming languages ● Choice of databases ● Choice of application services ● Choice of development tools ● Choice of build and deploy workflows They don’t want to have to worry about the infrastructure.
  13. 13. Developers want tools to be productive ● Every function they need at hand ● Stable ● Easy to use ● Performant ● No disruptive ● Intuitive They don’t want to change the way they work.
  14. 14. Users of your technology are happier, promote it more, and stay longer when the product has good DX
  15. 15. How can we improve?
  16. 16. Focus on what’s important!!!
  17. 17. Focus on code
  18. 18. INTRODUCING: OpenShift-Do (aka. odo) A developer friendly command line tool
  19. 19. INNER LOOP Executed in a “local” sandbox INNER AND OUTER LOOPS Edit Debug Compile / Build Deploy Executed in a central continuous integration (CI) system Test Compile / Build Create Deployment Package Deploy to Production Deploy to Staging OUTER LOOP Merge to Origin
  20. 20. Executed in a “local” sandbox INNER AND OUTER LOOPS Edit Debug Compile / Build Deploy Executed in a central continuous integration (CI) system Test Compile / Build Create Deployment Package Deploy to Production Deploy to Staging “DevOps” (application operator, dev tooling admin, etc...) is the primary audience. OUTER LOOP Merge to Origin Developer is the key audience. INNER LOOP
  21. 21. odo is a CLI tool that provides developers with: ● Simple language to understand ● Fast and automated source code deployments ● In-context work ● Easy iterative development cycle
  22. 22. Who odo is for? ● Developers not familiar with OpenShift/Kubernetes ● Developers that don’t want to deal with yaml/json ● It does NOT replace oc or kubectl, though minimizes the need to use them
  23. 23. odo basics?
  24. 24. In odo, applications are the basics Application Component Service $ odo application create odo-demo
  25. 25. In odo, components are the centerpiece Application Component Service backend $ odo create wildfly ● From local (Iterative development) ● From binary (Iterative development) ● From git (cloud based development)
  26. 26. In odo, everything is in context Application Component Service backend storage $ odo storage create --path=/opt/my-app/data --size=1Gi
  27. 27. Application Component Service backend database storage $ odo catalog list $ odo service create database $ odo link database In odo, everything is in context
  28. 28. Application Component Service frontend backend database storage $ odo create httpd frontend In odo, everything is in context
  29. 29. Application Component Service frontend backend database storage $ odo link backend In odo, everything is in context
  30. 30. Application Component Service frontend backend database storage url $ odo url create In odo, everything is in context
  31. 31. Iterative development ● odo push ○ Push sources that will be built in the container ○ Push binary directly to the container ● odo watch ○ Watches for local changes (on sources or binary) and pushes automatically
  32. 32. Get a taste of it
  33. 33. How it works?
  34. 34. Inject supervisor process ● Use an initContainer to copy original content into the PVC ● Use an initContainer to copy a supervisor process into the PVC ● Mount the PVC into /opt/app-root and change: ○ Start command to dumb-init && supervisor in l o ON !!!
  35. 35. supervisor: entry point to CLI-Container communications in l o ON !!!
  36. 36. Future evolution
  37. 37. ● Support for application configuration (ConfigMaps, Secrets,...) WIP ● Support default app and component names (If no app and/or component are specified generate one using a “defaulter” algorithm. Kind of what docker does when no name is specified.) ● Local .odo config dir ● Structured output (So that output can properly be filtered, greped) ● Interactive mode ● Auto set context (based on current directory config) WIP ● Component metrics status ● Support for arbitrary reload actions ● Support for arbitrary build images ● Support for arbitrary runtime images ● Local .odo config directory (k8s resources) ● Code scaffolding ● Support Pluggable commands ● Server side CRD ● IDE integration
  38. 38. Challenges
  39. 39. Summary
  40. 40. “If you are using a product that combines enterprise-grade functionality with an unusable experience, then your life will be filled with frustration and pain”
  41. 41. Designing a CLI is easy. Effective CLI design is difficult
  42. 42. Contributions are welcome
  43. 43. https://github.com/redhat-developer/odo
  44. 44. LEARN.OPENSHIFT.COM Interactive Learning Scenarios provide you with a pre-configured OpenShift instance, accessible from your browser without any downloads or configuration.

×