I’ve introduced Cloud in my previous post Introduction to Cloud, and now if you've decided to move to the cloud, then you have to plan for this action and know some areas that you should take into consideration to eliminate risk, reduce cost and brings your app to cloud faster.
In this post I will focus on know your application requirements and behavior to better judge on which cloud platform will your app best fits in.
So if you know that your application is not going to run 24 hours, then consider to use cloud services that is not counting standby state. basically most of virtual machines (IaaS) will count standby unless you shut it down, and when it’s off, your application is no longer available!
The alternative is even using PaaS or Scaling features:
You can even pick a very big RAM from the beginning or simply define scale up strategy to increase RAM if needed.
One thing you need to know from the cloud provider that how much RAM you can use for a given VM; Cloud providers offers different types/ series of VMs, some of it with more power computing capability and others with more RAM capability, you should know/ask for such information to decide the appropriate VM for your app.
Some key options of cloud database are number of connections, database size, number of users, Throughput Unit, …etc.Here you can read more about the limitations of cloud database of Amazon AWS and Microsoft Azure.
Another concern of storing files on disk is that VM may provided in a non-persistent mode; this means the VM host system is configured to ignore files stored in the VM in case of restart or recycling it. Instead, you should create disk (VHD) on the provided data storage space and mount it into your VM.
In fact, I’ve tested the SELinux on a Microsoft Azure VM and it works perfectly.
I will discuss migrating your application to cloud in my next article (hopefully next week).
In this post I will focus on know your application requirements and behavior to better judge on which cloud platform will your app best fits in.
Know your Application
Developers, IT Professionals and DevOps are most people who should know the in-hand applications’ requirements in order to run smoothly inside a given environment, however there are some areas should be considered when you decide to move your app into cloud:Computing Power
Many of cloud providers are calculating cost based on your computing usage, in other words CPU utilization of your app; this means if your application is idle then cost should be 0. but this is not always true! in some cases your application is idle but other background services or the operating system is working to keep your application stand by and responsive for any expected usage, so your cost will hit the maximum value despite your application (front end) is actually used.So if you know that your application is not going to run 24 hours, then consider to use cloud services that is not counting standby state. basically most of virtual machines (IaaS) will count standby unless you shut it down, and when it’s off, your application is no longer available!
The alternative is even using PaaS or Scaling features:
PaaS
Where you define every application’s role in a separate context and use only needed resources for each role. example of such options can be found on Microsoft Azure, by using a combination of Job Scheduler, Azure website, Azure Cloud Services and SQL databases; the idea here is to distribute your application roles among resources which will calculate cost on usage basis.Scaling
If you can’t distribute your application roles for any reason, still you can minimize cost by utilizing scaling features, you define the minimum resources required to run the app and then define scaling rules to increase compute power and/or Memory of your system, or even you can configure to scale out to #n of virtual machines to serve the application. Most of cloud providers supports Scaling out/up such as: Amazon AWS, Microsoft Azure…Memory lover app (RAM)
Information systems in general are extensively using system memory (RAM), and it is essential to define the RAM requirements for your app. Cloud providers offers many options to RAM lover apps.You can even pick a very big RAM from the beginning or simply define scale up strategy to increase RAM if needed.
One thing you need to know from the cloud provider that how much RAM you can use for a given VM; Cloud providers offers different types/ series of VMs, some of it with more power computing capability and others with more RAM capability, you should know/ask for such information to decide the appropriate VM for your app.
Data source
Information systems needs a place to store data somewhere, most used option is a relational database (RDBMS), however NoSQL such as MongoDB is available too. there are many discussions on whether using cloud database or install and maintain your database instance by your self on a VM with your App or on a separate VM? this topic is out of this post scope but if you decided to use cloud database, then you need to know it’s capability and limitations!Some key options of cloud database are number of connections, database size, number of users, Throughput Unit, …etc.Here you can read more about the limitations of cloud database of Amazon AWS and Microsoft Azure.
I/O disk usage and Persistence storage
Some information systems such as drupal CMS, Wordpress, Alfresco…etc uses file system to store files e.g.: images, documents, configurations…etc., and the cloud provider may set a limitation on total number of files that shall be stored on the VM. e.g.: on linux check the inode count limit: use this command to see the limit on your VM: df -iAnother concern of storing files on disk is that VM may provided in a non-persistent mode; this means the VM host system is configured to ignore files stored in the VM in case of restart or recycling it. Instead, you should create disk (VHD) on the provided data storage space and mount it into your VM.
Operating system kernel level integration
Cloud providers may lock the OS integration on the kernel level, modules such as SELinux or AppArmor wont work in these cases! if are planning to use such practice you should conceder this in your Cloud provider check-list.In fact, I’ve tested the SELinux on a Microsoft Azure VM and it works perfectly.
Conclusion
Knowing your application is key factor to decide which cloud provider you’ll choose to run your application on, and know what services provided by cloud provider is essential to smoothly move to the cloud.I will discuss migrating your application to cloud in my next article (hopefully next week).