Naranja was created in the field of sporting goods 33 years ago and re-converted itself to become the main issuer of credit cards in Argentina, with 9 million plastics, 238 branches, and more than 3,500 employees.
The client made the decision to move their existing services online and to develop new business opportunities quickly without compromising quality.
To do this, they developed a “Digital Evolution” plan based on Cloud technology and Agile methodologies [that require a DevOps role in each digital product squad].
This role was centralized by the Engineering team and has been responsible for providing the different Naranja digital product squads with automation tools. Those tools were focused on:
- Automating the integration of the code they develop
- Automating the corresponding tests cases to ensure their quality
- Automating the deployment of the product to the cloud, ensuring high availability, scalability, fault tolerance, and rollback techniques to minimize the impact of eventual errors.
Initially, the client did not have in-house expertise in these technologies, so they decided to implement a DevOps-driven methodology, and created a joint task force together with Allata members who had the necessary knowledge to contribute to the solution.
The challenge of Project “Wiru” was the Developer Experience Engineering Team initiative to provide all the different Naranja squads with only one CI/CD pipeline tool simplifying the automation tasks in each digital product squad.
After analyzing various existing solutions, the Developer Experience Engineering Team opted to develop Wiru. The focus of this product is to meet all the requirements needed by the developer’s teams who would be the end-users of the product.
The product is a framework that automates the integration, testing, deployment, and monitoring of applications developed, giving developers independence of the necessary components for the deployment and operation of the application.
The activities undertaken to implement the solution were:
- Deployment methodology updated to incorporate the new tool
- Development of automation specifications
- Integration of distributed code repository to launch automations
- Applications were deployed in microservice architectures, within containers orchestrated with Kubernetes
- Implementation of applications using serverless-based functions
- A multi-cloud product was adopted since the system was using various cloud providers such as AWS and Azure
- Applications were deployed in several regions to ensure high availability
- Automatic test suites for different platforms were incorporated
- Applications made with various technologies and frameworks, including Node.js and Angular, were packaged
- Specific structures such as APIs, authorizers, certificates, namespaces, and serverless functions were generated in cloud environments
- Monitoring and alert solutions such as DataDog and ElasticSearch were integrated
- A set of “templates” was developed to automate and consolidate the different jobs that must be executed during each stage
- Different functions were implemented and coded in the Wiru core, to comply with the different Stages required by an Automated Deployment Pipeline
To successfully complete the project, several technical and practical challenges had to be overcome:
- We managed to make the product able to migrate existing structures without an outage of deployed applications
- Developers no longer had to deploy important changes to their code in order to adapt to specifications
- We provided flexibility. so that Wiru can execute unforeseen tasks or ones that need specializations
- We achieved team adoption of the new tool, by explaining its uses and advantages
- Automation of the entire process, from code uploaded to the repository up until made available to users. Wiru runs the test, build, and deployment stages.
- Wiru allows applications to be deployed quickly, and in accordance with Agile and DevOps methodologies, starting from a simple commit to a repository, up until its deployment in a Kubernetes cluster, allowing rollback if necessary
- Automation of tests execution, to guarantee the correct functioning of every application component
- Unification of the different jobs that are run so that they comply with the client’s standards in terms of infrastructure, billing, and security.
- The digitals products squads have no dependencies of a DevOps role for ci/cd tasks.
- Flexibility to fit and extend particular squads scenarios in the digital product squad.