How Otto Puts Docker's Development and Deployment Capabilities to Shame

DZone 's Guide to

How Otto Puts Docker's Development and Deployment Capabilities to Shame

Otto is the successor to both Vagrant (also by developer HashiCorp) and Docker; Otto builds infrastructure from the app up.

· DevOps Zone ·
Free Resource

Docker Who? That time-travelling Vagrant? Why is it so hard for DevOps to get the tools they need to quickly build scalable infrastructure that doesn't cause a provisioning headache?

Thanks to a new concept of development and deployment created by HashiCorp, you can get the benefits of emerging approaches Otto-matically. Image title

Otto is for Automated Development Environments

Both Docker and Vagrant have specific limitations; Docker is a single concept but a lot of tools and processes that are separate, Vagrant is ideal for building a virtual machine, but isn't, in and of itself, directed toward app development.

Otto is much simpler, runs in *nix, OSX, and Windows, and installs in seconds. Otto also supports key features like SSH and deployment to AWS. 

A Simplified Build Procedure

Otto needs a minimal set of instructions to work because it's purpose built to create microservices and was created, in large part, as a response to the burden of specialized knowledge that shouldn't concern devs who just want to code, not necessarily delve deep into infrastructure. 

appfile specifies and generates:

  1. Development environments,

  2. Build systems,

  3. Infrastructure, and

  4. Deployment.

otto devotto dev creates and configures:

  1. A virtual machine, and

  2. Upstream dependencies.

otto infra

  • Provisions servers

otto build

  • Packages the app for deployment

otto deploy

otto deploy

  • Takes the app from appfile, references the provisioning created by otto infra, and builds artifacts from otto build.


Image Credits: Ottoproject.io
development tools, infrastructure design, network architecture

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}