23.10.2021 Views

RAVENDB editado

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CATEDRÁTICO

ERICK ALBERTO DÍAZ MARTÍNEZ

ASIGNATURA

INSTALACIÓN Y CONFIGURACIÓN DE SISTEMAS

GESTORES DE BASES DE DATOS

TEMA

USO DE DOCKER Y RAVENDB

INTEGRANTES

Genesis Giselle Argueta Pastora

Celso Abraham García Cáceres

María José Menjivar Portillo

Daniel Eduardo Navidad González

Emerson Antonio Raymundo Quintanilla

AP100321

GC100221

MP100521

NG100221

RQ100221

FECHA

XXXXXXX


ÍNDICE

INTRODUCCIÓN .............................................................................................................................. I

OBJETIVOS ...................................................................................................................................... II

Objetivo General: .......................................................................................................................... II

Objetivos Específicos: ................................................................................................................... II

MARCO TEÓRICO ......................................................................................................................... 1

RAVENDB ..................................................................................................................................... 2

Ventajas de RavenDB ............................................................................................................... 4

Desventajas de RavenDB .......................................................................................................... 5

Requerimientos para la instalación de RavenDB ................................................................... 6

Funcionamiento manual de RavenDB ..................................................................................... 7

Instalando RavenDB en la maquina local ........................................................................... 7

Ejecutando en Docker ....................................................................................................... 7

Ejecutando en Windows ................................................................................................... 8

Creación de una Base de datos ....................................................................................... 11

DOCKER ..................................................................................................................................... 13

Historia ..................................................................................................................................... 14

Ventajas de Docker ............................................................................................................. 20

Desventajas de Docker ........................................................................................................ 21

Requerimientos para Instalar Docker ............................................................................... 22

Funcionamiento manual de Docker ................................................................................... 22

Instalación de Docker...................................................................................................... 22

Creación de container con RavenDB ............................................................................. 30

CONCLUSIÓN ................................................................................................................................. III

BIBLIOGRAFÍA .............................................................................................................................. IV


INTRODUCCIÓN

El uso de RavenDB y Docker como sistemas almacenadores y/o contenedores de datos está

siendo impulsado desde la creación de ambos. Cabe mencionar que ambos SON un proyecto

de código abierto con pequeñas diferencias que promueven el uso y la automatización de

aplicaciones contenedoras y autosuficientes que se puedan ejecutar en la nube o localmente

en el centro de recursos del cliente.

I


OBJETIVOS

Objetivo General:

Explorar y ejecutar el uso de ambas plataformas (RavenDB-Docker) en entornos

reales y aplicables.

Objetivos Específicos:

Exponer los beneficios y el uso de trabajar con diferentes plataformas manejadoras

de base de datos

Enfatizar la amplia oferta y demanda de programas y servicios que gestionen y

agilicen el manejo de datos.

II


MARCO TEÓRICO

Las bases de datos se utilizan para almacenar y organizar grandes cantidades de datos.

Existen muchos tipos diferentes de bases de datos, pero cuando se trata del desarrollo de

software, el tipo más utilizado es una base de datos relacional. La mayoría de las bases de

datos relacionales usan el lenguaje de consulta SQL para acceder a los datos que se

almacenan en tablas predefinidas. La complejidad de las bases de datos SQL llevó a los

desarrolladores a encontrar un enfoque más simple que dio lugar a las bases de datos NoSQL.

Evolución de la base de datos

Las bases de datos han evolucionado drásticamente desde su inicio a principios de la década

de 1960. Las bases de datos de navegación, como la base de datos jerárquica (que se basaba

en un modelo de árbol y permitía una relación de uno a muchos) y la base de datos de red

(un modelo más flexible que permitía relaciones múltiples), eran los sistemas originales que

se utilizaban para almacenar y manipular datos. Aunque eran sencillos, estos primeros

sistemas eran inflexibles.

Las bases de datos NoSQL proporcionan una forma más simple y rápida de organizar un

volumen extremadamente alto de tipos de datos dispares. En lugar de utilizar estructuras

predefinidas para almacenar los datos, que requieren desconectar la base de datos para

realizar cambios, las bases de datos NoSQL permiten a los programadores agregar nuevos

datos sobre la marcha. Existen diferentes tipos de bases de datos NoSQL, según el modelo

que utilicen para almacenar datos. Un modelo de almacenamiento de datos es una base de

datos orientada a documentos como XML o RavenDB. Otros incluyen almacenes de valores

clave como BerkelyDB, almacenes de columna ancha como Cassandra, bases de datos de

gráficos como Neo4J y más.

Desafíos de las bases de datos

Las bases de datos de las grandes empresas de hoy en día soportan a menudo consultas muy

complejas y se espera que proporcionen respuestas casi instantáneas a esas consultas. En

consecuencia, se solicita a los administradores de bases de datos que empleen una amplia

variedad de métodos para ayudar a mejorar el rendimiento.

1


RAVENDB

RavenDB, es un proyecto de código abierto, pero con una

opción comercial para base de datos para plataformas

.NET/Windows. Raven ofrece un diseño de modelo de datos flexible para adaptarse a las

necesidades de los sistemas del mundo real. Este sistema permite utilizar las consultas Linq

que se basan en la baja latencia y obtienen un alto rendimiento.

Entre las características de este sistema podemos destacar:

Infraestructura escalable

Configuración sencilla en Windows. Es fácil de instalar y se ejecuta en ventanas como

un servicio normal o un sitio web de IIS7.

Definir fácilmente los índices con consultas LINQ.

API .NET. Raven viene con un api que implementa la unidad de trabajo.

RavenDB está publicado bajo licencia de código abierto y una licencia comercial, lo que

significa que está libremente disponible, pero si se quiere utilizar con un software propietario,

habría que adquirir una licencia comercial.

Los documentos en RavenDB son esquemas JSON. Los documentos son entidades

independientes no relacionadas entre sí. Algunos ejemplos de documentos:

Índices y consultas

Las consultas se expresan en LINQ o con un lenguaje de consulta propietario llamado RQL

(siglas de Raven Query Language) que tiene una sintaxis similar a SQL.

Índices dinámicos: en RavenDB, las consultas solo pueden satisfacerse mediante un

índice; si no existe un índice apropiado, se crea un nuevo índice para satisfacer la

consulta.

Consultas de grafos: los documentos relacionados se pueden tratar como vértices en un

grafo, y las conexiones se tratan como bordes. Esto permite entre otras cosas crear

consultas recursivas.

2


Proyecciones: los índices se pueden configurar para transformar datos indexados,

realizar cálculos, realizar agregaciones y ejecutar código javascript en el lado del

servidor.

Extensiones de documentos

Los documentos se pueden ampliar con otros tipos de datos menos adecuados para JSON.

Estas extensiones se pueden cargar, modificar y almacenar en forma independiente del

documento.

Archivos adjuntos: los documentos pueden tener varios archivos adjuntos de

cualquier tipo de datos, como imágenes, audio o binario puro.

Series de tiempo: datos numéricos asociados con tiempos específicos y ordenados

cronológicamente.

Nube de RavenDB

RavenDB Cloud es una base de datos administrada como servicio lanzada en 2019 en AWS,

Azure y Google Compute Platform. El servicio realiza tareas de administración como

mantenimiento de hardware y seguridad para los usuarios. Cuenta con el uso compartido de

recursos de CPU entre los diferentes nodos en un clúster para limitar la sobrecarga.

3


Ventajas de RavenDB

Infraestructura escalable: Al tener una infraestructura escalable como la de Ravendb

tenemos la ventaja de tener un proyecto que va a estar creciendo constantemente ya que

podemos seguir agregando cosas y corregir errores en su infraestructura convirtiendo

nuestro proyecto en algo que siempre estará en crecimiento

Configuración en Windows simple: Es un programa con una configuración muy simple

en Windows esto quiere decir que no batallaremos para poder configurarlo en nuestras

maquinas que tengan instalado el sistema operativo de Windows

Map/Reduce: MapReduce es una técnica de procesamiento y un programa modelo de

computación distribuida basada en java. El algoritmo MapReduce contiene dos tareas

importantes, a saber Mapa y reducir. Mapa toma un conjunto de datos y se convierte en

otro conjunto de datos, en el que los elementos se dividen en tuplas (pares clave/valor).

En segundo lugar, reducir tarea, que toma la salida de un mapa como entrada y combina

los datos tuplas en un conjunto más pequeño de tuplas. Como la secuencia de MapReduce

el nombre implica, la reducción se realiza siempre después de que el mapa.

La principal ventaja de MapReduce es que es fácil de escalar procesamiento de datos en

múltiples nodos. En el modelo MapReduce, el procesamiento de datos primitivos son

llamados mapas y reductores. Descomposición de una aplicación de procesamiento de

datos en mapas y reductores a veces es no trivial. Pero, una vez que escribir una aplicación

en el MapReduce forma, la escala de la aplicación que se ejecuta en cientos, miles o

incluso decenas de miles de máquinas en un clúster es simplemente un cambio de

configuración. Esta escalabilidad sencilla es lo que ha atraído a muchos programadores a

usar el modelo MapReduce.

NET Client API: API es el acrónimo usado para Application Programming Interface,

que traducido al español, significa literalmente Interfaz de Programación de

Aplicaciones. Es una forma de integrar sistemas por medio de protocolos utilizados en el

desarrollo de las aplicaciones. Es decir, una API es una herramienta que permite la

comunicación entre aplicaciones a través de un software para compartir sus acciones,

estándares que en nuestro caso tienen el .net.

4


RESTful API: Una API de REST, o API de RESTful, es una interfaz de programación

de aplicaciones (API o API web) que se ajusta a los límites de la arquitectura REST y

permite la interacción con los servicios web de RESTful. El informático Roy Fielding es

el creador de la transferencia de estado representacional (REST).

Desventajas de RavenDB

Atomicidad: No todas las bases de datos contienen la característica de la atomicidad en

la información, esto quiere decir, que la información en ocasiones no es consistente,

puede ser diferente en cada uno de los nodos replicas que se puedan configurar en la

arquitectura de base de datos.

Documentación del Software: Dado que es un programa NoSQL, es relativamente

nuevo, las operaciones pueden ser limitadas y se requiera de conocimientos avanzados

con el uso de la herramienta y las personas que se encuentran realizando estos desarrollos

en el software tengan que invertir más tiempo en los desarrollos.

Estándares en el lenguaje: No se tiene un estándar definido entre los diferentes motores

que ofrecen este servicio, es decir, por ejemplo: DB2 para poder insertar información

sobre su base de datos, el manejo de los objetos JSON no es el mismo como se utiliza en

MondosDB y con ellos la diversidad de conocimientos que se tiene que tener

dependiendo de la solución NoSQL se vaya a utilizar.

Herramientas GUI (Graphical User Interface): Las herramientas que ofrecen para la

administración de estas herramientas, suelen tener acceso por consola, no tienen una

interfaz gráfica, se requiere conocimiento amplio de las instrucciones a utilizar para su

mantenimiento.

5


Requerimientos para la instalación de RavenDB

Requerimientos mínimos:

512 MB de RAM

CPU de 1 GHz (x64, x86, ARM)

1 GB de espacio en disco

SO: RavenDB puede funcionar en cualquier sistema operativo que ejecute .NET

Core

Requerimientos Recomendados:

Depende del uso, para un solo nodo en el clúster:

8GB de RAM al menos

CPU de 4 núcleos a 3GHz (x64, x86, ARM)

1 GB de espacio en disco (o más, depende del tamaño de la base de datos)

SO: Windows Server 2016 / Ubuntu 16.04 LTS

6


Funcionamiento manual de RavenDB

Instalando RavenDB en la maquina local

Para esta sección, supongo que eres un desarrollador que intenta obtener una instancia de

RavenDB para poder explorarla. Vamos a repasar dos escenarios de instalación rápida, y

puede seleccionar el que tenga más sentido para su configuración. Después de eso, puede

pasar a la siguiente sección, donde realmente comenzaremos a usar RavenDB.

Ejecutando en Docker

La forma más fácil de obtener RavenDB es probablemente a través de Docker. Si ya tiene Docker

instalado, todo lo que necesita hacer es ejecutar el siguiente comando (usando PowerShell):

1 $ rvn_args = "--Setup.Mode = Ninguno --License.Eula.Accepted = true"

2 Docker ejecutar `

3 -p 8080: 8080 '

4 -e RAVEN_ARGS = $ rvn_args `

5 ravendb / ravendb

O puede usar el comando: docker pull ravendb/ravendb

Docker ahora obtendrá la última versión de RavenDB y creará un nuevo contenedor para

alojarlo. Tenga en cuenta que lo ejecutamos en modo desarrollador, sin ninguna

autenticación.

Ahora puede acceder a su instancia de RavenDB usando http: // localhost: 8080. Si algo ya

tiene el puerto 8080 en su máquina, puede asignarlo a uno diferente usando la opción -p 8080:

8081.

7


Ejecutando en Windows

Para configurar RavenDB en Windows, deberá ir a https://ravendb.net/download, seleccionar

la plataforma adecuada (Windows x64, en este caso) y descargar el archivo zip que contiene

los binarios.

Extraiga el archivo a un directorio y luego ejecute el script Start.cmd o el ejecutable Server \

Raven.Server.exe. Esto ejecutará RavenDB en modo interactivo, dentro de una aplicación de

consola, y puede acceder al servidor yendo a http: // localhost: 8080 en su navegador.

1. Con la carpeta Zip que se descargó y se extrajo va utilizar el script “run.ps1” y lo va

ejecutar en Powershell.

2. Este script nos llevara a la página de RavenDB en la cual seleccionaremos el tipo de

servicio, en este caso utilizaremos el de tipo “Unsecure”.

8


3. Al seleccionar el modo “Unsecure” se nos presentara la siguiente pantalla, en la cual

cambiaremos los datos necesarios.

4. Finalizada la configuración podremos ver lo que es la aplicación RavenStudio dentro de

nuestro navegador web.

Para finalizar nuestra configuración de manera satisfactoria por favor diríjase al centro de

notificaciones para obtener una licencia para su producto, cabe recalcar que existen diferentes

tipos de licencias pero en esta ocasión solicitaremos la licencia “Community License” la cual

no posee un costo monetario para adquirirla.

9


5. Al solicitar la licencia deberá completar el siguiente formulario.

6. Al completar el formulario se nos presentará la siguiente pantalla en la cual se nos pedirá

esperar por un email en el cual se nos dará nuestra licencia.

Durante el tiempo de espera puede explorar un poco más sobre RavenDB en los cuadros

que se nos muestran en la pantalla. Por favor estar al tanto de la bandeja de entrada del

correo que registro en el formulario ya que ahí recibirá su licencia para RavenDB.

10


7. Recibida la licencia por favor copie el comando que se le entrego y péguelo en el espacio

donde solicito su licencia con anterioridad.

Ha finalizado de manera exitosa su configuración dentro de RavenDB, proceda a crear una

base de datos dentro del programa con la siguiente explicación.

Creación de una Base de datos

En este punto, ya ha configurado una instancia de RavenDB para trabajar y ha cargado

RavenDB Studio en su navegador. En aras de la simplicidad, asumiré a partir de ahora que

está ejecutando RavenDB en la máquina local.

1. En el studio de RavenDB diríjase al área de Database para crear su primera base de datos.

11


2. En esta pantalla visualizará el espacio en que se guardarán sus bases de datos, pero como

crearemos nuestra primera base de datos por favor seleccione la opción “Create new

database”.

3. Al seleccionar la opción “Create new database” se nos presentara la siguiente pantalla:

En esta pantalla colocaremos un nombre a nuestra base de datos y haremos las

configuraciones necesarias para la misma. Al finalizar la configuración presione el botón

“create”.

4. Podrá observar que su base de datos ha sido creada con éxito.

12


¿Qué son los contenedores?

DOCKER

Los contenedores son una forma de virtualización del sistema operativo. Se puede usar un

solo contenedor para ejecutar cualquier cosa, desde micro servicios o procesos de software

hasta aplicaciones más grandes. El contenedor contiene todos los archivos ejecutables,

códigos binarios, bibliotecas y archivos de configuración necesarios. Sin embargo, a

diferencia de los métodos de virtualización de máquinas o servidores, los contenedores no

contienen imágenes del sistema operativo. Esto los hace más livianos, más portátiles y

reducen significativamente los gastos generales. En implementaciones de aplicaciones más

grandes, se pueden implementar varios contenedores como uno o más clústeres de

contenedores. Estos clústeres pueden ser administrados por un orquestador de contenedores.

Beneficios de los contenedores

Los contenedores son una forma optimizada de crear, probar, poner en marcha y volver a

poner en marcha aplicaciones en varios entornos, desde un portátil local de un desarrollador

hasta un centro de datos on-premises e incluso en la nube. Algunos de los beneficios de los

contenedores son:

Menos sobrecarga

Mayor eficiencia

Mayor portabilidad

Mejor desarrollo de aplicaciones

Funcionamiento más constante

Brinda flexibilidad

13


¿Qué es Docker?

Docker es un proyecto de código abierto para la implementación

automatizada de aplicaciones, como contenedores portátiles y

autosuficientes que se pueden ejecutar en la nube o localmente. Docker

también es una empresa que trabaja con proveedores de nube, Linux y

Windows (incluido Microsoft) para promover y promover esta tecnología.

Historia

Fundada como DotCloud en el 2008 por Solomon Hykes en París. Esta empresa es una de

las que proporcionaba servicios de alojamiento web y bases de datos. Ayuda a administrar

su infraestructura y automatizar procesos y recursos. Los ingenieros de DotCloud lanzaron

algunas funciones implementadas en el kernel de Linux, incluidos LXC (contenedor de

Linux) y CGroup. Estas características como la base de Docker siempre han existido y no

fueron inventadas por los ingenieros de DotCloud. Lo que hicieron los ingenieros fue innovar

en la API estándar, que simplificó por completo el proceso de creación de contenedores con

LXC.

Esta compilación de contenedores que utiliza API estándar se denominó Docker, y DotCloud

lo trató como un proyecto privado hasta que demostró su innovación en Pycon en 2013. Poco

después, Se lanzó Docker como código abierto para que toda la comunidad pueda descargar,

ejecutar y modificar su código. Poco después, DotCloud cambió su nombre a Docker inc.

Docker estaba de moda, recaudando decenas de millones de dólares en fondos, tanto que

Microsoft intentó adquirirlo en 2016.

Desde que Docker se hizo público, ha tenido muchas mejoras, la más importante fue

Volumes, la cual permite crear persistencia para las aplicaciones que estén dentro del

contenedor y Swarm que es el orquestador de contenedores. Docker permite crear espacios

aislados y ejecutar pruebas o aplicaciones independientes, pero resultaba más complejo estar

administrando muchos contenedores, por este motivo se creó Swarm.

Inicio

14


Docker emerge en 2013

Docker se lanzó por primera vez como una plataforma de código abierto en marzo de 2013,

bajo el nombre dotCloud, que no se cambió hasta septiembre de 2013. En solo unos meses,

Docker vio una gran cantidad de interés, mostrando más de 10,000 ejecuciones de prueba por

parte de los desarrolladores. tras el lanzamiento de un tutorial interactivo en agosto de 2013,

y se asoció con Red Hat el 19 de septiembre de 2013.

2014 ve un aumento en la popularidad de Docker a medida que se revelan los problemas

Cuando Docker anunció la versión 1.0 en junio de 2014, el software se había descargado la

asombrosa cantidad de 2,75 millones de veces. Pero eso no significaba que Docker fuera el

final de todas las plataformas de administración de contenedores. Muchos usuarios se

apresuraron a señalar la falta de seguridad de Docker debido a su uso de un demonio central

de Docker, que empresas como CoreOS tomaron como una señal para proporcionar su propio

software de administración de contenedores que les aseguraba a los usuarios una plataforma

más confiable y segura.

2015 marca la mayor ronda de recaudación de fondos de Docker

En 2015, Goldman Sachs lideró a un grupo de inversores para respaldar a Docker,

recaudando 95 millones de dólares en su cuarta ronda de financiación. Esta ronda de

inversión elevó el valor de Docker a un estimado de $ 1 mil millones, lo que hizo que la

compañía se iniciara en el club unicornio, pero también puso en duda la capacidad de Docker

para proporcionar una oferta pagada a las organizaciones. Teniendo en cuenta su estado de

código abierto, Docker tuvo que mostrar a las organizaciones y desarrolladores que su

producto valía el dinero por el que vendía una vez que llegaba al mercado.

En el año siguiente, Docker realizó varias adquisiciones, como SocketPlane, Kitematic y

Tutum, e introdujo una iniciativa grupal con CoreOS, Google, Microsoft y Amazon para

crear un nuevo estándar para contenedores de software con la creación de Open Container

Initiative.

15


Microsoft entra en el redil en 2016

En 2016, Microsoft aún tenía que proporcionar una versión reciente de su software para

admitir contenedores Docker nativos. Mientras tanto, una empresa de la competencia

introdujo su propio software para satisfacer las necesidades de los usuarios de Microsoft:

WinDocks 1.0. WinDocks proporcionó a los usuarios las características que esperaban de

Microsoft, como la capacidad de admitir servidores .NET y SQL en contenedores mientras

ejecutaban Windows Server.

Poco después, Microsoft anunció la primera versión preliminar pública de los contenedores

de Windows Server y Docker recuperó el apoyo de los usuarios de Microsoft. El 26 de

septiembre de 2016, Microsoft puso oficialmente Windows Server 2016 , impulsado por

Docker, a disposición del público en general, lo que permite a los usuarios ejecutar

contenedores Docker de forma nativa en Windows Server. Este fue también el año en que

Docker agregó a su arsenal de adquisiciones, incorporando Unikernel Systems, Conductant

y la startup de almacenamiento persistente Infinit.

Lanzamientos de Docker Enterprise Edition en 2017

Docker comenzó 2017 con la visión de que tanto su empresa como su software se convirtieran

en la plataforma de gestión de contenedores más utilizada del mercado. En marzo de 2017,

Docker anunció Docker Enterprise Edition (EE) en su conferencia de usuarios DockerCon,

con la esperanza de atraer a grandes organizaciones con implementaciones críticas para el

negocio.

Docker EE fue el primer producto con soporte comercial de la compañía, que abordó las

necesidades de las organizaciones que requerían una plataforma de administración de

contenedores flexible y resistente para funcionar con sus cargas de trabajo actuales . Luego,

Docker cambió el nombre de su proyecto de código abierto, conocido como Moby Project,

para diferenciarlo de su producto con soporte comercial, lo que generó confusión para

muchos usuarios familiarizados con la plataforma. En octubre de 2017, Docker anunció una

adición a Docker EE: compatibilidad con Kubernetes como opción de orquestador.

16


La historia de Docker continúa evolucionando en 2018 y 2019

A principios de 2018, Docker realizó cambios importantes en Docker EE, introduciendo la

versión 2.0 en abril y la 2.1 más tarde ese año. Esas actualizaciones trajeron características

de soporte para entornos híbridos construidos con diferentes pilas de tecnología y les dieron

a los usuarios la posibilidad de elegir entre Kubernetes y Swarm para la orquestación. Docker

anunció su versión más reciente, Docker 3.0, en abril de 2019. Docker 3.0 ofrece a los

usuarios la capacidad de crear aplicaciones multiservicio basadas en contenedores que

pueden ejecutarse desde cualquier entorno y elimina la necesidad de crear estas aplicaciones

en cualquier otro lugar que no sea su escritorio.

Con los cambios en los precios de Docker EE en mayo de 2019, muchos usuarios se

preguntan cómo Docker hará malabarismos con sus relaciones entre las pequeñas empresas

y las grandes organizaciones que dependen de grandes cantidades de hardware de servidor

para alojar contenedores, y si podrán o no satisfacer las demandas. de ambos.

17


Base y motor

Kubernetes

Si aumenta la cantidad de aplicaciones en nuestro sistema, la administración se volverá

difícil. Docker no es suficiente, porque necesitamos coordinar el despliegue, la supervisión

del servicio, el reemplazo, la expansión automática y, en última instancia, la gestión de los

diferentes servicios que componen nuestra arquitectura distribuida.

Google puede ser la primera empresa en darse cuenta de que necesita una mejor manera de

implementar y administrar sus componentes de software para lograr la expansión global. A

lo largo de los años, Google desarrolló Borg internamente. En 2014, después de casi diez

años de uso interno intensivo, Kubernetes se lanzó al público como un sistema de código

abierto basado en el aprendizaje que utiliza servicios a gran escala.

En la DockerCon de 2014, Eric Brewer, el vicepresidente de ingeniería, lo presentó en broma

como otra plataforma de orquestación. De hecho, en la DockerCon 2014 se mostraron más

de una docena de sistemas similares, algunos de los cuales son públicos y otros internos,

como Facebook o Spotify. Finalmente, cinco años después, el proyecto continúa avanzando

a toda velocidad, y hoy, Kubernetes se ha convertido en el estándar de facto para implementar

e implementar aplicaciones distribuidas. Lo más importante es que Kubernetes está diseñado

para usarse en todas partes, por lo que puede orquestar implementaciones en

implementaciones locales, nubes públicas e híbridas.

18


Actualmente

A medida que la tecnología de desarrollo nativa de la nube se convierte en el modelo principal

para crear y ejecutar software, el uso de contenedores continúa creciendo, pero Docker ahora

es solo una parte del rompecabezas. Docker se ha vuelto popular porque puede mover

fácilmente el código de la aplicación y todas sus dependencias desde la computadora portátil

del desarrollador al servidor. Pero el auge de los contenedores ha cambiado la forma en que

se construyen las aplicaciones, desde pilas monolíticas hasta redes de microservicios. Pronto,

muchos usuarios necesitaron una forma de organizar y administrar grupos de contenedores a

gran escala.

El proyecto de código abierto Kubernetes, que nació en Google, se convirtió rápidamente en

la mejor manera de lograr este objetivo, reemplazando los propios intentos de Docker de

resolver este problema con su Swarm Orchestrator (RIP). En 2019, en el caso de problemas

de financiación cada vez más graves, Docker finalmente vendió su negocio empresarial a

Mirantis, y Mirantis luego fusionó Docker Enterprise en Mirantis Kubernetes Engine. Los

remanentes de Docker, incluido el tiempo de ejecución del contenedor Docker Engine de

código abierto original, el repositorio de imágenes de Docker Hub y la aplicación de

escritorio Docker, son desarrolladores de software que, bajo el liderazgo del veterano de siete

años Scott Johnston, esperan reposicionar su negocio en torno a su base de clientes principal.

19


Ventajas de Docker

Modularidad: El enfoque Docker para la creación de contenedores se centra en la

capacidad de tomar una parte de una aplicación, actualizarla o repararla, sin tomar

innecesariamente toda la aplicación. Además de estos enfoques basados en

microservicios, puede compartir procesos entre varias aplicaciones de la misma forma

que funciona la arquitectura orientada a servicios (SOA).

Capas y Control de Versión de la Imagen: Cada archivo de imagen de Docker está

conformado por una serie de capas. Estas capas se combinan en una única imagen. Una

capa se crea cuando la imagen cambia. Cada vez que un usuario especifica un comando,

como ejecutar o copiar, se crea una nueva capa.

Docker reutiliza estas capas para construir nuevos contenedores. Lo cual hace mucho más

rápido el proceso de construcción. Los cambios intermedios se comparten entre

imágenes, mejorando aún más la velocidad, el tamaño y la eficiencia. El control de

versión es inherente a la creación de capas. Cada vez que hay un cambio nuevo, existe

básicamente un registro de cambios integrado con control total de las imágenes de

contenedor.

Restauración: Probablemente la mejor parte de la creación de capas es la capacidad de

restaurar. Toda imagen tiene capas. ¿No le gusta la iteración actual de una imagen?

Restáurela a la versión anterior. Esto soporta un enfoque de desarrollo ágil y ayuda a

hacer realidad la integración e implementación continuas (CI/CD) desde una perspectiva

de herramientas.

Implementación Rápida: Solía demorar días desarrollar un nuevo hardware, ejecutarlo,

proveer y facilitar. Y el nivel de esfuerzo y sobrecarga era extenuante. Los contenedores

basados en Docker pueden reducir el tiempo de implementación a segundos. Al crear un

contenedor para cada proceso, puede compartir rápidamente los procesos similares con

nuevas aplicaciones. Los tiempos de implementación son sustancialmente inferiores.

Asimismo, con la velocidad de implementación, puede crear y borrar datos creados por

sus contenedores sin preocupación, de forma fácil y accesible. Entonces, la tecnología

Docker es un enfoque más granular y controlable, basado en microservicios, que coloca

mayor valor en la eficiencia.

20


Desventajas de Docker

En sí mismo, Docker es muy bueno para gestionar contenedores únicos. Cuando comienza a

usar cada vez más contenedores y aplicaciones en contenedores. Es muy difícil hacer la

separación en cientos de piezas, la administración y la orquestación. Finalmente, debe

retroceder y agrupar los contenedores para proporcionar servicios (de red, de seguridad, de

telemetría, etc.) en todos los contenedores. Aquí es cuando aparecen los Kubernetes.

Con Docker no se obtiene la misma funcionalidad tipo UNIX que se obtiene con los

contenedores Linux tradicionales. Por ejemplo, no se obtiene la capacidad para usar procesos

como cron o syslog en el contenedor, junto con la aplicación. Del mismo modo, existen

ciertos límites, como la limpieza de los procesos después de terminar con los procesos hijo.

Lo cual es un proceso inherente en los contenedores Linux tradicionales. Estas cuestiones se

pueden mitigar mediante la modificación del archivo de configuración y la configuración de

esas habilidades desde el comienzo (algo que no es inmediatamente obvio a simple vista).

La instalación de Docker es muy fácil. Actualmente, Docker es compatible con todos los

sistemas de la serie Linux (Ubuntu, RHEL, Debian, etc.). A través de la herramienta virtual

Boot2Docker, también puede ejecutarse normalmente en OS X y Windows Docker.

Limitaciones del entorno operativo de Docker:

Debe ejecutarse en una máquina de 64 bits, actualmente solo se admiten x86_64 y AMD64,

y los sistemas 32 no lo admiten. El kernel de Linux del sistema debe ser 3.8 o superior, y el

kernel es compatible con Device Mapper, AUFS, VFS, btrfs y otros formatos de

almacenamiento. El kernel debe admitir cgroups y espacios de nombres. Entre las

limitaciones esta:

No proporciona una opción de almacenamiento.

Mal seguimiento.

Sin reprogramación automática de nodos inactivos.

Las acciones se deben realizar en CLI.

Gestión manual de múltiples instancias.

Necesita soporte para otras herramientas.

Implementación manual de clúster complicada.

Docker es una empresa con fines de lucro y algunos de sus componentes críticos, como

Docker Engine y Docker Desktop, no son de código abierto.

21


Requerimientos para Instalar Docker

Requisitos mínimos

Windows 10 64-bit: Pro, Enterprise, or Education (Build 16299 o superior).

Procesador de 64 bits.

4 GB RAM.

Habilitar en la BIOS la característica (el nombre varía en función del procesador que

tenga tu equipo) “Intel VR” o “VR-x” o “Virtualization Technology” o «AMD-V».

Instalación de Docker

Funcionamiento manual de Docker

1. Para instalar Docker, nos dirigimos a la página oficial de Docker y aparecen diferentes

versiones de descarga, en este caso instalaremos Docker for Windows. Al finalizar la

descarga abrimos el archivo y nos aparece el mensaje de advertencia y aceptamos.

22


2. Al ejecutarlo, se abrirá otra descarga para el programa. Al finalizar nos aparece el cuadro

de configuración y automáticamente selecciona las opciones de instalar los

requerimientos y agregar un acceso directo al escritorio. Al finalzar la instalación se pide

que reinicie el equipo.

3. Luego de reiniciar el equipo nos aparece los términos de uso del programa y 2 ventanas,

en la primera venta debemos continuar.

23


4. En la segunda venta nos dice que la instalación es incompleta porque nos falta una

actualización del Kernel de Linux , por lo que debemos dar click en el enlace que nos

aparece y nos manda a la página de Pasos de instalación manual para versiones anteriores

de WSL y nos dirige al punto 4 en donde descargaremos el paquete de actualización del

kernel de Linux.

5. Al terminar la descarga, abrimos el archivo, luego next y empieza la instalación.

24


6. Nos dirigimos a Windows PowerShell y digitamos el siguiente comando wsl --setdefault-version

2, y reiniciamos el equipo nuevamente, Ya que en algunas ocasiones, no

reconoce los cambios realizados.

25


7. Luego de reiniciar el equipo, abrimos Docker, nos da la bienvenida y muestra dos

opciones el primero es iniciar la guía para iniciar con Docker o saltarnos este paso, en

este caso seleccionaremos start para iniciar docker

8. Se nos da 4 pasos a seguir

26


9. En el paso 3 se nos abre la ventana de alerta de seguridad de Windows y debemos de

permitir el acceso a algunas características de Docker y luego podemos continuar.

27


10. Ahora ya es listo para poder trabajar en Docker

28


11. Como paso extra debemos de crear un usuario en Docker, para obtener una mejor interfaz de

trabajo, por lo cual debemos acceder a la página oficial de Docker , seleccionamos el tipo de

membresía, en este caso será la versión free.

29


Creación de container con RavenDB

Antes de crear su container recuerda mantener tu powershell de RavenDB abierto para crear

la conexión.

En el manual de funcionamiento de RavenDB se explica cómo instalar la imagen de

RavenDB dentro del sistema de Docker.

1. Primero nos dirigiremos a la aplicación de Docker desktop y pasaremos a la opción

“Images”, en la cual podremos visualizar las imágenes de diferentes sistemas entre ellas

la imagen de RavenDB y seleccionamos la opción “run”.

ñ

30


2. Al seleccionar la opción “Run” nos permitirá crear un container con RavenDB y

configuramos el container según nuestras necesidades.

3. Podremos visualizar que nuestro container ha sido creado y está en funcionamiento.

31


CONCLUSIÓN

Las bases de datos se utilizan para almacenar y organizar grandes cantidades de datos y

existen muchos tipos diferentes de bases de datos, pero cuando se trata del desarrollo de

software, el tipo más utilizado es una base de datos relacional. La mayoría de las bases de

datos relacionales usan el lenguaje de consulta SQL para acceder a los datos. La complejidad

de las bases de datos SQL llevó a los desarrolladores a encontrar un enfoque más simple que

dio lugar a las bases de datos NoSQL, ejemplo de ello, la creación y desarrollo de programas

como RavenDB y Docker.

III


BIBLIOGRAFÍA

N. (2019). ¿Qué son los contenedores? - Ventajas y casos prácticos | NetApp. Net App.

https://www.netapp.com/es/devops-solutions/what-are-containers/

N. (2021, 9 octubre). ¿Qué es Docker? Microsoft Docs. https://docs.microsoft.com/eses/dotnet/architecture/microservices/container-docker-introduction/docker-defined

contenedores y por qué es una de las mayores revoluciones de. . . Xataka.

Historia de Docker – AgileWorld. (s. f.). Agileworld. https://agileworld.cl/historia-dedocker/

Miell, I., & Sayers, H. A. (2019). Docker in Practice, Second Edition (2nd ed.). Manning

Publications.

Rodríguez, T. (2019, 10 septiembre). De Docker a Kubernetes: entendiendo qué son los

https://www.xataka.com/otros/docker-a-kubernetes-entendiendo-que-contenedores-quemayores-revoluciones-industria-desarrollo

Eini, O. (2018). Inside RavenDB 4.0: 1. Independently Published.

IV

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!