agrant

winning @ development environments in a world of microservices

Oldschool Dev Env

who cares?

and once I'm done coding

Ops

Dev

New Production Env

New Dev Env

why?

  • Faster development loop
  • End to end requirements
  • Shared dependencies that are hard to stub/mock

complexities?

  • sequencing startup and provisioning of different services
  • version control of multiple dependencies to be managed
  • different dev OS/platforms make:
    • provisioning hard
    • dev-prod parity nearly impossible (factor X of XII)
config.vm.provision :docker, images: ['rabbitmq:3-management', 'mongo:3.2.8'] do |d|
    d.run "rabbit-dev",
      image: "rabbitmq:3-management",
      args: "-d --hostname my-rabbit --name rabbit-dev -p 8080:15672 -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 25672:25672",
      restart: "always"
    d.run "mongo-dev",
      image: "mongo:3.2.8",
      args: "-d -p 27017:27017 -h mongo-dev",
      cmd: "--replSet rs0 --storageEngine wiredTiger",
      restart: "always"
end

An Example

From GorillaStack

Vagrant

By em0ney

Vagrant

  • 1,079