Growing Need for High scalability
It’s amazing to look at how application architectures have evolved over the past decade. The journey from mainframe applications to current mobile applications has proved many wrong on what they thought as “never possible”. Technology has reached every single person right from big enterprises to startups. While the trend of technologies seems to be rapidly growing, the need for capacity to reliably deliver such technologies to millions of users has been growing more than that. Architecture right now is not targeted to a single user working on the desktop where the software is installed. Today’s architecture is expected to serve millions of users accessing applications from a centralized place. The need for scaling has become mandatory for software failing which the business itself could be halted. The art of scaling is never easy and it has 2 sides to it,
- Software: Software needs to be scalable so that it can work under load balanced scenario and scaled out scenario
- Infrastructure: Infrastructure has to support scaling. This is where actual challenge is faced. The equation of capacity is never simple because we never know what the actual need is as business demands are always going to be unexpected. A capacity to support peak scenario could be very higher than what is expected for an average. Hence if you are prepared and stack up resources to support the maximum load you are going to get a hit on cost and if not you are going to get a hit on performance. This is exactly the problem cloud solves. With cloud you pay for what you consume and you can consume only when you need. Hence, the equation of capacity becomes much simplified with cloud.
Should all applications be deployed in cloud to become scalable? Not necessary. But if the question is “Is it cost effective to scale all applications in cloud” the answer is “Definitely Yes”. To ponder few use cases,
- Consider an ecommerce site, the load on the site is going to be humongous on weekends, holiday seasons and during promotions. During the rest of the time its load is going to be average.
- Consider a timesheet management system the load on the system is going to be at peak at specific hours and the rest of the time it could be very low.
- Consider a scheduled job that needs huge CPU resources. The job runs nightly and hence, the rest of the time the load on the system is 0.
Load on almost all the applications is going to experience peaks and valleys. It is this nature of the applications that demands the architecture to be just not scalable but elastic. Elasticity is the ability of the system to expand and compress in scale as and when required. To achieve elasticity cloud is mandatory. Following are the features of cloud that favours elasticity. (Know about the Considerations to be taken while migrating cloud)
Pay per hour/minute model
This is the most important factor for elasticity. The typical cost wastage of spending for an entire server while the resource of the server is required for max of 40 hours a month is completely eradicated because of this model. This model has opened doors for the possibility of high resource computing even for the SMBs for solving the right use cases. Hours and Hours of tuning the software to utilize the least resource of compute to minimize cost would not exist anymore as the tuning cost would probably cost more than computing in this model.
Ability to scale up and scale down on demand
While the cost model is favourable it is also very important for the cloud to enable scale up and down with much ease. At least the leading cloud providers like AWS and Azure do this seamlessly. Before 10 years I never imagined the possibility of increasing resources such as memory and CPU of multiple servers without much downtime just by click of a button and today it is. This also allows the ability to add resources only when required and not to stock up more in the start itself in the fear of downtime that might be required later on to scale up
Ability to scale out and scale in on demand (Autoscaling)
This feature provides the complete ability and control to add more servers and remove servers based on settings such as utilization and time with very easy settings. As an architect this feature thrills me because this gives me the power to control the end to end design of a scalable solution and just not stop with the software.
Additional services and solutions that support the software to easily scale
This is where cloud has added so much more value over and above computing resources in the recent days. The leading providers of cloud are competing with each other to offer these services and the number of these services is growing every day. Cloud is more a platform now than just Infrastructure.
Example of such services are
- Loadbalancers Eg, ELB, Azure Load balancer
- NOSql databases Eg, DynamoDB, AzureTable
- Queue services Eg, SQS, Event Hub Queue
- Batch processing Eg, Azure Batch
- Big data services Eg, Azure Hadoop insight, azure query analytics, AWS Kinesis, AWS Hadoop EMR
These services could be either managed services of already an existing solution or a proprietary solution offered by the cloud provider. Both offer their own benefits.
A managed service removes completely the setup and management overhead of such environments, which usually is quite a tedious tasks. Frankly I never liked setting up such environments and considered it waste of my time. Cloud provides a beautiful answer to this. Be it for production or POCs, getting the entire environment just by a “click” saves a lot of time and frustration.
Cloud providers also are providing solutions for big load requirements be it big data or big compute requirements. Such solutions combined with the availability of a rock solid scalable infrastructure could scale to very high magnitude. This makes cloud the default choice for such use cases. (Also learn how safe is your cloud).
Cloud adoption is increasing rapidly and in few years this will become the most preferred choice for deployment. Scalability is one compelling reason for this adoption. It will be interesting to see what more the cloud providers are going to offer in this space as part of Cloud Migration solutions.
- Predicting ROIs to a Microservices Migration – Sowing Seeds to Success - May 22, 2019
- The 4 Pillars of Microservices: Process – The Fulcrum of Strength (Part 1) - May 22, 2019
- Saga – The key differentiator of Microservices - April 26, 2019