by Nicolas Menciere, AWS Startup Solutions Architect
A common mistake we see founders make when starting on AWS is trying to implement their own solution when a managed service could be used instead. In the context of AWS, a managed service is a service that is built, maintained, and operated by our highly skilled experts. This stands in contrast to a solution that you deploy onto your own server, where you are responsible for ongoing management and operations — a situation sometimes referred to as “rolling your own.”
We often see developers use open-source software and tools to build their proof of concept locally. Once it’s time to host their application online or scale, however, they either need to refactor part of the application to take advantage of cloud services or keep the application as-is, which often incurs more operational work and higher costs.
Before choosing your tech stack, you must evaluate its ability to scale with your business. You don’t want to build a minimum viable product, get some traction, and then have to rebuild your application once it needs to scale. So ask yourself: Will your architecture still work technically and financially if you succeed?
Choosing the best approach
When selecting the architecture for your application, consider the following questions. Weighing these factors can help you decide whether it’s best to use managed services or implement your own solution.
- Operational work: How much time and work is required to maintain your stack? Think about repetitive tasks like version upgrades, security patching, hardware updates, and software deployments. Will these tasks take up a significant amount of time for you and your team? Remember, time not spent on operational work can be spent on creating value for your product.
- Infrastructure costs early and at scale: How much will it cost your company to run the stacks at different stages of growth? This is very important, as it often defines how much capital you will need to raise and how profitable your business can become. Cash is king, so the leaner your company is the better. Investors are looking for companies that leverage existing services and focus on creating value.
- Complexity: If you choose a specific stack, how complex will it become over time? You want to keep complexity as low as possible, so you can move faster and reduce risk. The more technologies, vendor products, and software you onboard in your product, the bigger and more specialized your IT staff will need to be, potentially driving costs up and increasing overall operational work.
- Building features vs. infrastructure: Does using a particular service help you build features faster for your customers? Product market fit often stems from iterating through features, not from having a perfect architecture. Our goal at AWS is to help you get back to writing code that delivers value to your end users.
- Agility: How fast can you implement a new feature, and how quickly can you pivot if necessary? Agility is the main value proposition of the cloud and managed services. You can shift gears quickly and innovate faster using managed services.
- Reliability: You certainly need to make sure you have as few errors as possible in your application, but maintaining that level of consistency and reliability can be challenging. With managed services, our highly skilled experts focus on implementing and operating the services, so you don’t have to.
- Availability: Does your application always need to be up and running? Being highly available is not easy. If your data center, an availability zone, or a region goes down, what happens to your application? Managed services are highly available by default and operated by AWS so you can have peace of mind.
- Security: How robust will your security posture be if you roll your own service? Security should be a top priority for your business from day one, but it is a hard problem. Security work creates a lot of overhead in the development process and can slow down innovation. At AWS, security is our number one priority. We have dedicated teams of highly skilled security engineers who work with product teams to make sure our managed services are as secure as possible.
- Time to market: How quickly can you release new features? Using managed services means you don’t need to reinvent the wheel and can instead stay lean and focus on adding value to your product.
- Portability: Will you need to move your application on premise or to another cloud provider? In this case, you may want to consider rolling your own service. However, you can still use managed services like Amazon Elastic Kubernetes Service (Amazon EKS), which helps you run containers on AWS so you don’t have to manage the Kubernetes cluster yourself. Containers can then be easily ported to another Kubernetes cluster on another platform.
- Customization: Do you need a high level of customization to meet your business needs? If so, then rolling your own service may be advantageous, because you can tailor it exactly to your needs. If such customization is not key to your success, however, we recommend that you consider using managed services.
Advantages of managed services
Before you start to write code or deploy open-source software onto a server, you should be aware of the options available to you, so that you can start building the right way, move fast to beat the market, and create a product that will scale along with your business. It pays to shift away from a “build first” mentality and do the upfront research to determine what’s out there, before you commit to a path forward.
AWS provides managed services for the majority of common use cases, so it’s likely that you may be able to leverage an existing solution for your application. As a rule, we recommend that you use a managed service if there’s one available that meets your needs.
AWS managed services also provide a high level of reliability and availability, because we put a significant amount of time, energy, and resources into the services we offer. Taking advantage of these services, rather than deploying them on your own, can save you a lot of the heavy lifting, give you peace of mind, and allow you to focus on creating value for your business instead of dealing with operational work. The AWS pricing model is also designed so that you pay only for what you use, offering you a lot of freedom and flexibility. This allows you to avoid large upfront capital expenses early on, which could otherwise be fatal to your startup.
Advantages of rolling your own
As noted earlier, rolling your own solution allows for a higher level of customization and control. However, we recommend that you consider this approach only if it provides clear upsides for your core business. Will designing and implementing your own solution yield an ongoing competitive advantage?
Regulations and portability are also factors to consider, as you may need your application to use specific software or be hosted on premise or in a specific region of the world. In such cases, you may want to control and operate your stack, and not rely so much on external providers.
You should also factor in your team’s existing internal knowledge, which can speed up initial development. If your team is very experienced with a specific architecture, for example, it may be more efficient to build your application this way. Still, you must consider not just the initial build, but also the long-term costs of operational work and maintenance, as this will make up the bulk of your total costs.
To start from a place of success, consider a cloud-native approach as you start your project. While there are no crystal balls, think of where your application will be hosted, which managed services are already at your disposal, and how it will run at scale. Then consider the programming languages, framework, software, and tools you will need to build it. Embracing this approach will help you make the best decision for your initial deployment.