Deploy to the Cloud, But Don’t Lean on Proprietary Solutions
It’s been a long time since maintaining your own servers was the best way to deploy a service. GCP and AWS are clear winners in the space. But like all good things, don’t go overboard. There are many services you should steer clear of. You want to prevent vendor lock in so you can migrate to a competitor if need be. More importantly, there’s often higher quality cheaper solutions if you can roll it on your own. This article gives a few examples of the tradeoffs.
Public clouds have a ton of powerful features. Between load balancing, rolling restarts, IP forwarding, automatic database backups, logging, bucket storage, and robust security, there’s a lot to take advantage of. The closer to your core competency and value add, however, the more control you want to exercise over your technology and destiny. You don’t want changes to Google or Amazon’s roadmap to cause a significant tech rewrite at an inopportune time. It is less likely to occur in the more standard offerings, because they are generally more stable and unchanging. By building on top of an open source platform, you get access to the code, and can fork at any moment the project is diverging from your goals. These projects are generally more supported than a small team at a large company, because they have broader application than just the customers on that specific cloud. Finding similar offerings for highly specific services between clouds can also be challenging, so vendor lock in occurs quickly.
Let me provide two concrete examples. Generic machine learning is one example. Looking to Google’s AI Platform that sets up your data pipeline, it would be risky to invest in a setup like this if that’s the core of your application. Setting up something bespoke that is more suited to your needs using keras / tensor flow is likely going to serve you better in the long run. Another good example of this is the append only ledgers that are all the rage in the blockchain space. Amazon offers QLDB, which is a hosted db.
Generally these can be ok for standard SQL, but for something as advanced as append only ledgers, this is a major risk for your app, because an offering like this isn’t as feature complete as some open source offerings, and doesn’t have the usage and support of those alternatives. ImmuDB is an open source alternative that has more support and will likely give you better returns in the long run.
There’s a lot of tradeoffs in knowing when to use out of the box cloud solutions, and when to dig into the open source landscape and build something bespoke. If you want some guidance navigating this, reach out.
Original article posted at https://mvpengineer.com/deploy-to-the-cloud-but-dont-lean-on-proprietary-solutions/