The rise of cloud computing has been meteoric to say the least. Intel reports that 93% of organisations are currently using the cloud and AWS experienced quarter on quarter growth of 46% in Q4 of 2018. Its popularity derives from the projections of added value in monetary saving, time and scalability through SaaS, PaaS and IaaS for day-to-day business activity. This blog will cover some things you may want to consider when moving legacy applications to the cloud.
Porting Existing Architectures
If we assume that you are a business and your legacy applications are your own enterprise systems, then it is likely that these systems are monolithic applications with a web front end (or even a desktop front end) with some sort of database behind it.
These types of application can be ported onto virtual machines on the cloud. For example, Amazon EC2 and Amazon RDS can run a web server and relational database respectively. Database migration tools are provided by cloud providers which allow existing databases such as Oracle or SQL Server to be ported directly onto a cloud database.
Porting applications without changing architecture is not generally a major issue but it does fail to take advantage of some of the benefits of a modern cloud software architecture.
Porting to a New Architecture
Whilst applications can pretty much be ported as is, many organisations will want to modernise these applications to improve their business agility or scalability.
Older applications are unlikely to support an ‘API (Application Programmers Interface) first’ approach which can limit business opportunities in fast growing channels such as mobile or chatbots.
So, what is the API first approach? Well it is highly likely that mature businesses, with their own line of business applications, have written those systems with a web user interface (or desktop user interface). In this type of application the user can only interact with the application through a web browser (or desktop application). However, in a modern world you have to consider a range of different user interfaces and channels such a mobile application, chatbots, machine learning or 3rd party integrations with different systems.
In the enterprise, microservice architectures have been developed to segment business functionality and put APIs in front of core business functions so that a web, mobile or chatbot application can be built by stitching together a number of APIs/microservices to build a line of business system. This makes systems more flexible as new services or channels can be built more quickly.
The latest cloud architectures support microservice architectures with ‘serverless’ functionality. Rather than writing code to run on a particular server or machine, cloud providers allow you to write code which just runs in the cloud and is dynamically scaled to match all workloads. You have no idea which server the code is running on as this is handled by the cloud provider. This type of functionality is provided by services such as Amazon Lambda or Azure Functions. These providers also supply API services (such as Amazon’s API Gateway service or Azure’s API Management service) which makes running APIs very easy. Serverless functions can interact with databases, queues, file stores and messaging services, amongst other services.
Existing Architecture versus New Architecture
For many businesses moving to the cloud is daunting enough so many simply port their existing architecture (front end user interface with backend database).
This works fine but it’s not really taking advantage of the benefits of the cloud and the possibilities offered by a different software architecture. A modern cloud architecture can offer: –
- Enhanced Scalability
- Improved Flexibility
- Improved Availability
- Lower Total Cost of Ownership
- More Business Agility
There is a middle path to tread between existing architectures and new architectures since some companies do not want to completely rewrite a system. Indeed, this middle path can sometimes give the best balance of cost versus business agility. This is sometimes known as ‘breaking the monolith’ and involves breaking a monolithic application into services as required. This requires careful planning and architecting but, rather than rewriting a whole system, parts are moved into serverless architectures until eventually the entire application is API first and serverless and can take advantage of the benefits offered by the cloud.
Moving to the cloud is something that every business should already be looking at. The benefits are huge in terms of delivering systems that are quicker to develop, quicker to deploy, more flexible, more scale-able and generally more cost effective to run.
There are a huge number of options and services available which can make it daunting but, in an uncompromising business environment, the risk of not embracing new technology can make organisations uncompetitive.
With the right advice and careful consideration moving legacy systems to the cloud should not be something to be afraid of.