As the quantity and quality of cloud services continue to grow, the number of cloud-based applications grows in lockstep. Based on its continuing cloud services research, analyst firm IDC predicts that “by 2018, about $1 of every $5 spent on packaged software, and $1 of every $4 spent on applications, will be consumed via the SaaS model.”
If you’re developing in the cloud, it’s critical to know the benefits of SaaS and microservices architecture versus traditional application architecture.
Microservices and SaaS
Microservices are the resulting standalone services after breaking a software application down into separate components that perform their function(s) without being embedded in the application itself. Microservices are perfectly suited for SaaS, where each service is assumed to be part of a larger system.
More Reliability, Less Recovery Time
Even if your application itself is perfect (and let’s be honest, it never is), the underlying resources are not likely to be 100% reliable. Whether it’s degradation over time or a catastrophic event (like a fire in the data center), outside influences can wreak havoc on your applications.
Separating the application into microservices and spreading them among the available resources increases the probability that your application will retain most of its functionality if a single resource becomes unavailable.
In addition, you benefit from faster recovery times and reduced resource consumption compared to the whole application. Switching out failed resources for new ones is easier, too.
I’ve mentioned failures caused by external factors, but what about issues within the application itself? Reducing an application to smaller services can reduce a bug’s impact and make it easier to locate. Once the issue is fixed, testing, rolling out changes to production and maintaining the application is both faster and easier.
Smaller Teams, Better Agility
Since the problem domain for a service is smaller than the entire application, the expertise required for that domain won’t be as extensive. This means that smaller, more agile teams can manage the application.
This does, however, necessitate a strong DevOps skillset within each team. Whereas a development team could previously hand off the application to an operations team to manage, this method becomes less feasible when an application is broken into many microservices. Ideally, if a problem arises, each team is responsible for managing and integrating the microservice into the overall system.
Fewer Resources, Lower Costs
The cost of resources goes way down in a SaaS/microservices model. Consider this example:
Let’s say we have a software application with a traditional architecture that receives a large influx of data, runs many intensive calculations on that data, and then stores the processed data in a database. Now let’s say that at a certain predictable time each day, the influx of data increases dramatically for a short period, requiring the application to consume more computational resources temporarily. In order to save costs, we can reduce the number of running instances of those applications outside those time periods.
Now let’s say we have moved closer to a SaaS architecture with the same application, splitting out the calculation functionality into a separate service. When the influx of data comes, we only need to spin up more instances of that one service instead of the entire application. Now we’re utilizing resources more efficiently and we reduce the cost to run.
You also may want to consider AWS’ autoscaling groups, which can increase or reduce these instances automatically as the load changes (even when the heavy load becomes unpredictable).
Microservices are Just the Beginning
SaaS /microservices benefits (minimizing internal and external threats and failures, increasing development efficiency and reducing costs) really only scratch the surface of what the cloud can do for software applications. How has your application benefited from the cloud? Please respond below.