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