-->

Páginas

miércoles, 27 de noviembre de 2019

Genexus: Proveedor Externo de Almacenamiento

Esta entrada muestra un paso a paso para configurar la propiedad Storage Provider en GeneXus v16 u5, utilizando el servicio S3 de Amazon Web Services (aws de aquí en adelante).

Pasos para habilitar S3

Crear la cuenta en aws

Seguramente una de las razones de la popularidad de aws es que la cuenta gratuita da acceso a una gran cantidad de servicios. Existen varios que son gratuitos de por vida y otros que son gratuitos durante 12 meses. La verdad es que la cantidad de servicios disponibles puede desorientar a primera vista, por lo que en entradas posteriores iré detallando mejor los que vaya usando.

Para la creación de la cuenta simplemente se sigue el paso a paso que muestra la página:
  1. Cuenta de correo y contraseña
  2. Tipo de Cuenta (Profesional/Personal)
  3. Información de Pago
  4. Confirmación de Identidad
Crear Cuenta en AWS Información de Contacto Información de Pago Confirme su identidad
En el paso 4 tuve problemas, nunca me llegó el mensaje con el código de verificación por lo que me puse en contacto con soporte técnico vía chat y luego de explicarles el problema me llamaron al número que registré en la confirmación. Luego de algunas preguntas de verificación me ayudaron habilitando la cuenta y el acceso a la consola.

Empezando con S3

La primera vez que se accede al servicio S3 se puede seguir el tutorial Cómo realizar copias de seguridad de archivos en Amazon S3 el cual muestra de forma detallada los pasos a seguir para utilizar el espacio de almacenamiento.

Información S3 en Capa Gratuita
Información de las características gratuitas de S3

Para el uso del ejemplo, se configuró el bucket (contenedor en el que almacena los archivos) de la siguiente forma:

  1. Nombre y Región: el nombre del bucket debe ser único entre todos los nombres de Amazon S3. En la documentación de aws se puede revisar a detalle las consideraciones a tener en cuenta, una de las más importantes es que no se debe colocar . (punto) en el nombre del bucket si se desea que el acceso SSL quede habilitado (lo comprobé con el primer bucket creado).
    En cuanto a la región, es recomendable seleccionar una que se encuentre lo más cerca posible al lugar desde el que se realizarán las peticiones. Guiándome en el Mapa de Cable Submarino, decidí seleccionar São Paulo.

  2. Nombre y Región

  3. Configurar Opciones: En esta sección se definen las características principales del bucket.
    Control de Versiones, si se desea almacenar los cambios de los archivos (no aplica para el caso de uso).
    Registro de acceso al Servidor, es una característica interesante ya que permite tener el registro de las solicitudes realizadas al bucket. Como se van a almacenar archivos blob para visualización en diferentes opciones, puede resultar útil. Tener en cuenta la nota que se encuentra en la documentación con respecto a los costos, habilitar el registro no genera cargos adicionales, pero los archivos generados se totalizan en el uso del almacenamiento.
    El resto de características las dejé sin marcar.


  4. Establecer permisos: la sugerencia es que se deshabilite el acceso público al bucket y luego de crear le bucket se pueden definir los usuarios con acceso. Si no se habilita el acceso público al bucket, el momento de confirmar una transacción con BlobFile se presenta un error en la aplicación.


  5. Revisión: simplemente muestra un resumen de las características del bucket.
Revisión

Crear usuario y habilitar acceso

Para poder hacer uso del almacenamiento de S3 es necesario habilitar un usuario y configurar sus credenciales. Para esto se utiliza el servicio Identity and Access Management (IAM).

Dentro de IAM se accede a la opción usuarios, añadir usuarios y se sigue el asistente.
  1. Ingresamos el nombre de usuario y el tipo de acceso (para el ejemplo Acceso Mediante Programación)
  2. Con la opción Asociar directamente las políticas existentes y buscando S3, se despliegan las opciones de acceso disponibles. Para el ejemplo se seleccionó AmazonS3FullAccess.
  3. Etiquetas, lo dejé en blanco
  4. Revisar, muestra el resumen de los datos del usuario.
  5. Credenciales, en este paso se debe descargar el .csv o copiar el ID de clave de acceso y la Clave de acceso secreta, ya que indica que luego no se puede acceder a esos datos.

 

Configurando GeneXus

La información oficial de GeneXus se la puede revisar en la wiki, ahí se especifican los parámetros propios de cada proveedor. Para el caso de Amazon S3 se deben configurar las siguientes propiedades:

Bucket name pruebagxs3
Folder Name blobS3 (si no existe en el bucket, es creado por la aplicación)
Storage Access Key ID la generada en el último paso del asistente de IAM
Storage Secret Access KEY la generada en el último paso del asistente de IAM
Storage Region South America (São Paulo)
Storage Endpoint Standar

Para probar si todo funciona, definí una transacción llamada Archivo, con id automático, un campo de nombre y el contenido de tipo BlobFile


Luego de hacer un rebuild all y ejecutar la aplicación, se crea un registro al que se le agrega un pdf de 18mb. Se puede comprobar que la tabla sigue con un tamaño de 208KB y al acceder al bucket de S3 se encuentra el directorio creado y el archivo subido.

propiedades de la tabla archivo
Tamaño de la tabla luego de cargar pdf de 18 mb
archivo cargado a S3
Archivo de 18mb cargado a S3

Con esta funcionalidad se libera a la base de datos del almacenamiento de los archivos y se agiliza la presentación de los mismos, ya que las peticiones son realizadas al S3 de Amazon y no al servidor de aplicaciones.

Para conocer de forma general los principales servicios disponibles en aws recomiendo los programas 9 y 17 de Full Stack Podcast (increíble programa sobre desarrollo) y para profundizar en el manejo de S3 (y el resto de servicios) se puede revisar la documentación propia de Amazon.

martes, 12 de noviembre de 2019

Hablemos de GX

Quiero que esta entrada sea el punto de inicio de una nueva locura: un podcast sobre GeneXus

Por que? desde hace tiempo tengo ganas de grabar algo y publicarlo, pero no encontraba el tema apropiado. Aprovechando que estoy enfocado en mejorar mis habilidades como desarrollador decidí hablar de la herramienta que más utilizo.

Además, busqué y no existe otro. No me extraña, ya que GeneXus no se caracteriza por su masificación, es una herramienta que ha estado orientada a un nicho empresarial principalmente.

Tengo algunas ideas, primero debo aprender la mejor forma de grabar el audio, escoger al menos los primeros diez temas, armar una lista de deseos de colegas del sector que me gustaría incluir, etc.

De ninguna forma considero que sea un experto en GeneXus, de hecho hasta hace un año trabajaba con una versión muy por detras de la última lanzada y desde la salida de la versión 16 decidí actualizarme junto con mi equipo de desarrollo, para conocer todas las novedades y sacarle el máximo provecho.

La idea principal del podcast es dar a conocer la herramienta, contar novedades, experiencias, casos de uso y cualquier tema que surga en el día a día.

Logo GeneXus

domingo, 3 de noviembre de 2019

Como si no hubiera mañana

La idea es aprovechar al máximo el tiempo y por eso he decidido retomar algunos de mis hobbys:
  • Programar:  aprender nuevos lenguajes, mejorar el conocimiento de los que ya utilizó y estar al día en los tendencias y nuevas herramientas.
  • Blog: retomar el blog (ya le hice un cambio de diseño) y el plan es publicar al menos una entrada a la semana. También está en planes construir páginas para consolidar links a sitios de interés
  • Ejercicios: no quiero dejar de lado este aspecto, voy a organizarme para realizar no menos de 30 minutos 5 días a la semana de actividad física.
  • Idiomas: quiero completar los cursos que tengo abiertos en Duolingo, me falta poco para terminar el de Portugués y luego de eso retomar el de inglés.
  • Linux: desde que conocí la filosofía detrás de este sistema operativo, siempre me ha llamado la atención y por temporadas le he dedicado más tiempo. Quiero volver a utilizarlo con más frecuencia y por ese motivo todos los cursos que realice van a ser sobre linux y de ser posible, en una distribución diferente.
  • Leer: es un tema fundamental y mi plan es leer un documento técnico a la semana. Aprovecharé la subscripción a TradePub que tienen una gran cantidad de recursos.
Seguro de que mi capacidad de aprendizaje y obsesión por aprender de todo me ayudarán a cumplir con mis objetivos.


domingo, 20 de octubre de 2019

Quiero ser Desarrollador

Seguramente hoy en día no llama la atención, ya que en muchos sitios se menciona que la programación es la carrera del futuro y que todo el mundo debería aprender a programar.

Lo gracioso es que he trabajado más de 10 años en una empresa de consultoría informática y desarrollo de software. Pero recientemente decidí ver más allá del día a día y conocer un poco más de las tecnologías actuales.

Todo empezó cuando descubrí el Web Developer Roadmap ahí me dí cuenta que si bien había escuchado muchos de los términos, no tenía un conocimiento solido en ninguno y que había muchos otros de los que no tenía las más mínima idea.

Creo que la causa es que durante mis años como desarrollador solo me enfoqué en utilizar GeneXus, el cual es tremendamente útil para realizar aplicaciones de misión crítica de una forma acelerada, pero por el concepto que maneja (basado en conocimiento) abstrae al desarrollador del conocimiento específico de la tecnología para que se concentre en la reglas del negocio. Esto no es malo, de echo ayudó a mi empresa a desarrollar un ERP completo contando con recursos limitados, pero en mi caso me alejó de las bases al punto de no conocer ningún lenguaje específico.

Así que enfocado en convertirme en Full Stack Developer, he comenzado a revisar los recursos disponibles en línea, que son casi ilimitados y una gran cantidad de los mismos son gratuitos. Ya empecé en el camino y cuento con mis primeros certificados:
  • Scrum: curso gratuito de Udemy para entender la filosofía, conceptos y acercarse a la dirección de proyectos. Me queda pendiente terminar el libro Scrum y XP desde la trinchera y profundizar en los conceptos.
  • Python: curso de la Pontificia Universidad Católica de Chile que me dió las bases de este lenguaje que se encuentra tan de moda. Tengo pendiente hacer alguna pequeña aplicación para poner en práctica lo aprendido y revisar alguno de los cursos gratuitos para aplicarlo en análisis de datos.
  • FrontEnd: empezando por las bases, estoy siguiendo un curso de HTML+CSS y en paralelo las certificaciones de FreeCodeCamp
  • GeneXus: no pienso dejarlo de lado, más ahora que siento que se han puesto serios con las opciones disponibles y está casi a la par con la tecnología de punta. Para esto he revisado las charlas de los dos ultimos eventos (GX28 y GX29) con el objetivo de tratar de dominarla.
Como eje transversal está Linux, para volver a familiarizarme con sus particularidades decidí que los cursos que haga los realizaré en una distribución diferente. Así que para el curso de Python monte el ambiente de desarrollo en Debian 10 y el de HTML+CSS lo estoy haciendo sobre Manjaro. Para el de java tengo pensado montar el ambiente en Fedora, para los de seguridad seguramente Kali Linux y OpenSuse si es necesario más.

Así que veamos como me va en este camino a convertirme en Full Stack Developer, pero de verdad, es decir conocer los cinco componentes principales (Backend, Frontend, Mobile, Infraestructura y Gestión)

jueves, 17 de octubre de 2019

Reactivando el blog

Luego de varios años sin publicar nada, decido retormar este espacio para compartir contenido.

En esta nueva etapa estará enfocado principalmente a programación, desarrollo web, linux y temas varios sobre tecnología.

También habilitaré páginas para consolidar links de interes agrupados por temántica.

Veamos como va...