Pages

Showing posts with label paas. Show all posts
Showing posts with label paas. Show all posts

Saturday, February 28, 2015

Cloud first: Plan before you move

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.

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 -i
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.

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).

Thursday, February 5, 2015

Cloud first: Introduction to cloud

 
Today's Buzz word is cloud, everything you read, tweet or share mentions this word! Well, it's interesting topic and I'm not going to explain it here. however I am going to help you to to take the appropriate decision and choose the right platform for you, your application and your company.

Cloud offers three main flavors of cloud: SaaS, PaaS and Iaas, Of course there are other flavors but those are the most used/common types:

SaaS (Software as a Service)

SaaS is providing an application functionality as a service, you don’t have to write code, build an interface or data store; it’s offers the most common functionality of software  such as: CRM, Email…etc.. so what you’ve to do is using it by adding your data, you may change it’s look and feel to match your logo and that’s it.

SaaS can be used by business users directly, you don’t need technical background in order to use it.

PaaS (Platform as a Service)

PaaS is providing an environment where your application (most probably code) lives inside it; you may build the exact environment that your application needs in order to run; e.g. to run an application uses Apache Solr search engine you need to have a Java and Apache installed and configured for you, the installation, configuration and updates for the platform are being handled by cloud service provider, you don't have to worry about it.

PaaS can be used by software developers and IT professionals (system administrators) because it needs good technical skills to use it.

IaaS (Infrastructure as a Service)

IaaS is providing virtual machine with a specific computing power, memory, storage and network. you should then do the appropriate actions to run your application. e.g. install the operating system, database, webserver, …etc.

IaaS can be used also by software developers and IT professionals (system administrators) because it needs good technical skills to use it, and you have to keep your system healthy, updated and secured as no one will do it for you.

Why should I move to the cloud?

Well, this is a good question. if you don't know why you should go cloud, then don't go unless you know your pain!
Actually, cloud is being here to address many-many challenges in IT industry and business in general, I'll list most common challenges, but it’s not limited to them only:
  • Cost: reducing cost of hosting an application on premises and the need for a team of IT professionals to install, update and fix the application during it’s life cycle is a big challenge especially for business that is not related to IT industry where you have to have an IT department.   
  • Geographic distribution: companies that distributed among multi-geographic locations are facing challenges to keep these locations up to date, synchronized and connected.
  • Scalability: in some cases, business have the opportunity to expand its operations and the IT becomes (sooner or later) a bottleneck and delays business expansion.
  • Speed: IT and business are changing very quickly and organizations have to adapt changes quickly before losing their market, so as quickly your IT adapts changes as you capture more market share.
  • Licensing: Managing software licenses is a big challenge for all companies despite its size. every PC, Server and user should have license for the software he is using; with cloud most of services offered including license cost.

I got it, what's next?

Ok, if you think cloud is good for you, that’s great but wait; before you start moving to cloud you have to plan for this move, there are many things you need to take it into consideration before you go cloud. If you're interested, follow my blog to read the next article (Plan for go cloud) next week.