Blog Logo
TAGS

Implementing Infrastructure for Distributed System with Latest Technologies and Architectures

The main idea of creating this project is implementing an infrastructure for up and running distributed system with the latest technology and architecture like Vertical Slice Architecture, Event Driven Architecture, CQRS, Postgres, RabbitMq, and Express in Node.Js, and we will not deal mainly with business. The project involves using Vertical Slice Architecture for architecture level, Rabbitmq for Event Driven Architecture between microservices, Data Centric Architecture based on CRUD in all Services, Rest for internal communication between microservices with axios, CQRS implementation with MediatrJs internal library, Express for web framework, Postgres for database level with typeorm, tsyringe for handling dependency injection, Passport for authentication and authorization based on JWT, OpenTelemetry for distributed tracing on top of Jaeger and Zipkin, OpenTelemetry for monitoring on top of Prometteuse and Grafana, Joi for validation input in handlers and endpoints, dotenv for configuration management, Unit Testing for testing small units and mocking dependencies with Jest, End-To-End Testing and Integration Testing for testing features with all dependencies using testcontainers, winston and morgan for logging, swagger-ui-express and tsoa for generating api documentation automatically, ts-mapper for mapping objects, Problem Details standard for readable details of errors, eslint and prettier for formatting code, Docker-Compose for deployment mechanism, MongoDB for read side with mongoose, Domain Driven Design (DDD) to implement all business processes in microservices, Inbox Pattern for ensuring message idempotency for receiver and Exactly once Delivery, Outbox Pattern for ensuring no message is lost and there is at least one Delivery. This project is a work in progress, with new features being added over time. Future goals and additions will be registered in the Issues section of the repository.