cloud

All posts tagged cloud

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.