Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ways towards a productive YAML-less Cloud-nativ...

Ways towards a productive YAML-less Cloud-native DevEx

YAML seems to be the predominant way to describe our Kubernetes workloads. For each and every microservice we have to declare pods, deployments, services and a lot more. Now multiply this by several environments and deployment variants. The result often is excessive YAML bloat that leads to insufficient dev-prod parity, frustration and low developer productivity. So make sure to join this talk if you want to learn how to continuously deliver quality software and have happy Cloud-native developers on your team again.

M.-Leander Reimer

February 10, 2021
Tweet

More Decks by M.-Leander Reimer

Other Decks in Programming

Transcript

  1. Ways Towards a Productive YAML-less Cloud-native DevEx OOP 2021 Digital,

    February 10th 2021 @LeanderReimer #cloudnativenerd #qaware
  2. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital 3 Code & Demos https://github.com/qaware/productive-cloud-native-devex
  3. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital DevEx in the good old days … 4 Spec Design Test Integrate Operate Develop Deploy
  4. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital Cloud-native DevEx today? 5 Spec Design Test Integrate Operate Develop Deploy
  5. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital Cloud-native DevEx today! 6 Spec Design Test Integrate Operate Develop Deploy Docker K8S JSON YAML AWS NFA CI/CD More
 YAML Even More YAML Agile Tracing M etrics More Stuff Eve More Eve More Eve More
  6. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital How do you organise and enable technology teams for fast fl ow and high productivity? 7
  7. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital Too much cognitive load will become a bottleneck for fast fl ow and high productivity. • Intrinsic Cognitive Load - relates to fundamental aspects and knowledge in the problem space (e.g. used languages, APIs, frameworks, micro architecture) • Extraneous Cognitive Load - relates to the environment 
 (e.g. deployment, con fi guration, console commands) • Germane Cognitive Load - relates to speci fi c aspects of the business domain (aka. „value added“ thinking and learning) 8 https://teamtopologies.com
  8. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital Minimize intrinsic cognitive load 
 (by training, peer programming, standards, languages, …) 9
  9. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital Eliminate extraneous cognitive load 
 (automate, automate, standardize, automate, automate, …) 10
  10. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital Use the right tools for the job! 11 Getty Images Liliboas Skaffold Tilt kustomize Buildpacks Pulumi
  11. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital What are Cloud-native Buildpacks? • Buildpacks were fi rst introduced by Heroku in 2011. Since then, adopted by Cloud Foundry and other PaaS. • CNCF Project initiated by Pivotal and Heroku in January 2018 • Buildpacks are pluggable, modular tools to translate source code into OCI images • Reduces the operational burden on devs • Support enterprise operators who manage apps at scale • Several default build packs and option to build custom packs. 12
  12. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital Kubernetes native con fi guration management • https://kustomize.io • A template-free way to customize your application con fi guration • Now, built into kubectl as apply -k • Try https://kustomize.io/tutorial 13
  13. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital Pulumi - Modern Infrastructure as Code. • Imperative management and de fi nition of Kubernetes applications and objects using familiar programming language • Use the same tools to build your application and its con fi guration • Compose and share reusable components through code libraries • Terraform alternative: supports all major cloud providers (AWS, …) • Similar projects: Amazon CDK, cdk8s 14
  14. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital Fast. Repeatable. Simple. 
 Local Kubernetes development. • https://skaffold.dev • Handles the work fl ow for building, pushing and deploying an app • Watches local fi le system. Continuously triggers build & deploy on code changes • Allows to synchronize static resources without rebuilding the image • Support for different environments with Pro fi les, Env Vars Templates and kube-context activation 15
  15. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital The Scaffold Work fl ow in a Nutshell 16
  16. // OOP 2021 Digital // Ways Towards a Productive YAML-less

    Cloud-native DevEx // @LeanderReimer #cloudnativenerd #qaware #OOPdigital — Stressless Local Kubernetes Development • https://tilt.dev • Automatically handles all the expert tricks for working in a K8s development environment • Fire up and manage complex microservice constellations • Watches your fi le system and update servers in seconds • Streams logs, events, and pod changes so that it can show you the problem when something breaks • Provides console HUD and nice Web UI 17