Para poder iniciar la aplicaccion se debe tener instalado docker y docker-compose
- DevOps
- Docker & Docker-compose
- Aplicacion
- JDK 11
- Apache Maven 3.3.9
- IDE
- Intellij 2020
- Servidores de BD
- Mongo DB
- Infraestructura
- NGINX como balanceador de carga
La arquitectura de la aplicacion esta compuesta armada en un docker compose el cual levanta 4 replicas del backend, 1 base de datos Mongo y un NGINX como reverse proxy para balancear la carga.
Para este proyecto se uso la metodologia de conventional commits. Abrir
Decisiones: Dado que no contamos con un proceso de CI/CD al levantar la app omitimos los tests, idealmente deberiamos contar con una pipeline que corra los tests antes de buildear la imagen de docker.
- Para correr el proyecto local (linux):
someone@# git clone https://github.com/eric-stoppel/mutants.git
someone@# cd mutants
someone@# sh deploy.shLuego, si ejecutamos - docker ps deberiamos ver 6 contenerdores, 4 replicas del backend, el nginx y la base mongo, para probar la api local se debe acceder a localhost:9090: -> /mutant o -> /mutant/stats de la misma manera que se describe en servicios cloud
-
Las credenciales de la base de datos estan en el application.properties, lo ideal seria que no se pusheen al repo, para esto deberiamos usar variables de entorno.
-
En caso de existir distintos tipos de mutantes en un futuro se puede crear una interfaz MutantServiceInterface y realizar implementaciones sobre esta, al ser el dominio acotado no fue necesario.
La api fue hosteada en heroku y la base de datos en un cluster de Atlas
- Base url: https://ericstoppel-mutants.herokuapp.com
- Endpoints
- [GET] /mutant/stats
curl --request GET
https://ericstoppel-mutants.herokuapp.com/mutant/stats - [POST] /mutant
curl --header "Content-Type: application/json"
--request POST
--data '{"dna": [ "GTGCAA","CAGTGC","TTATGT","AGAAGG","CCACTA", "TCACTG"]}'
https://ericstoppel-mutants.herokuapp.com/mutant
- [GET] /mutant/stats
- Endpoints
