Creating a cloud-native dev environment

Creating a cloud-native dev environment

Dev environments are one of the most important pieces of our software delivery pipeline. This is a presentation in Voxxed Days Belgrade for how to create cloud-native dev environments: My presentation on Docker 1.12 and the newly added orchestration features at Voxxed Days Belgrade: https://belgrade.voxxeddays.com/talk/495/

Ae7266b2a8b6a0fc8df19a3d732d6223?s=128

Antonis Kalipetis

September 29, 2016
Tweet

Transcript

  1. CREATING A CLOUD-NATIVE DEV ENVIRONMENT ANTONIS KALIPETIS - @AKALIPETIS

  2. ANTONIS KALIPETIS @AKALIPETIS ▸ Docker Captain and early user ▸

    Python lover and developer ▸ Technology lead at SourceLair / stolos.io I love automating stuff and sharing knowledge around all things containers, DevOps and optimizing developer workflows.
  3. CREATING A CLOUD-NATIVE DEV ENVIRONMENT AGENDA ▸ Current state in

    dev-environments ▸ 12-factor apps - what do they require ▸ Staging environments the good, the bad and the ugly ▸ Entering the ‘ cloud ▸ Our take in dev-environments - demo time!
  4. CURRENT STATE IN DEV-ENVIRONMENTS

  5. DEV THE PROBLEM CI PROD

  6. DEV THE DEVOPS SOLUTION PROD CI

  7. THE ACTUAL SOLUTION PROD CI DEV

  8. CURRENT STATE IN DEV-ENVIRONMENTS ▸ We use our local machine

    ▸ Almost certainly miss-configured ▸ We use a virtual machine ▸ Do you really deploy in a single machine? ▸ We test some part of our infrastructure ▸ Mocking is great, but how do you make good end to end testing while developing?
  9. CURRENT STATE IN DEV-ENVIRONMENTS THE TOOLS ▸ Vagrant ▸ Create

    a well-configured VM ▸ Docker ▸ Make sure you develop in the correct runtime ▸ Docker Compose ▸ Make sure you develop in the correct stack
  10. PROBLEM SOLVED RIGHT?

  11. ENTER 12-FACTOR APPS

  12. THE 12-FACTOR APP IS A METHODOLOGY FOR BUILDING SOFTWARE-AS-A-SERVICE APPS

    THAT ▸ Use declarative formats for setup automation, to minimize time and cost for new developers joining the project; ▸ Have a clean contract with the underlying operating system, offering maximum portability between execution environments; ▸ Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration; ▸ Minimize divergence between development and production, enabling continuous deployment for maximum agility; ▸ And can scale up without significant changes to tooling, architecture, or development practices. https://12factor.net/
  13. CURRENT STATE IN DEV-ENVIRONMENTS THE DARK SIDE OF THE MOON

    ▸ Is setting up dev environments quick and easy? ▸ How much time do you need? Can you easily create a second environment? ▸ What’s the divergence between your dev environment and production ▸ How many backing services you mock or don’t run at all? ▸ Is your developer environment disposable? ▸ How happy are you to just completely delete it?
  14. LET’S CREATE A GAZILLION STAGINGS

  15. STAGING IS GREAT, BUT ▸ It costs time and money

    to maintain ▸ It’s either incomplete ▸ …or is costs more time and money to maintain ▸ You get easily locked out ▸ …or you need more staging environments
  16. DEAL WITH IT STAGING IS GOOD ONLY FOR A FINAL

    CHECK, LOAD TESTING, AN INTERNAL VERSION OF THE SERVICE
  17. CLOUD-NATIVE DEV ENVIRONMENTS

  18. MANAGED EASY TO REPLICATE AND REPRODUCE

  19. SHARED CLUSTER EASY TO SHARE RESOURCES, SERVICES FAST TO FETCH

    DATA
  20. ACCESSIBLE NO NEED FOR A SPECIFIC MACHINE WORK EASILY FROM

    ANYWHERE
  21. THE CHALLENGES

  22. THE CHALLENGES ▸ How you give easy access to these

    environments? ▸ There should be no complication on accessing these environments ▸ You still need to code using your local tools ▸ Each developer has her unique needs and wants ▸ There needs to be an offline fallback ▸ Feeling bound to an Internet connection produces insecurity
  23. DEMO TIME

  24. STOLOS.IO THANKS! ANTONIS KALIPETIS - @AKALIPETIS