Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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.

Slide 3

Slide 3 text

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!

Slide 4

Slide 4 text

CURRENT STATE IN DEV-ENVIRONMENTS

Slide 5

Slide 5 text

DEV THE PROBLEM CI PROD

Slide 6

Slide 6 text

DEV THE DEVOPS SOLUTION PROD CI

Slide 7

Slide 7 text

THE ACTUAL SOLUTION PROD CI DEV

Slide 8

Slide 8 text

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?

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

PROBLEM SOLVED RIGHT?

Slide 11

Slide 11 text

ENTER 12-FACTOR APPS

Slide 12

Slide 12 text

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/

Slide 13

Slide 13 text

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?

Slide 14

Slide 14 text

LET’S CREATE A GAZILLION STAGINGS

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

DEAL WITH IT STAGING IS GOOD ONLY FOR A FINAL CHECK, LOAD TESTING, AN INTERNAL VERSION OF THE SERVICE

Slide 17

Slide 17 text

CLOUD-NATIVE DEV ENVIRONMENTS

Slide 18

Slide 18 text

MANAGED EASY TO REPLICATE AND REPRODUCE

Slide 19

Slide 19 text

SHARED CLUSTER EASY TO SHARE RESOURCES, SERVICES FAST TO FETCH DATA

Slide 20

Slide 20 text

ACCESSIBLE NO NEED FOR A SPECIFIC MACHINE WORK EASILY FROM ANYWHERE

Slide 21

Slide 21 text

THE CHALLENGES

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

DEMO TIME

Slide 24

Slide 24 text

STOLOS.IO THANKS! ANTONIS KALIPETIS - @AKALIPETIS