Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scalable VS Extensible [closed]

I'm not sure if this type of question is allowed here, but it is related to software projects.

Is there a difference between scalable and extensible?

Is extensible a sub-set of scalable? I.e. Scalable (extensible)

Some regard it as the same, others regard it as different. What are the differences?

I am led to believe:

Scalable - make the system withstand more usage (bandwidth etc...) AND make it larger.

Extensible - add more functionality to the system.

Are they not the same?

Edit: If extensible is adding more functionality to the system and scalable can be deemed as making a system larger, is that not theoretically the same, proving that extensible is just a sub-set of scalable?

like image 605
John Vasiliou Avatar asked Apr 10 '13 13:04

John Vasiliou


2 Answers

I am not a native speaker but I do think there is a difference.

If sth. is scalable, that means it can adopt to growth. This does not say how it adopts (that is, either by being so well-fitted already that it could take more requests, or by adding more resources of the same type, or by easily changing components).

Wikipedia says:

[It is the] ability to be enlarged to accommodate [some kind of] growth.

In theory it might also refer to a "downsizing" but that is normally not so interesting from an IT point of view.

You proposed:

Extensible - add more functionality to the system.

Possibly, but not necessarily. It might also refer to adding more capacity that serves the same purposes as before.

I'd say:

Scalability means a system is able to accomodate growth. I.e. the system grows.

Extensibility means you are able to (easily) add something to the system. I.e. something new is attached to the system - which does not have to be growth-related.

like image 168
observer Avatar answered Sep 28 '22 05:09

observer


Agree with Observer. Just to add few more examples:

Extensibility:

  1. How easily your software can support 'hooks' for new functionalities, interfaces, devices, input types etc.
  2. This might also refer to how easily your software can support new services with least/no disruption to existing code and clients. For example, addition of a new endpoint to an existing webservice can be considered as a dimension of extensibility.

Scalability:

  1. How easily your software will be able to deal with growing userbase / additional data, etc. Example: If your userbase grows in future, or you decide to save additional data for each entity, is your database scalable? Is your software scalable to user base growth?
  2. When it comes to scalability, we also start talking about horizontal Vs vertical scalability and both of these are primarily referring to whether the system can scale on same infra/instance/deployment (vertical scalability) or we need to add some 'peers' to be able to take more load (horizontal scalability).
like image 31
Vibha Avatar answered Sep 28 '22 06:09

Vibha