Scalability can be defined as the capacity of a system to handle rapid growth. In other words, if one day a million people around the world have decided to use your product, you can sleep soundly knowing that you have a truly scalable product ready to cope with it. If the product is non-scalable, there will be delays in product functionality, and the entire user and customer experience can suffer greatly.
Software scalability allows business to remain stable despite the volatile nature of the industry. With a reliable product, business can benefit with higher agility and cheaper upgrade expenses in the long run.
However, scaling is still a challenging process. Building scalable software means you have to be more meticulous with the development details.
Let’s focus on the main points of scalable software.
- Horizontal scaling
Horizontal scaling is elastic and dynamic. It is often easier to scale dynamically by adding more machines into the existing pool. You can keep your existing resources online, and add as many servers as you want. Since each of them is independent, it causes no harm.
- Vertical scaling
Vertical scaling is scaling by adding more compute power (CPU & memory). It’s secure and fast under light loads, but it does not scale well at all. Scaling beyond that capacity often involves downtime and comes with an upper limit.
- Cloud storage
Scalability on the cloud eliminates the need to predict future capacity requirements; should a customer demand more resources, they can be quickly added.
With cloud storage, you only pay for the resources that you use. You can grow and shrink the available resources per your needs and be charged only for space that you are using.
- Physical servers
To expand a physical server environment, you need to buy additional hardware components, which can be very expensive to build, maintain, and secure.
New projects have to be put on hold while waiting for the storage to be finished. In addition, there’s always the risk of hardware becoming outdated.
- Microservice architecture
As the complexity of the system increases, the size of the teams that work on these also increase. Having the system as a monolithic one inhibits the development team from being able to move forward at speed. This gave rise to the need for an approach that would allow independent functional teams to be able to deliver their functionality in its entirety with minimal dependency on other teams.
The microservice architecture breaks large software into smaller pieces that can operate independently of each other. When one node is in high demand others can work without adding to its load.
- Monolithic architecture
The monolithic architecture is considered to be a traditional way of building software products. Normally, monolithic applications have one large code base and lack modularity. So, when it comes to scalability, you can’t scale components independently, only the entire application.
submitted by /u/joe_dojo
[link] [comments]
from Software Development – methodologies, techniques, and tools. Covering Agile, RUP, Waterfall + more! https://ift.tt/dkRv1yr