The Client
A highly innovative US-based company that technologically enables a large network of nonprofit organizations to conduct their activities more efficiently. The company’s flagship technology represents a powerful, multi-purpose and feature-rich marketing platform that provides online fundraising, advocacy campaigning, external communication and supporter management functionality.
The Scope
Help the client with reengineering the existing Online Marketing Platform to make it scalable, boost performance and expand functionality by adding business processes.
The Challenge
The project required complete software reengineering, which means the following:
- Creating new system architecture – The existing platform had a monocore architecture which included frontend and backend services. Even simple operation required a number of servers and instances. Modularizing the platform architecture saved resources and made the platform scalable.
- Data restructuring – The existing data structure didn’t allow us to use all the benefits of new system architecture, which is why the database was restructured. Every component should work with its special database; a Warehouse collects data from all databases, transforms and stores it.
- Using contemporary technologies – As the Online Marketing Platform was created more than 10 years ago, the technologies used then became aged and hindered platform development and maintenance. Using frameworks, the best databases and cloud services helped to solve scalability and performance problems. Besides that, it made providing new functionality easier.
The Solution
When modularizing the platform architecture, a service-oriented architecture was created. REST API with JSON were chosen for communication between services. Spring Framework allowed to develop the new architecture quickly and with minimum troubles. The platform was Java-based, so Java 8 was selected as a programming language.
MySQL and MongoDB databases used in the legacy platform were replaced with PostgreSQL, which supports migration from most databases and showed reliability, data integrity and correctness in other projects. Using the Hibernate ORM framework gave us the ability to map Java classes to database tables easily. As a result of these improvements, the development process became faster.
To make a data Warehouse, we created a special OLTP system for every service (application) and built a customized ETL process to transform data for storing it in the Warehouse.
Each application/service is configured as a cluster of independent nodes and a distributed in-memory data grid is used to share data between those nodes. So even if one node fails, no data is lost and the application/service continues functioning with no downtime.
The Online Marketing Platform provides 3 main roles: Anonymous User, Manager and Administrator. Besides the security aspects, each role has a special UI. A web-based visual editor was developed for Manager and Administrator roles. Anonymous User refers to Public Facing and Payments Processing apps run in a Cloud.