Cloud computing will soon be a norm for hosting software applications catering to a variety of use-cases in different verticals. Cloud Computing refers to Internet-based services that provide access to managed IT resources; these resources are managed by experts and are available on-demand on a pay-per-use model. This enables the application developers to focus on the use-case and come up with an MVP (minimum viable product) in a shorter period.
This paper discusses some of the best practices to be following for building cloud-ready software applications that can make effective use of services offered by the cloud computing environment.
Some of the key areas for considerations are discussed in the following sub-sections:
Make sure the infrastructure used on the cloud for deployment is appropriate for your applications. It should neither be over-utilization nor under-utilization. For eg., Cloud Instance or virtual machine having 1 Core/2 GB RAM would be sufficient to deploy a simple web app with a limited number of requests whereas a large enterprise should consider using an instance with a higher configuration. Similarly, it applies to other services used in the cloud.
You can start with similar instance configuration as configured on your on-premises server to ensure that services are not over utilized and performance is not degraded. As demand grows, the instance size can be modified on the cloud at run time as well.
Almost every cloud vendor provides services to auto-scale your application up or down depending on the number of user requests. So, while moving to the cloud, it is important to use these services to achieve benefits in terms of high availability, reduced operational effort and costs, on-demand provisioning and automation.
For e.g., in AWS cloud (https://aws.amazon.com/autoscaling/), you can create an AMI (Amazon Machine Image) from a single instance and then configure Auto Scaling feature to add new instances in case CPU Utilization or any other parameter reaches a threshold (say 80%). Similarly, we can configure it to remove one instance if CPU Utilization is below some threshold (say 10%).
You can configure the minimum and maximum number of instances in the auto-scaling feature. The minimum number of instances should be the number which is needed during normal load hours whereas the maximum should be the number of instances needed during peak load hours (say during festival time/weekends or any event). Configuring the minimum number of instances in the auto-scaling group makes the solution resilient to failure as the cloud resource management typically supports relaunch & restart in event of failure.
Below are some points that are important to take care in the application engineering stage before moving to cloud:
The application might require re-architecture to support high availability and scalable design and integrate other cloud services.
While moving your data to the cloud, it is important to explore various storage options provided by the cloud to match the best fit for your type of data in terms of durability, cost, latency, performance (response time), cache-ability etc. Some example of the types of storage and the option provided in cloud are listed below (considering AWS as vendor)
When it comes to actual deployment of the application, following points should be kept in mind.
Cloud deployment vendors like AWS provide tools to collect and track metrics (like CPU Utilization, Network I/O, Network Packets In/Out, Disk Read/Write Bytes etc.) from instances in real time, collect and monitor your application log files, set alarms and automatically react to such alarms. You can use these tools to gain system-wide visibility into resource utilization, application performance, and application health.
For e.g., you can implement telemetry in your cloud applications to measure the performance of the application and configure this with Cloud service to track your log files and raise alarm via SMS/Email notifications in case performance value has decreased. You can even configure events so that when the alarm is raised, a new instance is launched and used in real time.
This is an important step while migrating to cloud. Cloud vendors generally provide a shared responsibility model for security. There are certain tasks that you are responsible for implementing security for your application in the cloud (the cloud vendors provide necessary tools to configure the same). For e.g.
After re-engineering of your application, it is important to verify the functionality of same. Separate QA or test environment should be created on the cloud which will be the replica of the production environment.
All functional and performance test suite should be executed and pass successfully on the QA environment (on the cloud) before releasing to live environment.
It’s important to configure backup and DR approaches while moving to cloud to ensure data is continually protected and prepare us for worst possible events when they occur.
RTO refers to the amount of time required to return your business to normal operating levels, and RPO refers to the amount of time it will take to recover all your data
Depending upon your RTO and RPO objectives, there are different solutions that Cloud Vendor services can provide. For e.g. asynchronous backup of your data to S3 in AWS, snapshots, multi-site solutions etc.
Do you have an upcoming project and wantus
to help speed up your time to market?
These cookies are necessary for the website to function and cannot be switched off.
These cookies allow us to monitor traffic to our website so we can improve the performance and content of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited or how you navigated around our website.
These cookies enable the website to provide enhanced functionality and content. They may be set by the website or by third party providers whose services we have added to our pages. If you do not allow these cookies then some or all of these services may not function properly.
These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.