Skip to content
This repository has been archived by the owner on Nov 1, 2022. It is now read-only.

Commit

Permalink
Background doc (#67)
Browse files Browse the repository at this point in the history
* Create rabbitmq_basics.md

* Create vlingo_basics.md
  • Loading branch information
simeck26 authored Feb 14, 2021
1 parent ee76221 commit cbf603c
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
24 changes: 24 additions & 0 deletions doc/background/rabbitmq_basics.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
### RabbitMQ

RabbitMQ is a middleware for message exchange (message broker) in heterogeneous software systems.
Important tasks of a message broker are for example:

- Connection of heterogeneous software systems
- Receiving and sending messages
- Scalability of message switching
- Translation between message formats of senders and receivers
- Creation of a fail-safe and sufficiently fast communication for the application

RabbitMQ is released under the "Mozilla Public License Version 2.0", written in Erlang and built on the "Advanced Message Queueing Protocol (AMQP)". The functionality is defined by three basic building blocks: Producer, Message Queue and Consumer. Message transmission is customizable using various distribution methods, so-called "Exchanges", depending on the application.
The following exchanges are included in AMQP:

- Direct - message is written to a specific MQ using a specified key.

- Fanout - message is written to any available MQ
- Topic - message is written to at least one MQ by specified rules or pattern of keys.
at least one MQ
- Headers - message is written to at least one MQ depending on the content.

Due to its underlying lightweight structure, RabbitMQ is suitable for use as a message broker during the development phase of heterogeneous software systems. At the same time, however, RabbitMQ is also suitable for productive use in distributed systems, since it allows message distribution to consumers working in parallel, is horizontally scalable through redundant instances, and is also suitable for complex message transmissions through the use of different routing methods.

Furthermore, programming interfaces exist for a variety of different programming languages (e.g. Java, Python, JavaScript, Go, etc.), enabling the (further) development of heterogeneous software systems by different development teams and the use of different technologies.
36 changes: 36 additions & 0 deletions doc/background/vlingo_basics.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# VLINGO

## Background
The project was started by Vaughn Vernon. After positive feedback, the VLINGO/PLATFORM project was created under the leadership of Vaughn Vernon with the help of the community. Developers who have worked their way into the customer's domain, for example with event storming, should be able to use VLINGO to quickly get started developing an application.

VLINGO/PLATFORM follows the three principles of "simplicity", "model fluency" and "DDD-friendly" and, according to its developers, this combination clearly sets it apart from other frameworks. The complexity of concurrent processes is to be reduced and the development around the business logic is to be put in the foreground.

From a technical perspective, VLINGO/PLATFORM is a collection of open source tools designed with a reactive architecture. Domain-driven design (DDD) is at the forefront of development with VLINGO. It also focuses on an event-driven and microservice-oriented architecture.

A responsive architecture has four key characteristics:

- Responsive - Provide fast and consistent response times.
- Resilient - the system remains responsive even in the event of a failure
- Elastic - The system can handle fluctuating loads
- Message Driven - Asynchronous messaging for communication.

For more information on responsive systems click [here](https://www.reactivemanifesto.org).


The following figure visualizes the components that make up VLINGO/PLATFORM:

![alt text](https://gblobscdn.gitbook.com/assets%2F-LLB-V2sJmANuWISDmBf%2F-M9CUGIjqvocvRm5c5Jb%2F-M9H0FwLGxPXIMkLGEwd%2FVLINGO_PLATFORM.png?alt=media&token=418a86e0-859d-4806-87f2-a651c01fffca "VLINGO/PLATFORM structure")

Source: https://docs.vlingo.io

### VLINGO/XOOM & Starter
The starter can be used to quickly generate new DDD projects with a focus on microservice architecture. The starter can be used via a GUI in the browser, or with a configuration file in the console.

### VLINGO/HTTP
VLINGO provides a reactive HTTP server that handles concurrent, non-blocking requests.

### VLINGO/ACTORS
VLINGO provides an implementation of the "Actor model" with this component. The actors are the basis for the reactive architecture and foundation of the framework. They enable asynchronous and type-safe message exchange. Another advantage is the abstraction of the complex implementation of concurrent processes. Concurrency plays an increasingly important role in modern systems, since CPUs have been relying on a higher number of cores for several years and applications with many users must be able to process requests in parallel. (Geer, 2005)

For more information on the components of VLINGO, the official documentation can be used:
https://docs.vlingo.io

0 comments on commit cbf603c

Please sign in to comment.