10+ Years In Business | 4 Continents |
16+ Countries | 32+ Locations

Reengineering Legacy Services For A Leading Marketing Solutions Provider

Project Overview

Streamlining Marketing Campaign Management

With a vision to streamline their marketing campaign management process, our client sought to develop a new backend service, allowing customers to efficiently input campaign details such as budgets, duration, and target locations.

The client aimed to modernize their infrastructure by rewriting three legacy microservices using Vert.x, Kotlin, and Spring Boot technologies. Initially, our team was made up of two backend developers and three frontend developers for the service, with the frontend built using Typescript and React. To bolster our efforts, the client’s platform team provided crucial support with AWS, Kubernetes, CI/CD, and security aspects throughout the project’s duration.

Industry

MarTech

Initial Go-to-
Market Timeline

10 months

Tech Stack

  • WireMock for mocking/stubbing the REST services we had to consume
  • Micrometer for observability
  • Prometheus as a sink for observability metrics
  • Grafana as metrics dashboard
  • Docker as the container for our applications/service
  • Kubernetes as our container orchestration runtime

Team
Composition

  • 1 DevOps
  • 1 Backend
  • 2 Frontend
  • 1 Data Engineer

Client Background

The client is a global leader in digital solutions for destination marketing. With a mission to revolutionize the way travel brands engage with their target audiences, operating one of the world’s largest travel ad networks, giving access to over 100 million travel shoppers monthly. Their direct publisher integrations circumvent ad exchanges and ensures destination-specific targeting and maximizes engagement rates across large-format ad units.

Facilitating over $1 billion in annual bookings for advertisers, the client leverages its expertise and market insights to introduce innovative solutions to destination marketers. This case study highlights one of the several projects within our ongoing partnership, showcasing how our collaborative efforts drive value and success

The Challenge

  • Adapting to Pre-Established Designs: Our engagement commenced after the solution design phase had concluded, leaving us with the task of understanding pre-established designs and business domains to execute implementation effectively.
  • Absence of Internal Spring Boot Template: The absence of an internal Spring Boot template necessitated the development of one concurrently with project delivery, adding complexity to our workflow.
  • Balancing Performance and Simplicity: Lack of precise nonfunctional requirements, such as concurrent user support and latency thresholds, led to potential over-engineering. For instance, while utilizing Spring Reactor APIs for HTTP and Postgres integration enhanced performance, it introduced tradeoffs in code simplicity that were not initially anticipated.

The Solution:

The project spanned four months for the development of the service and six months for rewriting the three legacy Vert.x services. Adopting a lightweight Scrum approach, we conducted two or three daily meetings per week, held retrospective meetings post-sprint, and engaged in refining sessions prior to each sprint. Furthermore, our workflow included rigorous code reviews, ensuring the quality and coherence of our deliverables.

Since we already had a design to follow, we implemented it using a modern stack. We had to develop an internal Spring Boot template leveraging the libraries and tools we needed for the final solution.

Implementation

Despite leveraging an OpenAPI specification, our implementation journey often required iterative refactoring to enhance and address issues within our API. As collaboration between the front and backend teams progressed, certain features necessitated rewrites to meet evolving requirements and optimize performance.

While we possessed the capability to suggest alternative technology stacks, the predetermined stack by the client remained unchanged throughout the project’s duration. However, for solutions characterized by:

  • Minimal emphasis on brand or visual identity
  • Primarily focused on data entry forms rather than web content
  • Limited user base, typically ranging from a dozen to hundreds of users