Este repositório contém um exemplo simplificado de um sistema monolítico modular, desenvolvido utilizando TypeScript, SQLite3 e Express. A estrutura segue os conceitos de Clean Architecture e DDD. A principal característica deste sistema é a utilização de facades, que simplificam a interação entre diferentes partes do sistema, oferecendo uma interface única e de alto nível para módulos complexos.
- Módulos organizados em bounded contexts
- Comunicação entre módulos através de contratos e facades
- Entidades podem ser "duplicadas", contendo apenas os atributos necessários
- Equipes especializadas por módulos
- Cada módulo possui sua própria facade, o que significa que cada um expõe uma interface simplificada que pode ser usada por outros módulos ou partes do sistema, sem revelar detalhes da implementação interna.
- Na imagem, as setas indicam a comunicação entre os módulos. Por exemplo, o módulo
checkoutdepende dos módulosproduct-adm,store-catalog, ecustomer-admpara suas funcionalidades. Ele acessa esses módulos por meio de suas facades, facilitando a integração. - Os módulos
paymenteinvoicetambém expõem suas interfaces (facades), que são utilizadas pelo módulocheckoutpara realizar operações relacionadas ao pagamento e à criação de faturas de forma encapsulada. - As facades atuam como pontos de entrada centrais para a comunicação entre os módulos, garantindo que as interações sejam organizadas e que cada módulo possa evoluir de maneira independente, permitindo que o sistema seja escalável e de fácil manutenção.
Antes de começar, certifique-se de que você tem o seguinte instalado:
ou docker + docker-compose...
Clone este repositório para a sua máquina local:
git clone https://github.com/Lucassamuel97/monolito
cd monolito2. Instalando Dependências SQLite e migrations (Sequelize e Umzug), e executando a aplicação (Express)
npm install
node migrate up
npm run dev docker-compose up --buildPara facilitar o uso e teste das APIs do projeto, disponibilizamos uma collection do Postman.
o arquivo está no diretorio collections/monolito.postman_collection.json.
