Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:cursos:docker_avanzado:creacion_de_una_aplicacion_web_de_ejemplo

Creación de una aplicación web de ejemplo (Docker avanzado)

Contenido perteneciente al curso Docker avanzado.

Los 12 factores

En estos tiempos, el software se está distribuyendo como un servicio: se le denomina web apps, o software as a service (SaaS). “The twelve-factor app” es una metodología para construir aplicaciones SaaS

La metodología “twelve-factor” puede ser aplicada a aplicaciones escritas en cualquier lenguaje de programación, y cualquier combinación de ‘backing services’ (bases de datos, colas, memoria cache, etc)

https://12factor.net/es/

Apps Monolíticas vs Microservicios

Las aplicaciones monolíticas agrupan la funcionalidad y sus servicios en una base de código única

  • Fáciles de desarrollar
  • Fáciles de desplegar
  • Sencillo y rápido ejecutarlas
  • Muy difícil o costoso de escalar
  • El mantenimiento y las actualizaciones pueden ser complejas y derivar en problemas funcionales

Los microservicios son una manera de construir aplicaciones y servicios digitales

Una arquitectura de microservicios busca desacoplar o independizar los componentes individuales de una aplicación, para que cada componente sea una aplicación en sí misma

Los microservicios se conectan entre sí a través de API’s, permitiendo que diferentes equipos trabajen al mismo tiempo en diferentes partes de una aplicación. O incluso en diferentes lenguajes

Distintos componentes del software pueden ser desarrollados y desplegados de forma independiente

Los microservicios presentan grandes ventajas:

  • La escalabilidad del sistema es más sencilla dado que se pueden escalar cada uno de los microservicios por separado
  • Se puede hacer un uso más optimo de los recursos de la máquina

Pero también presentan grandes retos tecnológicos y complejidad a la hora de implementarlos:

  • Al tener un mayor número de componentes su operación y diseño es más complejo
  • Diseñar y desarrollar la infraestructura requiere mas tiempo y recursos
  • Monitorización de servicios distribuidos (KPIs de aplicación, redes, logs, transaccionalidad)

La arquitectura monolítica sigue siendo la norma para la mayor parte de las aplicaciones, aunque no es lo mejor para sistemas complejos

La arquitectura de microservicios nació como una reacción de los desarrolladores ante la imposibilidad de continuar escalando aplicaciones

Transformar una aplicación monolítica en una orientada a microservicios es un proceso complejo y costoso que ha de hacerse en pequeños pasos

El primer paso sería tratar de identificar partes de la lógica de negocio que se puedan aislar del resto debido a su bajo acoplamiento

El siguiente paso podría ser identificar las partes del código que consuman más cantidad de recursos y que aparenten poder ser aislados

Desarrollo Web APP Java

Para desarrollar una aplicación web en JAVA solemos necesitar:

  • Un IDE como Netbeans o Eclipse
  • Una herramienta de gestión de dependencias, por ejemplo MAVEN
  • Un servidor de aplicaciones como Tomcat, Glassfish, …

Podemos recurrir a diferentes tecnologías:

  • JSP y Servlets
  • Java Server Faces
  • Spring Boot

Configurando el entorno

En nuestro caso vamos a trabajar con Netbeans, Maven, Spring Boot y Docker

Para establecer el entorno podemos usar el siguiente manual: https://jaxenter.com/playing-with-spring-boot-docker-in-netbeans-ide-127672.html

Caso práctico

Consideremos el supuesto en el que queremos desarrollar una aplicación para satisfacer las necesidades de la empresa XYZ. Esta empresa cuenta con más de 10.000 empleados repartidos en varias sedes, su catálogo de productos cuenta con más 100.000 referencias y maneja ventas a clientes en todo el mundo

Esta aplicación debe poder gestionar:

  • El directorio de empleados
  • El directorio de productos
  • El directorio de clientes
  • Las ordenes de pedidos de los clientes
  • La facturación de los clientes

¿Cómo deberíamos afrontar el diseño de esta aplicación?

Trata de hacer una aproximación del desarrollo de la funcionalidad de listado de empleados siguiendo la siguiente arquitectura

Web App HTML5 → HR Backing Service → HR BBDD

informatica/sistemas_operativos/cursos/docker_avanzado/creacion_de_una_aplicacion_web_de_ejemplo.txt · Última modificación: por tempwin