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

Reengineering Legacy Services For A Leading Marketing Solutions Provider

Type of service: Staff Augmentation

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

Team

1 DevOps
1 Backend Dev
2 Frontend Dev
1 Data Sciences

Diversity Metrics
Gender: 2 women | 3 men
Geographically located: 
Brazil, Colombia, Peru
Ages: 25 - 40 years old

Project Duration

10 month

Technology Stack

Kotlin, Spring Boot, and Gradle
Spring WebFlux for both HTTP server and client
OpenApi for API contract (primarily serving React app)
Spring Data R2DBC for Postgres integration
Flyway for database migrations
Kotest for both unit and integration tests
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

 Challenges 

1.  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.

2.  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.

3.  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 Approach

We proposed an approach enabling seamless collaboration between frontend and backend developers within a unified codebase, exemplified by Vaadin Flow (OSS).
While Vaadin Flow was not explicitly proposed for the client, it has previously demonstrated its efficacy in critical applications, such as an electronic invoice product for Thomson Reuters Brazil over a decade ago. This proven track record underscores its suitability for projects with similar characteristics, emphasizing efficiency, usability, and scalability.

The Results

Through diligent implementation and meticulous testing, we successfully delivered the service, characterized by the following key attributes:

Comprehensive Test Coverage: Utilizing high-level integration tests in a Behavior-Driven Development (BDD) style, we ensured that every conceivable use case scenario, from the simplest to the most complex, was thoroughly tested. This approach facilitated rapid onboarding for new maintainers, providing clear insights into the service’s functionality even for non-technical stakeholders.

Exceeding Test Coverage Targets: Addressing the client’s requirement for a minimum of 90% test coverage, our commitment to quality assurance resulted in consistently achieving test coverage levels approaching 100%, ensuring robustness and reliability of the service.

Actionable Insights through Monitoring: Operational and critical business metrics were seamlessly integrated with Prometheus and visualized through Grafana dashboards. This provided stakeholders with real-time insights into service performance, enabling informed decision-making and proactive issue resolution.

Stability and Resilience: Implementation of circuit breakers when interfacing with external services ensured the stability and resilience of our microservices architecture, safeguarding against service disruptions and enhancing overall reliability.
Following the successful development of the service, we leveraged our learnings to drive further impact.

Development of a Spring Boot Template Repository: Drawing from our experiences in developing the service, we established a reusable Spring Boot template repository. This repository served as a foundational framework, encapsulating best practices and facilitating streamlined development processes for subsequent projects.

Legacy Microservices Modernization: Utilizing our template repository, we embarked on the rewrite of three legacy Vert.x microservices into Spring Boot. Each rewrite was met with success, with notable improvements in latency and throughput. In certain instances, optimizations were so significant that operational costs were dramatically reduced, exemplified by the reduction from 8 Pods to only 2 in production environments.

download now 

Case Study: Reengineering Legacy Services For A Leading Marketing Solutions Provider
Athenaworks will not share your information to any outside parties and only use it to communicate about our products and services . You can unsubscribe at any time.