Tecnologia

AWS Summit Madrid 2018

24 de mayo de 2018 | Carlos Bermudo

Aquest post és públic

La jornada empezó muy temprano, a las 6:25h de la mañana cogíamos el AVE a Madrid para llegar a Atocha poco antes de las 9. De allí, directos al recinto IFEMA para registrarnos y poder acceder al AWS Summit 2018, organizada por Amazon Web Services (AWS).

El evento consistía en una zona de exposición donde diversas empresas y partners disponían de stands en los que presentar sus productos y servicios. Esta zona además ofrecía un pequeño escenario llamado “Teatro de Soluciones”, en el que a lo largo del día se hacían charlas cortas de 10 minutos sobre casos de uso o presentaciones de productos. Por último, también había una zona en la que consultar con expertos en AWS dudas sobre sus productos. A partir de las 13h y hasta las 18h de la tarde se ofrecían hasta 35 sesiones diferentes de unos 45 minutos divididas en 7 temáticas presentadas de forma paralela.

La mañana la dedicamos a visitar la zona de exposición. Entre los expositores que visitamos, estaba Datadog. Esta empresa norteamericana con sede en NY ofrece una herramienta SaaS de monitorización que permite enlazar y visualizar el estado de algo que iría desde el nivel más alto, como puede ser un servicio AWS, y bajar hasta las líneas de código que están lanzando excepciones en una aplicación desplegada en el cloud. Todo esto tanto para un elemento como para un conjunto dinámico de ellos que puede variar el número debido a políticas de autoescalado. Realmente una herramienta muy potente para monitorizar y gestionar conjuntos muy grandes de elementos en AWS.

Antes de proceder a las sesiones, la agenda nos permitió asistir a la primera de las charlas breves del Teatro de Soluciones, en la que Veeam presentaba su solución de disaster recovery y backup de servicios AWS. Por ejemplo, tienen un servicio de disaster recovery para AWS entre diferentes regiones con un tiempo de recuperación de aproximadamente 30 segundos, así como la funcionalidad de replicar el contenido completo de una cuenta en caso de pérdida.

Tras esta breve charla, nos dividimos en varios grupos para poder atender al máximo de sesiones posible. En posteriores posts del blog presentaremos aquellas que encontramos más interesantes. Por ahora, estos son los temas en los que se dividían las sesiones:

  • Día 1 en AWS
    • Sesiones enfocadas a dar los primeros pasos en el cloud de Amazon
       
  • Optimiza tus operaciones en la nube
    • Para aquellos que tienen cierta experiencia, cómo sacarle el máximo partido a sus operaciones en el cloud
       
  • Creando soluciones en AWS
    • Charlas sobre programación en cloud. Muy centradas en soluciones serverless
       
  • El futuro es hoy: Inteligencia Artificial con AWS
    • El título lo dice prácticamente todo: IA y AWS
       
  • Migrando al Cloud
    • Cómo pueden las empresas con una infraestructura montada llevarla a la nube
       
  • Analítica de datos a escala: Gestiona exabytes de datos
    • Big Data y servicios AWS
       
  • Excelencia Cloud en la Gran Empresa
    • Sesiones no tan técnicas, enfocadas a estrategias de negocio con cloud

 

Una vez finalizadas las sesiones de la tarde y ya de nuevo todo el equipo reunido, disfrutamos de un cóctel de despedida en el que, mientras tomábamos un refrigerio, intercambiamos impresiones sobre cómo había ido el día y lo que habíamos aprendido.

Después, solo quedaba regresar a casa, cansados pero satisfechos.

Foto de capçalera de Basetis
empresa,Open,systems,
Tecnologia

Crónica de la jornada Google Cloud OnBoard

12 de marzo de 2018 | Carlos Bermudo

Aquest post és públic

El pasado jueves 8 de marzo asistí al evento Google Cloud OnBoard que se celebró en el salón de congresos del hotel NH Collection Barcelona Tower de L’Hospitalet. Sí, ese que parece que haya aterrizado un ovni en su tejado.
 

El evento consistía en una presentación de los servicios de Google Cloud Platform (GCP), la plataforma de servicios en la nube de Google. Básicamente lo que han hecho es poner a disposición del público las mismas herramientas que ellos han creado para manejar todos sus servicios. Estas herramientas constan, entre otras cosas, de servicios de computación, almacenamiento de datos (databases y archivos), gestión de redes, machine learning, etc.

Desde mi punto de vista, al haber trabajado hasta ahora con la plataforma cloud de Amazon, Amazon Web Services (AWS), lo que hacía durante las presentaciones era mapear los servicios que ofrece GCP sobre los que ya conocía de AWS. Y puedo decir que son esencialmente los mismos. De hecho, para muchas cosas comparten nomenclatura. Hablando allí con gente que ha trabajado con ambas plataformas me confirmaron que esencialmente es así, aunque quizás a GCP le falta pulir algunas funcionalidades. 

Una cosa que me gustó mucho de GCP, y que por ahora no tiene AWS, es la Google Cloud Shell. Esta Shell es una terminal de texto que se puede abrir en la misma web de la consola de GCP y además, ya tiene instalada la API de Google Cloud para gestionar los recursos por línea de comando. Esta API te la puedes instalar localmente en tu ordenador, pero la ventaja de la Shell es que al estar ya logueado en la cuenta de Google, no necesitas configurar tus credenciales para gestionar los recursos, ya dispones automáticamente de todos los permisos que tiene tu usuario de la plataforma.
 

No voy a entrar mucho en los detalles de los servicios, al final del post tenéis disponibles las diapositivas que se usaron durante las presentaciones. Si que expondré aquí mis impresiones, tanto de los servicios en sí como del evento en general.

Como he dicho antes, las presentaciones consistieron en enumerar los diferentes servicios y realizar algunas demos sobre qué se puede hacer con ellos. Para mi gusto, faltó que hubieran mostrado cómo se manejan éstos desde la consola web. Aunque es algo que puede aprenderse rápidamente. La primera vez que accedes al GCP no sabes muy bien dónde está cada cosa, pero dada la cantidad de material a exponer y las limitaciones de tiempo, debieron ir a lo más interesante.
 

Computación

En cuanto a servicios de computación, me sorprendió que no le dieran mucha importancia a las instancias de servidores virtuales. Parece que están tendiendo más a arquitecturas serverless, donde tú despliegas tu código directamente en la nube sin preocuparte por el dimensionamiento del servidor en el que se ejecutará o utilizas servicios concretos que ya se encargan de gestionar las máquinas virtuales que hay debajo de forma transparente al usuario.

Una cosa que sí que me gustó de las instancias es que, a diferencia de AWS donde tienen tipos predefinidos con su capacidad de CPU y RAM prefijada, GCP te permite definir tu instancia con la CPU y RAM que tú quieras. Es un servicio un poco más caro que las instancias predefinidas, pero sí te permite ajustar al máximo los recursos a tus necesidades. No necesitas sobredimensionar y a la larga puede salir más barato.

Data Storage

Sobre almacenamiento de datos, a parte de servicios de gestión de MySQL y PostgreSQL típicos, presentaron muchos servicios para bases de datos no relacionales (Hadoop, NoSQL) y de big data. Debo confesar que es un tema que desconozco mucho pero que me pareció interesante y la demo que hicieron sobre Big Data Query demuestra realmente el potencial.

Partiendo de uno de los big data sets que GCP tiene, en este caso los registros de uso de StackOverFlow, en apenas unos segundos pudieron obtener el número de aportaciones que se han hecho en StackOverFlow por parte de usuarios que tienen su localización en Barcelona y que postearon sobre temas de SQL. Es decir, que de todos los usuarios de StackOverFlow, primero se descartó aquellos que no tienen una localización definida. De las restantes, buscó los que la tienen como Barcelona y de todos ellos, buscó las aportaciones sobre SQL, y todo en apenas unos segundos.
 

Machine Learning

GCP dispone de servicios de ML ya entrenados para usar directamente, como pueden ser el reconocimiento de texto (escrito o extraído de imágenes), de voz (con algoritmos de cancelación de ruido de fondo) y de objetos (en imágenes o vídeo en directo). También dispone de herramientas para la creación y entrenamiento de estos servicios.
 

Marketing

Finalmente, como no podía ser de otra manera en un evento de estas características, animaron a todo el mundo a hacerse una cuenta de GCP y probarlo personalmente. Las nuevas cuentas creadas disponen de un saldo de 300$ para gastar en recursos y una vez agotados éstos, no se cobrará por ningún recurso nuevo a no ser que se indique explícitamente.
 

Formación

Para la formación también presentaron Qwiklab, un entorno de autoaprendizaje de GCP y AWS donde se presentan cursos compuestos por varios laboratorios guiados paso a paso para aprender a manejar ambas plataformas. Estos laboratorios se realizan sobre la plataforma real con unas cuentas que eliminan todos los recursos creados al cerrar la sesión. Cada curso cuesta ciertos créditos, aunque hay algunos con coste 0, que se pueden ir comprando bajo demanda o pagar una suscripción mensual con créditos infinitos por 55$.
 

Despedida

Y nada más por el momento. Si queréis saber más detalles o dar vuestra opinión, tenéis a vuestra disposición la sección de comentarios al final del artículo, no dudéis en escribirme. Os dejo con una fotografía de algunos de los obsequios que repartieron en el evento: pegatinas, un boli y un cuaderno.

 

Diapositivas

Aquí tenéis disponibles las diapositivas que se usaron en las diversas presentaciones del evento. En ellas podréis encontrar muchos más detalles de los que yo os puedo dar.

  1. Introducción a Google Cloud

  2. Primeros pasos con Google Cloud Platform

  3. Almacenamiento y Bases de Datos

  4. Compute Engine, App Engine y Networking

  5. Data Streaming con Pub/Sub y DataFlow

  6. Managed Hadoop con DataProc

  7. Big Data con BigQuery

  8. Machine Learning con Google Cloud

  9. Kubernetes Engine

  10. Formación

 

Foto de Cabecera: Pau Puig (@paxpuig)
Foto NH Collection Barcelona Tower: Wikipedia
esdeveniments,eventos,Google,Medalla Pulitzer,Open,
Tecnologia

La importancia de un código de calidad

2 de marzo de 2018 | Adrián Chamorro

Aquest post és públic

Biblioteca de post técnicos

  > Máquina de estados

  > Gestión de errores en una aplicación

  > Virtual Village: multiplayer

  > Servihabitat: motor de reglas

  > Filtrar jerarquías con Java

Inspirado y motivado por un atículo que escribió mi compañero Andy, me he decidido a escribir.

Quizás el tema del que voy a hablar no da para mucho, ni resulte atractivo para la mayoría de programadoras y programadores, pero si te dedicas profesionalmente al desarrollo de aplicaciones, normalmente trabajarás con un equipo y para un cliente, y este es el principal motivo por el que la documentación y calidad del código se merecen un artículo.

Sí… documentar código no es programar… pero forma parte de la programación, como el agua de nuestro cuerpo. 
-¡Oh, qué profundo!- Lo profundo es el batacazo que se puede llevar el cliente -y por ende, tú- cuando se entere de lo que cuesta mantener su aplicación, provocando a la larga un descontento general y un cambio de proveedor.

Vale, quizás así suene exagerado, pero tengo la suerte de haber participado en muchos proyectos y puedo decir que he aprendido el valor de entender un código a la primera. Claro que un código legible y fácil de entender, no solo consta de una documentación clara, también debe estar bien estructurado y formateado.
 

Algunos casos

¿Quién no ha tenido que enfrentarse a un código que no es suyo y tirarse de los pelos para entenderlo? ¿Quién no se ha encontrado con un cliente que contrata tus servicios para rehacer un proyecto que se ha convertido en una pesadilla? ¿A quién no le gusta entender lo que lee? ¿Quién no ha picado de nuevo un código que no es suyo porque es mucho más rápido y fiable que mantener el ya existente? ¿Por qué es tan difícil explicar y hacer entender la importancia de un código de calidad?

Algunos de los que han trabajado conmigo, me han preguntado alguna vez por qué dedico tanto tiempo a pensar en el nombre de una variable. El motivo es simple: el nombre adecuado en una variable la convierte en autoexplicativa y ayuda a entender el contexto en el que se encuentra, evitando tener que revisar otras líneas de código para comprender su finalidad. Lo mismo es aplicable para una clase o un método.

No quiero aburriros con más historietas, voy a daros algunos consejos que seguramente vuestr@s compañer@s y el cliente agradecerán algún día.
 

Consejos

  • Antes de picar la primera línea de código, busca información sobre tips de buenas prácticas para el lenguaje de programación que vayas a utilizar.
  • Prepara tu IDE con un formateador automático de código. Si puede ser, basado en estándares. En caso de no disponer de esta funcionalidad, trata el código como si fuera tu proyecto de final de carrera.
  • Tratar el código con amor.
  • Tratar el código con respeto.
  • Piensa en los demás.
  • Entiende lo que quiere el cliente. Eso te ayudará a crear un código mucho mejor, porque te permitirá plasmar los conceptos del negocio de forma adecuada.
  • No hagas las cosas porque te las dicen, hazlas porque las entiendes. Así que no me hagas caso, excepto si entiendes mi mensaje y compartes su finalidad.
  • Intenta documentar primero la cabecera de un método antes de implementarlo. Te ayudará a tener claro que quieres conseguir y luego te resultará más fácil implementarlo.
  • No documentes un método porque sí, por pura burocracia. Hazlo porque entiendes su utilidad, para que otros o tú mismo lo podáis entender con el mínimo esfuerzo pasado el tiempo.
  • Evita la redundancia en la medida de lo posible. Por ejemplo para explicar lo que hace un método no escribas «Método que …». Aligera la lectura y ocupa menos espacio en pantalla. Pero cuidado, a veces la redundancia es útil para clarificar un contexto complejo.
  • Utiliza programas o plugins del IDE para revisar la calidad del código. Como SonarLint en el caso de Java. Recuerda, respeto por el código.
  • Somos el código, el código nos une. Sin el código estamos vacíos.
  • Documentar y escribir un código de calidad forma parte de la tarea de implementación. De lo contrario, la funcionalidad estará incompleta por mucho que el código compile y funcione. No caigas en la tentación y líbrate del mal, amén. En serio, lo que te ahorras, te lo devolverá por triplicado negativamente más adelante. Solo en casos extremos, de proyectos agresivos o urgencias, puedes saltarte esta parte, pero en un futuro no muy lejano algo o alguien se resentirá.
     

Aprender estos consejos requiere un esfuerzo. Hay que practicarlo y habituarse. Luego todo fluye. Es cómo un mago cuando aprende un hechizo.

Foto de cabecera: Highschool Thinker
Foto del cuerpo: Pinterest
código,documentación,Open,Programación,
Empresa

Detección de fraude colaborativo en siniestros de auto

30 de enero de 2018 | Gonzalo Espinosa

Aquest post és públic

Como uno de los proyectos de inovación, BaseTIS se ha dedicado a la investigación de la detección de fraude colaborativo en el sector de los seguros, desarrollando un método basada en grafos para detección de comunidades sospechosas de fraude, es decir, crimen organizado. Concretamente, este método se centra en la identificación de patrones irregulares que describen posibles asociaciones entre personas para cometer fraude.
 

Fraude en seguros de automóvil

En el sector asegurador, se conoce que alrededor del 6% de los partes que se emiten tienen cierta componente ficticia, exagerada o irregular. Se trata de siniestros falsos que tienen una intención fraudulenta por parte del asegurado y que en conjunto suponen un fuerte impacto económico para las compañías aseguradoras (estimado alrededor de un total 900 millones de euros anuales en España).

Tal impacto económico, ha suscitado la conciencia y la atención en el fraude, así como ha motivado el desarrollo e implantación de tecnología dedicada a su prevención y detección. Además, el creciente interés que el fraude está atrayendo del público en general, los medios, los gobiernos y las empresas, supone que el impacto reputacional sea un aliciente adicional para la detección de fraude.

En el dominio particular de siniestros de automóvil, a grosso modo se distinguen dos tipos de fraude: el fraude oportunista y el fraude premeditado. En un escenario de fraude oportunista, el defraudador aprovecha una situación u oportunidad que se le presenta y de forma esporádica emite una reclamación falsa o exagerada de un daño para beneficiarse de su seguro. Estos fraudes, al ser de carácter impulsivo, son más fáciles de detectar y suelen ser detectados por el peritaje o técnicas de detección de fraude tradicionales.

Por otro lado, el fraude premeditado, a diferencia del anterior se caracteriza por ser de forma planificada. A menudo, este fraude no es cometido por una sola persona, sino que varios participantes actúan de forma organizada encubriéndose unos a otros para evadir ser expuestos a los sistemas de detección de fraude. Estas asociaciones entre personas es lo que llamamos fraude colaborativo o crimen organizado y ha sido el objeto de detección de este proyecto.
 

Detección de fraude colaborativo

Partiendo de un conjunto de medio millón de registros de partes de auto recopilados durante los últimos tres años, BaseTIS ha desarrollado y empleado una metodología basada en grafos, representando la interacción de las personas, tanto asegurados como contrarios, sus vehículos correspondientes, y los siniestros en los que se han visto involucradas. Esta metodología se basa en la detección de anillos fraudulentos y ha permitido destapar 317 casos con un alto riesgo de fraude.   

BaseTIS ha demostrado estadísticamente que la aparición de ciclos o anillos fraudulentos es improbable que suceda al azar (siendo 1 entre 180.000 la esperanza de ocurrencia de un ciclo en este conjunto de datos en particular) y que debido a este carácter anómalo es coherente pensar que su aparición no se produzca debida al azar, sino a un mecanismo consciente y premeditado.  

Para entender el concepto de anillo fraudulento podemos partir de la intuición: imaginemos un caso en el que dos personas deciden asociarse y emitir una reclamación falsa o exagerada. En el caso más simple posible, estas personas deciden asociarse por primera vez para cometer fraude, por lo que su representación mediante grafos se presenta de igual forma que un accidente ordinario y por lo tanto su distinción resulta imposible.
 

Sin embargo, en el momento de que estas personas reiteran su actividad en cualquier momento de su histórico, ya sea con vehículos distintos o con los mismos, se verán implicadas en una estructura cerrada en nuestro grafo y por lo tanto serán expuestas a nuestra detección. Estas estructuras cerradas es lo que en grafos se conoce como ciclos o anillos.

 

La presencia de estas estructuras no implica que estos casos sean fraudulentos, pero sí que tengan un alto riesgo de ser fraudulentos y merezcan un tratamiento diferencial. Este sistema permite simplificar la investigación de más de medio millón de registros a un conjunto reducido de casos sospechosos fraude que conviene investigar en detalle, lo que facilita significativamente la tarea de investigación tradicional de fraude caso a caso, generando un gran valor operacional para la compañía aseguradora. 
 

Foto de cabecera: Zac Ong / Unsplash
Imágenes del cuerpo: BaseTIS
Data,Medalla Blogger,Open,
Empresa

BaseTIS obtiene el sello de Pyme Innovadora

4 de enero de 2018 | Javier Cárdaba

Aquest post és públic

¿Qué es el sello de Pyme Innovadora?

Es la acreditación que el Ministerio de Economía y Competitividad otorga para reconocer a las pequeñas y medianas empresas intensivas en I+D+i.

¿Qué aporta el sello?

Las pymes que figuren en el Registro de Empresas Innovadoras y, por lo tanto, dispongan del sello de Pyme Innovadora, además de gozar de una acreditación otorgada por el Ministerio de Economía y Competitividad que les destaca como empresas comprometidas e intensivas en actividades innovadoras, proporciona incentivos financieros y fiscales orientados a garantizar que la empresa siga apostando por la innovación (pueden compatibilizar plenamente las bonificaciones en la cotización a la Seguridad Social respecto al personal investigador y la deducción en las cuotas tributarias del impuesto de sociedades).

Internamente, desde BaseTIS, valoramos más la distinción en sí que los beneficios que podemos obtener de ello.
 

¿Cómo lo hemos conseguido?

En 2015 nos dimos cuenta que podíamos poner en valor la inversión que hacemos en proyectos de lo que internamente denominamos «Experiences» y después de investigarlo un poco vimos que para conseguirlo necesitábamos ayuda externa, por dos motivos:

  • Una cosa es lo que internamente entendemos como I+D+i y otra cosa es lo que se entiende en la Administración. Es importante ser cuidadosos en este aspecto.

  • Existe una tramitación no trivial y se requiere una certificación de la documentación generada. 

Por estos motivos, decidimos contar con la ayuda de la empresa KLB Group, que colabora con nosotros en la gestión de las deducciones por actividades de I+D+i desde el Impuesto de Sociedades de 2014. A lo largo de los diferentes ejercicios fiscales se han obtenido deducciones fiscales de numerosos proyectos calificados tanto de Investigación y Desarrollo como de Innovación Tecnológica.

A este respecto, BaseTIS ha destinado y acreditado en los últimos tres ejercicios una inversión en actividades y proyectos de Investigación, Desarrollo e innovación de aproximadamente 1.375.000€.

Una de las circunstancias que califican a las pymes como empresas intensivas en I+D+i es haber obtenido, en los tres años anteriores al ejercicio al derecho de bonificación, un Informe Motivado vinculante positivo relativo a un proyecto de I+D+i.

Este informe es dificil y lento de conseguir… pero ¡lo hemos logrado! Disponemos de un Informe Motivado relativo a la anualidad 2014 del proyecto READERHELP que lo califica como de Investigación y Desarrollo, por lo que queda demostrado el carácter innovador de la compañía. Si nos quieres buscar…. aquí (pista: el CIF de BaseTIS es B65208183).

Para conseguir el sello, BaseTIS se dio de alta en el registro de Pymes Innovadoras. Para ello, se aportó la documentación que acreditaba que se cumplía con alguno de los requisitos establecidos en la Orden Ministerial ECC/1087/2015 de 5 de junio, tal como el Informe Motivado.
 

¿Y ahora, qué?

Pues la idea es seguir obteniendo informes motivados de los siguientes ejercicios, pero en la práctica, ¡a seguir con nuestras «Experiences»!

Foto de capçalera de Basetis
Experiences,I+D,Open,Pyme Innovadora,
Tecnologia

Datastore: una base de datos con pocas ganas de relacionarse

10 de octubre de 2017 | Caronte

Aquest post és públic

Una breve introducción por el reino de NoSQL

Hace unos días junto a mis compañeros (Nelly Yacoub, Jorge Gavidia, Albert Alapont, Javier Salvador, Xavier Méndez, Enle Lin) terminamos una auditoría de base de datos para un cliente. Uno de los motores de bases de datos a estudiar fue Datastore. Este sistema cuenta con grandes ventajas que vamos a compartir en este post. 

Muchos de nosotros hemos crecido viendo cómo las bases de datos relacionales han dominado el mercado. Ya sea en la universidad o en el trabajo, hemos modelado bases de datos utilizando herramientas como el modelo entidad-relación, hemos manipulado bases de datos con SQL para realizar consultas que van desde un simple select hasta una consulta diabólica donde los joins son los protagonistas.

Entonces… ¿cómo te quedas si te digo que para este post te olvides de las relaciones entre tablas, los esquemas rígidos y, sobre todo, que dejes de lado el entrañable lenguaje SQL? Con esta pregunta acabamos de ver las características de un sistema NoSQL, pero si no has oído hablar de este término aquí va un pequeño resumen sin entrar detalles de lo que son las bases de datos NoSQL.
 

Not only SQL

NoSQL (not only SQL) es el término que se utiliza para agrupar las bases de datos que no siguen el paradigma relacional. En otras palabras, aquellas bases de datos que no utilizan ni foreign keys  ni  joins para relacionar tablas. Estas bases de datos son populares por su gran escalabilidad y rendimiento. Sin embargo, como contrapartida carecen de una fuerte consistencia. Dependiendo de cómo se organizan los datos en un sistema NoSQL, podemos encontrar cuatro grupos o tipos: clave-valor, columnar, documental y graph.

Las clave-valor se caracterizan por su sencillez, almacenando los datos (como su nombre indica) en pares identificador y valor, como si de un diccionario se tratara. Dentro este grupo podemos encontrar los motores Redis y Bigtable.

Por otro lado, las columnares van un paso más allá que las clave-valor, ya que agrupan los datos también en pares, pero con la ventaja de poder unir columnas, obteniendo así un resultado parecido a filas en una tabla. Podemos mencionar a Cassandra y HBase como sistemas columnares.

En cuanto a las documentales, estas se caracterizan por almacenar los datos en ficheros con un formato de texto simple, como por ejemplo XML o JSON. No cuentan con un esquema fijo, pudiendo tener documentos distintos para a un mismo concepto, por ejemplo un documento con datos diferentes para cada usuario. Podemos encontrar a  MongoDB y Datastore como integrantes de este tipo de base de datos.

Finalmente, los graphscomo su nombre indica, representan los datos como grafos donde las entidades son los nodos y las relaciones las aristas. Este tipo de base de datos cuenta con un alto rendimiento para grandes volúmenes de datos. Un ejemplo de motor es Neo4j.
 

Datastore: el ojito derecho de Google

Datastore es una apuesta de Google en el terreno de las bases de datos NoSQL. Este sistema es del tipo documental, el cual se caracteriza por su gran escalabilidad y disponibilidad. Esta base de datos es totalmente gestionada, o lo que es lo mismo, nos permite olvidarnos de todo lo relacionado con la infraestructura, pudiendo centrar así nuestras energías en la creación y manipulación de la base de datos.

 

Objetos en Datastore

Cuando hablamos de los objetos con los que se trabaja en Datastore, podemos listar los siguientes:

  • Espacio de nombre. Es la agrupación de los objetos de la base de datos.

  • Tipos. Se utilizan para agrupar documentos, como por ejemplo factura, producto, etc. Podemos decir que son las tablas en una base de datos relacional.

  • Entidades y propiedades. Siguiendo con la analogía de una base de datos relacional, estos vendrían a ser las filas y columnas.

  • Índices. Cumplen con la misma función tanto para Datastore como para una base de datos relacional.

 

Modelo de datos

Datastore no cuenta con un esquema fijo ni con relaciones entre tablas, siendo estos factores a tener muy cuenta a la hora de modelar nuestro negocio. Datastore dispone de dos formas de agrupar los datos: ancestor paths y entity groups.

Ancestor paths

Permite realizar una jerarquía entre entidades, similar a un directorio en un sistema de ficheros. De esta forma una entidad puede tener una relación padre-hijo con otra entidad, organizando mejor los datos.

Se pueden construir árboles de entidades, donde aquellas entidades que no tengan ancestros serán entidades raíz. La key que identificará una entidad no raíz será una secuencia de pares entre la key de sus padres y la suya propia.

La imagen es un ejemplo de una jerarquía utilizando ancestor path. La entidad Abuelo hace de root entity, mientras que la entidad Yo tendrá como ancestros las entidades Padre y Abuelo.

Entity groups

Este tipo de relación tiene como objetivo agrupar varias entidades, teniendo una única entidad como padre. Se utiliza para datos altamente relacionadas, facilitando así su recuperación.

En la imagen se puede ver la relación entre factura y líneas de facturas, clientes y trabajadores. Estas últimas tendrán como identificador su key más la de la factura.
 

Plataforma de gestión

Como se ha mencionado, Datastore es autogestionada por Google, contando con un dashboard para manipular y consultar nuestra base de datos. Este dashboard se divide en cuatro secciones:

Entidades

Empezando por la pestaña de Entidades, se puede consultar mediante la interfaz o por consola: los espacios de nombres, tipos, entidades. Además se puede aplicar varios filtros para acotar las búsquedas.
 

Panel de control

En la pestaña del panel de control se nos muestran estadísticas del estado de nuestra base de datos, el tamaño de los datos, índices, etc. Este panel se actualiza cada 24 a 48.
 

Índices

En el apartado de Índices se puede consultar el estado de los índices compuestos. Estos tienen como objetivo mejorar el rendimiento, aplicar filtros y ordenar los datos. Estos índices se tienen que crear por consola o a través de alguna de las librerías existentes.
 

Administración

Por último, tenemos la pestaña de Administración con varias opciones:

  • Abrir Datastore Admi, donde podemos consultar el estado general de nuestra base de datos.

  • Realizar importaciones y exportaciones de backups.

  • Eliminar todas la entidades de un tipo.

  • Inhabilitar Datastore Admin y la escritura de la BBDD.

 

Limitaciones

Datastore dispone de varias limitaciones que dependen de si las transacciones se realizan desde la API de Datastore o alguna de las librerías externas. En la siguiente tabla se detallan las  limitaciones más significativas:

 

Límites

     Cantidad

Tamaño máximo de una petición.

100 MiB

Tamaño máximo por transacción.

10 MiB

Tamaño máximo por entidad.

1MiB

Número máximo de entidades a las que se puede acceder en un entity group por transacción.

25

Máximo número de entidades que se pueden manipular en una operación de commit en Cloud Datastore API.

500

Número máximo de keys que se pueden consultar en una operación de consulta en Cloud Datastore API.

1000

Tamaño máximo de una Propiedad índice de tipo string codificado en UTF-8.

1,5 MiB

Tamaño máximo para una propiedad no indexada.

1 MiB

Número máximo de índices compuestos por proyecto.

200

Número máximo de exportaciones concurrentes.

50

 

¿Aplicaremos algún día una base de datos Datastore en algún proyecto?

Después de realizar la auditoría, hemo visto las ventajas así como los puntos débiles de Datastore. Por lo tanto, podemos afirmar que Datastore es un sistema con mucho potencial, su alto grado de disponibilidad y escalabilidad hace que sea una opción atractiva para aplicaciones de análisis de datos, donde el cambio de esquema y la redundancia de datos estén a la orden del día. 

Sin embargo, Datastore cuenta con varias limitaciones que hay que tener en cuenta. La falta de consistencia hace de Datastore una opción poco viable, por ejemplo, en aplicaciones de banca. Además, al contar con un lenguaje poco maduro la manipulación de la base de datos dependerá en gran medida de la librería que se utilice.

Esta experiencia nos ha ayudado a ampliar nuestra visión sobre las base de datos y el gran potencial que hay detrás. Esperamos haber transmitido un poquito de lo que hemos visto durante nuestro pequeño viaje por Datastore.

Foto de cabecera: Timothy Paul Smith / Unsplash
Bases de datos,empresa,NoSQL,Open,tecnologia,
Tecnologia

¿Qué hace un Scrum Master? ¡Te lo contamos!

28 de marzo de 2017 | Javier Salvador

Aquest post és públic

¿Qué es Scrum? ¿Para qué sirve? ¿Qué diablos hace un Scrum Master?

El lunes 13 de marzo a las 9:00 AM pensaba que tenía respuesta a las tres preguntas y que el curso de Scrum Master iba a ser un paseíto por las nubes, para mí. ¿Pero sabéis qué? Que cinco minutos después me di cuenta que teníamos una idea radicalmente opuesta al papel del Scrum Master en una empresa y que la cosa no iba a ser tan fácil.

Los Cinco Magníficos de BaseTIS: Albert Mialet, Vicente José Rives, Héctor del Águila, Sergio Jiménez y yo comenzamos el curso dándolo todo, algo que pudo verse en cuanto Jerónimo Palacios, nuestro profesor gurú experto en Scrum, nos preguntó qué objetivos queríamos cumplir al finalizar el curso. Por supuesto, nuestro pragmatismo salió a relucir y nuestras respuestas fueron:

  • Aprobar el examen.

  • Aprender a ser “polis malos” al hacer de Scrum Masters.

  • Aprender a aplicar metodología Scrum en nuestro lugar de trabajo.
     

¿Por qué narices escribimos «aprender a ser bad boys«?

Pensad que nuestra idea del papel del Scrum Master era el de un tío que se encargaba de controlar el daily, que se cumplían los turnos, que se respetaban los tiempos y que se movían los post-its. ¡Y todo esto no es así!

Nos quedamos como estatuas de sal conforme iba avanzando el curso e íbamos viendo que el Scrum Master es un tío que se encarga de aplicar el framework de Scrum en una empresa, pero que no tiene que estar obligatoriamente en un daily y ni mucho menos tiene que marcar los tiempos de intervención.

Así pues, la figura de un Scrum Master es más la de un psicólogo-pedagogo que la de un poli curtido en las calles del Bronx, cambiando la postura del “has de hacer esto” por la de “y tú, ¿cómo harías esto?”.
 

Entonces, ¿qué es un Scrum Master?

Para ser más concisos habilidad infravalorada en un mundo que funciona demasiado deprisa-, lo mejor para saber qué es un Scrum Máster es acceder a la guía de Scrum en español y leerlo:

“Es el responsable de asegurar que Scrum es entendido y adoptado». Los Scrum Masters hacen esto asegurándose de que el Equipo Scrum trabaja ajustándose a la teoría, prácticas y reglas de Scrum. El Scrum Master es un líder que está al servicio del Equipo Scrum. El Scrum Master ayuda a las personas externas al Equipo Scrum a entender qué interacciones con dicho equipo pueden ser de ayuda y cuáles no. El Scrum Master ayuda a todos a modificar estas interacciones para maximizar el valor creado por el Equipo Scrum.”
 

Vale, ya sé qué es un Scrum Master. ¿Y ahora, qué?

Bien, ya hemos concretado la figura del Scrum Master y todo está mucho más claro, aunque seguro que hay una duda que ahora nos ronda por la cabeza: ¿cómo leches se puede aplicar Scrum?

Pienso que, para poder tener éxito, hay que tener mucha paciencia y sobre todo aplicar los cinco valores que hacen que un grupo de personas pueda trabajar en equipo: foco, coraje, transparencia, compromiso y respeto. Si uno de ellos se tambalea, la aplicación del Scrum en una empresa se desmorona.
 

La gran pregunta

Ahora viene la pregunta del millón, esa en la que te juegas el descapotable y el apartamento en Torrevieja: después de hacer el curso, ¿crees que podemos aplicar Scrum en BaseTIS? Yo, personalmente, pienso que es posible, aunque tenemos que tener presente que es un camino largo y la adaptación es siempre complicada. ¿Lo bueno de todo esto? ¡Que en breve tendremos unos cuantos certificados para ayudar a la causa!
 

Basetianos, con estos futuros Scrum Masters, nada es imposible.
 

Foto de cabecera: Olga Guryanova / Unsplash
Foto del cuerpo: Volvoab
Medalla Blogger,metodologías,metodologies,Open,scrum,
Tecnologia

La importancia de analizar y documentar

24 de febrero de 2017 | Xavier Valls

Aquest post és públic

Antes de empezar

Sé que este artículo es un poco superficial; simplemente pretendo compartir mi punto de vista basado en la experiencia de varios años en este mundillo. Incluso habrá quien lo considere anticuado por entenderlo como programación en cascada o simplemente quien no comparta algunas afirmaciones. Me encantaría poder recibir vuestros comentarios al respecto y aprender de vosotros.
 

¿Empezamos a trabajar ya?

Al iniciar un proyecto, a veces se deja de dedicar esfuerzo en detectar los puntos clave, documentar por escrito e intentar aportar más valor de lo que solicita el cliente y tener visión para anticipar futuros problemas y/o requerimientos. Este ejercicio, aunque puede demorar un poco el inicio de la programación tiene beneficios a corto y medio plazo.
 

¿Qué me estás pidiendo?

Es conocido que el cliente no suele pedir lo que necesita, pide lo que «cree» que necesita, habitualmente condicionado a las soluciones ya implementadas, centrándose únicamente en los defectos y limitaciones de estas, sin hacer el ejercicio de poner la mente en blanco, desaprender lo aprendido, pensar únicamente en su negocio y lo que realmente necesita.

Al psiquiatra vas

Es por ello que la realización del análisis por parte de un externo (el analista), permite aportes frescos, nuevas ideas, algo así como ir al psiquiatra, que es un perfecto desconocido pero te ayuda a ver las cosas desde otra perspectiva y aporta valor a las ideas preconcebidas.

También es cierto que a veces el cliente es reticente a nuevas ideas, aquello que se llama «miedo al cambio». Aquí se debe jugar la carta opuesta a «si funciona no lo toques» porque el cliente es consciente de que «no funciona» y por eso es necesario darle la vuelta a la tortilla.
 

Visión, visión, visión

Entender las necesidades (requerimientos) y encontrar respuestas siempre lo asocio al juego del ajedrez. Como analistas debemos ser capaces de anticipar a:

  • Corto plazo: lo que nos piden, la jugada inmediata, me como el caballo y punto

  • Medio plazo: lo que el cliente sabe que pedirá, anticipar un par de jugadas para comerle la reina

  • Largo plazo: lo que ni el cliente sabe pero que algún día llegará, jaque mate.
     

Nota: el adversario no es el cliente, es llegar a la mejor solución para todos.

Con todo ello, debemos ser capaces de diseñar los sistemas, componentes, procesos, bases de datos y todo aquello que cubra el corto plazo, pero preparado para el medio y el largo que hemos identificado. El esfuerzo no debería ser mayor, solo es anticiparse y dejarlo todo preparado a futuro.
 

«Especificación» no es sinónimo de «rigidez»

Analizar, definir, documentar no tiene porque ser una foto estática, es más, puede convertirse en la herramienta para posteriores cambios pues ayuda a conocer las consecuencias, esfuerzos, riesgos de los cambios.
 

Las ventajas de documentar formalmente

A veces comparo la elaboración de software con la construcción de un edificio, nadie entendería empezar a construir sin planos, los cimientos preparados para soportar cuantos pisos… ¿Debe haber parquing? ¿De cuántas plazas? ¿Aire acondicionado? Si no se tiene claro desde el primer dia, a medio trabajo estaremos rehaciendo todo, una montaña de chapuzas, material desperdiciado, horas desperdiciadas, desprestigio, desmoralización y no hablemos del cliente.

En la elaboración de software podemos aplicar la misma premisa, realizar un diseño previo, completo y detallado de los componentes y sus iteraciones aporta:

  • Facilita la valoración de tiempo y costes

  • Evita riesgos (¡¡¡sustos!!!) al anticipar soluciones antes que aparezcan

  • Mejora la comunicación entre el equipo y con el cliente

  • Evita malentendidos «tú me dijiste», «yo entendí» (¿os suena?)

  • Ayuda a distribuir las tareas

  • Facilita la creación de iteraciones

  • Evita errores y duplicidades

  • Facilita la gestión de cambios.
     

La lista es muy larga, os dejo que la completéis.
 

Conclusión… personal

Dependiendo del tipo de proyecto y el equipo involucrado, cada hora dedicada al análisis y especificación puede tener un ahorro de decenas de horas de trabajo y desmoralización.
 

Foto de cabecera: Markus Spiske / Unsplash
Open,Programación,projectes,proyectos,
Empresa

Formación de ITIL Foundation

14 de febrero de 2017 | Sergi Font

Aquest post és públic

Despúes de unas jornadas (intensas) de formación ya nos han llegado los resultados… y són espectaculares! ¡Un 100% de aprobados! ¡Felicidades a todos!

A continuación os hago un pequeño resumen de lo que és ITIL y para qué sirve.
 

¿Qué és ITIL?

ITIL, “Information Technology Infrastructure Library” (en español algo así como Biblioteca de Infraestructura de Tecnologías de la Información), es un conjunto de buenas prácticas para la  gestión de los servicios que prestan las tecnologías de la información.
 

¿Para qué sirve?

Acredita un conocimiento básico de ITIL en gestión de servicios de tecnologías de la información y la comprensión de la terminología propia de ITIL, además de ser un requisito indispensable para presentarnos a licitaciones de proyectos.
 

Un poco más de información

Existen varios niveles de certificación. Os los comento brevemente:

  • ITIL Foundation. Es el nivel más básico y permite adquirir el conocimiento necesario sobre la terminología, estructura y conceptos básicos utilizados por el marco de trabajo de buenas prácticas de ITIL. Es condición obligatoria obtener esta certificación para poder optar a las certificaciones superiores.

  • ITIL Practitioner. Al estar centrado en la Mejora Continua del Servicio, este nivel de certificación de reciente creación permitirá a los candidatos adquirir las capacidades y habilidades necesarias para aplicar los conceptos de ITIL en su organización y llevar a cabo con éxito las iniciativas de mejora requeridas en la misma.

  • ITIL Expert. Nivel dirigido a todas aquellas personas que habiendo obtenido la certificación ITIL Fundamentos, están interesadas en demostrar un nivel superior de conocimientos de ITIL® en su conjunto.

  • ITIL Master. Corresponde al máximo nivel en la carrera de Gestión de Servicios de ITIL. Esta certificación se obtiene en base a méritos profesionales, para profesionales Expert que demuestren experiencia contrastada en la vida real en Gestión de Servicios de TI.

En la actualidad, ITIL está en la versión ITIL V3 2011 y tiene un enfoque de Ciclo de Vida, que pasa por 5 Fases:

1. Estrategia del Servicio: propone tratar la gestión de servicios no sólo como una capacidad sino como un activo estratégico.

2. Diseño del Servicio: cubre los principios y métodos necesarios para transformar los objetivos estratégicos en portafolios de servicios y activos.

3. Transición del Servicio: cubre el proceso de transición para la implementación de nuevos servicios o su mejora.

4. Operación del Servicio: cubre las mejores prácticas para la gestión del día a día en la operación del servicio.

5. Mejora Continua del Servicio: proporciona una guía para la creación y mantenimiento del valor ofrecido a los clientes a traces de un diseño, transición y operación del servicio optimizado.

Cada una de estas fases se corresponde con un libro de ITIL.

La imagen inferior muestra el esquema que nos hizo el profesor y que seguimos cada dia de curso. 
 

Foto de cabecera: ITIL Foundation
Foto del cuerpo: Sergi Font / BaseTIS
Formación,ITIL,Open,
Tecnologia

API keys en proyectos Android open source

10 de febrero de 2017 | Jesús Coll

Aquest post és públic

En nuestros proyectos es habitual usar APIs de terceros que nos permiten añadir funcionalidades sin tener que desarrollarlas nosotros mismos.

Muchas APIs requieren el uso de keys que habremos obtenido al registrarnos como developers en algún servicio (Twitter, Facebook, Instagram, etc…) y solemos almacenar dichas keys en la típica utils.class o apiKeys.class…

Cuando subimos nuestro código a un repositorio público cambiamos las keys de estos archivos por el famoso “YOUR_POCKET_APIKEY_HERE”, y como son clases que en algún momento vamos modificando, no las ponemos en ignore, por lo que cada vez que comiteamos tenemos que tenerlo presente.
 

Un día, por descuido, subirás tus keys, y lo sabes…

¿Cómo evitarlo? Pues en un proyecto open source vi el método que os explico a continuación y me gustó mucho. Veréis que es muy fácil de implementar, vamos allá…

Pongamos que nuestra app de Android tiene dos keys, CUSTOMER_KEY y CUSTOMER_SECRET, almacenadas en una utils.class like this:

 

2.jpg

 

La idea es tener un archivo de texto en el proyecto, que en el repositorio marcaremos como ignore, y configuraremos Gradle para que compruebe la existencia de este archivo. Si existe recogerá las keys correspondientes y si no creará unas que definamos nosotros.

Primero configuraremos Gradle (build.gradle “Module app”). Añadiendo en Android -> defaultConfig el siguiente código:

 

secrets.properties será el archivo de texto que contendrá las keys y se encontrará en el root del proyecto.

Con if (secretsExists.exists()) comprobamos si existe y si es así añadimos tantos campos como keys tengamos en el archivo, en este caso CONSUMER_KEY y CONSUMER_SECRET de tipo String.

Si el archivo secrets.properties no existe crearemos dos campos con los mismos nombres pero con valores inventados.

Siguiente paso será modificar nuestra utils.class para que recoja de buildconfig las propiedades creadas.
 

Si ahora ejecutamos nuestra app, y al no existir aún el archivo que contiene las keys, veríamos lo siguiente:

 

 

Por último añadimos nuestro secrets.properties en el root del proyecto
 

y una vez creado el archivo si volvemos a ejecutar nuestra app…

 

 

Recordar marcar como ignore en nuestro repositorio este archivo. Cuando alguien se descargue nuestro proyecto deberá crearse su propio secrets.properties, lo indicaremos en el read.me del repositorio indicando el formato que ha de tener.
 

Easy 🙂

Foto de cabecera: Intel Free Press / Flickr
Android,Medalla Blogger,Open,Programación,
Empresa

BaseTIS es un Great Place to Work

9 de diciembre de 2016 | Caronte

Aquest post és públic

A mediados de mayo del 2015, Marc Castells nos informó por e-mail de que BaseTIS había aceptado la propuesta de la empresa Great Place To Work. para participar en la valoración y listado de las mejores empresas para trabajar en España. Lo que nos animó entonces a sumarnos a esta iniciativa fue:

  • Creíamos, y creemos, que BaseTIS es un buen lugar para trabajar, y es positivo hacer difusión de ello

  • Tenemos mucho interés por detectar dónde podemos mejorar para retener y captar talento

  • Si somos un buen lugar para trabajar, podremos mejorar la calidad de vida de las personas.

 

El germen de esta idea

Javier Cárdaba propuso al grupo de Leaders de BaseTIS aprovechar los servicios de GPTW como ‘termómetro’ de la empresa, y se discutieron pros y contras.  Algunos de los aspectos que se tuvieron en cuenta, fueron:

  • La confianza y la cercanía son dos valores que tenemos muy arraigados

  • Por ellos mismos, y sin haber seguido un plan de acciones específicas, no nos dan visibilidad en el sector: somos una empresa poco conocida

  • Tenemos una estructura y un modelo de gestión  poco habitual

 

Pero, ¿BaseTIS es como el resto de empresas?

Nos preocupaba no encajar en los estándares establecidos por GPTW a la hora de valorar a las organizaciones.

Por ejemplo, hablan de ‘superiores’ cuando en BaseTIS la jerarquía se establece por proyectos. O tampoco contamos con roles definidos que faciliten el análisis de los resultados. Cuando preguntan en las encuestas por los roles, acabamos indicando en qué rol nos vemos para encajar en su clasificación.

Por suerte, pudimos exponer estas inquietudes a los organizadores y hay un proyecto interno para intentar que en el futuro estas denominaciones se ajusten más a nuestra realidad.

 

¿Qué nos piden para valorarnos?

Para que GPTW valore nuestra candidatura, nos asesore y formemos parte de su ranking, completamos estas dos partes:

  1. Trust Index: la encuesta anónima y confidencial que respondemos una vez al año, en la que se valoran aspectos como la credibilidad, el respeto, la camaradería, el orgullo y la imparcialidad

  2. Cultural Audit: donde exponemos las acciones y política de BaseTIS encaminadas a ser una gran empresa en la que trabajar. En la edición del 2015 se recogieron procedimientos existentes y se crearon algunos nuevos, como el Código Basetiano. Elaborarla sirvió ya para detectar muchos puntos fuertes y de mejora.

 

¡Toca recoger el premio!
 


 

Una sorpresa que mantuvimos en secreto hasta el nombramiento en la entrega de premios 🙂

En la edición del 2015, ¡quedamos en el puesto 11 de las mejores empresas para trabajar en España entre 100 y 249 empleados!

A la entrega de premios no pudo asistir Javier Cárdaba, como impulsor de nuestra participación, pero sí fue Andreu Carreras junto a Marc Castells. La decisión tenía sus porqués: Además de ser el empleado número 1 de BaseTIS, fue uno de los Leaders más críticos con la idea de presentarnos.

 

¿A dónde vamos con todo esto?

De entre las muchas acciones que estamos impulsando desde BaseTIS, una de las más significativas es la formación del equipo de Reinventing para estudiar el tipo de empresa que somos, el que queremos llegar a ser, y proponer acciones para hacer este cambio entre todas las personas de BaseTIS.

Nos hemos presentado también a la edición del 2016. Justo ahora estamos en fase de análisis de resultados de la encuesta Trust Index y finalizando el Cultural Audit. La participación en el Trust Index alcanzó el 93 %, ¡así da gusto!

Foto de cabecera: David Flores / BaseTIS
Foto del cuerpo: BaseTIS
cultura,GPTW,Open,
Tecnologia

Mejora tu productividad con Gmail

7 de diciembre de 2016 | Xavier Valls

Aquest post és públic

Cómo configurar y utilizar la herramienta de visualización

En el menú de Configuración, acceded a la pestaña «Labs» y buscad «Subventana de previsualización» de Peter B y Michael K.

 

 

La herramienta nos ofrece 3 opciones: la vista estándar (la habitual de gMail), o con divisiones vertical y horizontal.

 

 

La división vertical nos permite leer los e-mails sin perder la bandeja de entrada. Podemos permutar la vista estándar/seleccionada con un solo clic en el icono de visualización, sin necesidad de abrir las opciones.

 

 

Gmail,Medalla Blogger,Open,productividad,