How to implement feature flags and filters in .NET apps? A step-by-step guide
Along with improved DevOps expertise comes a better performance of delivery teams. And when many deployments take pl...
There are plenty of solutions that solve your needs – how to find the perfect one without getting a headache?
Each cloud computing service has its own dedicated purpose, limitations, and set of assumptions that are worth knowing before you decide which one to choose.
If you are struggling with finding the right path in the cloud and want to avoid costly cloud architecture mistakes or security risks, this article is for you.
I prepared the list of questions you should ask your cloud software provider to make sure you are using the best-suited cloud computing solution.
Only 29% of IT projects are successful, and one of the major success factors is managing scope based on relative business value. No matter what point your business is at, you can always consider using cloud services, but you need to know what value it can bring to you.
It’s all about choosing the attributes you want to benefit from. Some of them may let you reduce operational costs, decrease time to market with new features, or deliver your products on time.
This set of choices is called ‘architecture’. Why is it important? Because making bad decisions about it can cost you dearly in the future.
Let me introduce you to the 5 key questions you need to get answers to (from your cloud service provider, or other advisors), before choosing your cloud architecture.
As I stated in the previous paragraph, architecture is a set of important decisions.
Cloud architecture is a set of decisions on how the components work together in the cloud. The cloud, naturally, refers to servers that are located all over the world.
There are several cloud architectures models you can choose from, and I will explain them using a simple example.
Let’s say you are building a house. There are a couple of ways in which you can do this:
All by yourself (with no cloud architecture model)
You can build a house from scratch and decide on its shape yourself. With this approach you are flexible, but on the other hand, you need to spend a lot of time on things that are not your core business. For example: buying equipment, digging a foundation, buying bricks for the walls, and putting a roof on top. You need to know how to build a house with your own hands.
Similarly, with your IT solution – you need to know how to write, deploy and maintain your code, not to mention you must have your own hardware.
Rent equipment (Infrastructure as a Service, or IaaS):
You decide not to buy the equipment outright. You want to rent the cement mixer and other tools. This approach requires knowing how to operate the cement mixer, construct walls and the roof. You are still free to choose how your house will look.
Transferring it into your cloud solution – you don’t care about hardware but still need to know how to configure it, and worry about writing, deploying, and maintaining your code.
Delegate service (Container as a Service, or CaaS):
You supply the equipment, but someone else knows how to use the cement mixer and produce concrete. This approach requires knowing how to use the tools while building walls and the roof on top of your house. You don’t care about how the concrete for the walls is produced.
In your cloud solution – you have hardware and some infrastructure to deploy your code. You also have full flexibility in terms of how your code will be produced.
Delegate work (Platform as a Service, or PaaS):
Ok, you decide not to build walls but choose them from prefabricated shapes. This is the first time when you lose flexibility because services have limitations. On the other hand, you have many ready-to-use services that can meet your expectations.
In terms of the cloud computing service – PaaS services offer many configurable options. You can test them in 3-5 clicks, so the time needed to verify your ideas decreases a lot. Every service has its own dedicated pricing list, so you can predict what it will cost you in the future.
Buy a house (Software as a Service, or SaaS):
Finally, you decide not to build a house, but to buy it. You may not have your dream house, but the time after which you can move in decreases a lot. In your cloud computing solution, you are limited to what the service offers (with minimal customization).
Below is a simple comparison of the 5 models explaining the division of responsibilities between you and your vendor in more detail.
To sum up – the model you choose determines how much time your team will spend building software and how flexible you will be in your cloud computing service.
You can build everything from scratch (on-premises) or delegate some work to the cloud. Firstly, you should figure out what your core business is all about, and how to decrease costs in other places.
Every model mitigates or adds new risk to your project, so it’s worth rethinking why you are using that particular cloud architecture model.
Every IT solution has some limitations, and so it is with cloud services. If you know the expected system load, your team is supposed to measure the performance counters and detect the bottlenecks.
Based on that, you can decide where to invest and where to accept lower performance. There may be a situation when you will temporarily need a higher performance. In the cloud, you can easily scale your solution up or down – check out our article about scaling.
Going back to our cloud architecture models – the IaaS model can give you more places to improve performance. Selecting a PaaS or SaaS model, you may lose this advantage.
It doesn’t mean that these models have an inferior performance by default. It means that some services have limits, but can still meet your expectations. After all, if you don’t have high-performance requirements, why should you pay more for using the IaaS model?
There is no need to understand low-level security details, but it’s worth knowing how users can log in to the system and what service can handle this process.
Most of the time, it is unwise to waste time installing and maintaining external tools in your environment. Usually, it’s better to use a dedicated cloud service that is cheaper and easier to configure (like Azure AD.)
Whether we like it or not, systems fail. It doesn’t matter if you have your own hardware or use cloud infrastructure – it’s only a matter of time when your system goes down.
It’s useful to know how the system will react to this type of issue and how your business will deal with it.
High availability costs extra because the team needs to configure and maintain double or triple environments (if one of the applications goes down).
However, it depends on what risk you want to accept or mitigate. Perhaps you don’t need such a feature, considering the cost, and you can manage availability issues when they occur.
If you are wondering about the best practices in disaster recovery, check out this article.
Last but not least, is the total cost of your IT solution. In the case of the cloud, you can control and predict costs for your services. Services with more advanced features may cost you more, but the question is do you really need them?
Your team should give you information on which components are the most expensive and propose alternative options to decrease those costs. Here you can find useful tips on how to optimize costs and which cloud billing plan you should choose.
It would be best to find a balance between what you want and how much time and money you want to spend on it. At each stage, you need to make the decision based on trade-offs and constraints. It is good practice to write it down!
If you face challenges in this area, let us know. We can define possible cloud architecture based on your requirements and limitations. We can help you with architecture choices, security analysis, cost modeling, and cost estimation for cloud resources. If you want to avoid spending hundreds of hours on your own research and speed up your education in cloud architecture, here is a dedicated offer for you.
In the next articles, I’m gonna dive into every cloud architecture model, providing more technical details about each of them: IaaS, PaaS, CaaS, and SaaS. Stay tuned!
Read similar articles