PROFESSIONAL PROJECT
PHP-Based CI/CD Platform & High-Availability Web Infrastructure
Software Engineer · La Banque Postale
Overview
As a Software Engineer at La Banque Postale, I contributed to designing and developing a custom CI/CD platform and standardized hosting infrastructure supporting more than 60 internal web applications.
Our team was responsible for developing and maintaining numerous PHP applications used by Groupe La Poste's IT operations teams. As the application portfolio grew, we needed a consistent way to manage infrastructure, automate testing, deploy releases, and recover quickly from failed deployments.
We implemented a shared hosting architecture with load-balanced web servers, MySQL replication, and disaster recovery infrastructure, replicated across development, qualification, and production environments.
For CI/CD, we combined GitLab CI for automated testing with a custom deployment application developed using our CakePHP-based framework and AngularJS.
The platform automated application onboarding, infrastructure configuration, version deployment, database migrations, backups, and rollback operations.
The result was a centralized deployment ecosystem supporting 60+ applications with standardized release processes, high availability, and integrated recovery capabilities.
About the project
Standardizing Infrastructure for 60+ Applications
At Groupe La Poste, our development team maintained more than 60 web applications supporting different IT production activities. Managing separate infrastructure and deployment processes for each application would have created significant operational complexity.
We therefore developed a shared hosting architecture that could support the entire application portfolio. The infrastructure included three web servers per environment:
- Two servers in the primary data center, operating behind a load balancer to provide high availability.
- One server in the disaster recovery data center, providing an additional recovery capability.
We implemented a similar architecture for the database layer, using three MySQL servers with replication: two in the primary data center and one at the disaster recovery site.
This architecture was reproduced across three environments: development, qualification, and production. Each environment had a specific purpose:
- Development: Developers could create individual work areas directly on the shared servers.
- Qualification: Stable versions were deployed to validate multiple features together before production release.
- Production: Validated releases were deployed through a controlled process with backup and rollback capabilities.
Building a Custom CI/CD Deployment Platform
We used GitLab CI for automated testing but decided to develop our own application deployment platform. Although existing deployment solutions were available, we needed capabilities closely adapted to our infrastructure and operational requirements. We built the application using PHP, our custom CakePHP-based framework, and AngularJS.
The deployment platform allowed developers to register and configure applications through a centralized interface. Application onboarding included:
- Creating the application's DNS entry.
- Generating the required web server configuration.
- Associating a Git repository.
- Registering one or more application databases.
- Configuring the application across the appropriate environments.
Once registered, an application could be deployed directly through the platform.
Automating Releases, Database Migrations, and Rollbacks
We implemented different deployment strategies depending on the target environment :
- For qualification, developers could deploy a specific Git branch or commit to validate changes before release.
- For production, deployments were based on Git tags associated with the master branch, providing a clear reference to the released version.
The deployment process included several safeguards:
Application Code Backup
Before replacing the deployed application, the platform created a backup of the existing code to support recovery if the new version caused problems.
Database Migration Management
Developers could execute database migrations directly through the deployment interface. Before applying database changes, the platform created a database backup, allowing recovery if a migration failed or introduced an issue.
Rollback Capabilities
We developed rollback mechanisms allowing teams to return to a previous application version or restore database state when required.
Deployment Monitoring
The application provided interfaces to monitor deployments, identify errors, and quickly initiate recovery procedures.
Release Traceability and Communication
Every deployment was traceable, and developers could send changelog notifications to recent application users or predefined distribution lists. This created a consistent process covering the entire release lifecycle, from development to production.
4. Integrating Testing and Deployment Workflows
Automated testing was handled through GitLab CI, while our custom application managed deployment and release operations. This separation allowed us to use established CI capabilities while maintaining complete control over the deployment features specific to our infrastructure.
The combination of automated tests, qualification environments, controlled production releases, and integrated rollback capabilities helped us manage a large application portfolio through a standardized workflow.
My contribution
- Full-Stack CI/CD Tooling Development: Contributed to the design and development of the custom deployment application using PHP, our CakePHP-based framework, and AngularJS.
- Deployment & Release Automation: Implemented features supporting Git-based deployments, application configuration, database migrations, code backups, rollback procedures, and deployment tracking.
- Infrastructure Standardization: Participated in building the shared web and MySQL hosting architecture across development, qualification, and production environments, including load balancing and disaster recovery capabilities.
- DevOps & Team Collaboration: Worked with the development team to integrate GitLab CI automated testing with the custom deployment platform and establish consistent release practices across the application portfolio.
Outcomes
- Standardized deployments for 60+ internal applications: Centralized application configuration, version deployment, database management, and release tracking into a shared platform.
- Established 3 consistent hosting environments with disaster recovery: Implemented development, qualification, and production infrastructures, each using three web servers and three MySQL servers distributed across primary and recovery data centers.
- Automated application onboarding and release operations: Enabled DNS creation, web server configuration, Git repository association, database registration, and deployments through a centralized interface.
- Introduced built-in deployment recovery mechanisms: Automated code backups and pre-migration database backups, with rollback capabilities to recover from failed application releases or database changes.