Lista de verificación para crear y publicar aplicaciones web

Para crear su propia aplicación web en estos días, no es suficiente para poder desarrollarla. Un aspecto importante es la configuración de herramientas para la implementación de aplicaciones, el monitoreo y la administración y administración del entorno en el que opera. La era de la implementación manual está cayendo en el olvido, incluso para proyectos pequeños, las herramientas de automatización pueden traer beneficios tangibles. Cuando se implementa "a mano", a menudo podemos olvidar transferir algo, tener en cuenta uno u otro matiz, ejecutar una prueba olvidada, esta lista puede continuar durante bastante tiempo.

Este artículo puede ayudar a aquellos que solo entienden los conceptos básicos de la creación de aplicaciones web y desean comprender un poco sobre los términos y convenciones básicos.

Por lo tanto, la construcción de aplicaciones aún se puede dividir en 2 partes, esto es todo lo que se relaciona con el código de la aplicación y todo lo que se relaciona con el entorno en el que se ejecuta este código. El código de la aplicación, a su vez, también se divide en servidor (uno que se ejecuta en el servidor, a menudo: lógica de negocios, autorización, almacenamiento de datos, etc.) y cliente (uno que se ejecuta en la máquina del usuario: a menudo la interfaz y otros con ella la lógica).

Comencemos con el miércoles.

La base para el funcionamiento de cualquier código, sistema o software es el sistema operativo, por lo que a continuación veremos los sistemas más populares en el mercado de alojamiento y les daremos una breve descripción:

Windows Server es el mismo Windows, pero en variación del servidor. Algunas funciones disponibles en la versión cliente (regular) de Windows no están presentes aquí, por ejemplo, algunos servicios de recopilación de estadísticas y software similar, pero hay un conjunto de utilidades para la administración de la red, software básico para la implementación del servidor (web, ftp, ...). En general, Windows Server parece un Windows normal, grazna como un Windows normal, sin embargo, cuesta 2 veces más que su contraparte habitual. Sin embargo, dado que lo más probable es que implemente la aplicación en un servidor dedicado / virtual, el costo final para usted, aunque puede aumentar, no es crítico. Dado que la plataforma Windows ocupa un lugar abrumador en el mercado de sistemas operativos de usuario, su edición de servidor será la más familiar para la mayoría de los usuarios.

Sistema tipo Unix . El trabajo tradicional en estos sistemas no implica una interfaz gráfica familiar, ofreciendo al usuario solo una consola como elemento de control. Para un usuario inexperto, trabajar en ese formato puede ser difícil, lo que solo significa salir del editor de texto Vim , que es bastante popular en los datos, la pregunta relacionada con esto ha ganado más de 1.8 millones de visitas en 6 años. Las principales distribuciones (ediciones) de esta familia son: Debian - una distribución popular, las versiones del paquete se centran principalmente en LTS ( Soporte a largo plazo - soporte durante mucho tiempo), que se refleja en la alta fiabilidad y estabilidad del sistema y los paquetes; Ubuntu : contiene distribuciones de todos los paquetes en sus últimas versiones, lo que puede afectar la estabilidad, pero le permite utilizar la funcionalidad que viene con las nuevas versiones; Red Hat Enterprise Linux: un SO comercializado para uso comercial se paga, sin embargo, incluye soporte de proveedores de software, algunos paquetes de controladores y propietarios; CentOS: variación de código abierto de Red Hat Enterprise Linux, caracterizada por la falta de paquetes y soporte patentados.

Para aquellos que solo comprenden el desarrollo de esta área, mi recomendación sería Windows Server o Ubuntu . Si consideramos Windows, este es principalmente un hábito del sistema, Ubuntu : más tolerancia a las actualizaciones y, a su vez, menos problemas al comenzar proyectos en tecnologías que requieren nuevas versiones.

Entonces, habiendo decidido el sistema operativo, pasemos a un conjunto de herramientas que le permiten implementar (instalar), actualizar y monitorear el estado de la aplicación o sus partes en el servidor.

La siguiente decisión importante será alojar su aplicación y servidor para ello. Por el momento, los más comunes son 3 formas:

  • Hospedar (mantener) un servidor por su cuenta es la opción más económica, pero deberá solicitar una IP estática a su proveedor para que su recurso no cambie su dirección con el tiempo.
  • Alquile un servidor dedicado (VDS) y administre de forma independiente su administración y escala de carga
  • Pague (a menudo al mismo tiempo que le dan a la funcionalidad de la plataforma de forma gratuita) una suscripción en algún alojamiento en la nube, donde el modelo de pago por los recursos utilizados es bastante común. Los representantes más destacados de esta dirección: Amazon AWS (otorgue un año de uso gratuito de los servicios, pero con un límite mensual), Google Cloud (otorgue $ 300 a una cuenta que puede gastarse durante el año en servicios de alojamiento en la nube), Yandex. Cloud (otorgue 4000 rublos . por 2 meses), Microsoft Azure (otorgue acceso gratuito a servicios populares por un año, + 12 500 rublos por cualquier servicio por un mes). Por lo tanto, puede probar cualquiera de estos proveedores sin gastar un centavo, pero obteniendo una opinión aproximada sobre la calidad y el nivel de servicio.

Dependiendo del camino elegido, en el futuro solo cambiará el hecho, sobre quién, en su mayor parte, es la responsabilidad de un área particular de administración. Si se hospeda, entonces debe comprender que cualquier interrupción en la electricidad, Internet, el servidor en sí, el software implementado en él, todo esto recae completamente sobre sus hombros. Sin embargo, para entrenamiento y pruebas, esto es más que suficiente.

Si no tiene una máquina adicional que pueda desempeñar el papel de un servidor, entonces querrá usar la segunda o tercera forma. El segundo caso es idéntico al primero, con la excepción de que usted transfiere la responsabilidad de la disponibilidad del servidor y su poder a los hombros del host. La administración del servidor y el software aún está bajo su control.

Y finalmente, la opción de alquilar la capacidad de los proveedores de la nube. Aquí puede configurar el control automatizado de casi cualquier cosa, sin entrar en detalles técnicos. Además, en lugar de una máquina, puede tener varias instancias (instancias) ejecutándose en paralelo, que, por ejemplo, pueden ser responsables de diferentes partes de la aplicación, sin diferir mucho en costo de la propiedad de un servidor dedicado. ¡Y también, hay instrumentos de orquestación, contenedorización, despliegue automático, integración continua y mucho más! Algunas de estas cosas las consideraremos a continuación.

En general, la infraestructura del servidor es la siguiente: tenemos un llamado "orquestador" ("orquestación" - el proceso de gestión de múltiples instancias del servidor) que gestiona los cambios ambientales en la instancia del servidor, un contenedor de virtualización (opcional, pero de uso frecuente) que le permite dividir la aplicación en capas lógicas aisladas y software para integración continua, que permite actualizar el código alojado a través de "scripts".

Por lo tanto, la orquestación le permite ver los estados del servidor, revertir o revertir las actualizaciones del entorno del servidor, etc. Al principio, es poco probable que este aspecto le preocupe, porque para orquestar algo, necesita varios servidores (¿puede uno, pero por qué lo necesita?), Y para que haya varios servidores, los necesita. De las herramientas en esta área, se escucha principalmente Kubernetes, desarrollado por Google .

El siguiente paso es la virtualización a nivel del sistema operativo. Ahora, el concepto de "dockerización" está muy extendido, que proviene de la herramienta Docker , que proporciona la funcionalidad de contenedores aislados entre sí, pero lanzados en el contexto del mismo sistema operativo. Qué significa esto: en cada uno de estos contenedores puede ejecutar una aplicación, o incluso un conjunto de aplicaciones que supondrá que son los únicos en todo el sistema operativo, sin siquiera saber acerca de la existencia de otra persona en esta máquina. Esta función es muy útil tanto para iniciar las mismas aplicaciones de diferentes versiones, o simplemente aplicaciones conflictivas, como para dividir partes de la aplicación en capas. Este reparto de capas se puede escribir posteriormente en una imagen que se puede usar, por ejemplo, para implementar una aplicación. Es decir, al instalar esta imagen y al expandir los contenedores que contiene, obtendrá un entorno listo para iniciar su aplicación. En los primeros pasos, puede usar esta herramienta tanto con fines educativos como para obtener un beneficio muy real al difundir la lógica de la aplicación en diferentes capas. Pero, vale la pena decir aquí que no todos necesitan dockerización, y no siempre. El acoplamiento se justifica en los casos en que la aplicación está "fragmentada", dividida en pequeñas partes, cada una responsable de su propia tarea, la llamada "arquitectura de microservicios".

Además de proporcionar el entorno, también debemos proporcionar una implementación competente de la aplicación, que incluya todo tipo de transformaciones de código, instalación de bibliotecas y paquetes asociados con la aplicación, ejecución de pruebas, notificaciones sobre estas operaciones, etc. Aquí debemos prestar atención a un concepto como "Integración continua" ( CI - Integración continua ). Las herramientas principales en esta área en este momento son Jenkins (el software para CI escrito en Java puede parecer un poco complicado al principio), Travis CI (escrito en Ruby, subjetivamente, es algo más simple que Jenkins , sin embargo, algunos conocimientos en áreas de configuración de implementación), Gitlab CI (escrito en Ruby and Go ).

Entonces, después de hablar sobre el entorno en el que funcionará su aplicación, es hora de ver finalmente qué herramientas nos ofrece el mundo moderno para crear estas aplicaciones.

Comencemos con lo básico: Backend (backend): el lado del servidor. La elección del lenguaje, un conjunto de funciones básicas y una estructura (marco) predefinida aquí se determina principalmente por preferencias personales, pero sin embargo, vale la pena mencionarlo para su consideración (la opinión del autor sobre los idiomas es bastante subjetiva, aunque con una pretensión de descripción imparcial):

  • Python es un lenguaje lo suficientemente amigable para un usuario inexperto, perdona algunos errores, pero también puede ser bastante estricto con el desarrollador para que no haga nada malo. PL ya bastante maduro y significativo, que apareció en 1991.
  • Go es un lenguaje de Google, también es bastante amigable y conveniente, es bastante fácil de compilar y obtener un archivo ejecutable en cualquier plataforma. Puede ser simple y agradable, o puede ser difícil y serio. Fresco y joven, apareció relativamente recientemente, en 2009.
  • Rust: un poco mayor que el colega anterior, lanzado en 2006, todavía es bastante joven con respecto a sus hermanos. Está dirigido a desarrolladores más experimentados, aunque todavía trata de resolver muchas tareas de bajo nivel para el programador.
  • Java es un veterano de desarrollo comercial que apareció en 1995, uno de los lenguajes más utilizados en el desarrollo de aplicaciones empresariales en este momento. Con sus conceptos básicos y una gran optimización del entorno de tiempo de ejecución, puede ser bastante complicado para un principiante.
  • ASP.net es una plataforma de desarrollo de aplicaciones lanzada por Microsoft. Para escribir la funcionalidad, se usa principalmente el lenguaje C # (pronunciado C Sharp), que apareció en 2000. Su complejidad es comparable al nivel entre Java y Rust.
  • PHP: utilizado originalmente para el preprocesamiento de HTML, en este momento, aunque conserva el liderazgo absoluto en el mercado de idiomas, existe una tendencia a la disminución del uso. Presenta un umbral de entrada bajo, facilidad de escritura de código, pero al mismo tiempo, cuando se desarrollan aplicaciones lo suficientemente grandes, la funcionalidad del idioma puede no ser suficiente.

Bueno, la parte final de nuestra aplicación, la más tangible para el usuario, Frontend (frontend), es la cara de su aplicación, es con esta parte que el usuario interactúa directamente.

Sin entrar en detalles, la interfaz moderna se basa en tres pilares, marcos (y no tanto), para crear interfaces de usuario. En consecuencia, los tres más populares son:

  • ReactJS no es un marco, sino una biblioteca. En realidad, el marco difiere del orgulloso título solo en ausencia de algunas funciones "listas para usar" y la necesidad de instalarlas manualmente. Por lo tanto, hay varias variaciones de la "preparación" de esta biblioteca, formando una especie de marco. Para un principiante, puede ser complicado, debido a algunos principios básicos y una configuración bastante agresiva del entorno de ensamblaje. Sin embargo, para comenzar rápidamente, puede usar el paquete "create-react-app".
  • VueJS es un marco para construir interfaces personalizadas. De esta trinidad, con razón toma el título del marco más fácil de usar, para el desarrollo en Vue el umbral de entrada es más bajo que el de los otros hermanos citados. Además, entre ellos es el más joven.
  • Angular: considerado el más complejo de los marcos dados, el único requiere TypeScript (un complemento para el lenguaje Javascript). A menudo se usa para construir grandes aplicaciones empresariales.

Resumiendo lo anterior, podemos concluir que ahora el despliegue de la aplicación es fundamentalmente diferente de la forma en que se desarrolló este proceso. Sin embargo, nadie se molesta en llevar a cabo el "despliegue" a la antigua usanza. Pero, ¿vale la pena el poco tiempo ahorrado al principio, una gran cantidad de rastrillos que el desarrollador que ha elegido este camino tiene que pisar? Creo que la respuesta es no. Después de pasar un poco más de tiempo familiarizándose con estas herramientas (y no necesita más, porque necesita comprender si las necesita en el proyecto actual o no), puede implementarlas, reduciendo significativamente, por ejemplo, los casos de errores fantasmales que dependen del entorno y manifestándose solo en el servidor de producción, análisis nocturno, lo que provocó el bloqueo del servidor y por qué no se inicia, y mucho más.

Source: https://habr.com/ru/post/446642/


All Articles