  With a large variety of communication methods and protocols, many software
architects face the problem of choosing the best way for services to share
information. For communication technology to be functional and practical, it
should enable developers to define a complete set of CRUD methods for the
processed data. The research team compared the most commonly used data transfer
protocols and concepts in this paper: REST, WebSocket, gRPC GraphQL and SOAP.
To do that, a set of web servers was implemented in Python, each using one of
the examined technologies. Then, the team performed an automated benchmark
measuring time and data transfer overhead for a set of defined operations:
creating an entity, retrieving a list of 100 entities and fetching details of
one entity. Tests were designed to avoid the results being interfered by
database connection or docker-compose environment characteristics. The research
team has concluded that gRPC was the most efficient and reliable data transfer
method. On the other hand, GraphQL turned out to be the slowest communication
method of all. Moreover, its server and client libraries caused the most
problems with proper usage in a web server. SOAP did not participate in
benchmarking due to limited compatibility with Python and a lack of popularity
in modern web solutions.
