Desarrollo de aplicaciones modernas - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Desarrollo de aplicaciones modernas

Cree aplicaciones nativas en la nube con una buena arquitectura.

Las prácticas modernas del desarrollo de aplicaciones son esenciales para que las organizaciones creen aplicaciones nativas en la nube con una buena arquitectura y sigan siendo competitivas. Las empresas pueden utilizar las tecnologías nativas en la nube, como los contenedores y la computación sin servidor, para crear aplicaciones escalables y ágiles que se adapten a las demandas cambiantes del mercado. Estas tecnologías permiten a las organizaciones optimizar el uso de los recursos, reducir los costos y mejorar el rendimiento de las aplicaciones.

Cuando diseñe las aplicaciones modernas, desarrolle soluciones ágiles para las operaciones y el desarrollo. Una aplicación moderna reacciona de manera automática a los cambios en la demanda de los clientes y es resistente a los errores. Los ingenieros pueden desarrollar e implementar cambios de manera rápida y supervisar el rendimiento de las aplicaciones. Una aplicación moderna está diseñada para autorrepararse y poder escalarse a niveles de tráfico grandes o pequeños, incluso sin tráfico a costo cero, cuando sea necesario.

Para crear aplicaciones nativas en la nube con una buena arquitectura es necesario tener conocimientos amplios de las tecnologías subyacentes y sus prácticas recomendadas. Las organizaciones deben adoptar una arquitectura de microservicios y diseñar sus aplicaciones para que sean modulares y estén acopladas de forma flexible, lo que permite una implementación y escalabilidad independientes. Este enfoque permite a las organizaciones dividir sus aplicaciones en componentes más pequeños y fáciles de administrar que se desarrollan, prueban e implementan de forma rápida e independiente.

Iniciar

Explorar enfoques modernos

Primero, investigue los contenedores, las tecnologías sin servidor y otros enfoques que permitan desarrollar los microservicios, que mejoran la eficiencia de los recursos, ayudan a mejorar la seguridad y minimizan los gastos de la infraestructura. Opte por modernizar las aplicaciones empresariales y diferenciadoras existentes para mejorar la eficiencia y maximizar el valor de las inversiones actuales. Considere la posibilidad de redefinir la plataforma (hacer la transición de los contenedores, las bases de datos o los intermediarios de mensajes autoadministrados a servicios administrados en la nube) y refactorizar (volver a desarrollar las aplicaciones para adoptar arquitecturas nativas en la nube) según la toma de decisiones basada en el valor. 

Cuando actualice la aplicación basada en la nube existente, un enfoque correcto consiste en utilizar el patrón de higos estranguladores para descomponer de manera progresiva la arquitectura en microservicios. Este procedimiento ayuda a adoptar una metodología de aplicación contemporánea, para que pueda notar los beneficios inherentes y demostrar su valor para la organización en general. Considere la posibilidad de construir las aplicaciones como microservicios distintos que aprovechen las arquitecturas basadas en eventos, cuando corresponda. Asegúrese de que la arquitectura tenga en cuenta las cuotas de servicio y los recursos físicos inalterables para no afectar al rendimiento o la fiabilidad de la carga de trabajo. 

Adoptar funcionalidades de computación nativas en la nube

Las funcionalidades de computación nativas en la nube son fundamentales para el desarrollo de aplicaciones modernas. Para este enfoque es necesario que las organizaciones consideren cómo desean que se alojen sus unidades de computación e identifiquen la mejor opción para cada caso de uso o servicio. Por ejemplo, AWS Lambda ofrece un mecanismo sin servidor para ejecutar el código de la aplicación y desempeña un papel clave en las arquitecturas basadas en eventos. Las funciones de Lambda se lanzan bajo demanda y se ejecutan en paralelo hasta una simultaneidad máxima definida, por lo que pueden escalarse para hacer diversas tareas.   

Uso de contenedores

En el desarrollo de software moderno, la administración de las aplicaciones y sus dependencias se ha convertido en una tarea cada vez más compleja, sobre todo si se tiene en cuenta la necesidad de mantener la coherencia en entornos distintos. Para hacer frente a estos desafíos, las tecnologías de contenedorización, como Docker, se convirtieron en una solución eficaz para empaquetar las aplicaciones y sus dependencias. Los contenedores garantizan implementaciones coherentes y reproducibles sea cual sea el entorno del tiempo de ejecución de la aplicación, por lo que el desarrollo en el entorno local se comporta de la misma manera que el desarrollo de la producción en el entorno de nube. Este enfoque reduce los errores que pueden deberse a errores de coincidencia en el entorno o en sus configuraciones. 

Uso de bases de datos modernas

Cuando utiliza bases de datos modernas, cada microservicio de la aplicación puede utilizar la base de datos personalizada correcta para cumplir con sus requisitos, lo que aumenta la agilidad y el rendimiento, además de reducir los costos. Por ejemplo, un microservicio podría utilizar una base de datos NoSQL para lograr un rendimiento alto al almacenar los datos de la sesión, otro microservicio podría utilizar una base de datos relacional para hacer uniones de tablas complejas y otro microservicio podría utilizar una base de datos de libro mayor cuántica para seguir los cambios en la cadena de bloques. 

Las bases de datos modernas ofrecen flexibilidad y escalabilidad. También proporcionan mayor seguridad, cumplimiento y fiabilidad que las bases de datos tradicionales. Permiten a las organizaciones almacenar y administrar sus datos de manera más eficiente y garantizan que las aplicaciones puedan acceder a los datos correctos en el momento correcto, lo que mejora el rendimiento y la experiencia del usuario. 

La migración a las bases de datos modernas es un componente esencial del desarrollo de aplicaciones modernas. Al utilizar las soluciones de almacenamiento de datos correctas, las organizaciones pueden optimizar sus funcionalidades de administración de datos y ofrecer aplicaciones más eficientes y fiables. Al hacer que cada microservicio sea independiente y elegir las tecnologías correctas para cada microservicio, las organizaciones pueden optimizar aún más sus funcionalidades de datos para lograr la máxima eficiencia y escalabilidad y, al mismo tiempo, minimizar los costos. 

Avanzado

Optimización de la arquitectura moderna

Para lograr más optimizaciones, perfeccione la implementación de tecnologías sin servidor y desarrolle arquitecturas que se puedan escalar e implementar de manera independiente mediante productos de AWS como Amazon API Gateway y AWS Lambda. Implemente la detección de servicios mediante Amazon Route 53 y AWS Cloud Map para garantizar una comunicación fluida entre los componentes.

Adopte el control de versiones, el almacenamiento en la memoria caché y la limitación de velocidad de las API para mantener la compatibilidad y el rendimiento en las versiones distintas de la aplicación. Mejore la seguridad con las políticas de AWS Identity and Access Management (IAM) y de recursos. Estas ayudan a garantizar que la infraestructura esté protegida y que el acceso se conceda solo a las entidades autorizadas.

De ser posible, utilice servicios sin servidor para ejecutar contenedores sin tener que administrar la infraestructura subyacente. Esto le permite centrarse en el desarrollo de las aplicaciones principales y mejorar la administración de los recursos y el rendimiento. También es útil para aprovechar al máximo los beneficios de la escalabilidad, la flexibilidad y la rentabilidad.

Al profundizar en las complejidades de las arquitecturas sin servidor e incorporar estas prácticas avanzadas, las organizaciones pueden descubrir oportunidades de mejora y refinamiento y, por último, maximizar el potencial de sus aplicaciones nativas en la nube. Esta búsqueda facilita adoptar patrones de aplicación más sofisticados que mejoran aún más la experiencia general del usuario. También permite a las organizaciones ser más ágiles y eficientes en los procesos de desarrollo de software.

Uso de las tecnologías de malla de servicios

A medida que las organizaciones adoptan cada vez más una arquitectura de microservicios para crear e implementar aplicaciones, la administración de la complejidad, la seguridad y las comunicaciones entre estos servicios se vuelve primordial. Las tecnologías de malla de servicios, como Istio, Linkerd o Consul, desempeñan un papel fundamental al mejorar la seguridad, la observabilidad y la fiabilidad de los microservicios.

Garantía de la visibilidad y del seguimiento

Las prácticas modernas proporcionan mayor visibilidad y seguimiento en el proceso de desarrollo y facilitan el cumplimiento de los estándares y las prácticas recomendadas del sector. La visibilidad y la supervisión son esenciales para el desarrollo de aplicaciones modernas. La implementación de soluciones de supervisión y registro para proporcionar información valiosa sobre el rendimiento de las aplicaciones permite a las organizaciones identificar áreas de mejora y optimizarlas. Le recomendamos trabajar con los equipos de ingeniería de plataformas para garantizar que haya herramientas disponibles que proporcionen una visibilidad integral y una supervisión de los errores, el rendimiento y el cumplimiento de las aplicaciones, para que pueda detectar, diagnosticar y resolver los problemas de manera rápida. 

Excel

Adopción de microservicios

Para numerosas organizaciones, el desarrollo de aplicaciones modernas es sinónimo de éxito empresarial. Los microservicios son el núcleo de esta transformación. Las organizaciones pueden beneficiarse de la adopción de estos patrones arquitectónicos eficaces.

Los microservicios ofrecen una arquitectura de aplicaciones de escalabilidad, resiliencia y agilidad altas. Al dividir una aplicación en servicios pequeños que se pueden implementar de manera independiente, las organizaciones pueden optar por iterar de manera rápida componentes concretos sin afectar a otras partes de la aplicación. Los patrones de resiliencia avanzados, como los disyuntores y los bulkheads (aislamiento de errores), desempeñan un papel crucial al garantizar la alta disponibilidad de estas aplicaciones.

Los disyuntores actúan como un mecanismo de seguridad que evita que se produzcan errores en cascada, ya que interrumpen o desvían de manera temporal las comunicaciones debidas a un servicio en mal estado, para que puedan recuperarse. Los bulkheads aíslan los recursos y limitan el alcance del impacto de los posibles errores. Juntos, estos patrones hacen una arquitectura sólida que resiste las interrupciones imprevistas y mantiene un rendimiento óptimo.

Otro aspecto crítico de la implementación de los microservicios es la adopción de los principios del diseño basado en dominios (DDD). El DDD se centra en que todos comprendan el ámbito empresarial y en convertirlo en un diseño de software de buena arquitectura. Este enfoque permite crear microservicios más cohesionados y fáciles de mantener. Garantiza que la aplicación evolucione según las necesidades de la organización.

La optimización de la comunicación entre los servicios también es primordial en una aplicación basada en microservicios. Al implementar los protocolos avanzados como gRPC o GraphQL, las organizaciones pueden mejorar en gran medida la eficiencia de la comunicación entre los servicios. Estos protocolos ofrecen funcionalidades como la seguridad de tipos, la latencia baja y la flexibilidad, que ayudan a mejorar el rendimiento general y la capacidad de mantenimiento de la aplicación.

Una organización que adopta los microservicios proporciona un entorno que fomenta la innovación, la agilidad y la colaboración. Los equipos de desarrollo suelen organizarse según las funcionalidades empresariales y se centran en gran medida en las prácticas de integración y entrega continuas (CI/CD). Están facultados para tomar decisiones, experimentar e iterar con rapidez. Adoptan una cultura de responsabilidad y rendición de cuentas compartidas.