Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

microXchg 2019: "Creating an Effective Developer Experience for Cloud-Native Apps"

251 vues

Publié le

In a productive cloud native development workflow, individual teams can build and ship (micro)services independently from each other. But with a rapidly evolving cloud native landscape, creating an effective developer workflow using a platform based on something like Kubernetes can be challenging.

We are all creating software to support the delivery of value to our customers and to the business, and therefore, the developer experience from idea generation to running (and observing) in production must be fast, reliable, and provide good feedback.

During this talk Daniel will share with you several lessons learned from real world consulting experience working with teams deploying to Kubernetes.

Key takeaways include:

- Why an efficient development workflow is so important
- A series of questions to ask in order to understand if you should attempt to build a PaaS on top of Kubernetes (everyone needs a platform, but how much should be built versus integrated versus bought?)
- A brief overview of developer experience tooling for Kubernetes, and how this domain could evolve in the future
- The role of Kubernetes, Envoy, Prometheus, and other popular cloud-native tools in your workflow
- Key considerations in implementing a cloud-native workflow

Publié dans : Technologie
  • Soyez le premier à commenter

microXchg 2019: "Creating an Effective Developer Experience for Cloud-Native Apps"

  1. 1. Creating an Effective Developer Experience for Cloud-Native Apps Daniel Bryant @danielbryantuk | @datawireio
  2. 2. “Developer Experience”
  3. 3. @danielbryantuk Independent Technical Consultant, Product Architect at Datawire and News Manager at InfoQ Previously: Academic, software developer (from startups to gov), architect, consultant, CTO, trainer, conference tourist… Leading change through technology and teams
  4. 4. DevEx 101
  5. 5. Developer Experience (DevEx) is about... “...reducing engineering friction between creating a hypothesis, to delivering an observable experiment (or business value) in production” - Adrian Trenaman (SVP Engineering, HBC) https://www.infoq.com/news/2017/07/remove-friction-dev-ex
  6. 6. DevEx isn’t new, but it is important ● Lead time ● Deployment frequency ● Mean time to restore (MTTR) ● Change fail percentage ● Rapid provisioning ● Basic monitoring ● Rapid app deployment https://martinfowler.com/bliki/MicroservicePrerequisites.html
  7. 7. DevEx: Three Components
  8. 8. DevEx, Workflow, Platforms
  9. 9. The Ideal Workflow
  10. 10. “Progressive Delivery” https://redmonk.com/jgovernor/2018/08/06/towards-progressive-delivery/ https://launchdarkly.com/blog/progressive-delivery-a-history-condensed/
  11. 11. https://speakerdeck.com/stilkov/microservices-patterns-and-antipatterns-1
  12. 12. Decentralised Biz/Product Teams; Centralised Specialists and Platform Team Z: Prototyping Team A: Mission- Critical Team T: Production Phase
  13. 13. https://twitter.com/kelseyhightower/status/851935087532945409
  14. 14. https://www.infoq.com/news/2017/06/paved-paas-netflix https://www.infoq.com/news/2018/07/shopify-kubernetes-paas
  15. 15. Should I Build a PaaS on k8s?
  16. 16. Fundamental questions Do you understand your domain? Is your problem domain complex? Do you have product/market fit? Question Is your solution event-driven (and simple)? Should you be adding value elsewhere?
  17. 17. SOLID K8s: Open for Extension... ● Kubernetes becoming de facto CoaaS (the new cloud broker?) ○ Lots of hosted options ● Know the extension points ○ Custom Resources & Controllers ○ Operators ○ CloudBuddies ● Extension enables custom workflow ○ “Kubernetes Custom Resource, Controller and Operator Development Tools”
  18. 18. https://github.com/weaveworks/flux
  19. 19. How quick do you need feedback? Question https://bit.ly/2RXfokz
  20. 20. Automate Inner Dev Loop https://blog.hasura.io/draft-vs-gitkube-vs-helm-vs- ksonnet-vs-metaparticle-vs-skaffold-f5aa9561f948 https://codeengineered.com/blog/2018/kubernet es-helm-related-tools/
  21. 21. ● Draft ○ Automates “inner loop” build-push-deploy ○ Utilises Helm ● Gitkube ○ Automates build-push-deploy ○ Provides heroku / CF like experience ● Skaffold ○ Automates build-push-deploy ○ Watches source code ○ Provides “dev” and “run” (CD) modes ● Tilt ○ Automates “inner loop” build-test-deploy ● Garden ○ Automates local build-push-test-deploy Automate Inner Dev Loop ● Helm (*) ○ Package manager for k8s ○ Deploy and manage (ready-made) charts ● Ksonnet ○ Define k8s manifests in jsonnet ○ Create composable config/services ● Telepresence (*) ○ Enables local-to-prod development (*) CNCF projects
  22. 22. Develop and test services locally, or within the cluster (or both)? ● Working locally has many advantages ○ Reduce ops cost of multi-cluster ● However, some systems are simply too large to run locally (for integration tests) ● Local/remote container dev tools like Telepresence and Squash allow hybrid Question
  23. 23. Telepresence
  24. 24. “Bring the cloud to you” “Put you in the cloud”
  25. 25. How do want to verify your system? ● Pre-prod testing in complex systems ● Canary testing is very powerful https://medium.com/@copyconstruct/testing-microservices- the-sane-way-9bb31d158c16 Question
  26. 26. Envoy for Managing L7 Traffic ● “Service-mesh all the things”? ● Allows fine-grained release ● Many control planes (for Envoy) ○ Ambassador ○ Gloo ○ Istio ○ Consul Connect https://www.infoq.com/articles/ambassador-api-gateway-kubernetes
  27. 27. Canary UX
  28. 28. https://github.com/weaveworks/flagger
  29. 29. Canary gotchas (and mitigations) ● Observability is a prerequisite ○ Service Level Indicators (SLIs) ○ Service Level Objectives (SLOs) ○ Key Performance Indicators (KPIs) ● Needs high volume of diverse (representative) traffic ● Take care with side effects ● Focus on “golden signals” ○ Latency, traffic, errors, and saturation ○ Okay to “eyeball” data when starting ○ Create actionable alerts ● Load test (with flag header) ● Run synthetic transactions ● Service virtualisation (Hoverfly)
  30. 30. Observability UX
  31. 31. Do you want to implement “guard rails” for your development teams? ● Larger teams often want to provide comprehensive guard rails ● Startups and SMEs may instead value team independence ● Hybrid? Offer platform, but allow service teams freedom and responsibility https://blog.openshift.com/multiple-deployment-methods-openshift/ Question
  32. 32. Guard rails/utilities: build vs buy https://www.infoq.com/news/2019/03/airbnb-kubernetes-workflow https://docs.openshift.com/container-platform/3.9/dev_guide/openshift_pipeline.html
  33. 33. Security guard rails
  34. 34. Getting Started: Where to Focus
  35. 35. Decentralised Biz/Product Teams; Centralised Specialists and Platform Team Z: Prototyping Team A: Mission- Critical Team T: Production Phase
  36. 36. Some thoughts on where to focus... Prototype Production Mission Critical Dev and test Local / hybrid Hybrid / local / staged Local / (hybrid) staged Release Canary (synthetic shadow) Canary / pre-prod test Pre-prod test / Canary Guide rails “YOLO” Limited Strong Where to focus? Inner development loop & CI/CD Observability and scaffolding (codifying best practices) Observability, debugging and “recreatability” (environment & data)
  37. 37. Conclusion
  38. 38. In Summary The developer experience is primarily about minimising the friction between having an idea, to dev/test, to release, to delivering observable business value How you construct your ‘platform’ impacts the developer experience greatly You must intentionally curate the experience of: local development, continuous delivery, release control, observability, debuggability, and more...
  39. 39. Thanks for Listening! Questions, comments, thoughts… db@datawire.io @danielbryantuk More info: getambassador.io | telepresence.io | Canary Releasing

×