Skip to content

Hosting

This article lays out the major cloud vendors.

Major providers

The following pros/cons are based on Jarvus’ direct experience, subjective assessments, and historical benchmarking. Experiences and opinions may vary.

AWS (Amazon)

Pros

  • Managed PostgreSQL product
  • Most popular
  • Lots of sophisticated services (that IndeVets doesn’t need)
  • Largest scale

Cons

  • Nonexistent support (for small customers)
  • Expensive
  • Promotes lock-in
  • Opaque billing
  • Needlessly complex
  • Consultants are expensive and accustomed to throwing money at problems
  • Confusing user interfaces
  • Poor performance-per-dollar

GCP (Google)

Pros

  • Managed PostgreSQL product
  • Popular
  • Lots of sophisticated services (that IndeVets doesn’t need)
  • Large scale
  • Friendly user interfaces
  • Mostly transparent billing

Cons

  • Nonexistent support (for small customers)
  • Expensive
  • Promotes lock-in
  • Surprise charges
  • Poor performance-per-dollar

Azure (Microsoft)

Pros

  • Managed PostgreSQL product
  • Popular
  • Lots of sophisticated services (that IndeVets doesn’t need)
  • Large scale

Cons

  • Expensive
  • Promotes lock-in
  • Poor performance-per-dollar
  • Confusing user interfaces (better than AWS though)
  • Consultants are expensive and accustomed to throwing money at problems
  • Poor support (for small customers, but better than AWS and GCP)

Digital Ocean

Pros

  • Managed PostgreSQL product
  • Friendly user interfaces
  • Popular
  • Does not promote lock-in
  • Good support
  • Great performance-per-dollar

Cons

  • Smaller (but mature and stable)
  • Few sophisticated services

Linode

Pros

  • Friendly user interfaces (less friendly than DO, fewer featured than GCP)
  • Great support
  • Does not promote lock-in
  • Best performance-per-dollar
  • Headquartered in Philadelphia (3rd & Arch)
  • Active supporter in community

Cons

  • Least sophisticated services
  • No managed PostgreSQL product
  • Managed Kubernetes product is new (still in beta)

Jarvus Assessment

Managed PostgreSQL

The biggest differentiator that’s relevant to IndeVets is availability of managed PostgreSQL product. Everyone but Linode has one. PostgreSQL is the database engine behind IndeVets core, and a managed product provides a friendly user interface and automated services for managing scaling and backup. Without a managed PostgreSQL product, our operations team needs to handle configuring and managing scaling and backups. Currently, under Jarvus’ shared hosting Jarvus is already manually managing scaling and backups. We do not see this as a critical consideration, but moving to a managed solution would be a significant step towards autonomy from Jarvus’ operational support.

On the other hand, PostgreSQL is a very old and popularly understood tool that it is easy to find local consultants to administer. The primary motivator for companies to move to managed PostgreSQL products is for automatic scaling. Scaling databases is a major pain-point for global-scale companies dealing with unbound internet traffic. The nature of IndeVets’ operations however do not expose it to unpredictable scaling, and it’s likely that even at national scale IndeVets would not need more than a single PostgreSQL instance to handle the load.

Furthermore, use of a managed PostgreSQL database limits use of extensions to those officially supported by the vendor. For example, there could be new or advanced geospatial or temporal extensions IndeVets could benefit from or experiment with that would be unavailable under a managed solution.

Verdict: Managed PostgreSQL is a plus, but overall this is a wash and not a critical factor for IndeVets’ needs

Managed Kubernetes

Kubernetes is the industry-standard for “orchestration”—the part of your infrastructure that maintains a list of all the things that should be running and makes sure they all stay running. For example we might tell Kubernetes to run one copy of live Core+PostgreSQL connected together, one copy of staging Core+PostgreSQL connected together, and then a pair for each feature under testing. It then takes all the computers and hard drives we feed it, and spreads out everything we want it to run among them; handling updating things, connecting interdependent components to each other, and restarting things that crash.

GCP is the clear leader here—they invented Kubernetes and released it for free to everyone. AWS and Azure both have mature managed Kubernetes offerings. Digital Ocean’s managed Kubernetes offering recently left beta. Linode’s Kubernetes offering is still in beta after a long alpha-testing period.

GCP, AWS, and Azure’s offerings all get expensive fast and are full of sneaky charges. Digital Ocean and Linode have relatively flat and predictable pricing free of hidden charges.

IndeVets’ use case for Kubernetes is relatively simple, the advanced cases the big-3 differentiate with aren’t very relevant

Verdict: Any of them will get the job done

Support

Digital Ocean and Linode are clear winners here, with Linode having the added benefit that you can walk to their office and say hello.

Verdict: Linode wins

Performance

Digital Ocean and Linode are again clear winners here, with Linode having a slight edge in Jarvus’ most recent tests.

Verdict: Linode and Digital Ocean are clear winners

Costs

The big 3 here can be far more expensive and less predictable than Digital Ocean and Linode, which have relatively comparable pricing. AWS can be downright hostilely opaque in charges, while Azure and GCP are much better but still have problems.

Verdict: Linode and Digital Ocean are clear winners

Scalability

This is the area where the big players (Amazon, Google, Microsoft) differentiate themselves. IndeVets’ workloads however are not resource intensive, are not exposed to unpredictable load, and have a very low ceiling relative to the sort of workloads the big 3 target.

Verdict: Any of them will get the job done

Lock-in

The big 3 strive for lock-in, and can be hard to move off of once you’re settled. If you have intense and complex needs, this can be a necessary trade-off for access to their sophisticated tools and scaling capabilities. Without those needs though, Digital Ocean and Linode offer standard commodity service that’s easily migrated away from.

Verdict: Linode and Digital Ocean are clear winners

Jarvus Recommendation

Digital Ocean would be a solid choice with relatively mature managed Kubernetes and PostgreSQL offerings, and solid performance+cost+support. They are a national brand that is well-known by developers.

Overall, Jarvus recommends Linode though, as they edge out Digital Ocean on support and performance, tie them on cost, and are rapidly catching up in their offerings. We are admittedly biased towards supporting local companies that are active in the local community, so the deciding factor may come down to how much IndeVets shares that bias.

While Linode’s Kubernetes service is the least mature of the bunch, the failure modes and risk levels aren’t substantially different from those of the rest. Ultimately, the far bigger factor for managing risk with any cloud vendor is that IndeVets has a regularly verified backup routine and restoration procedure.

Full disclosure: Linode sponsors Code for Philly, Philly Tech Week, and Nerd Street Gamers—all of which Jarvus is affiliated with. In the case of Code for Philly and Philly Tech Week, Jarvus is a peer sponsor alongside Linode. In the case of Nerd Street Gamers, Jarvus has a direct financial interest, though Linode is a relatively minor sponsor.