Skip to content

Docker AKA Containerized Infrastructure #23

@lcreid

Description

@lcreid

We should consider containerized infrastructure.

Advantages

  • Reduce the need for Jade Systems and WeenhanceIT to support a lot of our own infrastructure builds. Docker has pre-built Postgres, MS SQL Server, Nginx, Redis, Ruby, and other containers. Currently, we have both this project, for setting up the server and individual sites, and the Vagrant box builds that would require significant new development to build new Ubuntu 20.04 boxes. This project never did get the Redis install converted into the new Ruby implementation with tests, so there's a gap there that would need to be filled if we continued with the non-containers approach
  • The development model is more naturally close to the production model. The containerized development environment would involve a stand-alone Postgres server or a stand-alone Redis server. It would also be more practical to spin up an Nginx container to test the production configuration
  • Looks like it will be lighter weight, at least on Linux workstations
  • May afford some cost savings for production deployments -- although to take advantage of them on AWS we probably have to learn a whole new set of AWS complexities
  • More people are doing containers than Vagrant, so there are more resources on-line
  • Some of us can probably leverage some work time to learn about and practice Docker

Disadvantages

  • Time spent learning the new technology
  • Uncertainty whether we'll have more "it works for me" issues because the container technology has to provide different amounts of VM support, depending on the host workstation
  • The above is perhaps better expressed as: Linux workstation users will have the smoothest experience. macOS and Windows users may have to do more work to get things running and keep things running
  • Surprises down the line where things don't work the way we had hoped
  • It's not the Rails way to do things, if you want to work on Rails itself or submit PRs to Rails (but why not do our own thing)?

Outstanding Questions

  • How to deploy? You're supposed to deploy containers. Does it make sense to do a Capistrano deploy to a container? I suppose we could
  • What's the model for static web sites? Do they get their own container? What does that container look like?
  • How to manage the Nginx configuration files in staging and production? This may take us down the path of the Kubernetes-like tools -- yet another level of tooling
  • It seems like Dockerfiles need to change based on the host OS. May need some investigation here to see if it's true

To Do

  • Try a development environment for one of our apps (probably Outages or the Dashboard home site)
  • Write up the production deployment model AKA figure out how to put Nginx in front of multiple containers

Links

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions