Uso de patrones en arquitecturas de nube avanzadas con JAVA – Parte 1

Altavoz inteligente Echo Dot

Introducción

Este producto quiere enseñar que es viable crear programa de misión crítica sobre el modelado WEB totalmente destinado a elementos, ganando de esta manera las virtudes que nos ofrece una arquitectura maleable, como la escalabilidad. Jamás antes había tenido esto mucho más sentido, singularmente con la oportunidad de que cualquier sujeto logre contratar el día de hoy una infraestructura completamente configurable desde únidad central de procesamiento y gigas de memoria e inclusive otras máquinas virtuales y clústeres de bases de datos creando un auténtico centro de datos sin la necesidad de abonar siempre por este motivo. los costes de poseerlo físicamente en su espacio.

Con la evolución de los métodos de seguridad de redes para apps, compañías como Google plus, Red Hat, Microsoft y Amazon han masificado la venta de servicios de infraestructura en la nube. Con eso, volvió la discusión de si invertir o no en prácticas de ingeniería de programa en sus negocios, mucho más particularmente en sistemas que sirvan como interfaz a fin de que las compañías ejecuten sus operaciones.

No es ningún misterio que la mayor parte de las compañías en el suelo español usan sistemas cuya arquitectura se define en el control de la transacción con la banco de información, asegurando la integridad servible de los datos con validaciones y algoritmos bien ratificados con el área de negocios y que marcha suficientemente veloz para ser servible. Con eso en cabeza, da igual si la lógica comercial es una parte de la cubierta del cliente o si está absolutamente en los métodos de la banco de información, algo que verdaderamente asistencia en el desempeño y la simplicidad de ejecución.

Y eso no está mal, ¡todo lo opuesto! Entre otras muchas cosas pues la meta de una empresa es operar en una interfaz segura que no ponga en riesgo de manera negativa las acciones de su negocio, aparte del hecho de que la mayor parte de los artículos tecnológicos en el mercado, como interfaces y también lenguajes, ponen mucho más énfasis en contemplar operaciones corporativas pragmáticamente. En una charla de Ralph Johnson lo escuché en lo personal decir que lo esencial es tener en consideración las virtudes y desventajas de cada estrategia que adoptarás, no es solo visto que la utilización preciso de un patrón garantizará el buen desempeño de un sistema Frecuentemente, aun la exageración de su empleo en los proyectos y en la definición de requisitos, puede ser increíblemente negativa. Puede, por servirnos de un ejemplo, complicar lo que habría de ser fácil, incluyendo la comunicación del equipo, o aun necesitar un conocimiento abstracto del equipo que no esté listo particularmente, o casos en los que el diseño provoque un incremento de la latencia de las operaciones gracias a excesos en las divisiones de capas. Nuestro Ralph Johnson citó en exactamente la misma charla: – Puedes envenenarte aun con agua, si se consume en demasía.

Reglas de arquitectura

Empleando las clasificaciones dadas por Martin Fowler, tenemos la posibilidad de dividir en 3 patrones arquitectónicos:

1. Guion transaccional: Este es un patrón de empleo común que está en los sistemas de administración que no dependen de manera directa de la integración con otros sistemas en distintas ámbitos o tecnologías. Esencialmente recibe un grupo de datos de entrada, efectúa todas y cada una de las validaciones en exactamente el mismo bloque de normas o subdivide estos bloques en un grupo de subfunciones. Guarda datos de manera directa y acoplados.

Tiene muchas virtudes y no es por nada que la mayor parte de los sistemas que se están corriendo hoy día en las instituciones están en este estándar. Pues es procedimental y fácil de comprender para la enorme mayoría de los programadores. Marcha realmente bien al conectarse a un solo objeto de ingreso a datos, donde Martin Fowler llama Pasarela de datos de fila/tabla. Y es bien simple supervisar los límites de transferencias.

2. Módulo de mesa: Este es el patrón mucho más usado en los sistemas de administración que he visto hasta hoy. Con frecuencia se detalla como un término medio entre Transactional Script y el modelo de dominio. Por el hecho de que organiza el diseño del dominio en tablas en vez de métodos, ofreciendo una mejor composición. No obstante, impide la utilización de varias técnicas que da el modelo de dominio, como patrones orientados a elementos, herencia, tácticas, etcétera.

Gracias a estas virtudes y simplicidad, se hicieron los primordiales artículos de avance para agradar la creciente demanda comercial, por servirnos de un ejemplo, Microsoft COM y .NET. Con un enfoque mucho más fácil, estarían mucho más esparcidos en proyectos en el mundo entero. No llama la atención que la cantidad considerable de apps de misión crítica que se ejecutan con lógica comercial en los métodos guardados y en la una parte de presentación dependan de una llamada a un solo objeto de ingreso a datos, con frecuencia llamado DAO.

3. Modelo de dominio: O sea lo contrario al script de transacción, en tanto que en vez de tener toda la lógica en una rutina, el Modelo de Dominio organiza la lógica de negocios en un modelo representacional que se diseña al comienzo, donde sus tablas se extraen de los sustantivos del dominio de la app y el los métodos o casos de empleo se toman de los verbos. Un sistema de venta minorista, por poner un ejemplo, tendría clases como: Producto, Carro, Compra, Factura, Cliente. Y un caso de empleo sería Checkout o Register Customer.

Este patrón arquitectónico es el que iremos a emprender en el presente artículo, en tanto que comprendemos que se favorece de todas y cada una de las virtudes de la orientación a elementos y las buenas prácticas de ingeniería de programa. Aún a sabiendas de que su app es mucho más dificultosa y un tanto desepcionante para todos los que aún no están familiarizados a este pensamiento, sugiero su empleo para el inconveniente en cuestión, que es la arquitectura de las apps en la nube.

Computación en la nube

El término de computación en la nube hace referencia al empleo de memoria o aptitud de almacenamiento y computación compartida y también interconectada a otros servidores por medio de Internet usando el principio GRID (grid computing). Con su evolución se hicieron 7 tipos:

  • IaaS – Infraestructura como Servicio o Infraestructura como Servicio (en portugués): en el momento en que se usa un porcentaje de un servidor, en general con una configuración que se amolda a sus pretensiones. (por poner un ejemplo: cubierta blanda)
  • PaaS – Platform as a Service o Platform as a Service (en portugués): emplear solo una interfaz como una banco de información, un servicio web, etcétera. (por servirnos de un ejemplo, IBM Bluemix, Windows Azure y Jelastic).
  • DaaS – Development as a Service (en portugués): las herramientas de avance toman forma en la computación en la nube como herramientas compartidas, herramientas de avance fundamentadas en web y servicios basados ​​en mashup.
  • SaaS – Programa as a Service o Programa as a Service (en portugués): empleo de programa apoyado en la página web (por servirnos de un ejemplo, Google plus Docs, Microsoft SharePoint En línea).
  • CaaS – Comunicación como Servicio o Comunicación como Servicio (en portugués): empleo de una solución de Comunicaciones Unificadas guardada en un Centro de Datos del distribuidor o desarrollador (por poner un ejemplo, Microsoft Lync).
  • EaaS – Todo como Servicio (en portugués): en el momento en que todo se utiliza, infraestructura, interfaces, programa, soporte, en resumen, lo que supone TIC (Tecnología de Información y Comunicación) como Servicio.
  • DBaas – Banco de información como servicio o Banco de información como servicio (en portugués): en el momento en que se usa la una parte de servidores de bases de datos como servicio.

en una arquitectura Guion transaccional donde su lógica y datos se sostienen en un mismo bloque, y si imaginamos un ámbito que necesita escalado vertical, por servirnos de un ejemplo, haciendo un trabajo con múltiples repositorios de datos al tiempo, ahora tendríamos un enorme inconveniente. Si precisa trabajar con sistemas integrados on line, esta arquitectura tampoco sería servible.

en una arquitectura Módulo de mesa, si fuera preciso trabajar con múltiples servidores web en loadballacing funcionaría, no obstante, si volviésemos a meditar si funcionaría con múltiples servidores de bases de datos distintas on line, asimismo tendríamos un enorme inconveniente. O si está una solución, el valor de cuidado tenderá a ser mucho más prominente que el de un modelo de dominio.

Resumiendo, la aparición de la computación en la nube necesita una arquitectura escalable y verdaderamente necesita su empleo. Especialmente si pensamos en la madurez en un largo plazo del producto. Meditando sobre la ingeniería de programa, tenemos la posibilidad de finalizar que la solución para este nuevo requerimiento arquitectónico sería una arquitectura con un bajo nivel de acoplamiento, usando técnicas y patrones de programación y modelos orientados a elementos con Modelo de Dominio.

Tenemos la posibilidad de meditar en el ejemplo de crear un sistema en la nube como SaaS, con lo que su infraestructura estaría totalmente en la nube en un servicio IaaS de Amazon. Tener una arquitectura física de 1 servidor web, otros 2 para bases de datos y otro para ficheros, este se emplea para cargar datos de otro sistema. Aún debiendo comunicar una sucesión de servicios en la WEB a fin de que las apps móviles inteligentes logren interaccionar con el sistema. una arquitectura modelo de dominio sería perfecto para este inconveniente en cuestión.

Otra razón para seleccionar este patrón arquitectónico es respetar 2 leyes básicas de la ingeniería de programa, el límite de las opciones de perturbación del código tiende al infinito, puesto que es un producto abstracto generado desde el intelecto humano sin precisar materiales. Otra ley es: Cuanto mucho más se haya construido el programa, mucho más complejo va a ser modificarlo.

Las técnicas orientadas a elementos nos asisten a atenuar este inconveniente al lograr que el programa sea mucho más maleable a los cambios, lo que provoca que sea a nivel económico mucho más económico cambiar el producto en etapas siguientes del emprendimiento. Admitiendo su empleo en proyectos de enorme extensión y suma importancia en la generación de valor.

Ahora se expone un gráfico que enseña la curva de dificultad de los 3 patrones.

Técnicas y herramientas proposiciones

1) Análisis pensado para elementos y patrones de diseño.

Como se mentó en la descripción del módulo de dominio, el dominio primero se modela en una representación UML, utilizando el lenguaje del dominio como referencia donde los sustantivos se transforman en clases y los verbos en casos de empleo. La interacción entre clases y métodos de clase se puede detallar a través de diagramas como los diagramas de secuencia en UML. No obstante, en mi experiencia no lo sugiero, por el hecho de que aparece un enfrentamiento entre lo que piensa el Analista (o frecuentemente llamado Diseñador) de la realización del caso, y lo que piensa el creador sobre de qué forma solucionar la situacion. En un caso así, el creador siempre y en todo momento va a tener la mejor vista de CÓMO llevarlo a cabo, y el analista siempre y en todo momento va a tener la mejor vista de QUÉ HACER.

La solución a este callejón sin salida, para mí, siempre y en todo momento fué la utilización de diagramas de actividad, donde se especifican mejor en las informaciones de casos de empleo.

Naturalmente, sugiero esta práctica para casos complejos que necesitan bastante retroalimentación del especialista en el dominio, que tiende a ser nuestro cliente. Para casos con poca interacción o dificultad podría resolverse sencillamente con Story Case. Tenga presente que esta línea de razonamiento es para facilitar lo mucho más viable, si hablamos de un inconveniente complejo, se aconseja una investigación de caso detallado con estas herramientas de análisis orientadas a elementos que se fundamentan en informaciones detalladas y se representan en diagramas UML para una mejor entendimiento.

Tengo un artículo anunciado que señala este desarrollo apoyado en el estudio de Craig Larman en el próximo link: https://www.academia.edu/7933694/Processo_de_Desenvolvimento_Iterativo_de_Software. El artículo del link no incluye la utilización práctico de las tecnologías, no obstante, esta falta se suplirá con este producto.

2) Tecnología iniciativa

  1. Java – Lenguaje extensamente publicado en el mercado, para varias plataformas y que se amolda realmente bien al pensamiento de la orientación a elementos.
  2. Hibernate: en vez de hacer DAO, sugiero emplear una cubierta de ingreso a datos con todos y cada uno de los elementos del modelo de dominio mapeados aplicando técnicas mucho más adelante.
  3. MySQL – Se escogió esta banco de información pues en este caso no requeriremos muchos datos, pero podría ser de manera perfecta sustituida por algún otro motor de banco de información ACID en tanto que toda la arquitectura se ocupará de la lógica y el control de las transferencias.
  4. Maven: asiste para regentar las dependencias.
  5. Tomcat: servidor WEB que ejecuta nuestra app JAVA y Spring
  6. Wicket – Framework JAVA que trabaja con el término de programación por elementos, encaja realmente bien con quienes programan orientados a Dominio empleando POJOs.
  7. Primavera – Nos va a ser de herramienta para aceptar la inyección de elementos sobre la marcha dando permiso asimismo la Ioc (Inversion of Control)
  8. AWS: servicios WEB de Amazon, que da una PC en la nube para realizar nuestro página web.
  9. RDS: banco de información asimismo ofrecida por Amazon, un perfecto ejemplo de DaaS.
  10. Cytoscape – Marco Javascript que muestra datos en gráficos por medio de Jquey, útil para muchos casos en la cubierta de presentación.

Lea la segunda una parte de este producto, que probará la app de estos conceptos con las herramientas recientes.

Tommy Banks
Estaremos encantados de escuchar lo que piensas

Deje una respuesta

TecnoBreak | Ofertas y Reviews
Logo
Enable registration in settings - general
Shopping cart