Moving to the cloud to speed up your digital transformation
One particularly cold morning last January, we were working on a project and everything seemed to be going well. Our production system was responding well, our email inboxes were under control and everyone seemed to be feeling positive. Then, around 10 am, bam! Out of nowhere, our development servers stopped responding. We looked at our test, staging and production environments: same results. We started panicking a little.
It’s often under circumstances like these that you end up rediscovering your office neighbors, the people who sit near you but who you don’t interact with every day. You get up, look around and ask, “It is working for you?” aloud. Our team got together and started investigating the source of the problem. Long story short: a technician from another team, who was working for a different company, had decided that morning to reconfigure a low-level item. This update had been planned and tested. In theory, it shouldn’t have affected anyone. We know the actual end result.
This anecdote is one of many that made me question the tendency that many organizations have to still want to support themselves with their own servers and in-house software. For this to occur, the organization must have personnel in place who will manage servers, memory allocation, handle security, install software updates and much more. There’s an endless list of things to do, and every time the development team needs new material, infrastructure limitations must be factored in. As a result, it’s sometimes difficult to add new services to support user growth and development throughout the lifecycle of an application.
Cloud services: a cure-all?
While they won’t fix every problem, cloud services have nonetheless become essential to consider when starting a new project. Right off the bat, it’s easy to see the advantages of the cloud services offered by the major providers (AWS, Azure and Google, to name a few): simplicity, stability, variety of services offered and cost flexibility. In a few minutes, you can have a web application deployed alongside a SQL database. With a few more clicks, the production database can be geo-replicated along with a staging environment. For clients with simple web applications and medium-sized databases, cloud services can help minimize costs in both the short and long term.
For a developer, working on the cloud requires some adjustments, mostly for deployment methods. On the other hand, cloud services offer some excellent tools that can be incredibly useful, such as, for example, Traffic Manager and Route 53, two web services that can route traffic, which allows developers to do Load Balancing or implement a Failover.
Private clouds and multi-cloud infrastructures
That being said, there are some downsides to consider with the cloud. For example, a friend was telling me about a client he once worked with. The client was a big player in the world of cheap flights and had acquired a dedicated infrastructure on the cloud, more commonly known as a private cloud. The material in place was exceptional, but ended up costing more than 10,000$ per month to operate, which was more than double what the cloud’s sales team had estimated. Selecting too many options can make costs explode, and while cloud services are generally cheaper, they still require vigilance.
Another problem: All cloud services providers will claim to have exceptional uptime, but problems still can and do occur. Last February, a portion of Amazon’s AWS services went down, affecting, according to various estimates, more than 148 000 websites (!). Luckily, Amazon was able to fix the problem quickly, but this situation greatly affected trust in the American giant. As a result, many development teams are now considering multi-cloud strategies, spreading an application’s services on two (or more) cloud providers, which can minimize problems in case of a disaster. Moreover, a multi-cloud strategy can speed up loading time by redistributing traffic according to the user’s profile or needs. Some cloud services providers are better at specific tasks than others. For example, one can be particularly good at handling a large number of requests for small amounts of data, but not as good at handling a small number of requests for large amounts of data. Therefore, a well-implemented multi-cloud strategy can optimize the use of all the different resources available.
If you’re interested in a multi-cloud strategy, you should consider a multi-cloud management tool, which can help you configure, provision and deploy your environments on the cloud. These tools can also allow you to use a single interface to manage all of your different cloud services.
The cloud is not a magic solution. It’s still extremely important to make solid architectural and technological choices so that the system can continue to support your application as it grows and mutates. That being said, the cloud is much more agile, which gives the development team more flexibility and more options throughout development. As a result, you can spend more time polishing an application and less time worrying about the infrastructure.
Today, cloud services allow businesses of any size, from a small development team to a multinational company, to benefit from the power of complex technologies on demand. Moreover, these services still haven’t reached full maturity. Eric Schmidt, CEO of Alphabet, Google’s parent company, declared during the Google NEXT conference that innovations in cloud computing will radically transform the field within 10 years. The giant anticipates, among others, a lot of progress in automation thanks to artificial intelligence and machine learning, which could mean the rise of serverless architectures, with platforms able to determine themselves in real time their own needs in terms of resources.