Rafaela Alimentos | Capacitación técnica - Sesión 1 (2023-09-19)

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 Makefile simplifica 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 Makefile define 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 Dockerfile permite 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 cd para navegar entre carpetas dentro del sistema Linux, regresando a la carpeta home con cd ~.

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/c para 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 utilizando cd 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

Video description

Rafaela Alimentos | Capacitaciones tecnicas - Sesion 1 2023-09-19 14:02 GMT-3 -Activar WSL en windows desde powershell: dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart -Actualizar WSL: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi -Reiniciar equipo -Instalar Ubuntu desde Microsoft Store o -Instalación de distribución desde PowerShell wsl --install -d Ubuntu-22.04 -Instalación de docker: https://www.docker.com/products/docker-desktop/ -Si docker no abre, agregar usuario de windows actual al gropo "docker-users" con el siguiente comando desde powershell: net localgroup docker-users NOMBRE_DE_USUARIO /ADD Donde NOMBRE_DE_USUARIO debe ir el nombre actual de windows, donde se utilizará docker