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

How to avoid Kubernetes Driven Development

How to avoid Kubernetes Driven Development

Today, almost every Web actors have moved or are moving to the Cloud. At Sogilis, we diagnosed a (way too much widespread) design practice, that we’re calling the “reverse design methodology”, which consists in choosing a platform, and then adapt your application and business to fit it !

Typically, this implies to join the hype of Docker/Kubernetes, hire someone that we call « devops » to operate that new thing. Then move our code to this endlessly scalable wonderland, progressively, while redesigning our legacy system along the way, to fit the platform. That is the « Kubernetes Driven Development » ! And here come the hidden cost of « porting the legacy code to the cloud » (distributed logs, monitoring, race conditions, request tracking, memory sharing ….). While all these costs are normal, they are usually unpredicted by developers and architects, because they underestimate the complexity of distributed software.

This is quite a shame because battle proven guidelines exist ! They are gathered under the « Cloud Native » and « 12 factors app » paradigms, which are perfect candidates to lead to a clean, consistent and scalable application design for the Cloud.

In this talk, we propose to expose the unpredicted consequences that we diagnosed on the Kubernetes Driven developments met in our experiences, and then introduce the Cloud Native and 12 factors app principles to explain how these guidelines could protect a system design (or evolution) from having unpredicted costs.

Willy Malvault

January 23, 2020
Tweet

More Decks by Willy Malvault

Other Decks in Technology

Transcript

  1. “ You are viewing 1,290 cards with a total of

    2,003,681 stars, market cap of $16.02T and funding of $66.09B ”.
  2. Alternative Title #4 “ Il y a pas que l’orchestration

    dans la vie ! “ scheduling / orchestration
  3. A Cloud Native app Cloud resources Public / Private /

    Hybrid Scalable Containerization Micro-service Service Mesh API Driven
  4. The Cloud Native trail path 1. Containerize 2. Set CI/CD

    3. Orchestration/App definition 4. ….. 5. ….. 6. ….. 7. Storage 8. Messaging / Streaming 9. ….. 10. ….. cncf trail path
  5. The Cloud Native trail path 1. Containerize 2. Set CI/CD

    3. Orchestration/App definition 4. Observability/Analysis 5. Discovery and Mesh 6. Networking & Policies 7. Storage 8. Messaging / Streaming 9. ….. 10. ….. cncf trail path
  6. The Cloud Native trail path 1. Containerize 2. Set CI/CD

    3. Orchestration/App definition 4. Observability/analysis 5. Discovery and Mesh 6. Networking & Policies 7. Storage 8. Messaging / Streaming 9. Runtime 10. ….. cncf trail path
  7. The Cloud Native trail path 1. Containerize 2. Set CI/CD

    3. Orchestration/App definition 4. Observability/analysis 5. Discovery and Mesh 6. Networking & Policies 7. Storage 8. Messaging / Streaming 9. Runtime 10. Security cncf trail path
  8. Our additional ReX 1. Choose a platform 2. Adopt DevOps

    ! 3. Rewrite or migrate ? 4. 12 Factor app 5. Master your costs !
  9. Make or buy ? kops minikube rancher kind Amazon EKS

    Azure AKS Google GKE Openshift Kingsoft OVH Pivotal PKS Openshift K3S NetEase Installer Hosted Distribution VMware PKS Squarescale
  10. DevOps “ DevOps is a set of practices intended to

    reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality. “ JenkinsX
  11. Migrate or Rewrite ? Manager/Accountant tell us we must capitalize

    on the code ! • Resource sharing : orchestrators let you define rules, but you’re still on the same machine (classical worker problem)
  12. Migrate or Rewrite ? Manager/Accountant tell us we must capitalize

    on the code ! • Resource sharing : orchestrators let you define rules, but you’re still on the same machine (classical worker problem) • There is plenty of resource to make my microservices communicate with discovery. Do test them !!!! Particularly in case of restart.
  13. Migrate or Rewrite ? Manager/Accountant tell us we must capitalize

    on the code ! • Resource sharing : orchestrators let you define rules, but you’re still on the same machine (classical worker problem) • There is plenty of resource to make my microservices communicate with discovery. Do test them !!!! Particularly in case of restart. • Do you trust containers for your DB cluster, messaging bus cluster, cache system also ? Try it too ! “ This is a whole new application ! With more distribution. ”
  14. Do you have a manager ? “ How much does

    it cost ? ” The Operating problem
  15. Do you have a manager ? Do you have an

    accountant ? “ How much does it cost ? ” “ How much will it cost tomorrow ? ” The Operating problem
  16. The slide to remember ! • Take some height →

    Cloud Native != K8S • Make or buy question • Invest in DevOps and in your team organisation • You cannot operate a quick migration • Be aware of the 12 factors app • Monitor your costs since day one • Kubernetes has alternatives !