Technology stack

This page list all the tools, softwares and external services used in implementing the services.

Source code management

Source code of services should be version controlled, and managed in the company Github repository.

Webserver

No services should rely on any specific webserver. Apache (>=2.4), Nginx (>=1.17) and the built in php webserver (in the developoment environment) should be supported.

Data storage

To store data, services should use MySQL Community Server (8.0.19) with InnoDB storage engine. The location of production, staging, test and development environments are TBD. For non SQL storage additional software may be used. For document storage Elasticsearch, for key-value storage Redis and Memcached are preferred

Message Queue

Any events generated by the services should be stored and delivered using RabbitMQ

Programming language

All services should use the latest version of PHP (>=7.4.2). Wherever applicable PSR standards must be followed, and when available open source implementations should be used. In particular:

Coding style

All code should adhere to the PSR-12 Extended Coding Style

Inline documentation

Any documentation contained within the codebase should follow the proposed PSR-5 PHPDoc and PSR-19 PHPDoc tags standards

Application framework

Slim Framework (>=4.0) should be used to implement the routing of API endpoints.

Data access

Access to the database should be implemented by using the standard PHP PDO library.

Package management

Open source software library dependencies should be satisfied using Composer dependency manager.

Autoloading

Autoloading of classes should be achieved by using Composer dependency manager.

Logging

The service should use our existing logging infrastructure, implementing an API client conforming to PSR-3, preferably based on Monolog.

Instrumentation

To keep track of application metrics, usage statistics, health, the already available Statsd service should be used. The gathered data should be made available on our Graphana dashboard