Technologies in use

To deliver our vision of reliable, scaleable APIs, we have needed to use many technologies and get them all working together seamlessly. We aim to give you an overview of that here.

Infrastructure Ecosystem

We use a number of different technologies to delivery our APIs. The tools we use are all compatible with Amazon Web Services (AWS) as they are our main hosting provider. Each tool does something slightly different:

    • GitHub keep our code safe
    • Swagger allows us to share what our APIs do so that people can better understand if they fit their needs
    • Docker allows us to run our code in any environment
    • Sentry helps to track errors so we can find the root cause of problems
    • Papertrail logs activities in our environments so we can see exactly what happened and when
    • New Relic helps us to monitor the performance of our environments
    • StatusCake constantly checks that our APIs are available and, if they're not, alerts us
    • CircleCI keeps out deployments running smoothly by running our code tests and letting us know if a deployment fails

You can see how AWS, Terraform and our other tools interact in the diagram below.

Infrastructure as code

To build our 'garages', we need various things:

  1. A plot of land (AWS)
  2. Foundations (ECS)
  3. Concrete laid (ECS Services)
  4. Driveway (Api Gateway Resource)
  5. Gated community (API Gateway Keys)

Having your infrastructure as code allows us to “easily” re-create this for every garage we need. We use a tool called 'Terraform' to achieve this

Pros

  • Terraform enables you to safely and predictably create, change, and improve infrastructure
  • It is an open source tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned
  • It is completely platform agnostic
  • Terraform enables you to implement all kinds of coding principles like having your code in source control, the ability to write automated tests, etc.

Cons

  • There is a learning curve to get up to speed on Terraform
  • It requires very regular maintenance and updates