It is found how to represent horizontal scaling in UML with a Layered component but nothing has been said for vertical scaling
Horizontal scaling -- i.e. scaling by adding more servers/devices -- needs to be supported by the software design. Indeed, it requires to have some components that can be instantiated multiple times perhaps with multiple identical parts that can be deployed on multiple execution environments. It may also require additional components, such as a load balancer, to manage such a multiplicity.
Vertical scaling is just about increasing the processing capacity, without any need for changing the software and its deployment. Since it's basically the same software and deployment on more powerful machines, you'll see no difference in any diagram.
The two only little exceptions that would require an update of the diagram would be:
if the software adapts its configuration to better use the increased capacity. For example, the software may use a thread pool and adapt the number of threads to the number of cores available. While the software doesn't change (still the same execution environments) some part multiplicity could be higher (e.g. 1..32 workers instead of 1..8). But it'd the upper bound was * there would still be no visible change.
if you use stereotypes to fine-tune and customize the kind of devices (or execution environments) involved in a deployment diagram, you may also use some custom tagged values to specify the devices or execution environments. If you use this UML feature, you'd of course have to adapt the tagged value to indicate a more powerful CPU and other configuration details that need to be upgraded.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With