Sesión 1: ¿Qué es una aplicación web?

Ciclo de desarrollo
En la ingeniería de software se denomina aplicación web a aquellas herramientas que los usuarios pueden utilizar accediendo a un servidor web a través de Internet o de una intranet mediante un navegador. En otras palabras, es una aplicación software que se codifica en un lenguaje soportado por los navegadores web en la que se confía la ejecución al navegador.
Dentro de sus grandes ventajas se encuentran que no se necesita instalar software, gran parte de las webs son gratuitas, no saturan el uso del disco duro del ordenador ni ocupan memoria, pocos requerimientos técnicos.

Ciclo de vida de una web:
  1. Análisis.
  2. Prototipo (Wireframe o mockup)
  3. Diseño.
  4. Desarrollo.
  5. Despliegue.
  6. Mantenimiento.




Application Stack
El término de application stack contempla la manera en que nos referimos al hardware de una computadora y cómo los distintos software tradiciones se ejecutan. Es por esto que existen distintos modelos de los cuales se compone:
  • Modelo tradicional:
    • Capa de hardware.
    • Sistema Operativo.
    • Lenguajes de programación.
    • Aplicación.
  • Modelo web:
    • Se caracteriza por no prestarle tanta atención al sistema operativo ni al apartado de hardware del dispositivo.
    • Presenta un enfoque de tal manera que presenta atención sobre lo que está corriendo encima del sistema operativo.
    • Web Stack Tools: Brinda las herramientas necesarias para construir una aplicación web basado en la arquitectura cliente-servidor.
Una vez contemplado lo anterior, application stack tambien se compone de diversas partes, las cuales son:
  1. Diseño UX/UI: Transformar los requerimientos de negocio mediante prototipado o mochups. (Photoshop, Sketch, Pizarra blanca y papel). Roles: Diseñador de UX y UI, y diseñador del producto.
  2. Front end: Dado el proceso anterior, transformar los prototipos a prototipos funcionales. (HTML, CSS y JavaScript, entre otros). Roles: Ingeniero y desarrollador frond end, y desarrolador junior.
  3. Back end: Pasar de prototipos funcionales a un sistema escalable con arquitectura. (Java, Node, Ruby on Rails, Python o .NET). Roles: Ingeniero y desarrollador back end, y desarrollador de aplicaciones web.
  4. Datos y Ops: Se desarrolla código y procesos de mantenimiento para servidores, y la ciencia de la información "trabaja" con la información del usuario. Roles: Ingeniero en operaciones y ingeniero dev ops.

  • Arquitectura Cliente-Servidor
Mediante esta arquitectura en el área del desarrollo web nos encontraremos 2 "partes", de las cuales contiene una serie de componentes para ejercer el desarrollo como tal de una aplicación web respectivamente. Se tiene entonces:
    • El lado del servidor: Es común encontrarse: un framework web, un lenguaje de programación, una base de datos, un servidor web, un sistema operativo, y finalmente, nuestra servidor.
    • El lado del cliente: Mediante el uso de internet se establece comunicación bidireccional con el lado del servidor, y es común que contenga: Java Script, CSS, HTML o una aplicación nativa, y un navegador de Internet o un dispositivo móvil.
Cada lado de la arquitectura (cliente y servidor) se compone de un conjunto de tecnologías, y como se puede observar nos enfrentamos frente a un mundo muy grande en cuanto a posibilidades para escoger con cuales (y cuales no) desarrollaremos nuestras aplicaciones web. Por este motivo es importante estar actualizados e informados para que nuestro equipo de trabajo tome las decisiones correctas al momento de seleccionar dichas tecnologías.
A continuación, se detallan las más importantes en los últimos años.
Criterios de selección de tecnologías
Ahora bien, es menester mencionar algunos criterios de diseño que muy probablemente nos brinden buenas prácticas al momento de implementación y desarrollo mediante la correcta escogencia de tecnologías. Así por ejemplo, algunos criterios son:
  • Tipo de aplicación:
    • Simple
    • Mediana
    • Compleja
  • Tiempo que tardará el desarrollo: (TTM: Time to market)
    • Soluciones fuera de la caja (out-of-the-box).
    • Integración con soluciones de terceros.
    • Disponibilidad de desarrolladores.
    • Documentación y comunidad de desarrollo.
    • Fácil de probar.
  • Costo de desarrollo:
    • Salarios de los desarrolladores.
    • Costo del mantenimiento de la aplicación.
  • Seguridad.
  • Escalabilidad:
    • Horizontal: nuevos requerimientos.
    • Vertical: nuevos componentes.

Por otro lado, debemos evitar:
  • No escoger basado en la experiencia de la competencia.
  • No escoger basado en sus preferencias personales.
  • No escoger basado en proyectos previos.
  • No escoger basado en una línea de investigación.

Comentarios

  1. The web technology stack that powers your product does not only bring it to life but stand for its further maintainability, scalability, and many other factors. However, there is lots of stuff that you need to pay attention to. Take a look at this article for details: https://www.cleveroad.com/blog/web-development-stacks

    ResponderEliminar

Publicar un comentario