$30 off During Our Annual Pro Sale. View Details »

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/

Antonis Kalipetis

September 29, 2016
Tweet

More Decks by Antonis Kalipetis

Other Decks in Technology

Transcript

  1. 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.
  2. 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!
  3. 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?
  4. 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
  5. 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/
  6. 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?
  7. 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
  8. DEAL WITH IT STAGING IS GOOD ONLY FOR A FINAL

    CHECK, LOAD TESTING, AN INTERNAL VERSION OF THE SERVICE
  9. 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