Cloud computing has become such a widespread technology that you can hear about it every day. Some people don’t even know what it is, but it just sounds great. For the layman, cloud computing is the same thing as the Internet. For the developers, dealing with cloud technologies is a more complicated issue: there is another sensible alternative to it that is called dedicated hosting.
The fact is that although cloud computing is a very convenient and affordable option, it is not always the right thing for one’s project. So it is important to find out what kind of service will be useful in this or that case, especially in the beginning.
When you launch a new SaaS project, there are usually not so many requirements: all you need is just a web-server and a server for a database. When the application is just published, the amount of users is low, but you believe it will grow with the time being. The number of users and, consequently, the amount of traffic is what defined the load on your server, and server configurations define what quantity of users is too many. So where to start from: a cloud server of a dedicated server?
There are two approaches for startups when the application and its infrastructure are being built up:
1. Quick (pessimistic). Build the application within a short amount of time, and launch without spending time for the engineers to scale everything properly.
2. Slow (optimistic). Have everything build up carefully, code it for scalability and launch hoping that it will scale quickly.
In the first case, your main aim is to get things started faster and hope that scaling will become a concern later. If you run out of the resources on the server quickly, it probably means that your project is gaining popularity on the market. You can win time by scaling vertically (get more CPU power, RAM, etc.), while re-engineering the code for horizontal scaling.
With the second approach, you should know that the project will definitely be a hit. You know that it will gain traction quickly, and choose to prevent failures and errors prior to releasing the product, because hiccups in service may appear to be very harmful. Thus, you will spend time to code the software for your infrastructure to grow.
Both of these methods have advantages and downsides. Usually, most developers choose the first methods, because the chances for an application to get a million of users are not high. Thus, if you want to scale the application horizontally in the future, it should be created in a way allowing to do that. In both cases, you can choose a server. Both kinds of servers will work well in the start. A good dedicated server may come in handy during the first few years, but a small cloud can be much cheaper in the short term.
Advantages and disadvantages of clouds and dedicated servers
To make a decision, analyze pros and cons of each solution.
1. You don’t have to buy and maintain hardware.
2. No limits of scaling.
3. Dynamic and elastic scaling is possible.
4. You pay for the options you use.
5. It is redundant and resilient.
1. Bandwidth is limited and costs much.
2. Disk space and SQL storage is expensive.
3. Performance is lower in most cases.
4. You can experience lack of control
Dedicated Server Pros
1. You have total control over the server.
2. Enough disk space for start and further work.
3. Bandwidth is non-expensive as well as SQL storage.
4. Excellent performance.
5. Enough space to scale.
Dedicated Server Cons
1. Rigid configuration.
2. You always have to pay for maximum power.
3. Disk space is limited.
4. Vertical (physical) scaling is limited.
5. Hardware is prone to failure.
Configuration and Management
The cost of cloud is somewhat more difficult to figure out, because each platform has its own prices and various factors that define it. With a dedicated server, it is a bit easier, because the certain price per month is stated. Dedicated server pricing seems to be more transparent, but sometimes you may not need the entire power of it, which means you will overpay for unnecessary resources.
To scale out on a dedicated server, you will have to add one or several additional servers and order a load balancer. Besides, it will take time and effort to work with the configuration, applications and data on each server. This can be complicated.
To start scaling on a cloud, you don’t have to spend much time – involvement of additional machines is performed almost instantly. Cloud platform gives you all necessary tools to manage data across servers easily. Besides, it provides load balancing and traffic control services.
In all cases, your software should be written so that to be scaled horizontally later on. If it’s not, cloud computing won’t help. However, it may help with resilience and redundancy – you won’t suffer from failure of hardware. The chances to lose your data are almost zero.
With a dedicated server you can also move to the cloud, if it’s time to scale out. Creation of complex software that is simply scalable can be a very difficult task, which is why some developers prefer dedicated servers. That gives a lot of room to develop and grow your projects, and the freedom to do anything you want with hardware and software.
To sum up, if your application is quite simple, and you have enough time to scale software after its release, a cloud platform may be just the thing. A dedicated server may be a good choice if you are a tech savvy developer and want to have full control over software.