Construir Microservicios

Por: Sam Newman

 

Los sistemas distribuidos se han vuelto más detallados en los últimos 10 años, pasando de aplicaciones monolíticas de código pesado a unos microservicios más sencillos y con autocontenido. Pero desarrollar estos sistemas trae sus propios dolores de cabeza. Este es un tema que arquitectos de sistemas y administradores deben tener en cuenta al momento de construir o administrar estructuras de microservicio.

Los microservicios son servicios sencillos y autónomos que trabajan juntos; una aproximación a los sistemas distribuidos que fomentan el uso de servicios finamente detallados con sus propios ciclos de vida. Ya que los microservicios son primeramente moldeados entorno al ámbito de los negocios y evitan los problemas de estructuras tradicionales por fases. Los microservicios también integran nuevas tecnologías y técnicas que han surgido durante la última década, los cuales ayudan a evitar el peligro de muchas implementaciones de estructuras orientadas al servicio.

La autonomía aumentada que esta estructura trae da al equipo una gran ventaja. Sin embargo, este tema no es solamente para individuos relacionados a una empresa o carrera específica, este tema debería llamar la atención de personas interesadas en aspectos de diseño, desarrollo, implementación, análisis y mantenimiento de sistemas.

Los Microservicios son un tema en movimiento actualmente. Aunque la idea no es nueva (incluso si el término mismo lo es), experiencias de personas en todo el mundo, junto con el surgimiento de nuevas tecnologías, están teniendo un efecto profundo en cómo son usados.

 

¿Cómo Usarlos Y En Dónde?

Las bases de códigos crecen a medida que escribimos código para agregar nuevas funciones. Con el tiempo, puede ser difícil saber dónde se necesita que se haga un cambio porque la base de código es demasiado extensa. Pese a las bases de código monolíticas, muy a menudo todos estos límites en progreso fallan y al mismo tiempo haciendo las soluciones más complejas. Dentro de un sistema monolítico, luchamos contra esas fuerzas al intentar asegurar que nuestro código sea más coherente y a menudo, creando abstracciones o módulos. La cohesión es un concepto importante cuando pensamos en microservicios. Este es intensificado por Robert C. Martin “reunir esas cosas que cambian por la misma razón y separar esas cosas que cambian por razones diferentes”.

Los Microservicios toman este mismo alcance para servicios independientes, entonces, hay que enfocar las limitaciones del servicio en las limitaciones de la empresa, haciendo obvio donde reside el código para una pieza determinada de funcionalidad. Y al mantener este servicio enfocado en el limitante explícito, se evita caer en la tentación de que crezca demasiado con todas dificultades asociadas que este pueda traer.

Hay que tener en cuenta que entre más pequeño es el servicio, más maximizan los beneficios y las desventajas de la estructura del microservicio. Cuando usted llegue a lo más pequeño, los beneficios en torno a la interdependencia aumentan. En el momento en que maneje mejor esta complejidad, podrá empeñarse en servicios cada vez más y más pequeños.

Debe ser autónomo: los microservicios son una entidad separada. Ellos deberían ser implementados como un servicio aislado en una plataforma (PAAS) o deberían ser su propio sistema operativo. La idea es tratar de reunir múltiples servicios en la misma máquina.

Beneficios: De esta manera, los beneficios del microservicio son muchos y variados. Muchos de estos beneficios pueden estar en la puerta de cualquier sistema distribuido. Sin embargo, los microservicios tienden a alcanzar los beneficios a un nivel más alto principalmente debido a qué tan lejos toman los conceptos detrás de los sistemas distribuidos y a las estructuras de servicio orientado.

Uno de los beneficios es que, con los microservicios, se puede adaptar la tecnología de manera más rápida y entender cómo pueden ayudar los nuevos avances. Una de las barreras más grandes de implementar o adoptar nuevas tecnologías es el riesgo asociado con esta misma. Con las aplicaciones monolíticas, si se quiere implementar un nuevo lenguaje de programación, bases de datos o estructuras, entonces cualquier cambio afectará una gran cantidad de sistemas al mismo tiempo; pero con un sistema compuesto por múltiples servicios, se tiene más lugares en los que se puede implementar una nueva pieza de tecnología y saber si hay riesgo sin necesidad de afectar varios sistemas.

Es claro que este tema abarca mucha otra información que de igual manera es importante para quien esté interesado en los microservicios, por esa razón, se recomienda buscar más información y consultar libros relacionados al tema como “Building Microservices” de Sam Newman el cual contiene detalladamente información de este tema.

Libro: Building Microservices de Sam Newman (2015) Estados unidos de América, publicado por O’Reilly Media, Inc. https://docs.google.com/document/d/1sMiflSsu8SniTMEsMbyEjbP4t6Wr3cB4hnvhGG5czcA/edit

Scroll hacia arriba