Cloudification is moving service or application from on-premises to the cloud. Every organization is planning to move its maximum applications to the cloud. There are many benefits to going to the cloud.
Below are the few benefits organizations will get by moving applications to cloud-
- Flexibility to Scale Up or Down
- Disaster recovery
- No upfront cost for Hardware & Software Licenses
- Security
- Focus on Core Business
Because of the above and many other benefits, every organization wants to move on the cloud.
Cloud provides different service models-
- IaaS (Infrastructure as a Service)- A virtualized environment on which systems can be deployed. This provides the underlying computing resources for the deployment of enterprise systems.
- PaaS (Platform as a Service)- We call it "Cloud Platform Services". What developers gain with PaaS is a framework they can build upon to develop or customize applications. PaaS makes the development, testing, and deployment of applications quick, simple, and cost-effective.
- SaaS (Software as a Service)- Cloud computing offering that provides users with access to a vendor’s cloud-based software. Users do not install applications on their local devices. Instead, the applications reside on a remote cloud network accessed through the web or an API
Below are a few key decision factors which help you to decide the best Cloud Service Model for your application & take further actions:
1. Integration with other on-premises application- If your application has some integrations with other on-premises application & you are not moving other application to the cloud than you need to also plan for Hybrid implementation so that after migration your application (from the cloud) can communicate with on-prim applications securely. Many cloud providers provide a secure gateway or channel between on-prem and cloud.
2. Database compatibility on Cloud- First check does particular cloud provider offers you similar database on cloud PaaS, if yes than go for it, if no then you can think to use another compatible database (of course data migration will be overhead) or you can go for VM on IaaS & install your database and use it from PaaS applications.
3. Session Management- Scaling is one key feature of Cloud. If you are planning to go on Cloud then you should have stateless web application or services. It will allow you to scale your application horizontally when user load increases. If your application has some IN-Proc session than you can either save it to Database or Redis cache.
4. User-uploaded files or images- If your web application has provision for the user to upload images and document on web application and you are storing those on application server itself then you need to make changes in the application to store these files on separate storage e.g.- File Storage or Blob Storage. This will help your application to work properly when your applications multiple instances are running.
5. Dependency on any third-party software or custom software- If your application is dependent on any third-party software or application which need to be installed on application server then you need to check that particular Cloud service provides you to install these type of software. If not then you need to go for VM on IaaS so that you have full control over the application environment.
6. Dependency on Registry values- If your application is dependent on some particular values in the server's registry than you will not able to use Cloud PaaS service, you need to go for VM on IaaS.
7. The requirement of specific Port-If your application is dependent on specific TCP port than check the particular Cloud Service does allow you to communicate you on that port. If not then go for VM on IaaS.
8. Caching implementation- If your application is using application caching to improve performance then it may become a bottleneck in the cloud where multiple instances of an application can be there. You should have a separate caching mechanism or use PaaS Redis Cache.
9. User Authentication- If your application uses on-premises Active Directory for user authentication than you need to think a way to authenticate the user when your application will be on Cloud. Either you can use some Cloud AD service (e.g.- Azure AD) and sync on-prem users with Cloud AD or authenticate users by ADFS.
10. Cloud neutral development- If you don't want to stick with any particular cloud provider than you should go for Container approach so that you can move your containers from one cloud provider to another.
If you have complex business logic in the legacy application & many dependencies on other software's which you feel very hard to migrate on PaaS then you can go for VM on IaaS as the first stage, this will give you upfront benefits in cost & maintainability.
Before starting any migration activity first check all possible hurdles & do a proper cost-benefit analysis.