The client, an agency specialising in custom brand and technology design, approached us for help on a struggling project. The initial plan had become bogged down with unmanaged changes to team structure and product architecture. Various teams involved in the project also followed inconsistent practices, compounding the challenge. Our job was to find order and apply structure - and together help usher this project across the finish line.
The client’s customer, a B2B equipment tracking services provider, runs their entire ecosystem on cloud-hosted web services and mobile applications, so the focus of the project was on optimising app development and release. The initial plan had been to build a cloud-based platform with automated CI/CD, but as the project had started to waver, the customer (let’s call them Company B) had requested to take ownership of all resources. They also wanted to move them all onto AWS cloud, whereas previously repositories had been located across different local servers with only some cloud infrastructure in use. Once location and ownership had been established, our focus shifted to the more technical aspects of the project:
The bulk of this particular engagement was documentation and file structuring, creating a well-laid foundation for future work. We began with an audit of AWS resources, Gitlab repositories, application structures and access to the various environments in use. We used this information to map repositories to pipelines and resources, and to generate documentation for all this, which had been missing. Newly consistent tagging and naming created an orderly structure for easier locating and referencing, and we ensured that applications with database connections continued to work despite these changes.
Once this foundational work was completed we turned our attention to optimising delivery. We reconfigured pipelines to minimise the time it takes for full deployment, which was crucial as previously this process had required too much manual involvement to be truly efficient. We selected AppCenter to configure mobile CI/CD automation, another important new feature as this allowed teams to quickly set up mobile pipelines which include building, testing and beta release. We then created a pipeline that automatically moves production data into staging once a week, which helped ensure that both environments would always correspond to each other.
This was key, because over time, Company B’s staging and production environments had started to diverge, and no longer provided a reliable means of managing deployments of new products or updates to existing ones. We cleaned up both environments and activated the new pipeline to ensure consistency in the future. For all four environments, we implemented Liquibase as a database migration solution. This helped with version control and further minimised manual involvement.
Not all work is flashy or showy - one of the most important contributions we sometimes make is creating a solid and well-laid foundation on which clients can build and grow. This engagement was such a project. Eight weeks of collaboration between three teams resulted in:
More effective automation
Better quality assurance
Even with products already in use it is never too late to implement cleaner processes and better productivity and project management tools. Similarly, good documentation is crucial for the long term and to avoid legacy issues further down the line - so it is always a good time to start with that.