Casos de uso de Serverless Computing

Casos de uso de Serverless Computing

La revolución de la informática sin servidores ha llegado para quedarse, y es que esta novedosa tecnología permite desarrollar aplicaciones sin tener que pasar por la gestión y administración de un servidor. Bajo este modelo, las aplicaciones pueden ser agrupadas y cargadas a una plataforma para luego ejecutarlas y escalarlas en la medida en que se incrementa la demanda de las mismas.

Si bien es cierto que la “Serverless Computing” no suprime el uso del servidor cuando se ejecuta un código, si elimina todas las actividades relacionadas al mantenimiento y actualización del mismo. Estableciendo un modelo eficiente donde los desarrolladores logran desvincularse de esas tareas rutinarias para enfocarse en actividades más productivas, y con ello, elevar la eficiencia operacional de la empresa.

¿Qué es la función como servicio (FaaS)?
La función como servicio FaaS es un modelo que permite ejecutar diversas acciones informáticas en función a los eventos, y gracias a ella, los desarrolladores pueden administrar las aplicaciones logrando “baipasear” el uso de servidores durante su gestión.
En el mundo de la informática, las funciones son las encargadas de administrar los estados de un servidor, por esta razón, el modelo FaaS, desarrolla una nueva lógica que posteriormente es ejecutada en otros contenedores ubicados en la nube.

En términos generales, la función como servicio FaaS, nos permite el diseño de aplicaciones en una nueva arquitectura donde el servidor pasa a un segundo plano y la ejecución de códigos por eventos se convierte en el pilar fundamental del modelo. Esto quiere decir, que los procesos subyacentes que ocurren normalmente en un servidor no se ejecutan continuamente, pero se encuentran disponibles en caso de necesitarse.

Esto último se convierte en una clara ventaja del modelo FaaS al permitir a los desarrolladores escalar de forma dinámica, es decir, implementar la automatización de la aplicación para que se reduzca o incremente en función a la demanda real.

Además de lo anterior la función como servicio (FaaS) incrementa la eficacia y rentabilidad de las operaciones, ya que el cobro por parte de los proveedores no ocurre cuando existe inactividad sino cuando se consumen recursos.
Todo esto hace que el modelo FaaS se convierta en un elemento innovador dentro del reciente campo de la arquitectura serverless al minimizar la inversión en infraestructura, aprovechando las ventajas competitivas de la informática en la Nube

La evolución de la informática sin servidor
Con el advenimiento de la nube en la primera década del año 2000, las personas tuvieron la oportunidad de almacenar y transferir datos en la red, dejando a un lado los discos duros de sus ordenadores.

Esto, indudablemente generó importantes ventajas para el usuario, quien tuvo la oportunidad de acceder de manera inmediata a su información utilizando cualquier dispositivo conectado al internet.

Sin embargo, para los desarrolladores había un elemento que faltaba en esta ecuación, se trata del lugar donde se implementaban las aplicaciones o software. En este sentido, se implantó un modelo de “Máquina virtual”, en donde se podía apuntar a un “Servidor Simulado”, generando una importante flexibilización en las actualizaciones y migraciones, y con ello, se pudo dejar a un lado los problemas asociados a las variaciones del hardware.

A pesar de este avance, las “máquinas virtuales” tenían algunas limitaciones en su funcionamiento, y esto dio pie a la creación de los contenedores, una nueva tecnología que permitía a los administradores fragmentar el sistema operativo con la finalidad de mantener varias aplicaciones activas de forma simultánea, sin que una interfiriera en la otra.

Al observar esta realidad, podemos notar que todas esas tecnologías mantienen el paradigma del “donde se ejecuta una aplicación” como su estructura fundamental. Bajo este escenario surge Serverless Computing, la cual promete otro nivel de abstracción que centra su mirada en el código en sí, y con ello, resta importancia al lugar donde se aloja dicho código.

Con el advenimiento a finales del año 2014 del servicio AWS Lambda de Amazon, se crea un hito en la arquitectura serverless, ya que finalmente los desarrolladores podían centrar sus esfuerzos en la creación de software sin tener que preocuparse por el hardware, el mantenimiento del sistema operativo, la ubicación de la aplicación, así como su nivel de escalabilidad.

Casos de uso de la informática sin servidor
A continuación mencionaremos algunos casos exitosos de empresas que aplicaron la tecnología serverless, o informática sin servidor, dentro de sus organizaciones:

Caso 1. Major League Baseball Advanced Media (MLBAM)
La Major League Baseball ha utilizado la tecnología de informática sin servidor para ofrecer, a todos sus fanáticos, datos de los juegos de béisbol en tiempo real a través de su producto “Statcast”. Esta adquisición ha incrementado la velocidad de procesamiento de MLBAM, así como también la posibilidad de manejar mayor cantidad de datos.

Caso 2. T-Mobile US
T-Mobile US, es una operada de telefonía móvil con una fuerte presencia en el mercado norteamericano. Esta ha empresa ha decido apostar por la tecnología serverless consiguiendo importantes beneficios en cuanto a la optimización de recursos, a la simplicidad del escalado, y en la reducción de parches informáticos, aumentando con esto su capacidad real para responder de una forma mucho más eficiente a todos sus clientes.

Caso 3. Autodesk
Autodesk es una empresa que desarrolla software para la industria de la arquitectura, la construcción y la ingeniería. Recientemente esta organización decidió aplicar la tecnología serverless, con el objetivo de administrar su desarrollo, así como el tiempo de comercialización de todos sus productos. En consonancia con esta política, Autodesk creo la aplicación “Tailor”, como una respuesta eficiente a la gestión de las cuentas de sus clientes.

Caso 4. iRobot
iRobot es una empresa que diseña y fabrica dispositivos robóticos destinados al uso dentro del hogar y también en las industrias. Desde que la organización decidiera involucrarse con la tecnología de la informática sin servidor, la capacidad de procesamiento de datos de sus robots se incrementó sustancialmente, permitiendo además la captación de flujos de datos en tiempo real. De esta manera la novedosa arquitectura serverless les permite concentrase en sus clientes y no en las operaciones.

Caso 5) Netflix
Netflix se ha convertido en uno de los proveedores de contenido multimedia online bajo demanda más grande del mundo. Siendo consecuente con su espíritu innovador, esta empresa ha decidido utilizar el serverless computing para generar una arquitectura que ayude a optimizar los procesos de codificación de sus archivos audiovisuales, así como el monitoreo de sus recursos.

Conclusiones
Cuando observamos la evolución del serverless computing, y como este ha logrado impactar de manera significativa los procesos informáticos en general, entendemos que este novedoso sistema se convertirá rápidamente en el siguiente paso del mundo de la computación en la nube, auspiciando un futuro prometedor que enfila sus baterías hacia la adopción de un enfoque operativo multimodal.

Casos de uso de Serverless Computing

¿Qué es Serverless Computing?

La innovación en el mundo de la informática ocurre a un ritmo vertiginoso en todas y cada una de sus áreas, generándose importantes avances en los procesos relacionados con la “Severless Computing”, o también denominada “Arquitectura Serverless”, o simplemente, “Informática sin Servidor”.

Bajo ese contexto cada día son más las empresas que dirigen su mirada hacia la “Nube”, como una forma de optimizar la creación y ejecución de aplicaciones y procesos, minimizando el uso de servidores. De esta manera, la informática sin servidor se convierte en un elemento clave para el desarrollo adecuado de la arquitectura interna de un software.

Si bien es cierto que el severless computing disminuye el uso de un servidor, este no desaparece en su totalidad, simplemente se optimiza y redirige su uso por parte del proveedor de la nube, quien será finalmente el responsable de todas las actividades rutinarias que se asocian al mantenimiento de los servidores.

Historia
La creación de una aplicación web durante sus inicios requería del uso de hardware que permitiera la ejecución de un servidor, convirtiéndose en algunas ocasiones en un proceso complicado y costoso. Posteriormente, con el advenimiento de la nube, las empresas y los desarrolladores tuvieron la posibilidad de alquilar espacios en servidores remotos para realizar sus actividades.

Sin embargo, este proceso tampoco resultó del todo eficiente, ya que las empresas contrataban un espacio superior al necesario para darle estabilidad al sistema en caso de picos de demandas muy elevados, incurriendo de esta manera en gastos adicionales, por esta razón, surgió la necesidad de contar con una plataforma que le permitiera a los desarrolladores pagar solo por el servicio utilizado.

En este sentido, la historia de la informática sin servidor es reciente, encontrándose los primeros reportes de esta tecnología en un artículo del especialista en aplicaciones descentralizadas y desarrollo sin servidor, Ken Fromm, publicado en octubre 2012 cuyo título es “Why the Future of Software and Apps is Serverless”, o en español, “Por qué el futuro del software y las aplicaciones no tiene servidor”.

Para noviembre de 2014, la empresa Amazon lanza al mercado su servicio “AWS Lambda”, el cual permite a los desarrolladores ejecutar códigos y administrar de forma automática todos sus recursos sin la necesidad de manejar la infraestructura que subyace durante estos procesos.

Luego de esto en julio del 2015, Amazon crea “API Gateway”, un servicio para la creación y mantenimiento de API REST, HTTP y WebSocket, donde los desarrolladores puedan generar Interfaz de Programación de Aplicaciones que accedan a Amazon Web Services o a otros servicios web, así como también a los datos almacenados en la nube. Finalmente en octubre de 2015, nace “Serverless Framework” como el primer marco desarrollado para crear aplicaciones en AWS Lambda.

Visión general de la arquitectura sin servidor
El Serverless Computing, o la arquitectura sin servidor, no implica la total inexistencia de un servidor como tal, ya que en realidad lo que se busca con este sistema es que el proveedor de la nube administre adecuada y eficientemente todos los procesos relacionados con el servidor en sí.
En este sentido, una de las características que resalta de Serverless Computing es el abandono de la forma tradicional de gestionar los servidores en una empresa, para sustituirlo por la administración automatizada que lleva a cabo el proveedor de la nube.

Esto significa, que el proveedor de la nube es el responsable de administrar todos los recursos organizacionales durante la ejecución de una actividad en particular, quedando relegada la antigua acción administrativa que realizaban los usuarios dentro de la organización.

Bajo este novedoso esquema, las actividades informáticas de una empresa se facturan en función a la necesidad de recursos para cada tarea en particular, generándose un claro contraste con el antiguo modelo donde se contrataban espacios que a menudo no se utilizaban, obteniendo con esto un importante ahorro de capital, ya que solo se paga lo que efectivamente se utiliza.

Además de lo anterior, en el modelo Serverless Computing ya no es necesario hacer reservas de servidores, evitándose con esto que los desarrolladores vallan al servidor mediante una Interfaz de Programación de Aplicaciones (API) para agregar recursos, ya que será el proveedor de la nube el total responsable de realizarlo automáticamente.

Ventajas
La informática sin servidores presenta una serie de ventajas cuando se compara con el modelo tradicional, y entre ellas podemos mencionar las siguientes:

  • La informática sin servidor reduce significativamente los costos operativos del desarrollador, ya que permite pagar solo por el espacio utilizado.
  • Aumenta la productividad de las empresas, quienes tendrán la posibilidad de asignar aquellas tareas relacionadas a la administración de servidores a terceros, y con ello enfocarse directamente en el desarrollo de las aplicaciones.
  • Los tiempos asociados a la comercialización disminuyen en una plataforma Severless Computing, ya que los desarrolladores tendrán la opción de modificar o agregar paulatinamente los códigos.
  • Los proveedores de este novedoso servicio pueden gestionar todo lo relacionado al escalado de códigos bajo la demanda real.
  • Permite enfocarse en unificar el desarrollo de software y la operacionalización del mismo, es decir adoptar la práctica de ingeniera de sistema “DevOps”.
  • Optimiza el desarrollo de aplicaciones gracias a la incorporación de componentes esenciales del modelo BaaS que ofrecen otros proveedores.

Desventajas
En cuanto a las desventajas o inconvenientes de la informática sin servidores podemos mencionar lo siguiente:

  • Existe una importante restricción en la capacidad interactiva de los proveedores de la nube que influye directamente en la personalización y flexibilización de los sistemas.
  • Se genera dependencia de los proveedores del servicio.
  • Pudiese ocasionar algunos problemas asociados a la falta de control de servidores propios.
  • El ingreso a máquinas virtuales y sistemas operativos se ve limitado.
  • Implementar una arquitectura serverless implica un esfuerzo económico ya que, por lo general, se requiera actualizar los sistemas para que estén acordes con las demandas del proveedor.

¿Qué función desempeña el proveedor de nube en la informática sin servidor?
Los proveedores de nube juegan un rol fundamental en la arquitectura serverless, ya que son ellos los encargados de ejecutar los servidores, y al mismo tiempo, asignar recursos para los desarrolladores.
En este sentido, los proveedores de nube ofrecen dos métodos principales dentro del esquema de la informática sin servidores, llamados “Function as a Services” (FaaS) y “Backend as a Services” (BaaS).

El primer método, “Function as a Services” (FaaS), le permite a los desarrolladores aplicar micro servicios cuando escriben y actualizan los diferentes códigos a implementar en la nube, simplificando con esto la incorporación de datos, la reducción de los tiempos de ejecución, así como, la gestión oportuna del proveedor.

En segunda instancia, el método “Backend as a Services” (BaaS), se fundamenta en la prestación de servicios a terceros basado en la Interfaz de Programación de Aplicaciones (API) establecida por el proveedor, destacándose entre ellos, las bases de datos, los servicios de autenticación, y los procesos de cifrado.
Finalmente, vale la pena destacar que grandes proveedores de nube funcionan bajo la modalidad “Function as a Services” (FaaS), como por ejemplo AWS Lambda de Amazon, Azure Functions de Microsoft, IBM Cloud Functions y Google Cloud.

Conclusión
Sin lugar a dudas el Severless Computing, ha producido un impacto significativo en el mundo de la informática, al permitir que los desarrolladores se enfoquen en la creación de software sin tener que preocuparse por la administración de las aplicaciones ni por el código de producción de las mismas, ya que será el proveedor de la nube el encargado de administrar de manera eficiente los recursos necesarios para esa importante actividad.

¿Querés conocer más sobre el tema? Visitá nuestra página IT Continuity para entender más sobre los servicios que ofrecemos relacionados a la infraestructura, y Software Development, para aquellos relacionados a desarrollo a medida.

Casos de uso de Blockchain Empresarial

Casos de uso de Blockchain Empresarial

En artículos anteriores, realizamos una “Introducción a Blockchain Empresarial” y resumimos “Aspectos técnicos sobre Blockchain“. En esta última entrega de la serie, nos enfocaremos en los patrones de uso más difundidos y analizaremos el caso emblema, fuera de lo que es Finanzas Descentralizadas (DeFi), de la Cadena de Suministros.

Casos de uso

Bancos y Finanzas
Las DeFi incluyen activos digitales, protocolos, contratos inteligentes y Aplicaciones Distribuidas (dApps). Es el caso de uso original e implica todo lo relacionado a criptomonedas y al mundo financiero en general. Podemos mencionar la red global de pagos electrónicos Ripple, con el apoyo de instituciones como Santander, Itaú, American Express y muchas otras. Otro ejemplo es Santander One Pay FX, una red Blockchain para agilizar las transferencias internacionales.

Cadenas de suministro
Después de DeFi, es el caso de uso más difundido. Blockchain permite la trazabilidad completa de cualquier bien, desde el productor hasta el consumidor final, ya sean materias primas, alimentos o medicamentos, en el caso de la Farmacovigilancia. Es común además la utilización de dispositivos IoT (Internet of Things) para el registro automatizado en las distintas etapas del flujo. Ya existen numerosos casos de éxito en diversas industrias, tales como la alimenticia (donde Walmart y posteriormente IBM Food Trust son el caso más emblemático que analizaremos), la farmacéutica (Novartis), la automotriz (Ford, BMW, Tesla), entre otras.

Auditoría
Aprovechando la inmutabilidad, una de las características distintivas de Blockchain, se almacenan transacciones que no puedan ser modificadas posteriormente, lo que permite una auditoría completa de información crítica. Esto se utiliza en la Prevención de Fraudes, Gestión de Reclamos, Seguros (BBVA), Salud (EHR, manejo de Historias Clínicas, con proyectos como MedicalChain & MedRec) y Farmacovigilancia (por ejemplo, el proyecto Pharmaledger).

Administración Pública
Actualmente hay muchos gobiernos en el mundo que investigan cómo aprovechar los beneficios de Blockchain en sistemas de Identidad Ciudadana, votaciones, presupuestos y licitaciones públicas para aumentar la eficacia y transparencia del Estado. Latinoamérica se esfuerza por no quedarse atrás, y ya existen muchos desarrollos en marcha.
En Argentina existen varios proyectos sobre la red Blockchain Federal Argentina (BFA), como las sesiones de Diputados del Congreso, Registro de Quejas del Banco Central, Carpeta Ciudadana de la Ciudad de Buenos Aires, entre otros. También Brasil, Perú y Uruguay están realizando avances. A nivel global, Emiratos Árabes, en particular Dubai, planea convertirse para el 2021 en una ciudad gobernada completamente con Blockchain, sin papeles, a través de su proyecto Smart Dubai.

Información Certificada
Muchas instituciones utilizan Blockchain para la certificación y validación de todo tipo de registros educativos (Carpeta Ciudadana en Buenos Aires), laborales y personales.

Compartición de datos
En un nuevo modelo centrado en el ser humano, las personas toman control de su información, la centralizan y son ellas las que deciden a quienes darles acceso. Por ejemplo, los pacientes son dueños de su Historia Clínica completa y pueden dar acceso al profesional que lo necesite (EHR » MedicalChain & MedRec), los ciudadanos pueden compartir sus credenciales (proyectos Identidad Digital Soberana en Argentina, Data Sharing Toolkit en UAE, etc.).

Tokenización de activos
Se utiliza Blockchain para la gestión de activos digitales, en el intercambio de todo tipo de bienes entre individuos o entidades, tales como entradas a espectáculos (UEFA & Ticketmaster), puntos de programas de fidelidad (American Express), inmuebles (UK Land Registry en Inglaterra), etc.

Propiedad intelectual
Esta tecnología es usada para crear registros con fecha, hora y autoría, para optimizar el manejo de la Propiedad Intelectual. Usada por Kodak con Tracking de fotos y Spotify Mediachain para atribuir de forma precisa cada canción a sus creadores.

Caso de uso: Cadena de suministro de alimentos
Entre los numerosos casos de uso de Blockchain, su aplicación en una cadena de suministro es una de las más emblemáticas, con desarrollos en todas las industrias.

En una cadena de suministro de alimentos, existen múltiples actores involucrados: agricultores, ganaderos, proveedores, cooperativas, empacadoras, transportistas, exportadores, importadores, mayoristas, minoristas y, por último, el consumidor final. La seguridad sanitaria es una de las mayores preocupaciones en la industria alimentaria. Al igual que la industria farmacéutica, el sector alimentario se enfrenta a una mayor presión regulatoria de organismos gubernamentales.

Walmart es un pionero en este campo, ya que había intentado varias veces la creación de un sistema que permita la transparencia y completa trazabilidad en el sistema alimentario, pero no fue sino hasta 2016 que lo logró. Blockchain, con su libro mayor descentralizado y compartido, parecía hecho a medida de sus necesidades. Comenzó a trabajar con su socio tecnológico IBM en un sistema de trazabilidad alimentaria basado en Hyperledger Fabric. Para carne de cerdo en China, permitió cargar certificados de autenticidad, lo que brinda más confianza a un sistema donde solía ser un problema grave, mientras que para mangos en los Estados Unidos, el tiempo necesario para rastrear su procedencia pasó de 7 días… a 2 segundos!

El sistema desarrollado permite saber el origen exacto de cada ítem (para controlar brotes de enfermedades) en segundos, descartando únicamente los productos de las granjas afectadas. Por ejemplo, permite que un cliente tome un frasco de comida para bebés y vea dónde se fabricó, rastreando todos los ingredientes hasta las granjas.

Como resultado, se lanzó IBM Food Trust, involucrando a múltiples empresas como Nestlé y Unilever. Esta plataforma permite conocer en tiempo real:

  • Inventario en cada lugar.
  • Frescura de cada producto.
  • Tiempo promedio de permanencia.


Blockchain permite rastrear un producto a través de las distintas operaciones industriales, logísticas y administrativas, partiendo desde el inicio del proceso y llegando hasta el final, y viceversa.
De esta forma, se puede consolidar un registro seguro y distribuido con el historial de todos los actores de la cadena, sus intercambios durante la producción y distribución de cualquier producto, gestionando la información de manera confiable e inviolable. Las transacciones automáticas, al no tener intermediarios (por ejemplo, un banco), permiten liquidaciones más rápidas, con las condiciones pautadas en los smart contracts.

IoT y Blockchain combinados ofrecen grandes beneficios. Los sensores pueden capturar una variedad de datos en las instalaciones de fabricación o en los medios de transporte, y transmitir toda la información a un repositorio centralizado en tiempo real. Los gerentes a su vez, pueden obtener una multitud de nuevos conocimientos sobre el uso de materiales, las condiciones de transporte, etc., y aplicarlos en la planificación/optimización. Los productores pueden registrar vía IoT todo el proceso de crecimiento del producto (alimentación, pesticidas, humedad, almacenamiento, ubicación). Los transportistas pueden garantizar automáticamente que los productos se movilizan en las condiciones adecuadas de temperatura, humedad, etc., logrando una mejor visibilidad de la logística general.

Conclusiones
A lo largo de esta serie de 3 artículos, conocimos la tecnología Blockchain y su aplicación en el ámbito empresarial. Pudimos entender su funcionamiento básico, las plataformas más importantes y cómo está siendo utilizada actualmente en muchas industrias.

¿Cómo puede Huenei ayudar a su negocio con Blockchain?

  • Consultoría: Lo ayudamos a elegir la tecnología que mejor se adapte a sus necesidades.
  • Arquitectura: Definición, despliegue y puesta en marcha.
  • Desarrollo: De Contratos Inteligentes y sistemas completos basados en Blockchain.

Lo acompañamos desde el planeamiento y definición de requerimientos, hasta la puesta en marcha del proyecto final.

Cómo realizar un Discovery de Productos

Cómo realizar un Discovery de Productos

Los dos principales problemas a los que se enfrentan los proyectos de desarrollo de software usualmente son demoras en las fechas de entrega y el excederse en el presupuesto planteado, resultado de no calcular idóneamente los recursos a usar. Esto trae como consecuencia no solo un fracaso en lo comercial, sino una caída en el índice de satisfacción de las empresas.

Por ende, es vital que las compañías conozcan cómo realizar efectivamente un Discovery de producto digital antes de avanzar en establecer las bases de un proyecto. Convirtiéndose en un elemento crucial para mitigar los riesgos mencionados, independientemente de si el proyecto forma parte de un sistema empresarial a gran escala o si se trata de un desarrollo llave en mano.
Es imprescindible que tanto las compañías de outsourcing como los clientes le den la importancia necesaria a esta etapa, ya que permitirá mejorar la calidad del proyecto y del resultado final esperado.

Qué es el proceso de Discovery
Es un proceso de recopilación y análisis de información sobre un proyecto, su mercado objetivo, audiencia, entre otros. Buscando garantizar que se tenga una comprensión completa y profunda de los objetivos, el alcance y las limitaciones, ayudando a comprender a los usuarios finales, sus necesidades y requisitos.

Adicionalmente, define un tiempo establecido para recabar todos estos elementos mencionados, permitiendo que todos los miembros del equipo de desarrollo, así como del cliente, puedan reunirse y crear una comprensión compartida de los objetivos del proyecto. Sin embargo, esto va más allá que una mera reunión de kick-off. Esta visión colaborativa se trata de que todos los equipos puedan plantear desde su punto de vista, más valores y características que puedan garantizar la ejecución de este, a su vez que proporcionar valor comercial.

Quiénes están involucrados en el Discovery en desarrollo de Software
La idea es que la mayor cantidad de miembros del equipo esté involucrada, desde los programadores y testers hasta los analistas funcionales, desde un punto de vista más técnico y especializado.
Por otro lado, también debe formar parte miembros del cliente, ya que estos tienen un mayor conocimiento tanto de la industria como de sus propios consumidores, ofreciendo información valiosa que puede aumentar el índice de satisfacción de los usuarios. La lista de los equipos y representantes involucrados en el Discovery de productos quedaría así:

  • Propietario del producto (PO).
  • Gerente de proyecto.
  • Analista de negocios.
  • Arquitecto de soluciones.
  • Diseñador UX.
  • Programadores.
  • Probadores de control de calidad.
  • Usuarios finales representativos.

En teoría, estos deberían ser todos los miembros que participen en esta fase.
Adicional a esto, los especialistas en UX (experiencia de usuario) pueden ser sumamente útiles en el proceso de descubrimiento, ya que muchas limitaciones funcionales pueden ser informadas por los requisitos de la interfaz de usuario (UI).

Una mejor integración de este departamento de diseño con los procesos de Discovery en desarrollo de Software es a través de un taller de pensamiento de diseño, donde las partes interesadas se reúnen para discutir de manera integral las motivaciones, los requisitos y la visión del proyecto.

Proceso para crear un Discovery de productos
Para diseñar un proceso de Discovery de productos se deben conocer las necesidades iniciales, como mínimo, debe celebrarse una reunión inicial con el equipo de desarrollo para que el proyecto se pueda presentar a todos y las preguntas específicas sobre el cliente y el proyecto se puedan plantear en un entorno colaborativo.

Tengamos en cuenta que este proceso puede durar entre un par de días a semanas, por lo que no existe una lista de pasos para establecer el mejor proceso, es aquí donde cada aplicación, idea y equipo son únicos y el proceso debe poder adaptarse a sus necesidades en ese momento.
No obstante, en Huenei IT Services nos enfocamos en desarrollar los mejores productos para tu compañía, por ello, compartimos los siguientes pasos que podrían ayudarte a crear tu proceso de Discovery de software:

1. Descubre el propósito del desarrollo de software
Esta primera actividad se centra en el “por qué”.
Al comenzar la fase de desarrollo de producto digital, nos preguntamos cuál es el objetivo final del proyecto. No podemos construir un gran producto si no sabemos por qué lo estamos construyendo en primer lugar. Al comprender las expectativas de todos, descubrimos las motivaciones y el contexto necesarios para tomar decisiones enfocadas durante la ejecución del proyecto.

2. Ten una visión general del negocio
El siguiente paso consiste en analizar el modelo comercial de la aplicación y comprender la empresa que la respalda.
Consideramos que este es un momento fundamental para comprender cómo surgió esta idea de aplicación, cómo es la empresa y cómo este producto ayudará a que la empresa crezca.

3. Define las métricas
La pregunta principal de este tercer paso es cómo medir el éxito del producto una vez desarrollado.
Al establecer una línea de tiempo, la idea es identificar hitos y criterios para evaluar el éxito del producto.
Las metodologías de establecimiento de objetivos son excelentes opciones para profundizar la discusión.

4. Establece las restricciones
En esta etapa, la conversación se vuelve más realista. Ahora todos sabemos que no existen los recursos ilimitados y eso muestra un panorama donde cada proyecto tiene sus limitaciones, como una inversión restringida o una fecha de lanzamiento cercana.
Por eso creemos que es importante saber qué restricciones son las más importantes y con cuáles podemos ser más flexibles.

5. Identifica riesgos
Continuando, nuestro objetivo aquí es identificar los riesgos por los que vale la pena preocuparse, para que podamos enfocarnos en aquellos que no están fuera de nuestras manos.
Tan importante como enumerar las cosas que podrían salir mal en el proyecto es reconocer que podemos manejar algunos riesgos, pero no todos, cuáles son y cuáles podrían ser un punto de fuga de recursos, incluyendo el recurso del tiempo.

6. Comprender las necesidades de los usuarios
Las preguntas de este paso están relacionadas con los usuarios finales de la aplicación: ¿Quiénes son? Al conversar sobre nuestro usuario ideal y cómo es esta persona, podemos enumerar cómo imaginamos que interactuará con el software.
Este proceso es una gran instancia para que el equipo proponga una interfaz de usuario (UI) que sea adecuada para esos usuarios.

7. Establece procesos y acuerdos laborales
Ahora es el momento de definir cómo funcionará el flujo del proceso de desarrollo de software.
En esta etapa, el equipo puede acordar una metodología de trabajo, programar puntos de control y otras reuniones, establecer responsabilidades y acuerdos de trabajo para asegurarse de que todo esté claro y listo para comenzar.

8. Finalmente, construye un story map
La técnica de story mapping presentada por Jeff Patton es una forma clara de ver todo el recorrido del usuario que ofrece la aplicación.
En efecto, conocer sobre el Discovery en desarrollo de Software te permitirá establecer un enfoque necesario para un desarrollo eficiente y oportuno, tener claro esto desde comienzo significa lidiar con la abundante incertidumbre al inicio de cualquier proyecto, es por ello que es tan importante la comunicación, la investigación y el análisis para de esa manera, solidificar el objetivo y definir la dirección del proceso de desarrollo de productos, así como descubrir los obstáculos y riesgos.

Conclusión
Un Discovery correctamente planificado y ejecutado es vital no solo para el cliente, sino en la compañía de desarrollo responsable en llevarlo adelante. Esto no solo porque permite cumplir con los tiempos y recursos establecidos, sino que permite identificar todas aquellas necesidades de los usuarios finales y construir un producto/servicio que mejor se ajuste a sus necesidades.

Si querés conocer más sobre nuestras prácticas de desarrollo, te invitamos a visitar nuestra sección de expertise Software Development.

Aspectos técnicos sobre Blockchain

Aspectos técnicos sobre Blockchain

En el artículo anterior: “Introducción a Blockchain Empresarial”, conocimos esta tecnología, sus principales características y bondades, junto a su clasificación y algunos casos de uso consolidados. En esta ocasión, aprenderemos sobre los aspectos técnicos que la conforman y presentaremos brevemente cinco de las principales plataformas disponibles para la implementación de un Blockchain empresarial.

Cadena de bloques
El nombre Blockchain deriva de la estructura de datos, donde un grupo de transacciones son agrupadas en bloques, encadenados de manera secuencial. Sin entrar en los detalles de una implementación particular, cada bloque suele estar compuesto por un índice (1, 2, 3, n), una marca de tiempo (fecha y hora de creación), los datos (transacciones o pequeños programas denominados contratos inteligentes), un campo denominado nonce (number only used once) obtenido a través de consenso, y dos hashes (representación alfanumérica de ancho fijo, que se obtiene de aplicar una función criptográfica), el del bloque anterior y el propio.

El cálculo de un hash es una operación matemática sencilla, que entrega un resultado irrepetible, a partir del cual es imposible reconstruir la información de origen. Gracias a la inclusión del hash previo en el bloque actual, cualquier modificación o eliminación de un bloque, invalida automáticamente a todos los siguientes, de aquí que solo pueden ser agregados.

Red entre pares y consenso
Las redes blockchain son siempre distribuidas, del tipo peer-to-peer (P2P, o entre pares). En las mismas, en lugar de confiar en un servidor central, los equipos están directamente conectados unos con otros. Cada integrante contribuye al poder de cómputo (consumido para generar consenso) y al almacenamiento. Se consideran más seguras que una red centralizada, dado que no hay un punto de ataque único, y además ofrecen tiempo de actividad del 100% (la red permanece funcionando mientras haya miembros conectados).

Las información que se envía para ser agregada a la cadena, está criptográficamente firmada por una clave privada, y va acompañada de la correspondiente clave pública, para que los integrantes de la red puedan verificar su origen. Para consolidarse como un nuevo bloque, las partes deben acordar empleando un protocolo de consenso, el cual asegura que la cadena es la misma en cada nodo y que no hay actores maliciosos manipulando los datos.

Los protocolos de consenso, son mecanismos empleados para que los miembros de una red blockchain se pongan de acuerdo. En redes públicas y abiertas, como Bitcoin y Ethereum, se usan protocolos computacionalmente complejos, siendo uno de los más conocidos Proof-of-work (PoW). Básicamente, se busca que además de ser extremadamente difícil de modificar (hace falta entender al detalle cómo funciona y contar con el control de al menos el 51% de la red), sea totalmente inviable intentarlo (precisa equipamiento especializado, basado en dispositivos tales como GPUs o FPGAs, más el consumo de energía para nada despreciable, requerido para volver a calcular el hash de los bloques).

Contratos Inteligentes
Los Smart Contract, son programas del estilo if…then, que se guardan y son ejecutados por el blockchain. Derivan su nombre de principios legales, y la idea es que de manera segura, evitando un posible actor malicioso humano, a partir de cumplirse ciertas condiciones se ejecuten transacciones automáticas.

Existen algunos lenguajes específicos, como Solidity y Vyper, y otros más generales, como Golang, Node y Java. El soporte varía de plataforma en plataforma, habiendo algunas, por lo general destinadas a criptomoneda, que no los soportan.

Principales plataformas empresariales
La implementación de una blockchain a nivel programa informático, lleva al extremo consideraciones respecto a seguridad, rendimiento y escalabilidad del sistema. Es muy poco probable, y nada recomendable si no es el objetivo crear una nueva alternativa, realizar una codificación desde cero. En su lugar, disponemos de cientos de plataformas libres, una característica destacable dada la seguridad y transparencia que deben brindar, listas para ser implementadas. Si bien muchas están destinadas a criptomonedas, las hay también para su uso empresarial. A continuación daremos una breve descripción de cinco de las plataformas más conocidas con dicha finalidad.

Ethereum: presentada a finales de 2013, y desplegada para su uso entre 2015 y 2016, es una de las alternativas más maduras. Fue de las primeras en separar el concepto blockchain del caso particular de criptomonedas, y quien introdujo el concepto de Contratos Inteligentes. Posee moneda propia, el ETH, y es ideal para la realización de aplicaciones descentralizadas sobre redes públicas, pero también, pese a su falta de permisos, es ampliamente utilizada en ámbitos empresariales. Es respaldada por la Ethereum Enterprise Alliance (EEA, creada en 2017), una organización sin fines de lucro, que cuenta con más de 200 miembros, entre los que se incluyen empresas de las 500 más grandes del mundo, instituciones académicas, start-ups y proveedores de soluciones basadas en Ethereum.

Hyperledger Fabric: Hyperledger es un proyecto de la Linux Foundation lanzado a fines de 2015, que nuclea desarrollos de blockchain empresarial. Su integrante más conocido es Hyperledger Fabric, inicialmente desarrollado, y luego donado, por IBM. Es fuertemente permisionada y privada, al extremo de permitir comunicaciones entre dos integrantes de la red. Por su enfoque empresarial, utiliza protocolos de consenso más ligeros, permitiendo mayor cantidad de operaciones por segundo. Su primera versión para producción, la 1.0, es de mediados de 2017, habiéndose lanzado la 2.0 a principios de 2020.

Ripple: posee su raíces en un proyecto previo a Bitcoin, con lo cual presenta algunas características técnicas distintivas. Surge como plataforma en 2012, principalmente para usos financieros, teniendo a los principales bancos entre sus usuarios. Se basa en el uso de una criptomoneda, el XRP, y a diferencias de las principales plataformas modernas, no cuenta con soporte para Contratos Inteligentes (están siendo agregados a fines del 2020).

Corda: lanzada en 2016 por el consorcio R3, formado principalmente por instituciones financieras. Es permisionada y no posee moneda asociada. Su primer versión estable es de 2017, donde estaba fuertemente enfocada en la banca, aunque con el tiempo fueron surgiendo otros usos.

Quorum: un desarrollo de J.P. Morgan, anunciado en 2016. Básicamente, es una variante de Ethereum enfocada en el mundo empresarial, donde se reemplazó el mecanismo de consenso por uno más veloz y se agregaron permisos. Promediando el 2020 pasó a manos de ConsenSys, un proveedor de soluciones tecnológicas empresariales basadas en Ethereum.

Conclusiones
La estructura de datos, el tipo de red distribuida, el tratamiento criptográfico y la utilización de consenso, confieren a la tecnología las características de inmutabilidad, trazabilidad y seguridad. En cuanto al desarrollo de Contratos Inteligentes, precisa conocimientos específicos sobre la plataforma donde se ejecutará, saber interactuar con su API y acostumbrarse a un nuevo paradigma de programación.

Más allá de las diversas plataformas disponibles, el mundo empresarial parece principalmente distribuido entre Ethereum e Hyperledger Fabric, con la primera más volcado a B2C (Business to Consumer) y la segunda a B2B (Business to Business). Sus principales diferencias radican en si la red es pública y sin permisos, o privada y permisionada. Para decidir sobre una u otra, debe tenerse en cuenta la posible necesidad de consumo de monedas en el primer caso, y que en el segundo caso, basado en el conocimiento acerca de los miembros que pasan a ser entes registrados e identificados en la red, pueden utilizarse protocolos de consenso más ligeros, lo que incrementa la posible cantidad de operaciones por segundo.