scalable-web-applications
Key Considerations For Building Scalable Web Applications
mm
Humberto Farias
Posted on: April 12, 2018
Development
Tags: development digital transformation scalability scalable
Tags: development digital transformation scalability scalable

The growing emphasis on digital transformation has led companies to focus on one area of development which was once considered an afterthought: scalability. Companies stand to reap healthy rewards from their enterprise software and analytics initiatives; it makes good business sense to prepare for that success by building for scalability.

Vertical Vs. Horizontal Scaling

There are two different schools of thought about scaling:  vertically – called “scaling up”- and horizontally – called “scaling out”.

Vertical scaling begins with one central system and adds more resources (like more RAM) to raise its capacity.

In horizontal scaling, the emphasis is on distributed architecture. Capacity can be increased by adding more nodes to the system.

For most purposes, horizontal scaling will be easier, cheaper, and more performant.

Vertical scaling has lower administration and operation costs when the server is on site, but with cloud databases becoming the norm that isn’t a consideration.

Requirements of Scalable Applications

What does scalability look like? There are three areas where an app needs to excel to be considered scalable.

  • Performance: First and foremost, the system must operate well under stress with low latency. User experience is becoming a key brand differentiator. If UX suffers as more demands are placed on an app, there’s a serious risk of falling retention rates.
  • Availability and Reliability: These are closely related and equally necessary. Scalable apps rarely if ever go down under stress. They need to reliably produce data upon request and not lose stored information.
  • Cost: Highly scalable apps don’t have to be unreasonably expensive to build, maintain, or scale. Planning for scalability during development allows the app to expand as demand increases without causing undue expenses.

Components Of Highly Scalable Architecture

When scalability is a priority, developers have several options for building it into an application’s architecture. Here are a few of the most helpful:

  • Cloud StorageUsing cloud storage allows companies to buy only what they need when the app is created. Adding more storage is as simple as upgrading a subscription. New storage is ready to use right away, no maintenance or construction fees required. Cloud storage lowers development costs since the upfront investment is relatively small. There are plenty of dependable options for SQL or NoSQL cloud databases available, too, so developers can choose one that meets the specific needs of a project.
  • Caches: Data that’s been called up once is likely to be needed again; caching puts it where it can be accessed more quickly. A distributed cache structure works well for distributed architecture. Data is cached with nodes that check with each other before checking database. The lets the system store data closer to the user for faster access.
  • Load-balancing Software: Horizontal scaling wouldn’t be as popular as it is without load-balancing software. It tracks stress on nodes and services, then spreads the workload across nodes to prevent bottlenecks and avoid applying too much stress to a single component. Apps that use load-balancing software handle sudden spikes or dips in demand better than their counterparts. The software makes adding nodes easy, too: developers just have to change the rules for handling a new node and routing traffic.
  • Proxies: Think of proxies like middlemen. They’re essentially intermediary software that can be used to coordinate multiple server requests. Proxies collect simultaneous duplicate responses to a server, send a single request for the information, then share the data out among all the requests for the same resources. Using a proxy raises latency rises slightly, but stress on the server drops significantly.
  • Microservices: Microservices are large services split into a number of loosely connected smaller services. Components can then be scaled independently of each other depending on actual usage. Microservice architectures handle asymmetrical demand well since only the service that’s needed is used while others are free. These systems are faster to develop and easier to upgrade.

Scalable From The Start

The decision about how to approach scaling should be made up front. Though planning for scalability is surprisingly simple, shifting directions down the road is complicated and expensive. Make this a talking point when discussing requirements during Discovery.

At Concepta, we’ve created beautifully scalable apps for clients as large as Disney and Warner Music Group. Schedule a free, no-strings consultation to discuss how we can build your next app with an eye to future growth.

Request a Consultation

mm

Humberto Farias

Humberto Farias is the co-founder at Concepta. He is a seasoned technology professional with over 18 years of experience in the area of web-based applications and software development and now leads a team of developers in the US and Brazil. With experience working on enterprise systems and applications, he has worked for Fortune 500 companies including Walt Disney World and GE.