Here's a list of technologies that we prefer to use based on this scale:
Experimental - We're still playing around with this, and we feel very optimistic about it. Try it out!![]()
Recommended - We'd use this hotness on all projects if we can!
![]()
Good - It's still a good choice, but consider better solutions for newer projects.
![]()
Sunsetting - We maintain projects with these, but don't start new projects with this anymore.
![]()
Avoid - Our poor experience with this tell us to stay away unless absolutely necessary.
![]()
Almost every web application needs to have a backend system. Here are the usual choices for consideration.
![]()
Elixir & Phoenix
Fast, scalable, also optimized for developer happiness. As of 2017, Phoenix on Elixir has been our go-to framework for building web applications.
![]()
Ruby on Rails
Rails continues to be a popular choice for web frameworks due to its unparalleled ease-of-use. While we maintain a number of Rails-powered applications, do consider if Elixir's performance would be more suited for new projects.
![]()
Node.js
Node.js powers all our frontend tooling, but is not a preferred choice for backend systems.
![]()
GraphQL
Defines a common interface that's more reusable than REST. Use this if possible! Many new projects use GraphQL to facilitate communication between rich JavaScript-powered UI's and Elixir backends.
RESTful API
Still a pretty good choice. While RESTful API's aren't as expressive as GraphQL API's, they're more easily cached.
![]()
PostgreSQL
PostgreSQL is widely-supported, and both AWS and Google Cloud offers managed instances of it. It features native support for JSON data, among many other useful features.
![]()
MySQL
Avoid MySQL unless absolutely necessary. Consider PostgreSQL instead, or at least MariaDB.
![]()
Amazon Web Services
Many of our projects run on AWS infrastructure. It has been very dependable, despite having a high learning curve.
![]()
Google Cloud Compute
Solid, cheaper alternative to AWS. Has the best support (and least cost) for Kubernetes clusters.
![]()
Heroku
The easiest way to get things online. However, it can get expensive as you scale.
![]()
Ansible
We use Ansible to provision servers in a manageable and repeatable way.
We use Continuous Integration services to automatically run test suites and automate staging deployments.
![]()
SemaphoreCI
Many of our projects are tested using SemaphoreCI. It offers us the best speed for Ruby and Elixir projects. Semaphore is also used to automate deployments.
![]()
CircleCI
CircleCI is a great CI/CD system that offers everything we need. It's also in wide use in Mashup Garage, alongside SemaphoreCI.