10 Considerations When Transferring Enterprise Applications to the Cloud

DZone 's Guide to

10 Considerations When Transferring Enterprise Applications to the Cloud

· Cloud Zone ·
Free Resource

Cloud Computing has been around for a while and there has been lot of positive energy surrounding moving enterprise applications to Cloud infrastructure.

Why move to the Cloud? The CIO-safe option is to choose Op-Ex against Cap-Ex Model. This is about Pay as you use and not fixed upfront cost for your hardware and space.

The primary reason for an enterprise to move to the cloud is scalability (elastic - cloud vs plastic - traditional) and because it is quicker to setup and deploy.

And the fact that you have to understand is leverage the primary feature called resource busting (check with your provider and ensure that your platform provider does not overuse the cpu/memory resources).

When transferring applications to the cloud, you cannot move the entire application landscape.  The reason for this is that some applications need to remain at the enterprise, such as user authentication, data services, and data integration. 

Here are the top 10 things that you need to consider before transferring existing enterprise applications to the cloud.

  1. Security - Data at Rest/Transit
  2. Software License Model
  3. Performance
  4. Disk I/O
  5. Application Infrastructure Sharing
  6. Hybrid Model
  7. Network Connectivity
  8. Prod /Non-Prod Environments
  9. Storage 
  10. Open Source vs Proprietary 

1) Security - Data at Rest & Transit :-

How secure is cloud infrastructure from bad guys? The most important fact is if you have some highly confidential data that needs to be exchanged between enterprise infrastructure and the cloud. There are several ways to achieve secure connections between sites. The most favored one is to have the connections to be two way encrypted using mechanisms such as 2-way SSL. Encryptions can be either implemented application to application level or at Network infrastructure level (Router to Router). The point to be noted is that multi-level encryption might hamper performance of your application.

Remember those past attacks that stole millions of user data in large enterprises? That is why you need to have very good encrypting techniques that have to be applied for the data at rest, no matter its files or data stored in database tables. These critical information needed to be encrypted and then stored at cloud. There are multiple strategy in place to keep these "non public" confidential data secure.

Federated Identity using SAML may be a viable option for better security management across cloud sites and the enterprise data center.

2) Software License Model:-

This is the most critical one, but sometimes software license is considered very late in the game. Software licensing (Webserver/AppServer/Database/Speciality Software/etc) on a virtual environment does not quite work the same way as in conventional dedicated (plastic) environment. It is quite dismay that big vendors do not support good licensing model in virtual environment. Instead you end up paying for the entire bare-metal where your entire virtual environment runs.

3) Performance:-

Performance is key and need to be looked because of user experience. You cannot have web applications that time-outs regularly. The most important thing that needs to be considered from cloud perspective is Network (bandwidth + distance), Disk I/O, Resource (CPU + Memory) available in a Virtual environment. If you are trying to move client/server to the cloud, you better up options such as VDI or similar infrastructure. Also consider moving proxy/reference data to the cloud for performance reasons. Finally, consider good caching techniques for your application.

4) Disk I/O (Database/Messaging) :-

Virtual environments are not always great for certain cases, especially when you are expecting too many I/O because you are doing too much of read/write into databases or you have a high volume of messaging volume that uses dedicated infrastructure such as JMS/MQ/MSMQ Server. Its better if you move these components to bare-metal infrastructure.

5) Application Infrastructure Sharing:-

Steps need to be taken so that your enterprise application infrastructure is not shared by any other clients/corporations. (this is because of security reasons- I will cover this later). There might be Performance impacts and SLAs that you may have to consider.

6) Hybrid Model:-

Here are few of the primary reasons why you should think about hybrid cloud.

a) Avoid performance bottlenecks because you expect too many I/O's in the application

b) Data Security ( When you want to avoid sharing storage infrastructure)

c) If the software license model (as explained in {#2} - s/w License Model) does not fit in your virtual environment, then the obvious choice is to move such components to dedicated bare-metal.

7) Network Connectivity:-

Based on the business requirement, there are several ways and options that are available on the table. Some of the current trends indicate the use of high speed internet connectivity or use MPLS cloud. Options such as network bursts are available. These need to be explored and focused on when setting up the infrastructure and implementing it end-to-end is time consuming exercise.

8) Environments:-

Setting up and designing Production and Non-Production using virtual environment is very critical especially if you have signed for resource (cpu & memory) burst in cloud. Ensure that your performance environment does not hamper production setup. Ramping up and down environments are pretty easy and quick especially if you are looking at setting up multiple QA environments.

9) Storage:-

SAN environment configuration is key especially for performance reasons whether you are looking at a shared infrastructure or a dedicated one. You  may want to consider real-time replication across storage devices. There are also other virtualization concept in storage area that you may consider exploring. Check your Cloud Provider for options.

10) Open Source Vs Proprietary :-

There are several software tools that are used in software development, deployment, security, monitoring and managing server in production. These software tools are there for special needs such as configuration management, continuous integration, monitoring, security, load balancing, caching etc. Open source tools are abundant which can easily replace high cost proprietary ones. Do your due diligence before selecting one.


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}