Architecture of the cesappd
The cesappd
service provides host interface that can be accessed by various clients, first of all: Dogus.
gRPC
cesappd
uses gRPC generated from Protocol Buffer to provide interfaces for other applications. gRPC is characterized by its good performance and low communication overhead.
The gRPC services are defined using proto
files and source code is generated from them using the protoc
protobuf compiler. generated. The generated source code contains the basic structures for the implementation of the client and server applications, namely Services and Services.
Client and server communicate in a binary format that cannot be read well by humans. Supporting clients such as grpcox can be used to translate messages into JSON format.
A gRPC server can provide different services, each described separately in the proto
files. The different services are registered with the gRPC server and are thus available under the same endpoint.
Repository structure
The interfaces, which are defined by means of .proto
files, are located, together with the generated source code in a separate package of cesappd
.
Clients include cesappd
as a library and thus get access to the generated client code to communicate with the server to be able to communicate.
This procedure has the advantage that with each change to client or server code no new release for a (possibly additional) cesappd protobuf repository must be created. As disadvantage results above all that it is more inconvenient to use further programming languages for the client implementation. However, it is not difficult to outsource the interface definitions to an extra cesappd protobuf repository in the future if a different language is used than Golang.
Client-server structure
The gRPC server started by cesappd
provides endpoints that can be consumed by clients. For each service, a separate client and server implementation is available. Thus, the server can contain multiple services that can be targeted by the clients.
The following diagram roughly illustrates the client-server structure.
In it, cesappd
provides various services for logging and monitoring, for example. These services are each accessed by other client applications in this example. If a client wants to access more than one services, the respective client must be used.