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
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
10 month
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
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.
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.
Join our global team of top tier talent
Find your next career opportunity at Athenaworks.