Pues para rematar un año que la he pasado de nube en nube, me propuse como última batalla épica del año completar una certificación relacionada con la plataforma PaaS de IBM conocida con el nombre de Bluemix.
Bluemix es un servicio que proporciona una plataforma para el despliegue de aplicaciones construidas en diferentes tecnologías (Java, Node.js, Ruby, Go, etc).
Además cuenta con un amplio catálogo de servicios administrados que pueden ser facilmente vinculados a las aplicaciones. De estos servicios se pueden mencionar bases de datos, almacenamiento de objetos, cómputo cognitivo, monitoreo, repositorios de código, despliegue contínuo, contenedores docker, mensajería, entre muchos otros.
Bluemix está pensada en ser una oferta de servicios de nube a nivel plataforma (PaaS), es decir facilita la puesta en marcha de aplicaciones y consumo de servicios sin la necesidad de entrar en lios a nivel de infraestructura. Además se basa en proyectos conocidos en la comunidad de desarrollo como Cloud Foundry y Docker además de utilizar un enfoque de microservicios accesibles via REST / HTTP.
Durante algunos proyectos en el año y un pequeño acercamiento con gente de IBM se tuvo la oportunidad ganar experiencia en esta plataforma y dado que parece una navaja suiza que ofrece todo lo necesario a un desarrollador que quiere enfocarse en la construcción de la solución decidí completar alguna certificación en esta plataforma tratando de narrar el proceso de la forma más pseudo-épica posible (dados mis vagos conocimientos Homerísticos).
Saliendo de Ítaca
El punto de partida fue encontrar algún examen dentro de la oferta de IBM relacionado con los temas de Bluemix lo que me llevó al examen C5050-285 - IBM Cloud Platform Application Development v1.
Los objetivos del examen son algo extensos pero se pueden resumir en:
- Organizaciones, Espacios, Usuarios, Dominios y demás lios de acceso a la plataforma
- Generalidades de la plataforma CloudFoundry y el despliegue de aplicaciones
- Servicios de datos ofrecidos, haciendo énfasis en Cloudant
- Servicio de contenedores basado en Docker
- Servicio de mensajería basado en Apache Kafka
- Generalidades de Alchemy API
- Servicios de DevOps como son el repositorio de código, delivery pipeline, track and plan
Una vez fijado el objetivo y viendo que había mucho que estudiar comenzó mi búsqueda de material.
Consultando al oráculo
Dado que en el momento de embarcarme en esta empresa no tenía educación más o menos formal de temas de Bluemix, más allá de desplegar aplicaciones y habilitar algunos servicios, decidí buscar algún curso en línea que sirviera de inducción a los variados temas y me diera mejores armas para afrontar el examen.
Mi punto de partida fue el curso de udemy IBM Bluemix Application Development & Certification, el cual abarca casi la totalidad de los temas además de incluir demostraciones, trivias y examenes muestra.
Me tomó alrededor de dos meses completar los temas dedicándole de 2 a 3 horas regularmente, e incluso al finalizar el curso tuve que regresar a repasar los temas iniciales. Varios de las demostraciones me sirvieron de práctica al recrearlas paso a paso y los examenes muestra finales me sirvieron mucho de calentamiento.
Una vez que completé el curso leei la guía de estudio publicada por IBM, la cual es un muy buen resumen de todos los temas. Además al final de la misma contiene unos códigos de descuento para la evaluación preeliminar y el exámen.
Dentro de los recursos de estudio ofrecidos por IBM también se cuenta con un documento con preguntas muestra disponible de manera gratuita.
Un último recurso que ocupé fue el examen muestra en linea, disponible en el portal de Pearson Vue, con el titulo A5050-285 Assessment: IBM Cloud Platform Application Development v1. Esta evaluación consiste en 48 preguntas y al final da un reporte similar al del examen real.
Gorgonas, sirenas y otros mounstuos
Además del estudio de la teoría sin duda fue fundamental la práctica que tuve tanto en las peticiones para clientes como en pequeños ejercicios de auto estudio que podrían ser resumidas en lo siguiente.
Debido a proyectos
- Despliegue de una aplicación node.js
- Vinculada a servicios Watson
- Vinculada a una base de datos Cloudant
- Almacenada en el repositorio JazzHub
- Desplegada mediante Delivery Pipeline
- Despliegue de una aplicación web ruby on rails
- Vinculada a una base de datos Postgresql
- Vinculada a un contenedor de ObjectStorage
- Configurada en alta disponibilidad con un balanceador de carga
- Vinculada a una instancia de Redis
- Desplegada con un buildpack específico
- Despliegue de un worker ruby on rails
- Vinculada a una base de datos Postgresl
- Vinculada a una instancia de Redis
- Desplegada con un buildpack específico
Ejercicio de autoestudio
- Instalar Docker localmente y realizar los tutoriales básicos
- Construcción una imagen Docker y publicación en Bluemix
- Prueba de concepto de publicación y consumo de mensajes en Message Hub (Kafka)
- Recordar conceptos de Scrum y experimentar como encajan en Track and Plan
- Leer teoría de las aplicaciones de 12 Factores
Conquistando Troya
El día pactado para el examen fue el 29 de diciembre del 2016 y la cita fue en el centro de certificación de casa (aprovechando que solo hay que subir un piso).
El examen contiene 48 preguntas a realizar en 90 minutos con un mínimo de 32 aciertos para acreditarlo (66%). Había preguntas de casi todos los temas, aunque las más recurrentes tenían que ver con temas de despliegue en CloudFoundry, autoescalamiento, monitoreo y Cloudant.
La mayoría de las preguntas eran distintas a las realizadas en los examenes de prueba pero en su mayoría temas que se habían estudiado. Muchas preguntas planteaban situaciones prácticas que requerían un poco de razonamiento detenido y algunas más solo teniendo experiencia práctica era posible responder.
Al final el examen me pareció un buen reto y un poco más duro de lo que esperaba pero el estudio y la práctica me permitieron acreditarlo exitosamente al final. Además, más allá del resultado, me quedo con una visión más amplia de esta propuesta de IBM y mucho conocimiento nuevo en temas como Docker, Kafka y Cloud en general.