Translate

viernes, 17 de diciembre de 2021

[eBook] Get Kubernetes from Test to Production

 Me llego este mail de la gente de NGINX y les comparto : 

EBOOK

Image

Kubernetes – the de facto container management platform – fuels business growth and innovation by reducing time to market for digital experiences. And while many organizations are prepared for the substantial architectural changes required by Kubernetes, they’re surprised by the organizational impacts of running modern app technologies at scale. Whether you’re just getting started or already running in production, you’ve probably encountered three business-critical barriers between you and the Kubernetes dream: complexity, security, and the differing priorities of your teams.

Implementing Kubernetes doesn’t need to be complicated. In this eBook, we share how organizations can reduce the complexity and risks of running Kubernetes by using three production-grade traffic management tools: an Ingress controller, a web application firewall, and a service mesh. Real-life examples, strategies, and use cases will help you get ready to move from testing to production in no time.

In this eBook you will learn:

  • About advanced traffic management methods that improve the resilience of your apps and infrastructure
  • How to use visibility techniques that help you solve two common problems
  • About security use cases that enable your team to better protect cloud-native apps and APIs
  • How to choose an Ingress controller and service mesh that will meet your needs today and as your Kubernetes deployment grows in the future

lunes, 13 de diciembre de 2021

Cómo se comunican los clientes con los microservicios?


Desde la perspectiva del consumidor de microservicios, un microservicio debe ser transparente a la ubicación, porque en un entorno basado en la nube, los servidores son efímeros. Los servicios basados ​​en la nube se pueden iniciar y desmontar rápidamente con una dirección IP completamente nueva asignada al servidor en el que se ejecutan los servicios.

Como los servicios se tratan como objetos desechables de corta duración, las arquitecturas de microservicios pueden lograr un alto grado de escalabilidad y disponibilidad al tener varias instancias de un servicio en ejecución. La demanda de servicios y la capacidad de recuperación se pueden gestionar tan rápido como la situación lo requiera. Cada servicio tiene asignada una dirección IP única y no permanente. La desventaja de los servicios efímeros es que con los servicios subiendo y bajando constantemente, administrar un gran grupo de servicios efímeros de forma manual o a mano es una invitación a una interrupción.

Una instancia de microservicio debe registrarse con el agente de terceros. Este proceso de registro se denomina descubrimiento de servicios o service discovery. Cuando una instancia de microservicio se registra con un agente de service discovery, le indicará dos cosas al agente: la dirección IP física o la dirección de dominio de la instancia de servicio y un nombre lógico que una aplicación puede usar para buscar en un servicio. Ciertos agentes de descubrimiento de servicios también requerirán una URL de regreso al servicio de registro que el agente de descubrimiento de servicios puede utilizar para realizar verificaciones de estado.

Luego, el cliente del servicio se comunica con el agente de descubrimiento para buscar la ubicación del servicio.

sábado, 11 de diciembre de 2021

Como desplegar y empaquetar nuestros microservicios?


Desde la perspectiva de DevOps, uno de los conceptos clave detrás de una arquitectura de microservicio es que se pueden implementar múltiples instancias de un microservicio rápidamente en respuesta a un cambio en el entorno de la aplicación  (por ejemplo, muchos pedidos de solicitudes de usuarios, problemas dentro de la infraestructura, etc.).

Para lograr esto, un microservicio debe empaquetarse e instalarse como un solo artefacto con todas sus dependencias definidas dentro de él. Este artefacto se puede implementar en cualquier servidor que tenga un Java JDK instalado (por ejemplo en java). Estas dependencias también incluirán el motor de tiempo de ejecución (por ejemplo, un servidor HTTP o un contenedor de aplicaciones) que albergará el microservicio.

Afortunadamente, casi todos los frameworks de microservicios de Java incluirán un motor de tiempo de ejecución que se puede empaquetar e implementar con el código. Por ejemplo, Spring Boot viene con tomcat  y maven integrado. Podemos crear nuestro proyecto con la linea de comandos :

mvn clean package && java –jar target/licensing-service-0.0.1-SNAPSHOT.jar

Para ciertos equipos de operaciones, el concepto de incrustar un entorno de ejecución directamente en el archivo JAR es un cambio importante en la forma en que piensan sobre la implementación de aplicaciones. En una organización empresarial tradicional J2EE, una aplicación se implementa en un servidor de aplicaciones. Este modelo implica que el servidor de aplicaciones es una entidad en sí mismo y, a menudo, sería administrado por un equipo de administradores de sistemas que administraron la configuración de los servidores independientemente de las aplicaciones que se implementan en ellos.

Esta separación de la configuración del servidor de aplicaciones de la aplicación introduce puntos de falla en el proceso de implementación, porque en muchas organizaciones la configuración de los servidores de aplicaciones no se mantiene bajo el control de la fuente y se administra a través de una combinación de la interfaz de usuario y la administración propia de scripts. Es demasiado fácil que se nos traspapele alguna configuración y los entorno de prueba no reflejen las configuraciones del entorno de producción.

El uso de un único artefacto desplegable con el motor de tiempo de ejecución integrado en el artefacto elimina muchas de estas oportunidades de desviación de la configuración. También le permite poner todo el artefacto bajo control de código fuente y permite que el equipo de la aplicación pueda razonar mejor a través de cómo se construye e implementa su aplicación.

viernes, 10 de diciembre de 2021

Creación de aplicaciones basados en los 12 factores.


Una arquitectura de microservicio exitosa requiere un sólido desarrollo de aplicaciones y prácticas de DevOps. Uno de los resúmenes más sucintos de estas prácticas se puede encontrar en el manifiesto de la aplicación TwelveFactor de Heroku. Este documento proporciona 12 prácticas recomendadas que siempre debemos de tener en cuenta al crear microservicios.

  1. Base de código: todo el código de la aplicación y la información de aprovisionamiento del servidor deben estar en control de versiones. Cada microservicio debe tener su propio repositorio de código independiente dentro de los sistemas de control de fuente. 
  2. Dependencias: declara explícitamente las dependencias que usa tu aplicación mediante herramientas de compilación como Maven (Java). La dependencia de JAR de terceros debe declararse utilizando sus números de versión específicos. Esto permite que su microservicio siempre se compile utilizando la misma versión de bibliotecas.
  3. Config: almacene la configuración de su aplicación (especialmente la configuración específica de su entorno) independientemente de su código. La configuración de su aplicación nunca debe estar en el mismo repositorio que su código fuente.
  4. Servicios de respaldo: su microservicio a menudo se comunicará a través de una red con una base de datos o un sistema de mensajería. Cuando lo haga, debe asegurarse de que, en cualquier momento, pueda cambiar su implementación de la base de datos de un servicio administrado internamente a un servicio de terceros. 
  5. Cree, publique, ejecute: mantenga las partes de la implementación de la aplicación, compiladas, publicadas y ejecutadas completamente separadas. Una vez que se crea el código, el desarrollador nunca debe realizar cambios en el código en tiempo de ejecución. Cualquier cambio debe volver al proceso de compilación y volver a implementarse. Un servicio construido es inmutable y no se puede cambiar.
  6. Procesos: sus microservicios siempre deben ser sin estado. Se pueden eliminar y reemplazar en cualquier tiempo de espera sin temor a que una instancia de pérdida de un servicio provoque la pérdida de datos.
  7. Enlace de puertos: un microservicio es completamente autónomo con el motor de tiempo de ejecución para el servicio empaquetado en el ejecutable del servicio. Debe ejecutar el servicio sin la necesidad de un servidor web o de aplicaciones separado. El servicio debe iniciarse por sí mismo en la línea de comando y se debe acceder a él inmediatamente a través de un puerto HTTP expuesto.
  8. Simultaneidad: cuando necesite escalar, no confíe en un modelo de subprocesos dentro de un solo servicio. En su lugar, lance más instancias de microservicio y escale horizontalmente. Esto no excluye el uso de subprocesos dentro de su microservicio, pero no confíe en él como su único mecanismo para escalar. Escala horizontalmente, no hacia arriba.
  9. Desechabilidad: los microservicios son desechables y se pueden iniciar y detener a pedido. El tiempo de inicio debe minimizarse y los procesos deben cerrarse correctamente cuando reciben una señal de interrupción del sistema operativo.
  10. Paridad desarrollo / producción: minimice las brechas que existen entre todos los entornos en los que se ejecuta el servicio (incluido el escritorio del desarrollador). Un desarrollador debe usar la misma infraestructura localmente para el desarrollo del servicio en el que se ejecutará el servicio real. También significa que la cantidad de tiempo que se implementa un servicio entre entornos debe ser de horas, no de semanas. Tan pronto como se confirme el código, debe probarse y luego promoverse lo más rápido posible desde Dev hasta Prod.
  11. Registros: los registros son una secuencia de eventos. A medida que se escriben los registros, deben poder transmitirse a herramientas, como Splunk (http://splunk.com) o Fluentd (http://fluentd.org), que recopilarán los registros y los escribirán en una ubicación central. El microservicio nunca debe preocuparse por la mecánica de cómo sucede esto y el desarrollador debe mirar visualmente los registros a través de STDOUT a medida que se escriben.
  12. Procesos de administración: los desarrolladores a menudo tendrán que realizar tareas administrativas en sus servicios (migración o conversión de datos). Estas tareas nunca deben ser ad hoc y, en cambio, deben realizarse a través de scripts que se administran y mantienen a través del repositorio de código fuente. Estas secuencias de comandos deben ser repetibles y no cambiar (el código de la secuencia de comandos no se modifica para cada entorno) en cada entorno en el que se ejecutan.

Dejo link: https://12factor.net/

jueves, 9 de diciembre de 2021

Cuando no usar Microservicios?


Creo que hay un post anterior similar, pero bueno, el publico se renueva :D

Tenemos 4 características de los microservicios que nos dejan inferir los escenarios que no estaría bueno usarlos :

Complejidad de la construcción de sistemas distribuidos: debido a que los microservicios están distribuidos y son pequeños, introducen un nivel de complejidad en las aplicaciones que no estaría en aplicaciones monolíticas. Las arquitecturas de microservicios requieren un alto grado de madurez operativa. No sé debe considerar el uso de microservicios a menos que la organización esté dispuesta a invertir en la automatización y el trabajo operativo (monitoreo, escalado) que una aplicación altamente distribuida necesita para tener éxito.

Expansión de servidores: uno de los modelos de implementación más comunes para microservicios es tener una instancia de microservicio implementada en un servidor. En una gran aplicación basada en microservicios, puede terminar con 50 a 100 servidores o contenedores (generalmente virtuales) que deben construirse y mantenerse solo en producción. Incluso con el menor costo de ejecutar estos servicios en la nube, la complejidad operativa de tener que administrar y monitorear estos servidores puede ser tremenda. 

Tipo de aplicación: los microservicios están orientados a la reutilización y son extremadamente útiles para crear aplicaciones de gran tamaño que deben ser altamente resilientes y escalables. Esta es una de las razones por las que tantas empresas basadas en la nube han adoptado microservicios. Si está construyendo aplicaciones pequeñas a nivel departamental o aplicaciones con una base de usuarios pequeña, la complejidad asociada con la construcción de un modelo distribuido como microservicios puede ser más costosa de lo que vale la pena.

Consistencia y transformaciones de datos: a medida que comienza a analizar los microservicios, debe pensar en los patrones de uso de datos de sus servicios y cómo los consumidores de servicios los usarán. Un microservicio envuelve y abstrae una pequeña cantidad de tablas y funciona bien como un mecanismo para realizar tareas "operativas" como crear, agregar y realizar consultas simples (no complejas) en una tienda.

Si sus aplicaciones necesitan realizar una agregación o transformación de datos complejos a través de múltiples fuentes de datos, la naturaleza distribuida de los microservicios dificultará este trabajo. Sus microservicios invariablemente asumirán demasiada responsabilidad y también pueden volverse vulnerables a problemas de rendimiento.

También tenga en cuenta que no existe un estándar para realizar transacciones entre microservicios. Si necesita la gestión de transacciones, deberá crear esa lógica. La mensajería introduce latencia en las actualizaciones de datos. Sus aplicaciones deben manejar la coherencia eventual donde las actualizaciones que se aplican a sus datos pueden no aparecer de inmediato.


[eBook] Continuous API Management, 2nd Edition

  Me llego este mail de la gente de NGINX y les comparto : 

EBOOK

Image

The second edition of this O’Reilly eBook, sponsored by NGINX, provides maturity models for individual APIs and multi-API landscapes to help you invest the right human and company resources for the right maturity level at the right time.

How do you balance the desire for agility and speed with the need for robust and scalable operations? Four API experts show software architects, program directors, and product owners how to maximize the value of their APIs by managing them as products through a continuous lifecycle.

In this eBook you will learn:

  • Which API decisions you need to govern
  • How the continuous improvement model governs change throughout an API’s lifetime
  • About the five stages of the complete API product lifecycle
  • How to manage APIs published by your organization

miércoles, 8 de diciembre de 2021

Free Serverless App Development O'Reilly Book

 Me llego este mail de la gente de infoQ y O'Reilly y les comparto : 

December 2021

 

Sent on behalf of Cockroach Labs to InfoQ Industry Email Notice Subscribers

Cockroach Labs

In this hands-on guide, developers will learn to build production-ready serverless apps and services on Google Cloud Run.

Download Book

The 10-chapter book includes tutorials for building and deploying a variety of serverless applications across Google Cloud. Ultimately, developers will learn how serverless development can dramatically simplify the building and scaling of applications.

This guide, authored by Wietse Venema, covers:

  • How to build serverless apps on Google Cloud Run
  • How to use HTTP to create unique experiences for your users
  • How identity and access management (IAM) work in serverless environments
  • How to deploy applications across a variety of Google Cloud services
  • CockroachDB is an official partner of Google Cloud Run and Google. Here's our solution to integrating CockroachDB with Google Cloud Run.

Download it for free and start building!

Cheers,
The Cockroach Labs Team


twitterfacebooklinkedinyoutube

You have received this email because you opted-in to the "InfoQ Industry Email Notices" box when you registered to InfoQ.com, where we send infrequent notices on behalf of our partners, user groups, conferences, etc. To unsubscribe to the InfoQ Industry Email Notices, please click the following link: Unsubscribe
- - -
C4Media Inc. (InfoQ.com),
2275 Lake Shore Boulevard West,
Suite #325,
Toronto, Ontario, Canada,
M8V 3Y3

martes, 7 de diciembre de 2021

Pants, un sistema de construcción de software multilenguaje


Pants es un sistema de construcción de software escalable. Es útil para repositorios de código de todos los tamaños, pero es particularmente valioso para aquellos que contienen múltiples piezas distintas pero interdependientes.

Pants organiza las diversas herramientas y pasos que procesan su código fuente en software implementable, que incluyen:

  • Resolución de dependencia
  • Generación de código
  • Verificación de tipos y compilación
  • Pruebas
  • Linting
  • Formateo
  • packaging
  • Introspección del proyecto

Pants es similar a herramientas como make, ant, maven, gradle, sbt, bazel y otras. Su diseño se basa en ideas e inspiración de estas herramientas anteriores, al tiempo que optimiza la velocidad, la corrección y la ergonomía en los casos de uso del mundo real de hoy.

Lo que me llamo la atención es que soporta, Python, Shell, Docker, Go, Java y Scala. Esta bueno para equipos que tengan que trabajar con varios lenguajes y tecnología y pueden compilar con una sola herramienta.  

Dejo link: https://www.pantsbuild.org/

lunes, 6 de diciembre de 2021

¿Cómo saber si sus microservicios tienen el tamaño correcto?


 ¿Cómo saber si sus microservicios tienen el tamaño correcto? 

Si un microservicio es demasiado grande, es probable que vea lo siguiente:

  • Un servicio con demasiadas responsabilidades: el flujo general de la lógica empresarial en el servicio es complicado y parece estar imponiendo una gama demasiado diversa de reglas empresariales.
  • El servicio administra datos en una gran cantidad de tablas: un microservicio es el sistema de registro de los datos que administra. Si se encuentra almacenando datos en varias tablas o llegando a tablas fuera de la base de datos inmediata. Un microservicio no debe poseer más de tres a cinco tablas. Si lo hace, es probable que su servicio tenga demasiada responsabilidad.
  • Demasiados casos de prueba: los servicios pueden crecer en tamaño y responsabilidad con el tiempo. Si tiene un servicio que comenzó con una pequeña cantidad de casos de prueba y termina con cientos de casos de prueba unitarios y de integración, es posible que deba refactorizar.

¿Qué pasa con un microservicio que es demasiado pequeño?

  • Los microservicios en una parte del dominio del problema se reproducen como conejos: si todo se convierte en un microservicio, componer la lógica empresarial a partir de los servicios se convierte en complejo y difícil porque la cantidad de servicios necesarios para realizar un trabajo crece enormemente. Un error común es cuando tiene docenas de microservicios en una aplicación y cada servicio interactúa con una sola tabla de base de datos.
  • Los microservicios se convierten en una colección de servicios CRUD (Crear, Reemplazar, Actualizar, Eliminar) simples; los microservicios son una expresión de la lógica empresarial y no una capa de abstracción sobre sus fuentes de datos. Si sus microservicios no hacen nada más que lógica relacionada con CRUD, probablemente sean demasiado pequeño y falte algo.

Una arquitectura de microservicios debe desarrollarse con un proceso evolutivo en el que sepa que no obtendrá el diseño correcto la primera vez. Por eso es mejor comenzar con un primer conjunto de servicios siendo más detallado con las iteraciones. También es importante no ser dogmático con su diseño. Puede encontrarse con limitaciones físicas en sus servicios donde tendrá que crear un servicio de agregación que combine datos porque dos servicios separados serán demasiado grandes, o cuando no existan límites claros entre las líneas de dominio de un servicio.

Al final, hay que adoptar un enfoque pragmático, en lugar de perder el tiempo tratando de obtener un diseño perfecto.


¿Como diseñar la arquitectura de microservicios?


El trabajo del arquitecto es proporcionar el andamiaje contra el cual los desarrolladores construirán su código para que todas las piezas de la aplicación encajen.

Al construir una arquitectura de microservicios, el arquitecto de un proyecto se centra en tres tareas clave:

  •   Descomposición el problema 
  •   Establecer la granularidad del servicio
  •   Definición de las interfaces de servicio

Descomposición el problema : Frente a la complejidad, la mayoría de las personas intenta dividir el problema en el que están trabajando en partes manejables. Hacen esto para no tener que tratar de encajar todos los detalles del problema en sus cabezas. En cambio, desglosan el problema de manera abstracta en algunas partes clave y luego buscan las relaciones que existen entre estas partes.
En una arquitectura de microservicios, el arquitecto divide el problema empresarial en fragmentos que representan dominios de actividad discretos. Estos fragmentos encapsulan las reglas comerciales y la lógica de datos asociada con una parte particular del dominio comercial.
Aunque desea que los microservicios encapsulen todas las reglas comerciales para realizar una sola transacción, esto no siempre es factible. A menudo, tendrá situaciones en las que necesitará grupos de microservicios que trabajen en diferentes partes del dominio empresarial para completar una transacción completa. Un arquitecto separa los límites de servicio de un conjunto de microservicios al observar dónde el dominio de datos no parece encajar.
Por ejemplo, un arquitecto puede mirar un flujo de negocios que se llevará a cabo mediante código y darse cuenta de que necesita información tanto del cliente como del producto. La presencia de dos dominios de datos discretos es una buena indicación de que hay varios microservicios en juego. La forma en que interactúan las dos partes diferentes de la transacción comercial generalmente se convierte en la interfaz de servicio para los microservicios.
Separar un dominio empresarial es una forma de arte más que una ciencia en blanco y negro. Se pueden utilizar las siguientes pautas para identificar y descomponer un problema empresarial en candidatos a microservicio:
  1. Describe el problema empresarial y escucha los sustantivos que usas para describir el problema. El uso de los mismos sustantivos una y otra vez al describir el problema suele ser una indicación de un dominio empresarial central y una oportunidad para un microservicio. 
  2. Presta atención a los verbos. Los verbos resaltan acciones y, a menudo, representan los contornos naturales del dominio de un problema. Si se encuentra diciendo "la transacción X necesita obtener datos de la cosa A y la cosa B", eso generalmente indica que hay varios servicios en juego. 
  3. Busque la cohesión de datos. A medida que divide su problema comercial en partes discretas, busque piezas de datos que estén muy relacionadas entre sí. Si de repente, durante el curso de su conversación, está leyendo o actualizando datos que son radicalmente diferentes de los que ha estado discutiendo hasta ahora, es posible que tenga otro candidato de servicio. Los microservicios deben poseer completamente sus datos.
Establecer la granularidad del servicio : Una vez que tenga un modelo de datos simplificado, podemos comenzar el proceso de definir qué microservicios necesitará en la aplicación.
El objetivo es tomar estas piezas importantes de funcionalidad y extraerlas en unidades completamente autónomas que se pueden construir e implementar independientemente de cada una. Pero extraer servicios del modelo de datos implica más que volver a empaquetar el código en proyectos separados. También se trata de extraer las tablas de la base de datos real a las que acceden los servicios y permitir que solo cada servicio individual acceda a las tablas en su dominio específico. 
Después de haber dividido un dominio problemático en partes discretas, a menudo nos encontraremos  luchando para determinar si hemos logrado el nivel correcto de granularidad para los servicios. Un microservicio que sea demasiado burdo o detallado tendrá una serie de atributos reveladores.
Cuando crea una arquitectura de microservicio, la cuestión de la granularidad es importante, pero puede usar los siguientes conceptos para determinar la solución correcta:
  • Es mejor comenzar ampliamente con microservicio y refactorizar a servicios más pequeños. Es fácil exagerar cuando comienza su viaje de microservicio y convierte todo en un microservicio. Pero descomponer el dominio del problema en pequeños servicios a menudo conduce a una complejidad prematura porque los microservicios se convierten en nada más que servicios de datos detallados.
  • Concéntrese primero en cómo interactuarán sus servicios entre sí: esto ayudará a establecer las interfaces generales de su dominio de problemas. Es más fácil refactorizar de un grano demasiado grueso a un grano demasiado fino.
  • Las responsabilidades del servicio cambiarán con el tiempo a medida que aumente su comprensión del dominio del problema. A menudo, un microservicio adquiere responsabilidades como una nueva aplicación se solicita funcionalidad. Lo que comienza como un único microservicio puede convertirse en varios servicios, con el microservicio original actuando como una orquestación.
Definición de las interfaces de servicio: La última parte se trata de definir cómo los microservicios en su aplicación se comunicarán entre sí. Al construir lógica de negocios con microservicios, las interfaces para los servicios deben ser intuitivas y los desarrolladores deben conocer el ritmo de cómo funcionan todos los servicios en la aplicación aprendiendo uno o dos de los servicios en la aplicación.
En general, las siguientes pautas se pueden utilizar para pensar en el diseño de la interfaz de servicio:
  • Adopte la filosofía REST: el enfoque REST de los servicios es fundamentalmente la adopción de HTTP como el protocolo de invocación para los servicios y el uso de verbos HTTP estándar (GET, PUT, POST y DELETE). Modele sus comportamientos básicos en torno a estos verbos HTTP.
  • Use URI para comunicar la intención: el URI que usa como end-points para el servicio debe describir los diferentes recursos en su dominio de problemas y proporcionar un mecanismo básico para las relaciones de recursos dentro de su dominio de problemas.
  • Use JSON para sus solicitudes y respuestas: la notación de objetos JavaScript (en otras palabras, JSON) es un protocolo de serialización de datos extremadamente liviano y es mucho más fácil de consumir que XML.
  • Utilice códigos de estado HTTP para comunicar los resultados: el protocolo HTTP tiene una gran cantidad de códigos de respuesta estándar para indicar el éxito o el fracaso de un servicio. Aprender estos códigos de estado y, lo que es más importante, utilícelos de forma coherente en todos sus servicios.
Todas las pautas básicas conducen a una sola cosa: hacer que sus interfaces de servicio sean fáciles de entender y consumibles. Quiere que un desarrollador se siente y observe las interfaces de servicio y comience a usarlas. Si un microservicio no es fácil de consumir, los desarrolladores harán todo lo posible para solucionarlo y subvertir la intención de la arquitectura.

viernes, 3 de diciembre de 2021

Una guía práctica sobre cómo las herramientas de gestión del tráfico de Kubernetes pueden ayudarlo a resolver los desafíos de resiliencia, visibilidad y seguridad.

La gente a Nginx me mando esta guia y la comparto con ustedes.  

NEWSLETTER

[eBook] Taking Kubernetes from Test to Production

A practical guide to how Kubernetes traffic management tools – including an Ingress controller and service mesh – can help you solve the challenges of resilience, visibility, and security that come with running Kubernetes in production.

Fleet, el IDE de nueva generación de JetBrains


JetBrains Fleet es la respuesta de JetBrains a Visual Code. 

Construido desde cero, Fleet es el resultado de 20 años de experiencia en el desarrollo de IDEs. Utiliza el motor de procesamiento de código de IntelliJ, con una arquitectura de IDE distribuida y una interfaz de usuario totalmente renovada.

Fleet es un editor de texto rápido y ligero que permite navegar por el código y editarlo rápidamente cuando lo necesite. Se inicia en pocos segundos para que pueda empezar a trabajar al momento y puede transformarse fácilmente en un IDE, gracias al motor de procesamiento de código de IntelliJ, que se ejecuta de forma independiente al editor.

Fleet hereda lo que más gusta a los desarrolladores de los IDE basados en IntelliJ: la finalización contextualizada de código en el proyecto, la navegación a las definiciones y los usos, las comprobaciones de la calidad del código sobre la marcha y los arreglos rápidos.

La arquitectura de Fleet está diseñada para que sea compatible con varias configuraciones y flujos de trabajo. Puede ejecutar Fleet en su equipo directamente o trasladar algunos de los procesos —por ejemplo, el procesamiento del código— a la nube.

Fleet ofrece una experiencia multilenguaje y una asistencia inteligente para muchos lenguajes y tecnologías, que pronto se completará con nuevos complementos específicos. Gracias a los LSP, también podrá utilizar otros servicios de lenguajes en Fleet.

Fleet está diseñado para detectar de forma automática la configuración de su proyecto a partir del código fuente, aprovechando al máximo el valor que obtiene del motor inteligente de procesamiento de código, de manera que se reduce al mínimo la necesidad de configurar el proyecto en el IDE.

Fleet ofrece una experiencia de usuario familiar y coherente para los diferentes tipos de proyecto, de modo que solo utilizará un IDE, sin importar el conjunto de tecnologías que emplee o el tipo de proyecto en el que esté trabajando.

Para que tanto usted como su equipo empiecen a trabajar en sus proyectos todavía más rápido, Fleet puede aprovechar la potencia de los entornos de desarrollo de Space. Su proyecto y Fleet se ejecutarán en una máquina virtual preconfigurada de alto rendimiento que se «prepara» y está lista para usar en pocos segundos. Puede conectarse a un entorno de desarrollo con Fleet desde su equipo personal en unos pocos clics y deshacerse de este al terminar la tarea.

Dejo link: https://www.jetbrains.com/es-es/fleet/