Success Stories

Searchmetrics. RESTful API Design.

Re-engineering and Modernization of Modern REST API

Overview

We partnered with Searchmetrics, a global data provider, software platforms, and expertise that drive online revenue and elevate brands. The company develops long-term solutions that tackle the challenges of the online world and offers an integrated software platform, the Searchmetrics Suite, consisting of four core products.

Searchmetrics started modernizing its public REST API to provide a better user experience, comply with the latest security standards, improve performance, and reduce development costs. On the administrative side, they also began transforming some of their internal monolith applications into microservices, for which they needed our assistance.

Challenges

Ultimately, Searchmetrics wanted its new products to be built around a smaller, well-proven, stable technology stack that would fit well in the cloud. The legacy stack, however, was significant and often relied on weakly-typed programming languages such as Bash, PHP, Python, Ruby, and JavaScript, but also included strongly typed ones such as Go and Java.

They also needed a single-source-of-truth solution, as their internal applications had intersecting functionality and data output, which affected the reliability and consistency of the latter, forcing users to prefer raw sources instead. In addition, data had to be pulled from various sources, including internal databases and systems such as Matomo and Oracle NetSuite. Then had to be aggregated and changed to another format that was more suitable for use with other systems such as PowerBI, Marketo, and Strikedeck.

Solution

The team conducted an in-depth analysis of the existing code base, documented its specifics in Confluence, and created a migration and implementation plan for them.

Everything we developed was designed from the ground up, having the existing architecture and feature specifics in mind to maintain compatibility. Our goal was to deliver solutions that operate entirely in a cloud environment, where the management of it and its inhabitants is done through well-defined, automated procedures. To manage the development process, we’ve used the KANBAN methodology.

The new solutions were engineered with Amazon Web Services, in particular, EC2, ECS, ECR, S3, Route 53, ELB, KMS, RDS, Lambda, Cloud Watch, and Cloud Formation. The products were developed in Java, based on the Spring Boot framework, focusing on components such as Spring Cloud, Spring Security, Spring WebMVC, Spring Batch, Micrometer, and JUnit. We used PostgreSQL and MySQL databases, while their schema version control was done via Flyway. Where applicable, we have provided REST API documentation in the OpenAPI specification generated automatically by Spring Fox.

To export data from Oracle NetSuite, we implemented an additional adapter layer of RESTlet components written in TypeScript that were migrated to Javascript before deployment in NetSuite. The chosen source code control system was git, along with the git-flow methodology. Once committed, the source automatically went through the unit and integration testing, verifying the solution's ability to run in a container.

The last step in the solution compilation process was a code quality analysis. Upon success, the end product, consisting of multiple Docker containers, was automatically deployed to a staging environment for further testing by engineers and then to Production. The environment was also managed with code and versioned in git - for this purpose, we used a combination of Ansible and Cloud Formation configurations.

Finally, after deployment, all service metrics and logs were monitored by dashboards created in Datadog and alert triggers were set up to notify a specific group of users in case of detected anomalies.

Results
  • Laid the foundation for a modern REST API in line with the latest industry standards and conventions, serving as a guide and template for further extension
  • Reduced development and maintenance efforts so that a smaller team of Searchmetrics engineers can manage the REST API project on their own
  • Achieved optimization by successfully decommissioning several old polyglot applications in favor of a single one written in Java 11 that provides the same output
  • Improved the robustness and resilience of internal data export and data aggregation processes by introducing the concept of batch processing of large pieces of data
  • Ensured proper compliance with GDPR personal data management requirements by utilizing the encryption and data retention features of AWS S3 and Oauth 2.0
  • Designed a reproducible, single-click deployment process for all projects and their containing environment
Quick Facts
Duration: 3 months

Technology Stack: Java 11, Spring Boot, Spring Cloud, Spring Security (incl OAuth 2), Spring WebMVC, Spring Batch, PostgreSQL, MySQL, Flyway, AWS, Micrometer, DataDog, JUnit, TypeScript, Docker, Ansible

Team: 3 Software Engineers

Let's talk about your Ideas.

Contact Us