Archives

All posts by Edivargas

Existen muchos boom’s en el medio, siempre hay cosas nuevas que salen, que se mueren, que se ponen de moda, y normalmente generan mas confusión que otra cosa en el medio de las TI y ahora áreas relacionadas como son Marketing Digital, Marketing, Comercialización Híbrida, etc.

Quiero compartirles unas ideas al respecto de este gran tema, pues creo que en ocasiones encarecemos mucho los productos (desarrollado e instalados) por esta falta de claridad y el desarrollo pasa de ser divertido y útil a un proyecto complejo desde antes de iniciarse.

Recuerden que no es un tratado de tesis ni la verdad absoluta… luego hay cada clavado hehe.

En tiempos recientes se habla mucho al respecto de como se deben implementar los microservicios, arquitecturas, infraestructuras, clouds, etc. Esto entre otros múltiples factores nos lleva a un punto crucial del proceso: Las API’s.

¿Pero realmente estamos creando las API’s de forma correcta, pensando en su impacto en los sistemas legacy actuales y que la migración podrá llevar mucho tiempo?.

Los requerimientos de diseño para aplicaciones móviles con microservicios son especiales y deben considerar sobre todo temas de seguridad y escalabilidad.

¿API’s?

¿Qué son?. Veamos la definición de diccionario:

La interfaz de programación de aplicaciones, abreviada como API del inglés: Application Programming Interface. Es un conjunto de subrutinas, funciones y procedimientos (o métodos, en la programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.

Y la simple:

Es el contrato a cumplir por ambas partes: Servidor vs Cliente de consumo.

De ahi la importancia de su correcto diseño, implementación y administración.

¿Porqué debes diseñar una correcta API (API Design)?

Hay unos puntos del porque debemos cuidar al máximo el diseño de las API’s

  • Asegura la correcta utilización de la implementación. Seguro y Confiable.
  • Minimiza el tiempo de desarrollo de una aplicación.
  • Minimiza la cantidad de código a desarrollar. Y como cada línea de código es un bug potencial …
  • A veces el término contrato no es claro.

¿Y la seguridad?

Como es un punto de acceso público en muchos casos, la seguridad ya no es un tema opcional, simplemente debemos entender el grado de protección dependiendo que nivel de datos expuesto u operaciones son sensibles de realizar.

Entonces tenemos varias alternativas (que se pueden usar independientemente o en conjunto) para proveerlas de Seguridad:

  • Mecanismos de Token propietarios.
  • Encriptación de request y response.
  • Uso de canales seguros (https).
  • Uso de medios seguros (VPN).
  • Frameworks de autenticación (OAuth, AccessToken, JWT, etc).

El diseño de las API’s es la única forma en que los contratos entres los back end’s y sus clientes aseguren una arquitectura con las características de alta disponibilidad, resilencia y robustez que por requerimiento del cliente o de implementación se definan.

Por lo anterior, imaginemos cuando una aplicación (y sus clientes) se vuelve mas compleja, requiere que desde el propio diseño se usen herramientas para su definición, implementación y publicación correcta. Y el número de servicios expuestos (además de sus instancias disponibles) pasan de las decenas a los cientos o miles de ellas.

Y a tal grado se potencia el problema que a fechas recientes se ha generado toda una corriente de aplicaciones, frameworks y conjuntos de éstas para lograrlo, a lo anterior se le ha denominado API Management.

Administración de API’s (API management).

Si se echan una búsqueda en internet podrán ver que existe no mil formas, pero muchas disponibles en todos los sabores posibles. Pero para no inventar el hilo negro de todo esto les compartiré un post de Raúl Galán Gómez que de forma muy práctica nos platica más:

API Management: ¿qué es y para qué sirve? por Raúl Galán Gómez

Como se darán cuenta viene un camino difícil, hasta de especialización al respecto, no dudo que pronto aparezcan los expertos en el API Management por la cantidad de conocimientos que deben poseer y poner en practica.

Pues si tienen dudas al respecto o ayuda que pudiera brindarles, ya saben en la sección de contacto pueden hacérmelas llegar y platicar al respecto.

Y pues nos vemos hasta el próximo post.

Saludos.

Y como siempre sigamos #Javeando

A continuación les entrego un post mas de la serie “Post ligeros para implementaciones simples y ágiles” al respecto de como seleccionar una Nube.

Muchas veces cuando andamos navegando por ahi encontramos la palabra Cloud. En repetidas ocasiones hay términos que se colocan en la posición de la mente, muchos de forma permanente aún sin que tengamos una conciencia de que significan y que origen tuvieron o cúal es la forma de usarse.

En tecnologías de la información es muy común renombrar viejos términos para refrescar la mente o simplemente para vender mas (a veces otra vez lo mismo) a los clientes ávidos de soluciones que mejor satisfagan requerimientos, pero ya sabemos que esos requerimientos no necesariamente son siquiera bien identificados.

La nube no es una tecnología o capacidades nuevas o recién inventadas, es un concepto que evolucionó con un fin mercadológico pero a la vez para estimular la evolución del hosting de servicios y aplicaciones.

Cómo olvidar los momentos en que teniamos que colocar un nuevo aplicativo que comenzaba con esa búsqueda complicada de proveedor de Hardware que nos diera la capacidad requerida, la ampliación de anchos de banda, de alimentación, de aire acondicionado y otras variables que involucra el provisionamiento de un sitio. Ahora, los antes llamados proveedores de servicios de internet y hosting (generalizando, no se aloquen por la falta de precisión), las nubes nos simplifican las cosas proporcionando no solo servicios para colocar nuestros aplicativos en sus correspondientes plataformas.

Colocar un servicio disponible en la red es algo que basta de unos cuantos minutos, eso sí una tarjeta de crédito o un contrato para pago post-consumo.

Si se preguntan si su producto debería colocarse en la nube, con quién y con que capacidades, se debe preguntar uno primero que es lo que se busca que satisfaga dicha nube. Pues TODAS ellas son diferentes entré sí. De las mas populares tenemos los siguientes proveedores de la nube (CSP – Cloud Service Provider)

  • Citrix.
  • Google.
  • Salesforce.
  • Claro.
  • Cisco.
  • Microsoft.
  • Amazon.
  • Oracle.
  • Apple.
  • Rackspace.
  • IBM.

Ahora bien, de esas y cualquier otra opción que exista, como debo seleccionar cual me conviene/necesito. A continuación explico brevenemente un conjunto de puntos de evalaución

Criterios a considerar cuando se selecciona a un CSP.

Costo.

¿Sabemos realmente cuanto cuesta la implementación?. Por desgracia a veces no nos damos cuenta que será el costo final, algunas nubes ofrecen calculadoras para los calculos, pero aun así NO te confies de ella, debes hacer una hoja de calculo, poner todo los elementos de red, servidores, servicios, ancho de banda, etc que usaras, su costo de operacion (te recomiendo que hagas calculos mensuales totales para no caer en errores por uso de horas), limitantes y sacar el gran total.

Revísala dos veces para ver que no se te vaya ningún cargo extra (algunos servicios deben pagarse no solo el costo mensual sino una cuota extra por servicios adicionales que NO puedes quitar). Asi verás el monto total. Recuerda que a veces se nos va porque andamos usando una promoción o paquete introductorio que nos regalan todo, pero una vez que te subes a una nube no será facil migrarla.

Siempre tus costos en USD y por supuesto, debes considerar crecimiento estimado semestral o anual. Estos costos proyectalos cuando menos a 3 años porque en ocasiones al final es una cifra que no fácilmente podrás pagar.

Ubicación Física.

Donde físicamente están los sites de estos CSP. Seguramente es importante NUNCA olvidar el tema de la latencia, entonces suena muy cool que tengas tu servidor en Inglaterra, pero si estás en México, igual es mas rápido tenerlo en EUA. Y como buena práctica debes tener dos sites que se ubiquen de forma geográfica contrarias dentro del globo terraqueo.

Regulaciones legales.

¿Realmente puedes poner los datos operativos en la nube? Es importante revises TODAS las regulaciones y ver si pudes colocarlo de forma legal datos de tus usuarios o clientes fuera de México o medio pseudo públicos.

Esto debe incluir si alguna regulación tienes que cumplir con cierta normas, y que éstas se hayan cumplido con el CSP.

SLA fallas y resolución de fallas o problemas frecuentes.

¿Conoces el SLA que te ofrece?, ¿Sabes que responsabilidad tienen en caso de errores imputables por ellos?, ¿Tienen polizas que extienden la capacidad o minimizan el tiempo y canales de resolución de problemas?.

Es importante que recuerdes que NO tienes acceso a esos servidores y que alguien miembro de estos CSP deberán resolverlo. Debes checar en la red su experiencia y sus fama al respecto. Y entender que para los servicios que colocarás en la nube éstos deben estar soportados y respaldados de forma eficiente. Aun que tengas que pagar costos extrás, o en su caso, que no estés dispuesto o no tengas presupuesto para ello.

Un día me dijeron, “Si tuvieras la poliza X podria contestarte ahora, mejor manda un correo y en 72 te contestamos…”.

Seguridad.

Debes entender y comparar todos los mecanismos de seguridad que ofrecen sus servicios, deteccion de DDOS, hacking, acceso no autorizado a ciertos recursos, VPN’s, encriptación, robots de supervisión, etc. Todo lo anterior te permitirá sentirte seguro y sobre todo tener la total seguridad que los datos y servicios se encuentran razonablemente seguros.

Facturación.

¿La factura que te emite el CSP es suficientemente correcta a las regulaciones fiscales y contables de tu organización? En ocasiones no podemos deducir gastos porque hay regulacione so condiciones que se tienen en la forma de facturacion de las diferentes Nubes, antes que contrates super validalo con ellos y sobre todo con tus áreas fiscales y contables.

Por otro lado, ¿hay manera de que en caso de que haya  una controversia en lo facturado se pueda levantar un ticket o procedimiento para minimizarlo o corregirlo?, muchas veces las facturas (recibos) son no muy claras y extrañas, asegurate de entenderlas y que se pueda corregir lo que esté mal.

Forma de pago.

¿Las condiciones de pago son convenientes? Hay algunos CSP que debes prepagar algunos servicios, y al final de mes hacen cortes que debes saldar en x dias, sino lo haces cortan parcial o toalmente algunos servicios. Es importante que lo verifiques para que todo fluya.

CUIDADO, a veces por andar haciendo tus pruebas extiendes tus ambientes de developer a los productivos y de repente tu tarjeta está ahi comprometida y no hay manera de migrar, o bien metes en un problema a la empresa porque NO te pueden pagar pues la empresa no recibe una factura, sino está a tu nombre o bien, no puede hacer algunos procesos de transferencia. Revisa que se haga bien y rapido la manera de hacer los cobros, prepagos y postpagos.

Pensamiento Final.

Pues listo, si has hecho tu evaluación de los puntos anteriores, y con una hoja de calculo analizando cada CSP que encuentres, es momento de montar tu solución, ay perdón olvide recalcar que supongo que tus soluciones están listas par funcionar en la nube, o bien ser desarrollada allá y conoces que elementos contratar o configurar;  en caso de que nó,  eso es otra historia.

Mientras tanto debes continuar desarrollando tus aplicaciones o seleccionandolas para integrarlas.

En otra entrega platicaremos de los Saas, PaaS e IaaS en las nubes. Pero mientras agradezco tus comentarios.

A seguir haciendo Java.

Saludos.

Hola después de tanto tiempo,

Hace poco se anunció un cambio en el evento que se reconocía como el evento más importante del mundo Java, el JavaOne, dejaba de existir.

Evento que año tras año se llevaba a cabo en la Ciudad de San Francisco California, éste evento nos daba una amplia ventana al mundo de los ingenieros que diseñan e implementan las API’s y estándares alrededor del mundo de Java, de los programadores de pie, lídes de proyectos, en fin de una comunidad Java cosmopolita.

Oracle argumenta que el evento de JavaOne se expande a otros lenguajes, etc etc, pero obviamente eso no es así, seguramente necesitan espacio para mas de sus tecnologías, tendencias y negocios. Porque no generar otra conferencia alrededor de su Oracle Code?, o bien, poner tracks (que siempre han existido) alternos o aledaños.

El ambiente alrededor del anuncio comienza a generar demasiadas especulaciones que si bien, he caído en las mismas prefiero no darle mucho eco, ya que algunas son tan de teorías de conspiración hasta el simple hecho del motor de Oracle en la mayoría de sus decisiones, lo que no deje mucho $$$ no es necesario proseguirlo.

Habrá que buscar que otras conferencias darán ese espacio de especialización a las comunidades Java de forma global , que si bien existen alrededor del mundo, aun no conseguían el nivel o el grado de interés que siempre tuvo JavaOne desde hace casi 20 años de existencia.

Me quedó con el agrado de haber asistido a la última JavaOne2017, seguramente iré este año a ver que transformaciones se ven, pero en los siguientes solamente la comunidad y el empuje de lo que una vez SUN dejó nos dirá.

Unas cuantas líneas de reflexión sobre la tristeza de este anuncio, y por más que muchos digan que hay que verle lo positivo al asunto…

Aviso oficial de la desaparición de JavaOne

Mas acerca del evento Oracle Code One

Originalmente Posted by edivargas on October 11, 2014

Hola,

Aca reportando desde el JavaDay 2014, y es muy grato platicarles que es un evento que luce muy fresco, divertidos y sobre todo interesante. Gracias a los esfuerzos de chicos como Maria, Mario, Mercedes, Edwin, Alice, César entre otros hacen posible que decenas de programadores Java se encuentren y tengan un conjunto de charlas de novedades y cosas interesantes que no han conocido quizás aún o que van a profundizar.

Ponentes como Andrés Almiray, Alex Soto, Marcos Monzon  su servidor entre otros brindamos info acerca de Java, de sus tendencias, sus frameworks, etc.

Felicidades y sobre todo chicos de JavaDay y otros sigamos compartiendo y haciendo cosas tan padres como éstas.

http://guate-jug.net/javaday2014/

Originalmente Posted by edivargas on October 5, 2014

Este año tuve la oportunidad de asistir nuevamente al #JavaOne después de 14 años de haber asistido a mi primero.

Aquella ocasión el Moscone en San Francisco era llenado por mas de 27,000 personas, SI!!! 27,000 programadores o conocedores de Java tratando de conocer cosas tan sorprendentes como Java4 JEE1.3, WS, XML y otras tecnologías de punta… claro de aquellos años.

Ahora con un número menor de miembros y dentro del ámbito de Oracle Open World fue grandioso, tanto como todos los anteriores (en época de SUN). Se vió viejos amigos, viejas luminarias, nuevos chicos, nuevos adeptos, y obvio todos felices.

Permítanme darles algunas impresiones de las tecnologías que pude revisar, y decirles mi punto de vista al respecto. Lo que si es que Oracle está dandole prisa a un número de cosas que requiere posicionar pero que al final del día el mercado decide, pero viene cosas nuevas Welcome Java10 y JEE8