Cloud computing is a rising industry. It is increasingly becoming popular and is being adopted by many organizations. Today, we are witnessing an increasing number of articles specifically focused on cloud-related technology.
Researchers are also trying to identify and formalize the main concepts behind cloud computing, thus developing a base for further studies how their research can be used to promote advances in cloud computing.
However, the main challenges related to cloud computing are already well-known but in the software engineering field are not yet clear. This article will try to highlight the main challenges and research opportunities related to cloud computing and software engineering.
Data lock-in the challenge developers face when migrating their applications from one cloud platform to another. Such challenges are met mostly in the PaaS platform: the applications must be developed for a particular platform to utilize very flexible cloud architecture.
Even if a developer required a private cloud to host an application, they would require great effort to rewrite the code and redeploy it to assist them in moving the data. It is not hard to understand why this challenge is affecting the adoption of the cloud model.
Developers are put in a difficult situation of being locked-in a particular platform, and not being able to choose a different platform later. But what they fear most is the abusive fees charged when trying to move their applications later or not being able to access their applications because of lack of service quality.
Migrating to the cloud model
Many businesses have the urge and the objective of taking on the cloud for their existing and new applications so as to capitalize on the benefits of the cloud model.
This decision is naturally very complex and is influenced by multiple factors like availability, performance, cost, QoS, and security, of which each plays a significant role in every organization.
Business must consider the viability of the cloud model at hand before making any decision at its current level. It must carefully analyze both the organizational and technical constraints which are related to cloud platforms and consider their business requirements.
In case cloud migration decision is approved, the PaaS model is the perfect choice for new applications while the IaaS model is the best option for deploying the existing systems.
To migrate data and applications to the clouds efficiently, there must be a strong strategy in place to prevent data loss. However, migration is a whole new challenge for pre-existing systems.
Legacy software migration
In today’s world, many systems have become outdated, either because they use earlier versions of operating systems or unsupported technology. However, it’s very costly to modernize them, and the fact is that they are still active because they provide essential services.
Such systems are commonly known as legacy systems. Most of these systems cannot migrate into a cloud environment at the moment, and this is also the case for some most recent pre-cloud web applications.
Complete re-engineering, that is, the reconstruction of the software for a new platform is one way of solving this challenge. But this process is too costly.
Alternatively, a strategy can be devised to move legacy software into the cloud infrastructure and to ensure it functions normally in the new environment without the need for total re-engineering.
Legacy application modernization is an important strategy towards the systematic migration to the cloud model.
A re-engineering process for the cloud
Cloud computing related programming languages, standards and frameworks may facilitate the development of new applications, current software’s evolution and increase competitiveness in companies.
In such instances, migration alone cannot support that. This is why companies find themselves facing the decisions of re-engineering their applications to maximize the use of new cloud technologies or bowing out of the market.