Contexte
Existing processing modules, no integration between them
The customer came to us through hearsay, looking for an experienced partner in the industrialization of complex systems.
The processing modules, intended for defect detection during the manufacturing of aeronautical metal parts using an industrial 3D printer, already existed and were functional, but the system had never been deployed outside a laboratory environment.
Furthermore, there was no orchestration pipeline capable of collecting the output of one module and passing it to the next: everything was manual and interfaces were not clearly defined.
All best practices and actions required for a reliable and controlled deployment had to be defined and implemented, and more generally, modern software development best practices needed to be introduced.
Our approach
Creation of the orchestration pipeline
The project consisted in structuring existing Python modules within a processing pipeline and orchestrating executions in an asynchronous and robust manner using Celery, with control exposed through a REST API.
The project started with dependency standardization and upgrades, followed by containerization of the modules using Podman.
We proposed Django for its ORM capabilities, coupled with Django REST Framework for the API layer.
Execution logs were added to trace the different steps of pipeline execution.
Test strategy and CI/CD implementation
A comprehensive testing strategy was implemented, combining unit tests and integration tests in order to provide the client with a solid foundation and non-regression tests that enable safe and confident evolution.
The CI/CD pipeline handles packaging, versioning, and publishing of components to a GitLab Container Registry, ensuring clear traceability of deliveries.
Industrializing the solution
The solution was industrialized for production use, with the implementation of security mechanisms (HTTPS, JWT authentication) and software protection through a license / USB dongle system.
Deployment relies on a containerized architecture (Podman / docker-compose), using a PostgreSQL database (ans SQLite for development).
An auditable traceability of defects detected during printing jobs is ensured by logging, along with the exact versions of the software components used.
Handover and documentation
The handover was supported by the writing of detailed architecture documentation and by CI-driven auto-generation of API documentation using Swagger. Among other things, we documented the way to add future modules in the processing chain.
User guides and operating manuals were also produced to ensure team autonomy and long-term sustainability of the solution.
Results
A product ready for deployment, with a secured future
The product is now capable of being deployed in real-world conditions outside the laboratory and has been handed over to the client.
The client is able to continue deployments himself and rely on a robust CI/CD pipeline.
Technical debt is under control, and the project can move forward with confidence.