This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dido:public:ra:1.4_req:2_nonfunc:16_scalability [2020/11/16 21:12] nick |
dido:public:ra:1.4_req:2_nonfunc:16_scalability [2021/06/11 14:48] (current) char |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== 4.2.9 Scalability ====== | + | ====== 4.3.10 Scalability ====== |
| [[dido:public:ra:1.4_req:2_nonfunc| Return to Non-Functional Requirements]] | [[dido:public:ra:1.4_req:2_nonfunc| Return to Non-Functional Requirements]] | ||
| - | |||
| - | * **<color #FF0000><todo @char>Please Review</todo></color>** | ||
| ===== About ===== | ===== About ===== | ||
| - | [[dido:public:ra:1.4_req:2_nonfunc:16_scalability | Return to Top]] | + | [[dido:public:ra:xapend:xapend.a_glossary:s:scalable]] is the ability of a system to accomplish more work while maintaining the quality (i.e., without degradation) of the products produced or services provided by the system. There are different ways to calculate the work produced or performed by the system, which usually depends on the kind of product produced or services rendered. |
| - | [[ddsf:private:cookbook:06_append:glossary:s:scalable]] is the ability of a system to accomplish more work while maintaining the quality (i.e., without degradation) of the products produced or services provided by the system. There are different ways to calculate the work produced or performed by the system and it usually depends on the kind of product produced or services rendered. | + | For software systems, here are some of the common metrics used to quantify the products produced or the services provided: |
| - | For software systems, here are some of the common metrics used to quantify the products produced or the services provided : | + | * Number of transactions or events per unit of time (e.g., 5,000 credit card transactions a second(( |
| - | + | ||
| - | * Number of transactions or events per unit of time (i.e., 5,000 credit card transactions a second(( | + | |
| Ryan Vlastelica, | Ryan Vlastelica, | ||
| __Why bitcoin won’t displace Visa or Mastercard soon__ | __Why bitcoin won’t displace Visa or Mastercard soon__ | ||
| Line 19: | Line 16: | ||
| [[https://www.marketwatch.com/story/why-bitcoin-wont-displace-visa-or-mastercard-soon-2017-12-15]] | [[https://www.marketwatch.com/story/why-bitcoin-wont-displace-visa-or-mastercard-soon-2017-12-15]] | ||
| ))) | ))) | ||
| - | * Number of tweets processed per unit of time (i.e., 6,000 tweets a second(( | + | * Number of tweets processed per unit of time (e.g., 6,000 tweets a second(( |
| Kit Smith, | Kit Smith, | ||
| __60 Incredible and Interesting Twitter Stats and Statistics__, | __60 Incredible and Interesting Twitter Stats and Statistics__, | ||
| Line 27: | Line 24: | ||
| [[https://www.brandwatch.com/blog/twitter-stats-and-statistics/]] | [[https://www.brandwatch.com/blog/twitter-stats-and-statistics/]] | ||
| ))) | ))) | ||
| - | * Number of hours of videos uploaded per minute (i.e., 500 hours of fresh video per minute(( | + | * Number of hours of videos uploaded per minute (e.g., 500 hours of fresh video per minute(( |
| James Hale, | James Hale, | ||
| __More Than 500 Hours Of Content Are Now Being Uploaded To YouTube Every Minute__, | __More Than 500 Hours Of Content Are Now Being Uploaded To YouTube Every Minute__, | ||
| Line 35: | Line 32: | ||
| [[https://www.tubefilter.com/2019/05/07/number-hours-video-uploaded-to-youtube-per-minute/]] | [[https://www.tubefilter.com/2019/05/07/number-hours-video-uploaded-to-youtube-per-minute/]] | ||
| ))) | ))) | ||
| - | * Number of searches per day (i.e., 3.5 billion searches per day(( | + | * Number of searches per day (e.g., 3.5 billion searches per day(( |
| Maryam Mohsin, | Maryam Mohsin, | ||
| __10 Google Search Statistics You Need to Know in 2020 [Infographic]__, | __10 Google Search Statistics You Need to Know in 2020 [Infographic]__, | ||
| Line 44: | Line 41: | ||
| ))). | ))). | ||
| - | Scalability is about being able to increase the output of products and services without major disruptions, interruptions or increased costs. Often, because of the [[ddsf:private:cookbook:06_append:glossary:e:economyofscale]], the estimates for the costs should actually decline. | + | Scalability is about being able to increase the output of products and services without major disruptions, interruptions or increased costs. Often, because of the [[dido:public:ra:xapend:xapend.a_glossary:e:economyofscale]], the estimates for the costs should actually decline. |
| - | There are different approaches to Scalability: | + | Two valid approaches to achieve Scalability are: |
| - | * [[ddsf:private:cookbook:06_append:glossary:s:scaleup]] is is generally applied to centralized or decentralized systems or products. It amounts to just adding more resources with more powerful versions. This works until you have reached the limits on the [[ddsf:private:cookbook:06_append:glossary:a:availability|availability]] of more power. For example, the speed of the [[ddsf:private:cookbook:06_append:glossary:c:cpu]], memory or even the network. In decentralized (i.e., Cloud Computing) the scaling can either be [[ddsf:private:cookbook:06_append:glossary:v:verticalscaling | Vertical]] or [[ddsf:private:cookbook:06_append:glossary:h:horizontalscaling]]. | + | * [[dido:public:ra:xapend:xapend.a_glossary:s:scaleup]]: An approach generally applied to centralized or decentralized systems or products. It amounts to just adding more resources with more powerful versions. This method works until you have reach the limits on the [[dido:public:ra:xapend:xapend.a_glossary:a:availability|availability]] of more sources power, for example, the speed of the [[dido:public:ra:xapend:xapend.a_glossary:c:cpu]], the amount of available memory or even the network capacity or speed. In decentralized systems(i.e., Cloud Computing) scaling can be either [[dido:public:ra:xapend:xapend.a_glossary:v:verticalscaling|Vertical]] or [[dido:public:ra:xapend:xapend.a_glossary:h:horizontalscaling|Horizontal]]. |
| - | * [[ddsf:private:cookbook:06_append:glossary:s:scaleout]] is usually associated with [[ddsf:private:cookbook:06_append:glossary:d:distsystem]] which by its nature allows for more [[ddsf:private:cookbook:06_append:glossary:n:netnode|Network Nodes]] replicated with prepacked applications (i.e., [[ddsf:private:cookbook:06_append:glossary:d:dapp]]) to be added with minimal cost overhead. In essence, more nodes offering redundant products and services. Another approach is to divide up the problem by functionality. For example, if accessing customer data is the bottleneck, then add more nodes that access the same data. If the access to the actual data is an bottleneck, then adding replications to the data store is recommended. | + | * [[dido:public:ra:xapend:xapend.a_glossary:s:scaleout]]: An approach usually associated with a [[dido:public:ra:xapend:xapend.a_glossary:d:distsystem]], which by its nature, allows for more [[dido:public:ra:xapend:xapend.a_glossary:n:netnode|Network Nodes]], replicated with prepacked applications (i.e., [[dido:public:ra:xapend:xapend.a_glossary:d:dapp]]), that can be added with minimal overhead cost. In essence, adding more nodes offering redundant products and services. Alternatively, one can divide up the problem by functionality. For example, if accessing customer data is the bottleneck, then add more nodes with which to access the same data. If access to the actual data is the bottleneck, adding replications to the data store is recommended. |
| - | + | ||
| - | Both Scaling up and scaling out are valid alternatives. | + | |
| - | + | ||
| - | ===== DDS Specifics ===== | + | |
| - | [[ddsf:private:cookbook:02_body:02_projreq:nonfunctional:16_scalability | Return to Top]] | + | |
| - | + | ||
| - | [[ddsf:private:cookbook:06_append:glossary:d:data_distribution_service_dds]] is a distributed [[ddsf:private:cookbook:06_append:glossary:p:publish-subscribe]], [[ddsf:private:cookbook:06_append:glossary:p:p2p]], [[ddsf:private:cookbook:06_append:glossary:m:mom]]. The [[ddsf:private:cookbook:06_append:glossary:p:publisher|publishers]] and [[ddsf:private:cookbook:06_append:glossary:s:subscriber|subscribers]] each join a [[ddsf:private:cookbook:06_append:glossary:d:domain_dds|DDS Domain]] and immediately start sending a receiving information without the need for setup or configuration. The mere act of publishing and subscribing is all that is needed for configuration. Each [[ddsf:private:cookbook:06_append:glossary:d:ddsnode]] is responsible for providing the computing resources necessary accomplish their tasks. These are generally small in terms of CPU, Memory, and disk space. As a consequence, to scale a solution, just add more nodes to either publish or subscribe. The only limiting factor is the network capacity. Remember, this is P2P, therefore the network capacity is directly related to the the amount of traffic that needs to flow over the network. Need more capacity, add extra [[ddsf:private:cookbook:06_append:glossary:e:ethernet]] capacity. | + | |
| - | + | ||
| - | In a [[ddsf:private:cookbook:06_append:glossary:s:server|server]] based MOM, there is a minimum of two messages for every message sent. One message between the publisher and the server, and another between the server and the publisher. In essence, this halves the network capacity. | + | |
| - | + | ||
| - | DDS also uses an efficient binary transport mechanism (see [[ddsf:private:cookbook:06_append:01_family_of_standards:01_core:ddsi_rtps| DDS Interoperability Wire Protocol (DDSI-RTPS)]]). This further reduces the message traffic to the smallest size possible per message and almost eliminates the cost of [[ddsf:private:cookbook:06_append:glossary:m:marshalling]] and unmarshalling the data at either [[ddsf:private:cookbook:06_append:glossary:e:endpoint]]. [[ddsf:private:cookbook:06_append:glossary:x:xml]] and [[ddsf:private:cookbook:06_append:glossary:j:json]] based messages are sent as [[ddsf:private:cookbook:06_append:glossary:a:ascii]] text that also include the names of each of the fields and delimiters further decreasing the efficiency over the wire. | + | |
| - | + | ||
| - | + | ||
| - | [[ddsf:private:cookbook:06_append:01_family_of_standards:01_core:dds_extensible_types_dds-xtypes]] provides a mechanism to add / remove /modify the [[ddsf:private:cookbook:06_append:glossary:d:dm]] of the each [[ddsf:private:cookbook:06_append:glossary:s:sensornode]] at runtime without the need for reconfiguring the entire network and the communications start in the middleware which automatically collects the configuration data of the configuration data from all the nodes creating a snapshot database from the latest live data from the network. The data can be accessed from the user application using a subscriber using a standard [[ddsf:private:cookbook:06_append:glossary:a:api]] [[ddsf:private:cookbook:06_append:01_family_of_standards:01_core:data_distribution_service_dds | Data Distribution Service (DDS)]]. This allows the user application to remain agnostic to any node replacement in the network and the scaling of the network by updating the user application and processing the data without any coding of the application. And the sensor nodes can join or leave the network at any point in time. This means the nodes can dynamically discover that an update is needed without the need for [[ddsf:private:cookbook:06_append:glossary:d:dns]]. | + | |
| - | + | ||
| - | DDS makes it easier for adding a node and deploying distributed application as the communication stack automatically collects data from all publishing nodes and creates a snapshot database of the latest live data from the network, which can be accessed from user application using standard APIs | + | |
| + | ===== DIDO Specifics ===== | ||
| + | [[dido:public:ra:1.4_req:2_nonfunc:16_scalability | Return to Top]] | ||
| + | : <wrap hi><color red> To be added/expanded in future revisions of the DIDO RA </color></wrap> | ||
| /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||
| Line 75: | Line 59: | ||
| ~~DISCUSSION:on|Outstanding Issues~~ | ~~DISCUSSION:on|Outstanding Issues~~ | ||
| ~~DISCUSSION:off~~ | ~~DISCUSSION:off~~ | ||
| - | |||
| - | |||
| - | |||