Lancaster Solution micro-services

Lancaster Solutions

Lancaster Solutions project is a set of full-stack and MEAN stack, multiple domain specific projects (micro services), each developed to satisfy some specific business needs, but together they function as large business platform.

The architecture is heavily based on REST APIs and centralized security solution for internal micro service communication.

Technologies: Symfony, Doctrine, MariaDB, MongoDB, Node.js, Redis, Gearman, REST, Javascript, AngularJS, Docker

Here are some of the Microservices of the family:

Contact

General purpose, provider based communication micro-service. It is intended to provide communication needs for all the other micro-services. Doesn’t matter if it is SMS, Email, phone call or other communication layer. The goal is to provide unified interface for whatever business dictates as necessary.

Help desk

Customer management and support platform. Intended for managing customers and helping them, when necessary. Includes customer features, ticket system and support – customer communication channels.

Back office

Being a micro-service itself, it is created to manage other micro service data. Basically, it is the central for administrators, affiliates and company owners. Here they can manage their company data, view statistics and customize their solutions.

Job – queuing solution

Simple, yet powerful queuing solution for providing internal communication channel between the micro-services. Introduced not only to provide possibility to send information from one service to another, but also to persist data temporary and allow micro services to process them on a scheduled basis.

Member zone

Platform for providing a unified environment to the business platforms of other companies. For example, if a country-wide dentist franchise wants to have a unified platform for all their clients, to run marketing and have a unified front-end page, their front-end can be created here for the customers to come and be able to use the micro-service stack functionality, like support.

Notifications

MEAN stack-based notification system for real-time client side notifications. Powered by Node.JS and Socket.IO technology, this queue based notification server works lightning fast. Anything that wants to communicate, just pushes notifications in the queue and they get displayed via front-end.

Payment

Provider based, general payment solution for handling sale, authorization, capture, charge-back, refund and 3D secure payment transactions. This micro-service provides unified interface to use multiple payment providers, and allows to switch between them easily.

Statistics

Elastic search and Symfony based statistics aggregation micro-service. The intention is to abstract statistics logic and aggregation with REST API. Necessary since Elastic search can become less productive with amount of data growing bigger, and it might become necessary to introduce big data solutions. When the time comes, it will be a lot easier to migrate.

Subscription

The platform for managing different subscription models and corresponding subscriptions. The subscription model defines the business process of the subscription life-time. The subscription itself is a record, persisting information about customer being subscribed to some service. This micro-service is also responsible for management of the corresponding subscription payments.

Dev docs

Special document repository intended for developers. We follow latest trends in PHP world and improve our skill-sets with PSR and other code quality standards. But sometimes it is not enough. So, to fill the blank spots of thr code style and quality, we develop our own (with respect to PSR) standards to maintain the code and avoid smelly code.

Not only the coding style is discussed in these docs. It also focuses on topics for new-comers to join the development team quickly and produce high quality results by respecting the already produced source and solutions.

Afterword

Developing software this way, makes it possible to reuse different functional modules across different systems, it also makes the development process harder and more time consuming.