Platform Migration Casestudy

The Problem Statement

  • The company was in the business of tracking phone calls made against a running campaign, as accurately as clicks and then learning how the marketing team can improve conversion rates and drive more revenue.
  • The company also tracked the prospects through the offline blindspot and understood what drove a customer to call back.
  • Know which ads, campaigns, and channels are generating inbound calls and which are not.

Solution Needed

  • The existing solution was monolithic and was difficult to reuse
  • The company wanted us to break this monolithic application into a modular application wherein the sepparts/componentsonents could be re-used. E.g. Search UI, TAG Management…
  • The company was not use on the technology to be used and wanted to do POC’s to come up with a comparative study and thus be able to choose the relevant technologies.
  • Also, at the service layer the company wanted to come up with a distinction between private API’s and public API’s via two separate gateways.
  • The solution was to provide end-to-end functionality and testing.

Our solution

  • Based on the various POC’s Spring Boot was selected because of its seamless integration with spring cloud which has libraries like Eureka and Zuul which are being used for service discovery and routing.
  • Worked closely with Product Management to identify customer scenarios and component level interaction/integration tests.
  • Designed API gateway and script gateway to act as an entry point for different services. API gateway is private and is protected by JWT authentication and script gateway hosts public services.
  • Designed multi module projects services using spring cloud Eureka and zuul services for service discovery and routing.
  • Developed a service to create TAG management rulesets. This was done using graph database as backend to create rules which can be filtered to map campaigns to inbound calls.
  • Developed front-end using Angular and continuously kept upgrading it to the latest versions (currently Angular5).
  • Along with the UI built in HTML5, SASS and Angular 5 with typescript, used Karma and Jasmine for unit testing.
  • Incorporated integration testing using protractor.
  • Managed states on the front-end to speed up the experience using ngrx(an rxjs based library).

Tools

  • Spring Cloud using microservice pattern– (Eureka for service discovery, Zuul for service routing) Spring boot framework, Drop Wizard Framework
  • Neo4J
  • Junit, Mockito
  • Auth0 was previously used now migrating to JWT to be used with drop wizard service. This is bring consistency across various apps that will help in SSO.
  • Kafka
  • Angular5, SASS, HTML5, Ngrx for development
  • Karma, Jasmine for unit testing
  • Protractor for integration testing
  • Docker and Jenkins.
  • Docker Swarm