Client-Server Architecture
A client-server architecture connects client devices and applications with server processors and processes.
Machine Learning Client-Server Components
The diagram below shows how Machine Learning functions can be distributed among client-server components:
Machine Learning Client-Server Aspects
Functional Independence
Clients and the various types of servers perform functions that are different in nature. Separating them into deployment groups allows appropriate resources to be applied to each group, including:
staff
devices
processes
Deployment Flexibility
Deployment flexibility has a number of dimensions:
device geographic locations
device power
device features
device numbers
device redundancy
process configuration
code deployment
function support
High Availability
High availability aims to ensure an agreed level of operational performance.
In a client server architecture, component redundancy is inherent in clients and can be applied to servers.
Availability percentages of a particular order of magnitude can be referred to by the number of nines in the digits. So, for example, .99 = two nines and .9999 = four nines.
One way to express system availability is using the floor function, which takes an input and gives as output the greatest integer less than or equal to the input. So, the floor of 3.7 is 3 and the floor of -3.7 is -4.
To apply the floor function to determining the class of 9s availability, we can use the equation:
Serverless Computing
Serverless computing isn’t really configured without servers. Servers are deployed automatically by cloud platform providers. Aspects of this approach can include:
Automated Code Deployment: application code is automatically run on cloud provider servers as needed by client system demand.
Automated DevOps Services: cloud providers manage aspects such as code deployment, monitoring, security, and recovery.
On Demand Pricing: cloud provides charge based on resource usage.