- Especificaciones
- Alcance
- Digrama secuencial del proyecto
- Implementacion y Tecnologias usadas
- Comentarios relevantes
- Acceso a la API REST productivo
- Instrucciones para levantar la API REST de manera local
- Test
- Mejoras
El proyecto consiste en una API REST que determina si un adn humano es un mutante basandose en mas de una determinada secuencia de genes. Se puede encontrar el enunciado en el siguiente link
- El API REST contará con dos servicios web.
- Un servicio web será "/mutant/", que se encargará de determinar si un adn humano enviado como json es mutante o no. En caso de verificar un mutante, debería devolver un HTTP 200-OK, en caso contrario un 403-Forbidden
- El otro servicio web será "/stats" que se encargará devolver un Json con las estadísticas de las verificaciones de ADN Por ejemplo: {"count_mutant_dna":40, "count_human_dna":100, "ratio":0.4}
- Se guardara el request y un boolean si es mutante o no en un base de datos.
- Se creara test unitarios y de integracion.
- Se hosteara la aplicacion en un cloud computing
- El proyecto está desarrollado en java 1.8.
- Se utilizá Maven para la gestión de dependencias y actividades de instalación, build y packaging.
- Para ayudarme a construir la aplicación use la tecnología Spring Boot versión 2.1.8.RELEASE.
- La base de datos que uso es PostgreSQL version 11.
- Para los tests se uso JUnit y Mockito.
- Para hostear la aplicacion use el hosting cloud computing Heroku.
- Para el parseo de los datos en formato Json uso Gson
- Como sistema de logs uso Log4j
- Se utiliza las herramientas de Docker Desktop version 2.1.0.3
Cuando tome la decisión de usar como hosting cloud computing Heroku, entendí que para hacer el deploy de la aplicacion debía usar maven, PostgreSQL y que sea una aplicacion stand alone. Es por eso que elegí como tecnologias para desarrollar esta aplicacion SpringBoot 2.1.8.RELEASE. Baje de la pagina oficial de SpringBoot un modelo base de la pagina link que contenia los conocientos principales que poseo Spring, Hibernate, Log4j y Maven.
El desarrollo de este challenge fue aplicando, como técnica principal, TDD. En el cual hacia las pruebas y luego implementaba el codigo para que funcione las pruebas. En este punto use JUnit y use Mockito para simular respuestas.
Los conceptos basicos de este framework use la documentacion oficial de SpringBoot y tutorial.
- Modos de acceso a la API REST del cloud computing.
- Para entrar al servicio “/mutant/” se debe enviar una secuencia ADN mediante un HTTP POST a esta URL:
https://ml-mutanexam.herokuapp.com/mutant
Request body. La secuencia ADN debe tener el siguiente formato JSON:
POST → /mutant/
{
"dna":["ATGCGA","CAGTGC","TTATGT","AGAAGG","CCCCTA","TCACTG"]
}
Response:
200 OK
- Para entrar al servicio “/stats/”
Request:
GET → /stats/
https://ml-mutanexam.herokuapp.com/stats
Response: 200 (application/json)
{"count_mutant_dna":4,"count_human_dna":1,"ratio":0.8}
- Se debe contar con motor de base de datos PostgreSQL version 11 o superior .
- Tener mvn instalado en su ambiente, 3.6.1 o posterior.
- Tener un JDK versión 1.8.
- Y tener instalado el Git.
- En un directorio clonar el proyecto
git clone https://github.com/jonaferreira/mutantexam.git
-
Debe crearse una base de datos en PostgresQL con nombre "mutantexamDB" , con permisos de escritura y lectura, y el puerto 5432. Nota: Puede configurar el usuario y contraseña en el archivo application.properties ubicado en src/main/resources
-
(bis) En caso de usar docker, y no instalarse postgreSQL, posicionarse en el directorio del proyecto descargado y ejecutar en un cmd el siguiente comando:
docker-compose up -d db
- Posicionarse en el directorio del proyecto y correr
mvn clean install
desde una terminal para descargar todas sus dependencias.
- Posicionarse en el directorio del proyecto y ejecutar
mvn spring-boot:run
desde una terminal.
Para la ejecucion de los test automaticos utilice JUnit y use framework Mockito para realizar pruebas .
- Para ejecutar las pruebas se puede ir al directorio del proyecto y correr el siguiente comando:
mvn test
- Se debe contar con tener instalado docker version 19.03.2
- Tener instalado docker-compose version 1.24.1
- Tener mvn instalado en su ambiente, 3.6.1 o posterior.
- Tener un JDK versión 1.8.
- Y tener instalado el Git.
- En un directorio clonar el proyecto
git clone https://github.com/jonaferreira/mutantexam.git
-
Posicionarse en el directorio del proyecto y correr
mvn clean install -Dmaven.test.skip=true
desde una terminal para descargar todas sus dependencias. -
Posicionarse en el directorio del proyecto descargado y ejecutar en un cmd el siguiente comando:
docker-compose up -d
Acceso a la API REST productivo:
- Modos de acceso a la API REST localhost
- Para entrar al servicio “/mutant/” se debe enviar una secuencia ADN mediante un HTTP POST a esta URL:
Request body. La secuencia ADN debe tener el siguiente formato JSON:
POST → /mutant/
{
"dna":["ATGCGA","CAGTGC","TTATGT","AGAAGG","CCCCTA","TCACTG"]
}
Response:
200 OK
- Para entrar al servicio “/stats/”
Request:
GET → /stats/
Response: 200 (application/json)
{"count_mutant_dna":4,"count_human_dna":1,"ratio":0.8}
Ejecutando los test localmente con la herramienta Jacoco nos da 97%.
Cambiar la base de datos por Mongo. No se realizo de una esta mejora ya que cloud computing Heroku no me deba la opción de esta base no relacional.