Skip to content
Lyes Sefiane edited this page Feb 18, 2023 · 18 revisions

Welcome to the M.E.R.I.T!
Multi-Element Relationally Interconnected Topology

Table Of Contents

Introduction

R&D isn't a title or a label. It's a mindset πŸ˜‰.

Preamble

Research and development (Aka R&D) includes activities that companies undertake to innovate and introduce new products and services. It is often the first stage in the development process. The goal is typically to take new products and services to market and add to the company's bottom line.[1]

To stay ahead of the curve, organizations have to boost the innovation culture in their R&D teams to make it stronger.

How can they achieve this ? [2]

  • Deliver world-class innovation
  • Focus on building a strong diversity culture
  • Grow strong cross-functional [ Teams x Domains ]

There are three types of R&D [3]

  • Basic Research
  • Applied Research
  • Development Research

The development research (unlike applied research, which concentrates on preparing products for the market) strives to increase customer productivity by providing solutions to improve the production of goods. The goal is to solve customers' problems by simplifying their tasks. This is where I focused my efforts in past 5 years with Ciena's Service Organization. That have been said, the Development Research could easily be swapped to an Applied Research.

Problematic

Under certain circumstances, the access to organizations labeled 'R&D' requires commonly what we may call 'the merit' and this is regardless the type of R&D, the geographical localization, the citizenship and the age of the candidate etc...

How to earn this 'merit' in order to work with any R&D type through time and space ?

Solution

β€œMerit, however inconsiderable, should be sought for and rewarded. Methods are the master of masters.” ~ Charles Maurice de Talleyrand

Based on Charles Maurice de Talleyrand quote I have decided to design & implement it. M.E.R.I.T : The Next-Gen Microservices based solution was born !

The Multi-Element Relationally Interconnected Topology aims to provide an answer to the following question :

  • How to design an interconnected elements model in the context of the Graph theory domain supported by Microservices architecture (and why not at scale !) ?

Modeling

02 main approaches :

  • Relational modeling supported by entity-relation model (entities and relations).
  • Graph modeling supported by document model (nodes and edges).

Microservices

Microservices is an architectural style that structures an application as a collection of services that are

  • Independently deployable
  • Loosely coupled
  • Organized around business capabilities
  • Owned by a small team
  • Highly maintainable and testable

The microservice architecture enables the rapid, frequent and reliable delivery of large, complex applications. [4]

08 microservices are put in place through Docker and Docker-Compose to provide a solution to the problematic :

  • Network-Elements : Developed with Spring Boot as RESTful WebService backed by the PostgreSQL relational database.
  • Network-Graph : Developed with Spring Boot as GraphQL WebService backed by MongoDB NoSQL database.
  • API Gateway : Developed with Spring Cloud Gateway on top of Spring WebFlux to enable routing requests, load balancing, resiliency etc...
  • User Interface : Developed with Spring Boot and Spring MVC with Thymleaf to send CRUD operations to the APIs via the API Gateway.
  • Service Registry and Discovery : Local Consul data center (1 Server + 1 Agent) to register and discover services dynamically by the API Gateway.
  • Caching : Redis Cluster (3 Redis Masters + 3 Redis Slave) to enable Redis-Caching
  • Messaging System : Kafka Cluster (3 brokers, 1 Zookeeper) to enable asynchronous messaging, resiliency and high availability of messages.
  • Schema Registry : Confluent Schema Registry provides a RESTful interface for storing and retrieving Avro schema to prevent ill-formatted data from being published by enforcing a broker-side schema ID check during a write attempt.

For more details, please refer to my GitHub repository : https://github.com/lyes-s/multi-element-relationally-interconnected-topology .

Clone this wiki locally