Cloud is still a hot topic and many companies (among which the one I work for) are making the move to the cloud. Either by making their services available, or using services of others. The advantages of using services in the cloud have been told many times, and the most important one is that there is no up-front cost of infrastructure. Another one is less responsibilities, if the service is running in the cloud it becomes the supplier his responsibility to keep it working, and not yours anymore, this however means you have less control over it. Down-time and upgrade will take place beyond your control.
However companies want to focus on their core business, and not spend too much time and money on keeping tools running. This is an important reason as why companies are offering their services as a cloud service. As said before the customer does not need to buy and maintain costly infrastructure or hire employees to keep them running. The money saved by the customer will be partly spend on the higher cost of the cloud service, which makes sense as the producer now has to bear the cost of the infrastructure. The provider however can server multiple users with the same infrastructure making it more cost-efficient then it was for the customer.
The move to the cloud is a fact, and it’s a good thing. But at the same time there are some concerns when you move to the cloud as a service provider.
The first one is the new concern of infrastructure. As the services used to run on premises, maintaining infrastructure was the responsibility of the customer. Either you can use one of the cloud providers of infrastructure (such as Amazon, Google or Microsoft) or you can do it yourself. As said before, companies want to focus on their core business, which means using an infrastructure provider is the most logical choice. By doing this the concern of infrastructure is mostly taken away from us, and we are left with just asking the provider for enough resources by using auto-scaling and other features they offer.
Making use of the services of the infrastructure provider is vital, as they enable you to provide a highly available service that both scales up and down as the load fluctuates. Your customers will be demanding this of you, and if you can not provide it they will evaluate if moving to a competitor is worth it.
Another new concern is upgrading the software, again this responsibility has moved from the customer to the provider. Though this sounds like something trivial, it is a lot more complicated due to the cloud environment. The requirements of your service being available at all times, means that bringing down servers to upgrade the software is impossible. To achieve this a rolling upgrade is required, where servers are brought done one by one, and upgraded to the latest version of the software. Backwards and forwards compatibility becomes more important and will require software that is written in such a way. At the same time testing the software before bringing it into production is vital, as one bug does not affect one customer but all of them.
Some infrastructure providers offer more than just some server in their farm. Instead they offer special servers that are optimized as a database server. It makes sense to let your software work with these services as well since it will lower your responsibilities of managing everything. But using more of their services can be risky and make it nearly impossible to change to a different infrastructure provider in the future. Generally this is not much of a problem if the software deals with the services in a general way. It does become a problem when you are using a specific service with special characteristics than can not be easily changed.
Moving from on premises software to software that runs in the cloud is not minor change. It requires changes in your software, but in your organization as well. Therefor it is important not to rush it, but take your time and come up with a migration plan. Time is critical and offering cloud services will become a necessity in the near future, which is why it is wise to start thinking about it today.