jueves, 4 de marzo de 2021

API vs Microservicio: Microservicios más que un API

 Cuando escribimos software, se debe considerar la implementación y la arquitectura del código. El software es más eficiente cuando se escribe de una forma que la lógica tenga sentido. En forma adicional, se debe considerar la interacción con los usuarios, así como la interface que se utilizara.


Ambos, el concepto de un API y el concepto de microservicios envuelven la estructura e interacciones del software. Un microservicio puede mal interpretarse en algo similar a un API, pero los microservicios tienen mucha más flexibilidad y capacidad que eso. En el artículo revisamos las diferencias entre las API y los microservicios, y detallaremos algunos de los beneficios de un microservicio.

¿Que es un API?

Primero, definamos que es un API. De acuerdo a wikipedia, un API es:

Un conjunto de definiciones de subrutinas, protocolos de comunicación y herramientas para crear software. En términos generales, es un conjunto de métodos de comunicación claramente definidos entre varios componentes.

Una manera fácil de pensar en una API es considerarla como un contrato de acciones que puede solicitar para un servicio en particular. Las API se usan hoy en una multitud de aplicaciones web, como redes sociales, software bancario y mucho más. El contrato estandarizado permite que las aplicaciones externas interactúen con otras.

Acciones comúnes de un API

En el mundo actual, los APIs son usualmente desarrollados con el estilo RESTful. Estos APIs tiene un conjunto de verbos asociados con las acciones del protocolo HTTP, tal como:

  • GET (obtener un único elemento o una colección)
  • POST (agregar un elemento a una colección)
  • PUT (editar un elemento que existe en una colección)
  • DELETE (eliminar un elemento de una colección)

La ventaja de esta coherencia a través de diferentes aplicaciones es tener un estándar al realizar diversas acciones. Los cuatro verbos de HTTP se correlacionan con las capacidades CRUD que muchas aplicaciones usan hoy en día. Cuando se trabaja con diferentes APIs en una aplicación, esto constituye una forma reconocible de comprender las implicaciones de las acciones tomadas en diferentes interfaces.

Ahora que revisamos sobre las APIs, echemos un vistazo a los microservicios.

¿Que es un Microservicio?

De acuerdo a la definición de wikipedia, un microservicio es:

Una técnica de desarrollo de software: una variante del estilo arquitectónico de arquitectura orientada a servicios (SOA) que estructura una aplicación como una colección de servicios acoplados libremente. En una arquitectura de microservicios, los servicios son específicos y los protocolos son livianos.

Pero antes de profundizar en lo que son los microservicios y cómo pueden ser útiles, echemos un vistazo rápido a una arquitectura monolitica. Comprender cómo los microservicios difieren de los monoliticos le dará una mejor idea de los beneficios de pasar a una arquitectura de microservicios.

Aplicaciones Monolíticas

En los inicios del desarrollo de software (y aún en muchos negocios hoy), existe el concepto de monolítico. Una aplicación monolítica es una aplicación única que contiene una colección compleja de funcionalidades, que sirve como un lugar para almacenar todo. Arquitectónicamente, se ve así:


Todos los componentes de la aplicación residen en un área, incluida la capa de interface gráfica, la capa de lógica de negocios y la capa de acceso a datos. Crear aplicaciones monolíticas es un proceso fácil y natural, y la mayoría de proyectos comienzan de esta manera. Pero agregar funcionalidad a la base de código provoca un aumento tanto en el tamaño como en la complejidad, y permitir que este tipo de aplicaciones crezca conlleva desventajas con el tiempo, algunas de estas desventajas conlleva a:

  • Riesgo de caer en la gran bola de lodo anti-patrón, por el volumen de la aplicación, que llegue un momento y no se pueda entender desde un alto nivel.
  • Restricción de la antiguedad tecnologíca dentro de la aplicación monolítica. Especialmente a medida que la aplicación crece, la capacidad de moverse hacia una tecnología diferente se vuelve cada vez más díficil.
  • Realizar cualquier código en la base del código afecta a toda la aplicación, sin importar cuán pequeña sea.

Entonces, ¿Cual es la alternativa a construir una aplicación monolítica?. Una alternativa es, tomar la aplicación monolítica y dividirla en microservicios.

¿Que es un Microservicio?

Tomemos el ejemplo de la aplicación monolítica y modifiquemosla para utilizar microservicios. En este caso, la arquitectura de la aplicación cambiara y se verá de la siguiente forma:

Hay algunas conclusiones clave de esta nueva arquitectura:

  • Las secciones desglosadas de la lógica empresarial, cada una de las cuales abarca un microservicio. En lugar de tener un límite único para toda la aplicación, la aplicación se divide en pedazos. La complejidad de la aplicación se reduce, ya que los diferentes servicios tienen interacciones bien definidos entre sí.
  • La capa de interface gráfica de antes solo necesita interactuar con el cliente y los microservicios de eventos, eliminando una dependencia para los microservicios de facturación en la interface gráfica.
  • El microservicio de facturación no necesita almacenar datos, por lo que no tiene una capa de acceso a datos, en cambio, interactúa y procesa datos directamente desde el microservicio del cliente y del evento.

Ventajas de utilizar este tipo de arquitectura:

  • Es más fácil separar las preocupaciones. Estos límites entre las áreas ayudan con el desarrollo (Solo necesitan preocuparse por los microservicios, no por la aplicación completa) y por comprender la arquitectura de la aplicación.
  • A diferencia de una aplicación monolítica, un microservicio puede usar una tecnología diferente según sea necesario. 
  • Las implementaciones de la aplicación en su conjunto se vuelven más enfocadas. Los microservicios brindan la flexibilidad de implementar diferentes servicios según sea necesario.

Diferencia entre APIs y Microservicios

Hay muchas diferencias entre APIs y Microservicios:

  • Un API es un contrato que proporciona orientación para que un consumidor use un determinado servicio.
  • Un microservicio es un diseño arquitectónico que separa partes de una aplicación (generalmente monolítica) en pequeños servicios independientes.

Por definición, esto significa que un API suele ser una parde de un microservicio, lo que permite la interacción con el propio microservicio. Otra forma de pensar en esto es que la API sirve como un contrato para las interacciones dentro del microservicio, presentando las opciones disponibles para interactuar con el microservicio.

Sin embargo, si miramos el diagrama de microservicios anterior, podemos ver que cada microservicios se construye de manera ligeramente diferente según sus necesidades.

Una aplicación completa puede abarcar una serie de microservicios que usan sus propias APIs para comunicarse entre sí. Además, cada uno de estos microservicios puede abstraer su propia funcionalidad, trazando límites lógicos para la responsabilidad en la aplicación y separando las preocupaciones para crear una base de código más fácil de mantener.

Conclusiones

Con suerte, ahora tiene una mejor comprensión de lo que son las APIs y los microservicios. El mantenimiento y la calidad del código son partes clave de la estrategía de TI exitosa. Los microservicios ayudan en este objetivo. Mantienen a sus equipos ágiles y lo ayudan a satisfacer las demandas de los clientes al producir código de alta calidad y fácil de mantener.


Este artículo se encuentra basado en API vs Microservices: A Microservice Is More Than Just an API.  y traducido por https://www.clubdetecnologia.net/






jueves, 2 de abril de 2020

Oracle: ¿Cómo encriptar paquete?

¿Tienes un paquete que tiene un lógica importante en tu sistema? En Oracle existe una forma de encriptar esa porción de código.

También conocido con la terminología "ofuscar" (encubrir), alguna veces es necesario ya que damos acceso a nuestras bases de datos a personal que tal vez solo están de paso por nuestra empresa, a continuación detallo los pasos.

Antes de iniciar: Guarda el código fuente original, al momento de encriptar ya no hay vuelta atrás considerar que Oracle utiliza el método hash (no reversible).

  1. Existe un ejecutable en $ORACLE_HOME/bin que se llama wrap. Llamándolo desde la consola.
  2. Teniendo el cuerpo del paquete preparado y con nombre:  ob_pack_body.sql
  3. Ejecutamos en la consola lo siguiente: 
  4. wrap edebug=wrap_new_sql iname=ob_pack_body.sql
  5. Finalmente compilen el paquete y voila



    1. Ojo: Sólo hemos creado el body del paquete, se entiende que la cabecera ha sido creada de forma normal.

viernes, 5 de julio de 2019

A hidden message

Cambiamos un poco el enfoque del blog, publicaré de todo un poco.

Uno de mis grupos favoritos, Queen (primero siempre The Beatles), del cual me pareció alucinante su película.
Mientras escuchaba sus canciones en Youtube, un comentario salvaje apreció.

¿Qué opinan?

---------------------------
This is my first post after a few years, so I am so excited. Queen is one of my favorite groups. What do you think about this comment?

sábado, 30 de septiembre de 2017

¿Cómo empezar mi APP Android?

He estado investigando la mejor forma de desarrollar una aplicación móvil. Al inicio empece como todos bien "guerrero" con mi MySQL y servicios con PHP pero luego dije como hago el monitoreo, analytics, entre otras gestiones. No inventemos la rueda para eso existen ya un sin fin de plataformas de ayuda de desarrollo de aplicaciones móviles, en este caso usaremos FireBase de google.

¿Qué es FireBase?
Nada resume mejor que un video explicativo desde su página oficial.

Entre las cosas que maneja tenemos: 


Veo en su web que tiene un sin fin de documentación, lo contra es que puedes elegir planes desde free hasta lo que consumes mensual pagas. Pero en realidad se ve que vale la pena y no invertir dinero y esfuerzo en crear de nuevo la rueda.


En el próximo Post ya vamos a ir viendo la creación del login con el API que podemos usar con firebase.






martes, 8 de agosto de 2017

Android - Navegar en APP - Ejemplo01

Lo primero que debemos de saber para navegar en diferentes interfaces de una APP es tener en cuenta que un activity es como una página web en el idioma android.

Para navegar de activity a otro activity, sólo utiliza el siguiente código:


Intent intent = new Intent(MainActivity.this,Main2Activity.class); 
startActivity(intent);

Donde:

MainActivity--> Es el activity donde te encuentras.
Main2Activity-->Es el activity donde quieres ingresar.

Recuerda que esta porción de código lo debes de ingresar dentro de un evento onClick de un botón de la siguiente forma (el id del botón es "button"):


Button bSiguiente = (Button)findViewById(R.id.button);
bSiguiente.setOnClickListener(new View.OnClickListener() {
    @Override    public void onClick(View view) {
        Intent intent = new Intent(MainActivity.this,Main2Activity.class);
        startActivity(intent);
    }
});

Acá te dejo el código en github:
https://github.com/jocluis/Ejemplo01.git 




martes, 25 de julio de 2017

Android Básico - Instalación

Retomando el blog, desde hoy aprenderemos juntos a desarrollar aplicaciones móviles:

En este tutorial empezaremos con la instalación y primera APP (Hola Mundo), una recomendación tener una computador con mínimo 10 Gigas de RAM.




Créditos al canal Youtube: MaxQuePixels

martes, 5 de mayo de 2015

Ejemplos con Having en Oracle

Les comento que un compañero de mi trabajo toma un examen de Oracle / PLSQL a los que pasaron todas las pruebas previas (psicotécnico, razonamiento, etc). Pero he aquí la diferencia varios no saben usar esta sintaxis, su tipo pregunta es: Tengo 2 entidades Persona y Documentos, calcula las personas con más de un documento.

Para comenzar vamos a los conceptos:

  • Having es usando conjuntamente con GROUP BY.
  • Funciones que se puede combinar:
    1. SUM: Cuando requieras agrupar por cantidades que se acumulan y suman.
    2. COUNT: Cuando quieras buscar cantidades de registros sin sumar.
    3. MIN: Cuando requieras todos los registros mínimos a su valor.
    4. MAX: Cuando requieras todos los registros mínimos a su valor.

Vamos con unos ejemplos, tenemos la siguiente tabla simple:



1.- SUM: Queremos obtener la suma de total de temperatura por cada ciudad, lo podemos hacer con el siguiente query;

SELECT ciudad, SUM(temperatura) from
muestras GROUP BY ciudad HAVING SUM(temperatura);


Y si queremos sólo los que cumples que tengan más de 50 de total sumado de temperatura sólo le agregamos al final:
SELECT ciudad, SUM(temperatura) from
muestras GROUP BY ciudad HAVING SUM(temperatura)>50;


2.- COUNT: Si quisiéramos saber cuantas veces se repite cada registro sólo hacemos la siguiente consulta:


SELECT ciudad, COUNT(temperatura) from muestras GROUP BY ciudad HAVING COUNT(temperatura);



Ahora si queremos sólo las que tienen registros mayores a 2, esta es la consulta:

SELECT ciudad, COUNT(temperatura) from
muestras GROUP BY ciudad HAVING COUNT(temperatura)>2;



3.- MAX y MIN: Si quisiéramos saber cuanto es el máximo de cada uno de los registros pero no repetidos hacemos la siguiente consulta:



SELECT ciudad, MAX(temperatura) FROM muestras
  GROUP BY ciudad HAVING MAX(temperatura);



Ahora si sólo queremos los mayores a 16 haríamos lo siguiente:
SELECT ciudad, MAX(temperatura) FROM muestras  GROUP BY ciudad HAVING MAX(temperatura)>16;


Para mínimo es la misma lógica.

Ahora se atreven a dar el examen y dar un respuesta? Espero esté todo claro. Espero verlos muy pronto.



PD: La misma idea funciona para la base de datos MySQL.
El código de la tabla y registro es el siguiente:
CREATE TABLE  `muestras` (
  `ciudad` varchar(40) DEFAULT NULL,
  `fecha` date DEFAULT NULL,
  `temperatura` number(4) DEFAULT NULL
) ;
INSERT INTO `muestras` (`ciudad`, `fecha`, `temperatura`) VALUES
('Madrid', '2005-03-17', 23),
('París', '2005-03-17', 16),
('Berlín', '2005-03-17', 15),
('Madrid', '2005-03-18', 25),
('Madrid', '2005-03-19', 24),
('Berlín', '2005-03-19', 18);

lunes, 16 de febrero de 2015

Retorno

Hey! Amigos como han estado? Desde el día de hoy estoy de vuelta vamos a retomar el blog añadiendo algo de toque personal para no crear otro blog. Espero que les este yendo súper bien a todos. Si tiene alguna sugerencia siempre será bienvenida. 
JocLuis