Repositorio con código base para el desarrollo de una arquitectura hexagonal siguiendo los principios y patrones de DDD.
El repositorio en su raíz está estructurado de la siguiente forma:
- src: En este directorio encuentra el código fuente para Propiedades de los Alpes.
- src/pda: En este directorio se encuentra el código fuente para la aplicación Flask.
- src/notifications: En este directorio se encuentra el código fuente para el módulo de notificaciones.
- src/payments: En este directorio se encuentra el código fuente para el módulo de pagos.
- src/tenant: En este directorio se encuentra el código fuente para el módulo de arrendatarios.
- src/bff: En este directorio se encuentra el código fuente para el módulo de Backend for Frontend.
- src/ui: En este directorio se encuentra el código fuente para la app web/interfaz gráfica.
- .gitignore: Archivo con la definición de archivos que se deben ignorar en el repositorio GIT
- .gitpod.yml: Archivo que define las tareas/pasos a ejecutar para configurar su workspace en Gitpod
- README.md: El archivo que está leyendo
- requirements.txt: Archivo con los requerimientos para el correcto funcionamiento del ms pda (librerias Python)
- notification-requirements.txt: Archivo con los requerimientos para el correcto funcionamiento del ms notifications (librerias Python)
- ui-requirements.txt: Archivo con los requerimientos para el correcto funcionamiento del ms ui (librerias Python)
- tenant-requirements.txt: Archivo con los requerimientos para el correcto funcionamiento del ms tenant (librerias Python)
- payments-requirements.txt: Archivo con los requerimientos para el correcto funcionamiento del ms payments (librerias Python)
- bff-requirements.txt: Archivo con los requerimientos para el correcto funcionamiento del ms bff (librerias Python)
- Escenario #9: Modificabilidad
- Escenario #2: Escalabilidad
- Escenario #6: Disponibilidad
Entrega.3.mp4
Entrega4.mp4
Entrega5.mp4
Para la ejecución de la aplicación, lo primero que se debe levantar es la infraestructura broker de Apache Pulsar y la del motor MySQL, esta se encuentra configurada para que se monte utilizando contenedores de Docker, por ende, para correr dicho broker, se debe hacer con el siguiente comando de Docker Compose:
docker compose --profile pulsar up
y en otra terminal, levantar el perfil de base de datos en MySQL
docker compose --profile db up
Cabe destacar que dicho comando construira las imagenes de docker asociadas a Apache Pulsar y MySQL (obtenidas desde el catálogos de imágenes de Docker), si es que estás existen.
Ahora es posible ejecutar los microservicios ui, pda/transactions y notifications.
Desde el directorio principal ejecute el siguiente comando.
flask --app src/pda/api run --port 5001
Desde el directorio src
ejecute el siguiente comando
uvicorn tenant.main:app --host localhost --port 8002 --reload
Desde el directorio src
ejecute el siguiente comando
uvicorn payments.main:app --host localhost --port 8001 --reload
Desde el directorio src
ejecute el siguiente comando
uvicorn bff.main:app --host localhost --port 8005 --reload
Desde el directorio principal ejecute el siguiente comando.
python src/ui/main.py
Desde el directorio principal ejecute el siguiente comando.
python src/notifications/main.py
Los siguientes JSON pueden ser usados para probar el API:
- Endpoint:
/v1/properties/transactions
- Método:
POST
- Headers:
Content-Type='aplication/json'
{
"location": "Bucaramanga",
"leases": [
{
"payments": [
{
"amount": 100.00,
"date": "2022-11-22T15:10:00Z"
}
]
}
],
"payment": {
"amount": 100.00,
"amount_vat": 119.00
},
"tenant": {
"name": "Diego",
"last_name": "Eslava"
}
}
Cabe destacar, que dentro del directorio del proyecto, viene la colección de postman asociada a la prueba realizada durante el experimento hecho en el video. El archivo se llama:
No Monoliticas - Entrega 9.postman_collection