Our customer, a major mobile telecom company, provides a platform for business users to integrate mobile communications with their fixed corporate communications, such as landlines, email and instant messaging.
The web application at the core of the platform was being developed in an old-fashioned way. Builds were taking place on external developer machines and source code was not stored in a version control system (VCS) under the customer’s control. Deployments were performed manually across multiple environments, which was slow and error-prone.
The challenge was to modernise the development and deployment process and automate it as far as possible.
Automated Build Pipelines
Automation Consultants put in place a solution hosted in Amazon Web Services that made use of many of the platform’s advanced features to implement continuous integration and deployment (CI/CD), giving a robust, flexible and rapid means of building and deploying the customer’s web application.
After evaluating various different code repository options, it was decided to store the source code in AWS CodeCommit. The first step was to set up a repository in CodeCommit and implement synchronisation with the Git repository hosted by the third party development company. This ensured that an up-to-date version of the code was always available in the customer’s infrastructure.
The next step was to set up the building of the application in AWS, where previously it had been done on external developer machines. The build tool used was Gradle invoked by AWS CodeBuild and orchestrated by AWS CodePipeline. The customer application was a Java-based web application whose build artifacts consisted of a set of .war files deployed onto different servers running Apache Tomcat. There are different variants of the application for use in different geographies. Multiple parallel pipelines exist to cater for the different components of the application, and the different variants of the application.
Once built, the build artifacts were deployed by AWS CodeDeploy, and the creation of each instance of the application was co-ordinated by AWS CodePipeline.
In order to manage the complexity created by the multiple instances and multiple components within each instance, Automation Consultants defined the required infrastructure and configurations in a set of CloudFormation infrastructure as code (IaC) templates.
Automated Infrastructure Provision
As described above, the customer has a Java-based application with a web-based user interface which integrates mobile communications with fixed corporate communications. The application consists of multiple components, and is used in production in multiple geographies. For each geography, as well as the production instance, multiple non-production instances of the application exist for development, testing etc. In summary, the application must be deployed in multiple variants to multiple parallel instances.
To manage the various required environments, Automation Consultants expanded and optimised a set of templates in AWS CloudFormation, AWS’s IaC service, which defined the infrastructure required for each environment. The templates themselves are stored and version-controlled in AWS CodeCommit.
This approach ensures that the infrastructure components required by the different instances of the application are built automatically and consistently.
Automation Consultants’ solution gives the customer much greater control of its own source code and product, with an up-to-date code repository in its own infrastructure. The automated CI/CD pipelines allow the software to be built and deployed rapidly as soon as changes are made by the developers. This results in faster time to market for the customer’s mobile to fixed integration product. The solution also removed the need for manual deployments by the development team, providing more time for innovation and development activities.
The multiple variants and instances of the application are handled more efficiently and with fewer errors because the environments are defined in CloudFormation templates, which in turn are version-controlled in AWS CodeCommit. This makes for higher quality and faster time to market for the customer’s software.