Rafaela Alimentos | Capacitación técnica - Sesión 1 (2023-09-19)
Introducción al Entorno de Desarrollo y Herramientas Utilizadas
Resumen de la Sección: En esta sección inicial, se presenta una introducción al entorno de desarrollo utilizado, así como a las herramientas clave empleadas en el proceso.
Introducción al Entorno de Desarrollo
- Iván Silverstein se presenta como el encargado de DevOps en el área, abarcando tareas como mantenimiento de repositorios, automatización de despliegues y monitoreo de recursos.
Herramientas Utilizadas
- Se mencionan las herramientas recientes utilizadas en un proyecto para igualar entornos entre desarrolladores, abordando temas como librerías, versiones y configuraciones para facilitar la uniformidad del entorno.
- Se destaca el uso combinado de WSL (Windows Subsystem for Linux) con Docker para generar imágenes basadas en servidores existentes en producción, permitiendo un entorno homogéneo para desarrollo y pruebas.
Odoo: Un Vistazo General
Resumen de la Sección: En este apartado se ofrece una visión general sobre Odoo, incluyendo su estructura básica y componentes fundamentales.
Visión General de Odoo
- Odoo es un entorno que utiliza Python y XML, centrándose en tecnologías de código abierto y recomendando Linux como sistema operativo principal.
- Destaca por su motor de base de datos PostgreSQL y su lenguaje principal Python. Está inspirado en el modelo MVC (Modelo Vista Controlador), simplificando el desarrollo web con un framework propio.
Funcionamiento Básico y Arquitectura
Resumen de la Sección: Aquí se explora el funcionamiento básico y la arquitectura subyacente en Odoo, detallando cómo opera desde una perspectiva técnica.
Funcionamiento Básico
- La arquitectura elemental implica que los usuarios realizan peticiones a través del ORM hacia las aplicaciones instaladas. El ORM convierte consultas a la base datos mediante Python, simplificando la interacción sin requerir profundos conocimientos SQL.
- El ORM transforma registros en objetos mediante programación orientada a objetos. Esto permite trabajar sobre los registros sin necesidad directa de manipular la base datos manualmente.
Manifest y Estructura Básica de un Módulo
Resumen de la Sección: En esta parte se discute la importancia del archivo manifest en un módulo, detallando su función para identificar archivos, descripciones, iconos y configuraciones. Además, se menciona la estructura básica de un módulo con sus carpetas correspondientes.
Archivo Manifest y Estructura Básica
- El archivo manifest es crucial para que el módulo se manifieste correctamente.
- Permite ubicar archivos, definir nombre del módulo, descripción e icono.
- La estructura básica de un módulo incluye carpetas de models y vistas en XML, con modelos y controles en Python.
Arquitectura Física y Distribución de Servidores
Resumen de la Sección: Aquí se aborda la arquitectura física comúnmente utilizada en la distribución de servicios en tres servidores distintos: base de datos, servidor backend (motor de Odoo) y Proxy reverso (como Nginx).
Arquitectura Física y Servidores
- La arquitectura típica implica tres servidores: base de datos, servidor backend y Proxy reverso.
- Cada servicio debe tener su propia máquina virtual con configuraciones específicas.
- El Proxy reverso como Nginx mejora la seguridad al gestionar solicitudes web HTTP.
Gestión a través del Repositorio
Resumen de la Sección: Se explora el uso del repositorio como herramienta fundamental para el desarrollo colaborativo en Odoo, permitiendo controlar versiones, seguimiento claro del desarrollo y despliegue continuo.
Gestión a través del Repositorio
- El repositorio es esencial para el desarrollo colaborativo en Odoo basado en la nube.
- Facilita el control de versiones, seguimiento detallado del desarrollo y despliegue continuo.
- Permite ramificar desarrollos paralelos manteniendo una rama principal estable (Master).
Workflow y Mantenimiento del Código
Resumen de la Sección: Discusión sobre el workflow utilizado para los desarrollos en Odoo que implica mantener una rama principal estable (Master), generar tags para marcar hitos importantes e integrar cambios correctamente.
Workflow y Mantenimiento
- El workflow actual implica mantener una rama principal estable (Master) con código probado.
- Es vital actualizar las ramas con Master antes de integrar cambios aprobados.
Comunicación y Conflictos en Desarrollo de Software
Resumen de la Sección: En esta sección se aborda la importancia de la comunicación en el desarrollo de software para evitar conflictos al trabajar en un mismo módulo.
Importancia de la Comunicación
- La comunicación es crucial cuando dos desarrollos trabajan en el mismo módulo para evitar conflictos.
- Antes de generar el público, es fundamental mantener una comunicación efectiva para prevenir problemas.
Mantenimiento y Pruebas en Desarrollo de Software
Resumen de la Sección: Se discute sobre la importancia del mantenimiento, pruebas y buenas prácticas en el desarrollo de software.
Mantenimiento y Pruebas
- Es vital mantener un historial claro de cambios para garantizar estabilidad.
- Al generar un Pull request, se activa una alerta a los revisores configurados para su aprobación.
Pruebas y Calidad del Código
Resumen de la Sección: Se detalla la importancia de las pruebas estáticas en el código para mejorar su calidad.
Pruebas Estáticas
- Las pruebas estáticas verifican aspectos como formato, variables no utilizadas y librerías correctas.
- Es esencial que las pruebas pasen localmente antes de subir el código al servidor para mantener la calidad del producto final.
Buenas Prácticas y Control en Desarrollo de Software
Resumen de la Sección: Se destacan las buenas prácticas necesarias para un desarrollo eficiente y controlado.
Buenas Prácticas
- No realizar cambios directos a máster sin aprobación ni verificar actualizaciones previas evita conflictos.
Base de Datos y Configuraciones en Docker
Resumen de la Sección: En esta sección, se aborda la estructura de la base de datos y las configuraciones en Docker, detallando cómo están organizados los módulos y archivos de configuración para el correcto funcionamiento.
Base de Datos y Módulos en Docker
- La infraestructura de la base de datos en Docker está diseñada para funcionar sin problemas.
- Los módulos enterprites convierten los documentos directamente.
- Existen configuraciones predefinidas para pruebas automáticas que verifican el formato del código y librerías no utilizadas.
Configuraciones y Archivos
- Las configuraciones incluyen pruebas automáticas que mejoran el código.
- El archivo
Makefilesimplifica la ejecución de comandos complejos con simples etiquetas.
Configuración a través del Makefile
Resumen de la Sección: Aquí se explora cómo el archivo Makefile facilita la definición y ejecución de tareas específicas mediante etiquetas, simplificando procesos como instalación, pruebas y desarrollo.
Simplificación con Makefile
- El
Makefiledefine tareas a través de etiquetas como construir o instalar dependencias.
- Permite ejecutar múltiples comandos complejos con una sola instrucción clara.
Desarrollo en Python y Uso del Dockerfile
Resumen de la Sección: Se discute cómo enfocarse en el desarrollo en Python al utilizar un Dockerfile, detallando su función al crear imágenes personalizadas para entornos específicos.
Desarrollo Eficiente
- Centrarse en desarrollar soluciones específicas utilizando Python.
- El
Dockerfilepermite definir pasos para crear una imagen personalizada con herramientas necesarias.
WSL: Integración entre Linux y Windows
Resumen de la Sección: Se explora la integración entre Linux y Windows a través del Subsistema Windows para Linux (WSL), destacando su utilidad para ejecutar distribuciones directamente en Windows.
Integración WSL
- WSL facilita correr comandos Linux directamente desde Windows.
Registro y Reinstalación Rápida
Resumen de la Sección: En esta parte, se discute cómo borrar el registro, eliminar el disco creado para la imagen y reinstalar rápidamente utilizando comandos simples. Se destaca la facilidad de reinstalación similar a la configuración inicial de Ubuntu.
Proceso de Registro y Reinstalación
- Se borra el registro y el disco creado para la imagen.
- La reinstalación es rápida, solicitando al usuario crear un nuevo usuario con contraseña, similar a la instalación inicial de Ubuntu.
Visual Studio Code y Extensiones
Resumen de la Sección: Aquí se explora Visual Studio Code como un editor de código abierto ampliamente utilizado con numerosas extensiones disponibles en Windows, Mac y Linux.
Visual Studio Code y sus Características
- Visual Studio Code es altamente utilizado como editor de código abierto con facilidad de uso.
- Destaca su versatilidad y disponibilidad en diferentes sistemas operativos.
- Uso del Remote SSH para trabajar en WSL como si fuera localmente en Windows.
Docker y Contenedores
Resumen de la Sección: La discusión se centra en Docker como una herramienta para recrear entornos similares a producción con contenedores separados. Se resalta la importancia de los volúmenes para mantener datos persistentes.
Docker y Uso de Contenedores
- Docker permite recrear entornos similares a producción con infraestructuras separadas.
- Los contenedores son descartables mientras que los volúmenes mantienen datos persistentes como bases de datos.
- Los volúmenes son útiles para restaurar o crear entornos sin perder datos importantes.
Beneficios del Aislamiento en Proyectos
Resumen de la Sección: Aquí se destaca cómo el uso adecuado de contenedores permite mantener proyectos separados, facilitando pruebas e implementaciones paralelas sin afectar otros desarrollos.
Aislamiento en Proyectos
- Permite trabajar en varios proyectos simultáneamente manteniendo librerías y configuraciones aisladas.
- Facilita cambiar entre proyectos sin conflictos ni problemas técnicos locales.
Comparativa entre Máquinas Virtuales y Contenedores
Resumen de la Sección: Compara las máquinas virtuales tradicionales con los contenedores destacando las ventajas del último en términos de rendimiento, mantenimiento simplificado y eficiencia operativa.
Comparativa VM vs. Contenedores
- Las máquinas virtuales requieren más configuración manual que los contenedores.
Introducción a Docker y Make en Desarrollo de Software
Resumen de la Sección: En esta sección, se introduce el concepto de Docker y su relevancia en el desarrollo de software, así como la herramienta Make y su utilidad en este entorno.
Docker: La Herramienta Más Utilizada
- Docker es una plataforma de código abierto ampliamente utilizada en el desarrollo de software.
- Permite crear entornos aislados y portables para aplicaciones, facilitando su instalación rápida y ligera.
Uso de Archivos Declarativos
- Se emplean archivos declarativos para configurar los entornos en Docker, especificando qué componentes instalar.
Composición de Servicios con Docker Compose
- Con Docker Compose, se define la composición de servicios, como microservicios y servidores SMTP, simplificando la configuración del entorno.
- Esta herramienta permite especificar servicios, volúmenes y puertos a utilizar en un sistema.
Automatización con Make en Desarrollo de Software
Resumen de la Sección: Aquí se explora el uso de Make para automatizar tareas en el desarrollo de software, simplificando procesos repetitivos.
Simplificación con Make
- Make proporciona un recetario para ejecutar comandos específicos rápidamente.
- Facilita la creación inicial del entorno con bases de datos limpias y distintas configuraciones.
Ventajas Prácticas del Uso de Docker y Make
Resumen de la Sección: Se destacan las ventajas prácticas al utilizar Docker y Make en el desarrollo de software, resaltando su accesibilidad y documentación detallada.
Ventajas Prácticas
- La documentación extensa disponible facilita el aprendizaje y uso eficiente tanto para grandes empresas como para desarrolladores individuales.
- Las imágenes predefinidas en Docker agilizan los procesos sin necesidad de memorizar comandos complejos.
Optimización del Desarrollo con Herramientas Específicas
Resumen de la Sección: Se profundiza en cómo las herramientas específicas como make build o my restore optimizan tareas cotidianas durante el desarrollo.
Optimización del Desarrollo
- Las herramientas permiten crear imágenes docker, restaurar bases de datos fácilmente e inspeccionar logs para detectar errores.
Instalación de WSL y Ubuntu en Windows
Resumen de la Sección: En esta sección, se detalla el proceso de instalación del Subsistema de Windows para Linux (WSL) y la distribución Ubuntu en un entorno Windows.
Proceso de Instalación Inicial
- Se inicia el proceso desde cero con el registro necesario.
- Utilización del cmd clásico en Windows para comenzar la instalación.
Selección e Instalación de Versiones
- Exploración de las opciones disponibles en Windows para instalar, incluyendo Ubuntu y Oracle.
- Creación de un nuevo usuario durante la instalación de Ubuntu como máquina virtual base.
Preparativos y Descargas Adicionales
- Destacar la importancia de tener Docker Desktop instalado para futuras acciones.
- Compartir el enlace para descargar WSL y sugerir seguir los pasos presentados previamente.
Configuraciones Adicionales y Problemas Técnicos
- Resolución de posibles errores técnicos durante la instalación.
- Intento fallido al abrir una consola específica en Windows 11.
Solución a Errores Comunes
- Activar Power Cell desde la línea de comandos como posible solución a problemas técnicos.
- Recibir instrucciones adicionales por chat para resolver problemas relacionados con permisos administrativos.
Conclusiones Parciales y Desafíos Pendientes
- Dificultades al intentar ser reconocido como administrador durante ciertas operaciones.
Instalación y Configuración de WSL (Windows Subsystem for Linux)
Resumen de la Sección: En esta sección, se aborda la instalación y configuración del WSL en un sistema Windows, detallando los pasos necesarios para lograr una integración efectiva entre ambos sistemas operativos.
Configuración Inicial del WSL
- Ricardo menciona la necesidad de reiniciar debido a un error catastrófico durante el proceso de instalación.
- Se describe cómo instalar el WSL desde la tienda de aplicaciones de Microsoft, incluyendo la búsqueda y descarga de la versión requerida.
- Tras finalizar la instalación, se procede a ingresar el nombre de usuario y configurar las últimas operaciones para completar el proceso.
Utilización Avanzada del WSL
- Se introduce la terminal de Windows como una herramienta adicional descargada desde la tienda, destacando su facilidad de uso y similitud con terminales tradicionales.
- Recomendación sobre configurar Ubuntu como perfil predeterminado en la terminal para una experiencia más fluida.
- Explicación sobre cómo abrir múltiples pestañas en la terminal al elegir Ubuntu como perfil predeterminado, permitiendo gestionar varios procesos simultáneamente.
Navegación y Operaciones Básicas
- Se detalla que al crear directorios en Linux, generalmente se encuentran dentro de la carpeta del usuario actual.
- Aclaración sobre las diferencias en las barras utilizadas por Windows y Linux para representar directorios en sus respectivos sistemas operativos.
- Uso del comando
cdpara navegar entre carpetas dentro del sistema Linux, regresando a la carpeta home concd ~.
Explorando Funcionalidades Adicionales
Resumen de la Sección: En esta parte se presentan funcionalidades avanzadas y consejos útiles para optimizar el uso del WSL.
Acceso a Discos Externos desde WSL
- Se explica cómo acceder al disco de Windows desde WSL utilizando comandos específicos como
cd /mnt/cpara visualizar los archivos almacenados.
Gestión Avanzada de Directorios
- Descripción detallada sobre archivos especiales presentes en ciertas ubicaciones que no son visibles directamente desde Windows, relacionados con aspectos internos del sistema operativo.
Creación y Navegación Eficiente
- Guía paso a paso para crear nuevos directorios mediante el comando
mkdir, seguido por instrucciones precisas sobre cómo acceder a ellos utilizandocd nombre_directorio.
Instalación y Configuración de Herramientas
Resumen de la Sección: En esta sección, se detalla el proceso de instalación y configuración de diversas herramientas necesarias para el desarrollo. Se abordan aspectos como la instalación conjunta de paquetes, configuraciones específicas para WSL, y la importancia de mantener actualizadas las contraseñas.
Proceso de Instalación Inicial
- Se destaca la importancia de instalar paquetes conjuntamente para ahorrar tiempo.
- Es necesario instalar Visual Studio Code y recordar la contraseña utilizada durante la instalación.
Configuraciones Específicas
- Se realiza una configuración en la consola seguida por la instalación de herramientas esenciales como 'make'.
- Se introduce la extensión 'Remote SSH' y se muestra su ejecución.
Manejo del Espacio en Disco Virtual
- Se discute sobre cómo manejar el espacio ocupado en el disco virtual, incluyendo recomendaciones para compactar imágenes.
- Se menciona que existen soluciones si el espacio no se libera tras borrar archivos.
Configuración Avanzada y Uso Práctico
Resumen de la Sección: En esta parte, se profundiza en las configuraciones avanzadas y prácticas relacionadas con las herramientas previamente instaladas.
Configuraciones Adicionales
- Se instruye sobre cómo descargar un plugin crucial para el funcionamiento correcto del Remote SSH.
- Se indica un procedimiento adicional para garantizar el correcto funcionamiento del código con Ubuntu.
Instalación Automatizada de Extensiones
- Al clonar repositorios, se automatiza la instalación de extensiones recomendadas para mejorar la experiencia.
Resolución Efectiva de Conflictos
- Ante posibles conflictos durante procesos anteriores, se brindan soluciones prácticas para evitar interrupciones futuras.
Conclusiones Finales y Ajustes Cruciales
Resumen Final: La última etapa aborda ajustes finales cruciales que aseguran un entorno óptimo para el desarrollo continuo.
Últimos Ajustes e Instalaciones Finales
- Se finalizan las configuraciones con la instalación finalizada del Remote SSH.
Verificación y Confirmación
Configuración del Endo Offline en Windows y Linux
Resumen de la Sección: En esta parte, se aborda la configuración del Endo offline en sistemas operativos Windows y Linux, destacando la diferencia en la codificación del salto de línea entre ambos.
Configuración del Endo Offline
- Se menciona que en Windows y Linux, la codificación del salto de línea es diferente aunque no sea visible.
- Es necesario configurar el sistema para utilizar el salto de línea de Linux.
- Se indica que las notificaciones deben ser eliminadas para visualizar correctamente la consola de comandos.
- En las preferencias de archivo, se debe escribir "eol" para acceder a la configuración del Endo offline.
- Se muestra cómo acceder a las preferencias de archivo y realizar ajustes relacionados con el Endo offline.
Finalización de Configuraciones
Resumen de la Sección: En este segmento, se concluyen las configuraciones necesarias para el correcto funcionamiento, indicando que todo está listo.
Finalización