desarrollo e integración: todos los elementos que se

27

Upload: others

Post on 22-Mar-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

El despliegue de software es una de las fases dentro del ciclo de vida del software. El concepto ciclo de vida, se debe tomar en cuenta cuando desarrollamos, ya que debemos tratar el software como un ser vivo que nace, se desarrolla y muere.

Dentro de este ciclo de vida, una de las fases más importantes es su implementación en la parte productiva, ya que debe cumplir ciertas tareas, tanto del software, como el ambiente donde va a residir.

Ahora vamos a describir esta serie de tareas a cumplir:

• Configuración del hardware: Todas estas necesidades de hardware deben configurarse conforme a la plataforma (equipos, diseño de red, hardware de red).

• Instalación, actualización y migración de software: La arquitectura de la aplicación junto con todos los elementos que ayudan en la implementación, y que son instalados en el entorno de desarrollo.

• Configuración y personalización del sistema: Configuración de los distintos componentes del sistema, para que funcione como uno Integrado.

• Desarrollo e integración: Todos los elementos que se desarrollan en las arquitecturas amplias, tienen que funcionar de manera coordinada e integrada.

• Pruebas de prototipos y pilotos: La verificación de la arquitectura implementada frente a los casos de uso desarrollados.

• Presentación de producción: Implementación del ambiente de producción y pruebas para cumplir los requisitos del servicio.

En esta última tarea, debemos hacer énfasis en las siguientes subtareas que tenemos que tener en cuenta cuando nos referimos a aplicaciones con una gran disponibilidad.

Escalabilidad: Para hablar de escalabilidad no solo veremos como un todo, sino la descomponemos en cada uno de sus subsistemas. es decir, bases de datos y aplicaciones.

Bases de datos: Número de núcleos que se pueden ampliarse o reducirse en cualquier momento

Aplicaciones: Cantidad de instancias y funciones que pueden ampliarse en cualquier momento.

Disponibilidad: El sistema de datos que tanto está disponible.

Bases de datos: Mecanismos que nos permitan gestionar bases de datos en espera y si en algún momento se cae, entre de forma transparente para los usuarios

Aplicaciones: Considerar distribuir recursos entre varios dominios.

Ahora hablemos de tres conceptos fundamentales: Hosting, dominio y el Seo. Pero, empezaremos primero con el concepto de Seo y dejaremos para el final, el Hosting.

SEO (Search Engine Optimization): Es el posicionamiento de nuestra página sobre los buscadores, lo hacemos porque los usuarios nunca buscan después de la tercera página de un buscador como google pero aquí tenemos un problema el SEO y SPA no son muy compatibles, ya que toda la tecnología de búsqueda está sobre la arquitectura de la web y esta fue desarrollada con múltiples páginas, pero existen técnicas que lo optimizan.

Dominio: Es el nombre único con que se identifica tu aplicación web en internet. por qué es importante, porque imagínate que google no tuviera www.google.com

Hosting: Servicio de alojamiento que te permite publicar tu aplicación en línea; básicamente, contratas un espacio en un servidor virtual, la mayoría de las veces, donde subes todos los artefactos necesarios para que tu aplicación web funcione correctamente.

Hosting Compartido: Servidor compartido con varios clientes. Los Aplicativos web alojados comparten todos los recursos del servidor.

Hosting VPS (Servidor virtual privado): Servidor compartido con otros usuarios pero tienes un espacio del servidor reservado con memoria y recursos.

Alojamiento en la nube (Cloud Hosting): El proveedor tiene un grupo de servidores virtuales, los cuales replican tus archivos y recursos en varios de estos.

Hosting con servidor dedicado: Servidor físico dedicado exclusivamente para tu aplicación.

Redhat la define como entornos de tecnología de información que extraen, agrupan y comparten recursos escalables. Así mismo, es en un entorno de red, entonces podemos decir que es disponibilidad bajo demanda de recursos de cómputo bajo el esquema de servicios. Hay tres tipos de servicios de cloud que pueden ofrecer los proveedores:

• Infraestructura como servicio (IaaS): Se proporciona acceso a los recursos como: procesamiento, almacenamiento de datos y conexión en red.

• Plataforma como servicio (PaaS): Proporcionan infraestructura informática, de almacenamiento y también un nivel de plataforma de Servicios de software.

• Software como servicio (SaaS): Ofrecen servicios de nivel de aplicación, adaptados a las necesidades empresariales.

Es un servicio de base de datos en la nube (cloud Hosting) totalmente administrado que aloja bases de datos MongoDB. MLab, el cual se ejecuta en los proveedores de nube Amazon, Google y Microsoft Azure, y se ha asociado con proveedores de plataforma como servicio.

Es una plataforma como servicio de computación en la Nube que soporta distintos lenguajes de programación. En resumen es una plataforma en la cual los desarrolladores no se deben preocupar por la infraestructura y solo preocuparse por el desarrollo y permite el despliegue de versiones, rollback y gestionar dependencias.

Paso 1. Para crear una nueva cuenta: acceda al sitio web https://mlab.com/, pulsa sign up y llena el formulario de nuevo usuario. Accede, pulsa CREATE ACCOUNT y realiza Send an email verification.

Paso 2. Accede a la cuenta Mlab: en la página accede a LOG IN, y si es la primera vez que accedes, o no se han creado ninguna base de datos, se mostrará las siguientes opciones:

• MongoDB Deployments permite crear una implementación de MongoDB totalmente administrada en AWS, Azure o Google.

• Private Environments: entorno privado que permite crear una red privada con múltiples implementaciones de MongoDB.

Paso 3. Crear una Base de datos: en este paso solo vamos a tomar la opción de una base de datos gratuita y pulsar sobre Create new en la sección MongoDB Deployments, donde se despliega una pantalla para elegir el proveedor de servicios cloud Amazon, Google y Azure, y los tipos de planes. Escogeremos SANDBOX que es el plan gratuito.

Seleccionamos la región, indicamos el nombre de la nueva base de datos y confirmamos con SUBMIT ORDER.

Pulsando sobre el nombre de despliegue de la base de datos, se muestran dos formas de conexión a la base de datos, cliente shell de MongoDB y driver con URI MongoDB. además el menú de gestión de base de datos con las siguientes opciones:

• Collections: Gestión de colecciones e índices.

• Users: Gestión de usuarios.

• Stats: Estadísticas de uso.

• Backups: Copias de seguridad.

• Toools: Herramientas de importación y exportación.

Paso 4. Crear un usuario: con este paso podemos crear un usuario para acceder a la base de datos de manera segura. En el menú del panel de gestión de mLab, seleccionamos Users y damos click sobre Add database user, donde llenamos datos y creamos el usuario.

Paso 5. Creación de colecciones desde el panel de control: click sobre Add collection.En el formulario, introduciremos el nombre de la colección y pulsamos CREATE.

Paso 6. Importar/exportar ficheros de datos: Permite importar ficheros de datos en colecciones MongoDB, y exportar colecciones de datos MongoDB a ficheros. El formato de estos ficheros puede ser de tipo JSON, CSV y Binary

import/export para ficheros JSON:

# Import collection

mongoimport -h ds129386.mlab.com:29386 -d mydatabase -c <collection> -u <user> -p

<password> --file <input file>

# Export collection

mongoexport -h ds129386.mlab.com:29386 -d mydatabase -c <collection> -u <user> -p <password> -o <output file>

import/export para ficheros CVS:

# Import collection

mongoimport -h ds129386.mlab.com:29386 -d mydatabase -c <collection> -u <user> -p <password> --file <input .csv file> --type csv --headerline

# Export collection

mongoexport -h ds129386.mlab.com:29386 -d mydatabase -c <collection> -u <user> -p <password> -o <output .csv file> --csv -f <comma-separated list of field names>

y Binary:

# Import database

mongorestore -h ds129386.mlab.com:29386 -d mydatabase -u <user> -p <password> <input db directory>

# Export database

mongodump -h ds129386.mlab.com:29386 -d mydatabase -u <user> -p <password> -o

<output directory>

# Import collection

mongorestore -h ds129386.mlab.com:29386 -d mydatabase -u <user> -p <password> <input

.bson file>

# Export collection

mongodump -h ds129386.mlab.com:29386 -d mydatabase -c <collection> -u <user> -p

<password> -o <output directory>

Consideremos que ya desplegamos nuestra base de datos en otro servidor, y eso es importante ahora, ya que si recuerdas en nuestra arquitectura backend, la base de datos hace parte de un sistema o servicio de MogoDB que lo teníamos de forma local o en otro servidor y ahora ha cambiado de ubicación y por eso es importante, cambiar las direcciones de conexión de nuestro servicio antes de empezar, eso hace parte de nuestras pruebas de integración.

Paso 1. Crear una nueva cuenta: acceda al sitio web https://www.heroku.com/, pulsa sign up y llene el formulario de nuevo usuario acceda, pulse CREATE ACCOUNT y realice Send an email verification.

Paso 2. Accede a la cuenta Heroku: en la página acceda a LOG IN y en tu opción personal, eliges el botón New y selecciona la opción Create new app, donde colocas un nombre a tu proyecto, esto te servirá para administrarlos después, selecciona la región y aceptas

Paso 3. Panel de control: en este panel encontramos la administración de la aplicación:

Overview: descripción del proyecto.

Resources: recursos Dynos, Add-ons.

Deploy: Despliegue del proyecto

Metrics : métricas de la aplicación

Activity. actividades sobre el app que hacemos.

Access: administración de accesos usuarios y colaboradores

Settings: opciones de ajustes del app.

Seleccionamos heroku cli.

Paso 4. La Instalación de The Heroku CLI puede hacerse de dos formas; una en la selección en la parte de abajo está el link de acceso a la siguiente dirección:

https://devcenter.heroku.com/articles/heroku-cli . En esta dirección, puedes encontrar la guía de instalación, nosotros solo nos remitiremos a windows, ahí encontrarás el enlace para bajar el instalador, ejecuta e instala. Verifica su instalación: heroku --version

Paso 5. Inicia tu versión de heroku con $ heroku login y crea un repositorio o inicialice si ya lo tiene

$ cd my-project/

$ git init

$ heroku git:remote -a nodejsmintics

Paso 6. Despliega tu aplicación, una cosa importante es que cuando se va ejecutar una aplicación en Heroku, él siempre la intenta ejecutar con el comando Start y se le debe decir node, src /index.js en el package.json, más o menos así:

Paso 7. Confirma el código en tu repositoria y despliegue en Heroku usando git, es importante excluir la carpeta de node_modules, ya que estas se generan solas

$ git add

$ git commit -am "make it better"

$ git push heroku master

Paso 8. Ya puedes probar el servidor con la dirección correspondiente, y administrarlo desde ahí.

Vamos a explicarlo de nuevo desde el principio, pero toma en cuenta que si ya tienes cuentas e instalaciones no debes hacer los siguientes pasos. Aprovechemos para construirlo desde cero con las siguientes tareas.

• Creando proyecto angular básico

• Configuración de la implementación automática de GitHub a Heroku

• Implementación de la aplicación Angular en el servidor Heroku

Como una manera de repaso lo vamos hacer completo, pero recuerda que ya tienes el proyecto, solamente tienes que hacer unos cambios en el código, porque como ya lo explicamos:

Paso 1. Creando proyecto angular básico: Haz uso de Angular CLI, y crea un proyecto ng new proyectoNuevo

y despliégalo

cd proyectoNuevo

ng serve

Recuerda que ya lo realizaste, porque tu proyecto frontend ya lo has realizado.

Paso 2. Cree su repositorio y haga push. Inicia sesión en github y crea un nuevo repositorio. Luego ejecute los siguientes comandos:

git remote add origin <new_github_repository_url>

git add .

git commit -m "initial commit"

git push -u origin master

Paso 3. Configura la implementación automática de GitHub a Heroku, la ventaja de este paso es que, una vez que realizas un cambio en tu repositorio de github, automáticamente se envía el cambio a tu base de código en heroku, esto significa que solo tendrás que enviar tus cambios a github y listo.

Haga click en Create app

En el menú Implementar, en Método de Deployment, seleccione GitHub. Te pedirá que inicies sesión en su cuenta de github para que puedas conectarte e ingreses el nombre del repositorio de GitHub y hagas clic en Buscar. Una vez que se muestra el repositorio a continuación, haz clic en Conectar.

En Automatic Deploys, selecciona la rama master y haz clic en Enable Automatic Deploys

En Manual Deploys, haz clic Deploy Branch, para enviar nuestro código nuevo a heroku.

Paso 4. Configura tu aplicación angular

Instalelos en su aplicación ejecutando estos comandos en su terminal:

npm install @ angular / cli @ latest @ angular / compiler-cli --save-dev

En su package.json, copia:

"@angular/cli”: “1.4.9”,

"@angular/compiler-cli": "^4.4.6",

Paso 5. Crea un script postinstall en package.json

En "scripts", agregue un comando "heroku-postinstall" así:

"heroku-postbuild": "ng build --prod"

Paso 6. Agrega Node y NPM engines, entonces, ejecute node -v y npm -v para obtener la versión correcta e incluya en su archivo package.json así:

"engines": {

"node": "6.11.0",

"npm": "3.10.10"

}

Paso 7. Copia dependencias de typescript para informar a heroku que versión usa. instale enhanced solamente corra el comando

command npm install [email protected] --save-dev

Paso 8. Instala el servidor y corre tu app, necesitaremos configurar un servidor Express que ejecutará nuestra aplicación lista para producción (desde la carpeta dist creada), solo para garantizar una carga liviana y rápida.

Instale el servidor Express ejecutando:

npm install express path --save

Crea un archivo server.js en la raíz de la aplicación y pega el siguiente código:

//Install express server

const express = require('express');

const path = require('path');

const app = express();

// Serve only the static files form the dist directory

app.use(express.static(__dirname + '/dist/<name-of-app>'));

app.get('/*', function(req,res) {

res.sendFile(path.join(__dirname+'/dist/<name-of-app>/index.html'));

});

// Start the app by listening on the default Heroku port

app.listen(process.env.PORT || 8080);

Paso 9. Cambia el start command en package.json, a node server.js de la siguiente forma:

"start": "node server.js"

Parte del archivo se muestra a continuación

{

"name": "demo-deploy",

"version": "0.0.0",

"license": "MIT",

"scripts": {

"ng": "ng",

"start": "node server.js",

"build": "ng build",

"test": "ng test",

"lint": "ng lint",

"e2e": "ng e2e",

"postinstall": "ng build --aot -prod"

},

"private": true,

"dependencies": {

"@angular/animations": "^4.2.4",

"@angular/cli": "^1.4.9",

Ng-book 2: The Complete Guide to Angular 11, Felipe Coury, Carlos Taborda, Nate Murray, Ari Lerner

ANGULAR: Learn to build Web Applications in Angular, Srinivas Ram

Beginning Node.js, Express & MongoDB Development, Greg Lim

Cloud Computing: Concepts, Technology & Architecture, Ricardo Puttini, Thomas Erl, Zaigham Mahmood

Páginas

Angular, https://angular.io/docs

Redhat, https://www.redhat.com/es/topics/cloud

Mlab, https://docs.mlab.com/

Heroku, https://devcenter.heroku.com/