|
@@ -1,4 +1,4 @@
|
|
-The software system architecture describes the relationships and properties of individual software components. It is a model that describes a software on a high-level design. The structure of an architecture can be represented mathematically as a graph, with the nodes representing the individual software components and the edges their relationships to each other. Although the individual components can be executed on the same computer, they are usually interconnected via networks. In general, a distinction is made between the architectures shown in Figure \ref{fig:software-system-architecture}.
|
|
|
|
|
|
+The software system architecture describes the relationships and properties of individual software components. It is a model that describes a software on a high-level design. The structure of an architecture can be represented mathematically as a graph, with the nodes representing the individual software components and the edges their relationships to each other. Although the individual components can be executed on the same computer, they are usually interconnected via networks. In general, a distinction is made between centralized, decentralized and distributed architectures as shown in Figure \ref{fig:software-system-architecture}.
|
|
|
|
|
|
\begin{figure}[h!]
|
|
\begin{figure}[h!]
|
|
\centering
|
|
\centering
|
|
@@ -21,7 +21,7 @@ In a centralized application, the software essentially runs on a central node wi
|
|
|
|
|
|
Typically, most web applications are designed as centralized applications. The clients are usually (mobile) apps or browsers that act as the interface to the user. Examples of this are social networks such as Facebook.
|
|
Typically, most web applications are designed as centralized applications. The clients are usually (mobile) apps or browsers that act as the interface to the user. Examples of this are social networks such as Facebook.
|
|
|
|
|
|
-The advantages of such an architecture include that new clients can easily join the system simply by connecting to the server. Also, the maintenance of the software is easy to perform, since only the server node needs to be updated. Such structures are also advantageous for the speed and the associated user experience since servers are generally reachable via fast connections, have sufficient resources and do not need to use complicated routes across several nodes. Due to the special role of the server, the authentication of a client in the system is easy to perform. Only the server has to check whether the client only performs the actions to which it is authorized and can intervene if necessary. If a client is offline, this has no negative impact on the architecture. Because the software essentially runs on the server, clients not only need to have low resources.
|
|
|
|
|
|
+The advantages of such an architecture include that new clients can easily join the system simply by connecting to the server. Also, the maintenance of the software is easy to perform, since only the server node needs to be updated. Such structures are also advantageous for the speed and the associated user experience since servers are generally reachable via fast connections, have sufficient resources and do not need to use complicated routes across several nodes. Due to the special role of the server, the authentication of a client in the system is easy to perform. Only the server has to check whether the client only performs the actions to which it is authorized and can intervene if necessary. If a client is offline, this has no negative impact on the architecture. Because the software essentially runs on the server, clients only need to have low resources.
|
|
|
|
|
|
The biggest disadvantage with this architecture is that with the failure or the blockade of the server, the entire system collapses. So, the server is the single point of failure of the whole system. Due to the design, the server has all the data. This makes him not only a popular target for hackers but also brings the clients into total dependency on the server. Having access to all the data can be used to provide an improved user experience by adapting the software to the user's needs. But it can also be used for targeted advertising or sensible data can even get sold to third parties. Furthermore, the server decides which data to send to the client, which brings with it the danger of censorship. As the number of clients increases, the server must scale to have sufficient resources.
|
|
The biggest disadvantage with this architecture is that with the failure or the blockade of the server, the entire system collapses. So, the server is the single point of failure of the whole system. Due to the design, the server has all the data. This makes him not only a popular target for hackers but also brings the clients into total dependency on the server. Having access to all the data can be used to provide an improved user experience by adapting the software to the user's needs. But it can also be used for targeted advertising or sensible data can even get sold to third parties. Furthermore, the server decides which data to send to the client, which brings with it the danger of censorship. As the number of clients increases, the server must scale to have sufficient resources.
|
|
|
|
|
|
@@ -29,7 +29,7 @@ The biggest disadvantage with this architecture is that with the failure or the
|
|
\label{sec:decentralized-applications}
|
|
\label{sec:decentralized-applications}
|
|
What are advantages and disadvantages of centralized applications is largely reversed in decentralized systems. Unlike centralized applications, decentralized applications do not have a single point of failure. But there is no node in the system that has all the data which makes accessing information sometimes hard. There are any number of nodes that perform the tasks of a server and by exchanging with other servers in total form a complete system.
|
|
What are advantages and disadvantages of centralized applications is largely reversed in decentralized systems. Unlike centralized applications, decentralized applications do not have a single point of failure. But there is no node in the system that has all the data which makes accessing information sometimes hard. There are any number of nodes that perform the tasks of a server and by exchanging with other servers in total form a complete system.
|
|
|
|
|
|
-Thus, the advantages of decentralized applications include, in addition to the already mentioned increased reliability, even further advantages. Each server only records the amount of users covered by its resources. New servers contribute new resources to the overall system. Distributed applications can not be disabled easily because a new server can be started at any time that does not fall under a lock. Because the data are not centrally available, they can not be evaluated, so that user data are better protected. Also, there is no longer an attack target whereby hacking a single server loses lucrativeness.
|
|
|
|
|
|
+Thus, the advantages of decentralized applications include, in addition to the already mentioned increased reliability, even further advantages. Each server only records the amount of users covered by its resources. New servers contribute new resources to the overall system. Distributed applications can not be disabled easily because a new server can be started at any time that does not fall under a lock. Because the data are not centrally available, they can not be processed, so that user data are better protected. Also, there is no longer a prominent attack target. So, hacking a single server loses lucrativeness.
|
|
|
|
|
|
The drawbacks include the difficulty of finding data because they are spread across multiple servers. Search functionalities are thus difficult to implement. If a server is taken offline, the data is no longer available, even if the system itself remains functional. Since there is no longer a central point that is managed by an operator, rolling out updates is difficult. This raises the challenge that server nodes of different versions can still work together.
|
|
The drawbacks include the difficulty of finding data because they are spread across multiple servers. Search functionalities are thus difficult to implement. If a server is taken offline, the data is no longer available, even if the system itself remains functional. Since there is no longer a central point that is managed by an operator, rolling out updates is difficult. This raises the challenge that server nodes of different versions can still work together.
|
|
|
|
|
|
@@ -58,6 +58,6 @@ The following table \ref{tab:comparison-architectures} compares the main feature
|
|
\multicolumn{1}{|l|}{Performance} & ++ & + & \\ \hline
|
|
\multicolumn{1}{|l|}{Performance} & ++ & + & \\ \hline
|
|
\multicolumn{1}{|l|}{\begin{tabular}[c]{@{}l@{}}Data \\ Availability\end{tabular}} & ++ & + & \\ \hline
|
|
\multicolumn{1}{|l|}{\begin{tabular}[c]{@{}l@{}}Data \\ Availability\end{tabular}} & ++ & + & \\ \hline
|
|
\end{tabular}
|
|
\end{tabular}
|
|
- \caption{Comparison of different software system architectures on scalability, maintenance, system stability, performance and data availability.}
|
|
|
|
|
|
+ \caption{Comparison of different software system architectures on scalability, maintenance, system stability, performance and data availability. The pluses indicate how positive something is relatively to the other systems.}
|
|
\label{tab:comparison-architectures}
|
|
\label{tab:comparison-architectures}
|
|
\end{table}
|
|
\end{table}
|