lassedesignen - Fotolia

Comiencen a utilizar AWS con este tutorial para desarrolladores principiantes

Inicie su viaje de desarrollador de la nube de AWS con este desglose de los servicios esenciales, las opciones de implementación y otros conceptos básicos de la nube que necesitará para comenzar.

Para los desarrolladores modernos, poder diseñar e implementar aplicaciones en la nube es una habilidad esencial. Sin embargo, no todos los desarrolladores tienen la experiencia necesaria en la nube.

El proceso típico de implementación de aplicaciones es diferente en la nube que en las instalaciones. Además, las aplicaciones a menudo deben diseñarse de diferentes maneras cuando se ejecutan en la nube, debido a las diferencias entre los recursos de TI locales y los servicios basados ​​en la nube.

Si no ha trabajado con AWS antes, deberá aprender sobre ciertos conceptos y servicios antes de pasar al diseño y la implementación de una aplicación.

Siga este tutorial para desarrolladores principiantes de AWS para aprender los conceptos básicos de la nube de Amazon y comprender cómo se ve normalmente un proceso simple de implementación de aplicaciones en AWS.

Conceptos clave de AWS para desarrolladores

La nube de AWS es un ecosistema complejo de diferentes herramientas y servicios. Los desarrolladores que quieran comenzar con el desarrollo y la implementación de aplicaciones en AWS no necesitan dominar todos los aspectos de la plataforma, pero deben estar familiarizados con los siguientes conceptos básicos.

Lenguajes de programación

AWS admite prácticamente todos los lenguajes de programación. Independientemente del idioma en el que codifique, es probable que pueda implementar su aplicación en su nube, al menos si la aloja en una máquina virtual.

Sin embargo, si elige implementar su aplicación con ciertos servicios, como AWS Lambda o AWS Elastic Beanstalk, es posible que algunos idiomas no sean compatibles. Aun así, incluso en estos casos, AWS admite los lenguajes más populares, incluidos Python, Ruby, Java y PHP.

APIs

Las interfaces de programación de aplicaciones (API) son parte integral de las aplicaciones basadas en la nube; son el pegamento que une los distintos servicios y aplicaciones.

La mayoría de los servicios en la nube cuentan con una API en la nube que permite que sus aplicaciones interactúen con ese servicio. Por ejemplo, si desea mover datos dentro o fuera de un depósito de almacenamiento de Amazon Simple Storage Service (S3), normalmente lo haría con la API de S3. Hay otras formas de interactuar con S3, pero para una aplicación, la API es el elemento de referencia. Puede utilizar las API para otras tareas de desarrollo de aplicaciones de AWS, como asignar una dirección IP o crear una instantánea de una máquina virtual de Amazon Elastic Compute Cloud (EC2).

Redes

La mayoría de las aplicaciones basadas en la nube interactúan con la red mediante un equilibrador de carga en la nube. Los equilibradores de carga aceptan el tráfico entrante de internet y lo reenvían a aplicaciones internas o servicios individuales que se ejecutan en su entorno de nube. También enrutan el tráfico saliente a su destino.

Los equilibradores de carga no son estrictamente necesarios, es posible implementar una aplicación en la nube sin uno, pero por razones de seguridad y rendimiento, un equilibrador de carga ayuda a separar su aplicación de internet.

Además, puede configurar opcionalmente una red privada virtual (VPN), como AWS VPN, que conecta sus recursos basados ​​en la nube a una red privada. Además de una VPN, puede utilizar Amazon VPC, o una red virtual que defina, para facilitar la conexión de recursos privados dentro de un entorno de nube.

AWS cobra por mover datos a través de la red fuera de su nube. También suele cobrar por el movimiento de datos de una región de AWS a otra. Las regiones son áreas geográficas distintas en todo el mundo que abarcan centros de datos y ubicaciones más pequeñas que pueden albergar entornos de AWS. Cuantos más datos mueva, mayores serán sus costos de AWS. Por lo general, los datos entrantes no generan cargos.

Monitoreo en la nube

En cierto sentido, monitorear las aplicaciones basadas en la nube es más fácil que monitorear las locales. La mayoría de los servicios en la nube generan automáticamente eventos y datos de métricas para realizar un seguimiento del rendimiento de las aplicaciones. En las instalaciones, puede generar métricas de rendimiento desde la propia aplicación o medir el rendimiento en función de métricas a nivel de infraestructura, como patrones de tráfico de red, uso de CPU y memoria.

Sin embargo, el monitoreo de aplicaciones en la nube varía según los tipos de datos que expone cada servicio en la nube y la forma en que los datos están disponibles. La supervisión de un servicio de almacenamiento requiere un enfoque diferente a la supervisión de una máquina virtual o un servicio de contenedor.

AWS ofrece herramientas básicas, como AWS CloudWatch, para ayudar a monitorear aplicaciones, pero generalmente no son suficientes para las necesidades de monitoreo de servicio pesado. La mayoría de los equipos dependerán de herramientas de monitoreo de terceros para aumentar, si no reemplazar, las ofertas nativas de AWS. Las soluciones de terceros como Splunk o New Relic brindan una funcionalidad de monitoreo más profunda.

Seguridad en la nube

La seguridad en la nube es un tema complejo, pero se puede resumir con algunos fundamentos generales.

La primera es la autenticación. AWS ofrece diferentes servicios de identidad para configurar qué usuarios o aplicaciones pueden acceder a recursos específicos en la nube. Sin embargo, AWS Identity and Access Management (IAM), que es un elemento fundamental de la seguridad de AWS, no siempre está configurado para restringir el acceso de forma predeterminada. Nunca haga suposiciones sobre la seguridad de sus aplicaciones o recursos en la nube; debe tomar medidas activas para bloquearlos.

El segundo es el cifrado. La mayoría de los datos que se almacenan en la nube no están encriptados de forma predeterminada. Necesita proteger los depósitos de almacenamiento en la nube, las bases de datos y las redes por su cuenta.

El tercer concepto clave es la supervisión de la seguridad. AWS proporciona algunas herramientas, como AWS CloudTrail, que pueden ayudar con las necesidades básicas de monitoreo de seguridad en la nube. Pero estas herramientas por sí solas no son plataformas integrales de seguridad en la nube. Lo más probable es que desee aprovechar las herramientas externas.

Palo Alto Prisma Cloud y Dome9 Arc son ejemplos de plataformas de monitoreo de seguridad y cumplimiento que van más allá de las herramientas nativas de AWS. Ofrecen archivos de políticas más extensos para identificar problemas de seguridad dentro de las configuraciones de AWS y ofrecen funciones de visualización y análisis que las propias herramientas de AWS no ofrecen.

Finalmente, los desarrolladores deben familiarizarse con el modelo de responsabilidad compartida de AWS, que define qué aspectos de seguridad administra AWS y cuáles son responsabilidad de sus clientes.

Servicios y herramientas esenciales de AWS que los desarrolladores necesitan conocer

AWS ofrece más de 200 servicios en la nube. Los desarrolladores no necesitan ser expertos en todos y cada uno de ellos, pero la familiaridad con los siguientes servicios en la nube de Amazon es esencial:

  • Amazon Elastic Compute Cloud (EC2). Como servicio informático estándar de AWS, puede seleccionar entre docenas de configuraciones diferentes de máquinas virtuales, incluidos Linux y Windows, cada una con diferentes recursos de hardware virtual asignados. Después de seleccionar las instancias, puede iniciarlas y alojar aplicaciones en ellas.
  • Servicio de almacenamiento simple de Amazon (S3). El servicio de almacenamiento de objetos de AWS almacena cualquier tipo de datos de forma no estructurada y luego accede a esos datos según sea necesario.
  • Servicio de base de datos relacional de Amazon (RDS). Amazon RDS puede crear y administrar bases de datos utilizando una variedad de motores de base de datos, incluidos, entre otros, MySQL, Microsoft SQL y PostgreSQL.
  • Equilibrio de carga elástico de Amazon (ELB). Amazon ELB proporciona acceso a varios tipos de balanceadores de carga. Cada tipo de balanceador de carga se adapta a un conjunto diferente de casos de uso. Si es nuevo en AWS y está implementando aplicaciones web estándar, lo más probable es que elija la opción Application Load Balancer (ALB) en ELB.
  • Amazon Elastic Kubernetes Service (EKS). Este servicio administrado de Kubernetes es una forma de configurar un clúster de Kubernetes e implementar aplicaciones basadas en contenedores. AWS ofrece otros servicios de contenedores, como Amazon Elastic Container Service (ECS), AWS Fargate y clústeres de Kubernetes autogestionados que utilizan instancias EC2. Sin embargo, EKS es más simple para los desarrolladores que ya están familiarizados con Kubernetes, mientras que ECS puede ser una opción más fácil si es nuevo en los contenedores en general.
  • Amazon CloudWatch. CloudWatch es la herramienta de monitoreo básica para los servicios de AWS. Proporciona un vistazo rápido a la salud y el estado de los servicios de AWS, pero por sí solo es insuficiente para las necesidades de monitoreo avanzadas.
  • AWS Lambda. Los desarrolladores utilizan esta plataforma informática sin servidor para alojar aplicaciones como funciones sin servidor en lugar de en contenedores o máquinas virtuales.
  • AWS Auto Scaling. Con este servicio, usted define reglas sobre cómo escalan sus aplicaciones aumentando el número de instancias de aplicaciones o la distribución de recursos asignadas a las aplicaciones. AWS Auto Scaling administra las aplicaciones automáticamente según los parámetros que establezca.

Además, AWS ofrece una gama de herramientas que los desarrolladores pueden utilizar para interactuar y crear aplicaciones de nube en la plataforma. Algunas de las herramientas clave que deben conocer quienes se inician en AWS son las siguientes:

  • Consola web. La interfaz basada en web para administrar recursos de AWS.
  • Interfaz de línea de comandos de AWS (AWS CLI). También llamada aws-cli, esta CLI le permite administrar recursos desde un shell de comandos.
  • AWS Cloud9. Este entorno de desarrollo integrado (IDE) permite a los desarrolladores crear aplicaciones y, si lo desean, integrarlas con otros servicios de AWS para facilitar la implementación.
  • AWS CloudFormation. Esta herramienta de infraestructura nativa como código (IaC) automatiza la configuración de entornos en la nube mediante archivos de configuración.
  • Kit de desarrollo de software (SDK). AWS proporciona una variedad de SDK para simplificar el desarrollo y la implementación de aplicaciones escritas en varios lenguajes y marcos.

Cómo diseñar una aplicación para AWS

Dada la variedad de servicios disponibles en AWS, los desarrolladores pueden diseñar aplicaciones para la plataforma de manera diferente a como lo harían en las instalaciones.

Por ejemplo, en lugar de ejecutar una aplicación como un monolito, puede dividirla en microservicios y alojar cada microservicio en un contenedor. También puede ejecutar servicios dentro de funciones sin servidor, que pueden ofrecer mejores resultados en cuanto a costos y rendimiento que los contenedores estándar.

Implementar su aplicación en la nube también simplifica el proceso de diseño de su aplicación a escala. Puede utilizar servicios como AWS Auto Scaling para aumentar la capacidad de sus aplicaciones automáticamente en respuesta a cambios en la demanda.

El escalado automático es más difícil de lograr en las instalaciones. Requiere pasos de diseño adicionales para acomodar la adición de más servidores y compartir la carga. También requiere capacidad de reserva para resistir los picos de demanda.

Cómo implementar una aplicación en AWS

Hay varias formas de implementar una aplicación en AWS. El enfoque correcto dependerá del tipo de aplicación que implemente, los servicios en la nube que use para implementarla y cuánto control desee tener sobre cómo se ejecuta.

Implementación de AWS con Elastic Beanstalk

Si es un desarrollador principiante que comienza con AWS, una de las formas más sencillas de implementar una aplicación es usar Elastic Beanstalk. Esta herramienta AWS PaaS automatiza la mayor parte de la configuración y la configuración necesarias para implementar una aplicación web básica en la nube de AWS.

Siga estos pasos para implementar una aplicación de AWS con Beanstalk:

  1. Cree una nueva aplicación en Beanstalk. Esto no significa escribir el código de la aplicación real –debe hacerlo por separado, fuera de Beanstalk–, sino crear una nueva instancia de aplicación para que Beanstalk la administre.
  1. Seleccione la configuración para su aplicación. Beanstalk ofrece entornos preconfigurados para alojar aplicaciones escritas en la mayoría de los lenguajes populares para la programación web.
  1. Cargue su aplicación como un archivo Zip en Beanstalk.
  1. Configure el entorno, la red y las opciones de acceso para su aplicación. Para aplicaciones simples, los valores predeterminados suelen ser suficientes, pero querrá comprender las implicaciones de seguridad y rendimiento de estas configuraciones cuando trabaje con aplicaciones de producción.
  1. Haga clic en Iniciar (Launch) para implementar la aplicación.

Una vez iniciada, la aplicación está disponible en la URL que estableció al configurarla en Elastic Beanstalk. La aplicación está alojada en una instancia EC2, que Beanstalk configura automáticamente en función de las opciones de configuración elegidas durante el proceso de implementación de la aplicación.

Otras opciones de implementación de AWS

Para otros tipos de aplicaciones, hay varios enfoques de implementación de AWS diferentes entre los que elegir. Esta no es una lista completa, pero para los desarrolladores que comienzan, estos son los enfoques más comunes.

  • Configure una instancia EC2 manualmente, luego cargue y configure la aplicación en ella.
  • Implemente código de aplicación en funciones sin servidor en AWS Lambda.
  • Configure un clúster de Kubernetes en EKS y luego implemente aplicaciones de contenedores en él.

Investigue más sobre Desarrollo de software y aplicaciones