La certificación AWS Certified Developer – Associate se ha establecido como una de las certificaciones it top en todo el mundo para medir la competencia en el desarrollo de aplicaciones en la plataforma AWS.
Esta certificación valida la capacidad de un profesional para utilizar los servicios de AWS, desarrollar y mantener aplicaciones, y diseñar soluciones eficientes y escalables.
Si crees que esta certificación es demasiado avanzada para ti, quiero presentarte mi libro teórico y práctico para aprobar de Azure Fundamentals. Tienes la opción económica en Kindle o leerlo gratis. 👈
Desde el desarrollo de aplicaciones alojadas en AWS hasta la solución de problemas, la optimización y la inclusión de observabilidad, este artículo es una guía esencial para aquellos que buscan avanzar en su carrera en la tecnología en la nube.
🖥 Dominio 1: Desarrollo con Servicios de AWS
Este dominio abarca las habilidades y conocimientos
necesarios para el desarrollo efectivo con los servicios de AWS, con foco en
tres tareas principales: desarrollar código para aplicaciones alojadas en AWS,
desarrollar código para AWS Lambda y utilizar almacenes de datos en el
desarrollo de aplicaciones.
Tarea 1: Desarrollar un Código para Aplicaciones Alojadas en AWS
Conocimientos
- Patrones
Arquitectónicos:
- Comprender
patrones como impulsados por eventos, microservicios, monolíticos,
coreografía, coordinación y distribución.
- Idempotencia:
- Comprender
y aplicar la idempotencia en las operaciones.
- Diferencias
entre Conceptos con Estado y sin Estado:
- Saber
la diferencia y aplicar los conceptos de programación con estado y sin
estado.
- Diferencias
entre Componentes Estrechamente Acoplados y Débilmente Acoplados:
- Diseñar
sistemas con acoplamiento adecuado para mayor flexibilidad.
- Patrones
de Diseño Tolerantes a Fallos:
- Implementar
patrones como reintentos con retroceso exponencial y fluctuación, y colas
de mensajes no entregados.
- Diferencias
entre Patrones Sincrónicos y Asincrónicos:
- Comprender
y aplicar patrones sincrónicos y asincrónicos en la comunicación.
Habilidades
- Creación
de Aplicaciones Tolerantes a Errores y Resistentes:
- Usar
lenguajes como Java, C#, Python, JavaScript, TypeScript y Go para crear
aplicaciones robustas.
- Creación,
Ampliación y Mantenimiento de las API:
- Gestionar
transformaciones de respuestas o solicitudes, reglas de validación y
anulación de códigos de estado en las API.
- Escritura
y Ejecución de Pruebas de Unidades:
- Utilizar
AWS SAM para escribir y ejecutar pruebas de unidades.
- Escritura
de Códigos para Usar los Servicios de Mensajería:
- Implementar
código para trabajar con servicios de mensajería en AWS.
- Escritura
de Códigos que Interactúen con los Servicios de AWS:
- Utilizar
API y SDK de AWS para interactuar con los servicios.
- Gestión
del Flujo de Datos Mediante AWS:
- Controlar
el flujo de datos usando los servicios de AWS.
Tarea 2: Desarrollar un Código para AWS Lambda
Conocimientos
- Mapeo
de Fuentes de Eventos:
- Comprender
cómo se mapean los eventos a las funciones de Lambda.
- Aplicaciones
sin Estado:
- Desarrollar
aplicaciones sin estado para AWS Lambda.
- Pruebas
de Unidad:
- Escribir
y ejecutar pruebas de unidades para código de Lambda.
- Arquitecturas
Impulsadas por Eventos:
- Comprender
y aplicar arquitecturas basadas en eventos.
- Escalabilidad:
- Gestionar
la escalabilidad en las funciones de Lambda.
- Acceso
a Recursos Privados en VPC desde el Código de Lambda:
- Administrar
el acceso a recursos dentro de una VPC.
Habilidades
- Configuración
de Funciones de Lambda:
- Configurar
parámetros como memoria, simultaneidad, tiempo de espera, tiempo de
ejecución, controlador, capas, extensiones, desencadenadores y destinos.
- Gestión
del Ciclo de Vida de los Eventos y los Errores:
- Manejar
eventos y errores usando código y destinos de Lambda.
- Escritura
y Ejecución del Código de Prueba:
- Utilizar
servicios y herramientas de AWS para pruebas.
- Integración
de Funciones de Lambda con los Servicios de AWS:
- Integrar
Lambda con otros servicios en AWS.
- Ajuste
de las Funciones de Lambda para un Rendimiento Óptimo:
- Optimizar
el rendimiento de las funciones de Lambda.
Tarea 3: Utilizar Almacenes de Datos en el Desarrollo de Aplicaciones
Conocimientos
- Bases
de Datos Relacionales y No Relacionales:
- Comprender
y trabajar con ambos tipos de bases de datos.
- Operaciones
CRUD:
- Implementar
operaciones de creación, lectura, actualización y eliminación.
- Claves
de Partición de Alta Cardinalidad:
- Usar
claves de partición para un acceso de partición equilibrado.
- Opciones
de Almacenamiento en la Nube:
- Comprender
opciones como archivos, objetos y bases de datos.
- Modelos
de Consistencia de Bases de Datos:
- Trabajar
con modelos de consistencia como fuertemente consistentes y eventualmente
consistentes.
- Diferencias
entre las Operaciones de Consulta y Escaneo:
- Entender
y aplicar consultas y escaneos en bases de datos.
- Claves
e Indexación de Amazon DynamoDB:
- Utilizar
claves e indexación en DynamoDB.
- Estrategias
de Almacenamiento en Caché:
- Implementar
estrategias como escritura simultánea, lectura simultánea, carga diferida
y TTL.
- Administración
de Niveles y Ciclos de Vida de Amazon S3:
- Gestionar
el almacenamiento y los ciclos de vida en S3.
- Diferencias
entre Patrones de Almacenamiento de Datos Efímeros y Persistentes:
- Distinguir
entre almacenamiento efímero y persistente.
Habilidades
- Serialización
y Deserialización de Datos:
- Proveer
persistencia a un almacén de datos.
- Uso,
Administración y Mantenimiento de Almacenes de Datos:
- Gestionar
almacenes de datos en aplicaciones.
- Administración
de los Ciclos de Vida de los Datos:
- Gestionar
la persistencia y la disponibilidad de los datos.
- Uso
de Servicios de Almacenamiento en Caché de Datos:
- Implementar
almacenamiento en caché para un acceso más rápido a los datos.
En resumen, el dominio 1 se centra en el desarrollo efectivo y eficiente de aplicaciones utilizando AWS, con habilidades específicas en la escritura de código, la gestión de datos y la configuración de servicios en la nube.
La comprensión y aplicación de patrones arquitectónicos, estrategias de
falla, y las diferencias en conceptos clave, tales como el estado, el
acoplamiento, y patrones sincrónicos y asincrónicos son esenciales.
⚠️ Dominio 2: Seguridad.
Tarea 1: Implementar la Autenticación o la Autorización para Aplicaciones y Servicios de AWS
Conocimientos
- Identidad
Federada:
- SAML
(Security Assertion Markup Language): Permite la autenticación y
autorización entre diferentes dominios.
- OpenID
Connect: Es un protocolo de autenticación basado en OAuth 2.0.
- Amazon
Cognito: Proporciona autenticación, autorización y administración de usuarios.
- Tokens
de Portador:
- JSON
Web Token (JWT): Es un estándar para crear tokens que afirman algunos
datos.
- OAuth:
Protocolo de autorización que permite a aplicaciones obtener acceso
limitado a cuentas de usuario.
- AWS
Security Token Service (STS): Proporciona credenciales temporales
para acceder a los servicios de AWS.
- Comparación
de Grupos de Usuarios y Grupos de Identidades en Amazon Cognito:
Definición y diferenciación de los usuarios y cómo estos se relacionan con
los grupos en Cognito.
- Políticas
Basadas en Recursos, Servicios, y Principales: Gestión de los derechos
de acceso a los recursos.
- Control
del Acceso Basado en Roles (RBAC): Gestión de acceso basado en el rol
del usuario dentro de la organización.
- Autorización
de Aplicaciones que usa ACL (Listas de Control de Acceso): Restricción
de acceso a los recursos.
- Principio
de Mínimo Privilegio: Otorgar sólo los permisos necesarios.
- Diferencias
Entre las Políticas Administradas de AWS y las Administradas por el
Cliente: Entender cómo y quién controla y administra las políticas.
- Identity and Access Management (IAM): Herramienta de AWS para gestionar usuarios y permisos.
Habilidades
- Implementar
el Acceso Federado: Usar servicios como Cognito e IAM para permitir el
acceso federado.
- Protección
de Aplicaciones Mediante Tokens: Usar tokens para validar y asegurar
la identidad.
- Configuración
del Acceso Programático a AWS: Habilitar el acceso a través de la API
de AWS.
- Realización
de Llamadas Autenticadas a los Servicios de AWS: Cómo hacer llamadas
seguras.
- Asumir
un Rol de IAM: Asignar y asumir roles de IAM.
- Definición
de Permisos: Establecer quién puede hacer qué en AWS.
Tarea 2: Implementar el Cifrado Mediante los Servicios de AWS
Conocimientos
- Cifrado
en Reposo y en Tránsito: Proteger datos almacenados y durante la
transmisión.
- Administración
de Certificados: Uso de AWS Certificate Manager.
- Protección
de Claves: Rotación y manejo seguro de claves.
- Diferencias
Entre Cifrado del Cliente y del Servidor: Comprender cuándo y por qué
usar cada uno.
- Diferencias Entre las Claves de AWS Key Management Service (KMS) Administradas por AWS y las Administradas por el Cliente: Quién tiene el control y la responsabilidad sobre las claves.
Habilidades
- Uso
de Claves de Cifrado: Cómo utilizar claves para cifrar/descifrar
datos.
- Generación
de Certificados y Claves SSH: Crear certificados y claves para
seguridad.
- Uso
del Cifrado más allá de los Límites de la Cuenta: Extender la
seguridad entre cuentas.
- Activación
y Desactivación de la Rotación de Clave: Mantener la seguridad
mediante la rotación de claves.
Tarea 3: Administrar Información Confidencial en el Código de la Aplicación
Conocimientos
- Clasificación
de Datos: Identificación de datos sensibles como PII y PHI.
- Variables
de Entorno: Cómo se utilizan para almacenar información confidencial.
- Administración
de Secretos: Uso de AWS Secrets Manager y almacén de parámetros.
- Gestión
Segura de Credenciales: Procesos y herramientas para manejar
credenciales de forma segura.
Habilidades
- Cifrado
de Variables de Entorno: Proteger información sensible en las
variables de entorno.
- Uso
de Servicios de Administración de Secretos: Utilizar herramientas
específicas para manejar datos confidenciales.
- Desinfección
de Información Confidencial: Procesos para asegurarse de que los datos
sensibles no sean expuestos.
Conclusión
El Dominio 2 de Seguridad en AWS es amplio y abarca desde la autenticación y autorización hasta el manejo seguro de información confidencial.
Entender estos conceptos y habilidades es crucial para cualquier profesional de la seguridad en la nube, y AWS proporciona una variedad de servicios y herramientas que facilitan la implementación de estas mejores prácticas de seguridad.
🖥️ Dominio 3: Implementación
La implementación es un aspecto crítico de cualquier ciclo de desarrollo de software.
En el contexto de AWS, abarca la preparación de
artefactos de aplicación, pruebas en entornos de desarrollo, automatización de
pruebas de implementación y uso de servicios de CI/CD. Veamos en detalle cada
una de las tareas en este dominio.
Tarea 1: Preparar los Artefactos de las Aplicaciones para Implementarlos en AWS
Conocimientos
- Acceso
a Datos de Configuración de Aplicaciones:
- Utilizar
AWS AppConfig, Secrets Manager, y almacenamiento de parámetros para
manejar la configuración.
- Opciones
de Paquetes de Implementación, Capas y Configuración de Lambda:
- Entender
las diversas opciones para empaquetar y configurar funciones Lambda.
- Herramientas
de Control de Versiones basadas en Git:
- Uso
de Git y AWS CodeCommit para el manejo de versiones.
- Imágenes
de Contenedores:
- Trabajar
con contenedores para la implementación.
Habilidades
- Administración
de Dependencias del Módulo de Código:
- Manejar
variables de entorno, archivos de configuración, e imágenes de
contenedores.
- Organización
de Archivos y Estructura de Directorios:
- Diseñar
una estructura eficiente para la implementación de aplicaciones.
- Uso
de Repositorios de Código:
- Trabajar
con repositorios para almacenar y gestionar código.
- Uso
de Requisitos de Aplicaciones para Recursos:
- Configurar
los recursos según las necesidades de la aplicación (memoria, núcleos,
etc.).
Tarea 2: Probar Aplicaciones en Entornos de Desarrollo
Conocimientos
- Funciones
de los Servicios de AWS para Implementación:
- Conocer
los servicios de AWS que ayudan en la implementación de aplicaciones.
- Pruebas
de Integración con Puntos de Enlace Simulados:
- Entender
cómo probar la integración con servicios simulados.
- Versiones
y Alias de Lambda:
- Manejar
diferentes versiones y alias en funciones Lambda.
Habilidades
- Pruebas
de Código Implementado con AWS:
- Usar
herramientas y servicios de AWS para probar el código.
- Realización
de Integración Simulada para las API:
- Probar
cómo las APIs interactúan con otras partes de la aplicación.
- Prueba
de Aplicaciones Mediante Puntos de Enlace de Desarrollo:
- Utilizar
etapas en Amazon API Gateway para probar diferentes entornos.
- Implementación
de Actualizaciones en Entornos Existentes:
- Implementar
cambios y actualizaciones en entornos ya establecidos.
Tarea 3: Automatizar las Pruebas de Implementación
Conocimientos
- Etapas
de API Gateway:
- Entender
cómo administrar y utilizar diferentes etapas en API Gateway.
- Ramas
y Acciones en CI/CD:
- Comprender
cómo funciona la integración continua y la entrega continua en AWS.
- Pruebas
de Software Automatizadas:
- Familiarizarse
con las pruebas de unidad y pruebas simuladas.
Habilidades
- Creación
de Eventos de Prueba de Aplicaciones:
- Definir
y utilizar eventos de prueba para probar diferentes partes de una
aplicación.
- Implementación
de Recursos de API en Varios Entornos:
- Gestionar
y utilizar recursos de API en diferentes entornos de desarrollo, prueba y
producción.
- Creación
de Entornos de Aplicaciones para Pruebas de Integración:
- Utilizar
versiones aprobadas y etiquetas para manejar entornos de prueba.
- Implementación
de Plantillas de Infraestructura como Código (IaC):
- Utilizar
plantillas como AWS SAM y CloudFormation para automatizar la
implementación de infraestructura.
- Administración
de Entornos en Servicios de AWS Individuales:
- Diferenciar
y gestionar entornos separados como desarrollo, prueba y producción.
Tarea 4: Implementar un Código Mediante los Servicios de CI/CD de AWS
Conocimientos
- Herramientas
de Control de Versiones basadas en Git:
- Utilizar
Git y AWS CodeCommit para control de versiones.
- Aprobaciones
Manuales y Automatizadas en AWS CodePipeline:
- Configurar
y utilizar aprobaciones en el proceso de CI/CD.
- Acceso
a Configuraciones de Aplicaciones desde AWS AppConfig y Secrets Manager:
- Manejar
configuraciones de aplicación y secretos en el proceso de implementación.
- Flujos
de Trabajo de CI/CD con Servicios de AWS:
- Diseñar
y utilizar flujos de trabajo de CI/CD en AWS.
- Implementación
de Aplicaciones con Herramientas de AWS:
- Utilizar
herramientas como CloudFormation, AWS CDK, AWS SAM, y más para la
implementación.
- Opciones
de Empaquetado de Implementación de Lambda:
- Entender
diferentes métodos para empaquetar y desplegar funciones Lambda.
- Etapas
de API Gateway y Dominios Personalizados:
- Utilizar
etapas y dominios personalizados en API Gateway.
- Estrategias
de Implementación:
- Entender
y aplicar diferentes estrategias de implementación como canary,
azul/verde, continuo.
Habilidades
- Actualización
de Plantillas de IaC Existentes:
- Modificar
y mantener plantillas de IaC como AWS SAM y CloudFormation.
- Administración
de Entornos de Aplicaciones con AWS:
- Utilizar
servicios de AWS para manejar diferentes entornos de aplicación.
- Implementación
de una Versión de la Aplicación con Estrategias de Implementación:
- Utilizar
diferentes estrategias para implementar versiones de la aplicación.
- Confirmación
de Código en Repositorio para Invocar Acciones:
- Integrar
el código en un repositorio para iniciar procesos de construcción, prueba
e implementación.
- Uso
de Flujos de Trabajo Coordinados para Implementar en Diferentes Entornos:
- Coordinar
la implementación en diferentes entornos utilizando flujos de trabajo.
- Realización
de Restauraciones de Aplicaciones con Estrategias de Implementación:
- Utilizar
estrategias existentes para realizar restauraciones en caso de fallas.
- Utilización
de Etiquetas y Ramas para Administración de Versiones:
- Utilizar
etiquetas y ramas en Git para gestionar diferentes versiones y
lanzamientos.
- Utilización
de Configuraciones de Tiempo de Ejecución para Crear Implementaciones
Dinámicas:
- Utilizar
variables y configuraciones en tiempo de ejecución para crear
implementaciones flexibles y dinámicas.
En resumen, el dominio de implementación en AWS cubre un amplio rango de conocimientos y habilidades enfocados en la preparación, prueba, automatización, y entrega continua de aplicaciones.
Los desarrolladores deben estar bien versados en estas áreas para implementar soluciones eficientes y eficaces en AWS.
🔋 Dominio 4: Solución de Problemas y Optimización
Este dominio abarca las tareas esenciales en la solución de
problemas y la optimización de aplicaciones en AWS, enfocándose en el análisis
de la causa raíz, la inclusión de la observabilidad en el código, y la
optimización de las aplicaciones utilizando diversos servicios y funciones de
AWS.
Tarea 1: Ayudar en un Análisis de la Causa Raíz
Conocimientos
- Sistemas
de Registro y Supervisión:
- Comprender
y aplicar las técnicas de registro y monitoreo en AWS.
- Lenguajes
para Consultas de Registro:
- Utilizar
Amazon CloudWatch Logs Insights para realizar consultas.
- Visualizaciones
de Datos:
- Interpretar
y utilizar visualizaciones de datos para facilitar el análisis.
- Herramientas
de Análisis de Código:
- Aplicar
herramientas que ayuden a inspeccionar y analizar el código.
- Códigos
de Error HTTP Comunes:
- Identificar
y manejar errores HTTP comunes en la aplicación.
- Excepciones
Comunes Generadas por los SDK:
- Reconocer
y tratar excepciones comunes en SDKs de AWS.
- Mapas
de Servicios en AWS X-Ray:
- Utilizar
AWS X-Ray para visualizar y analizar las aplicaciones.
Habilidades
- Depuración
del Código para Identificar Defectos:
- Usar
herramientas y técnicas para depurar y encontrar defectos en el código.
- Interpretación
de Métricas, Registros y Seguimientos de Aplicaciones:
- Analizar
métricas y registros para entender el comportamiento de la aplicación.
- Consulta
de Registros para Encontrar Datos Relevantes:
- Realizar
consultas en registros para localizar información específica.
- Implementación
de Métricas Personalizadas:
- Utilizar
el formato EMF de CloudWatch para métricas personalizadas.
- Revisión
del Estado de las Aplicaciones:
- Utilizar
paneles e información para mantener el estado de la aplicación.
- Solución
de Errores de Implementación:
- Utilizar
registros de salida de servicio para solucionar problemas de
implementación.
Tarea 2: Incluir Observabilidad en el Código
Conocimientos
- Seguimiento
Distribuido:
- Implementar
y utilizar seguimiento distribuido en las aplicaciones.
- Diferencias
entre Registro, Supervisión y Observabilidad:
- Comprender
las diferencias clave y aplicar cada concepto de manera efectiva.
- Registro
Estructurado:
- Utilizar
registros estructurados para mejorar la legibilidad y el análisis.
- Métricas
de Aplicaciones:
- Trabajar
con métricas personalizadas, incrustadas e integradas en la aplicación.
Habilidades
- Implementación
de una Estrategia de Registro Eficaz:
- Diseñar
y aplicar una estrategia de registro que documente el comportamiento y
estado de las aplicaciones.
- Implementación
de un Código que Emite Métricas Personalizadas:
- Crear
código que genere métricas personalizadas para un seguimiento específico.
- Incorporación
de Anotaciones para los Servicios de Seguimiento:
- Añadir
anotaciones relevantes para un seguimiento efectivo de los servicios.
- Implementación
de Alertas de Notificación:
- Configurar
alertas y notificaciones para acciones específicas.
- Implementación
del Seguimiento mediante AWS:
- Utilizar
servicios y herramientas de AWS para el seguimiento de aplicaciones.
Tarea 3: Optimizar las Aplicaciones mediante los Servicios y las Funciones de AWS
Conocimientos
- Almacenamiento
en Caché:
- Entender
y aplicar técnicas de almacenamiento en caché para mejorar el
rendimiento.
- Simultaneidad:
- Gestionar
simultaneidad para optimizar el rendimiento de la aplicación.
- Servicios
de Mensajería:
- Utilizar
Amazon SQS y Amazon SNS para optimizar la mensajería.
Habilidades
- Creación
de Perfiles de Rendimiento de Aplicaciones:
- Evaluar
y mejorar el rendimiento de las aplicaciones.
- Determinación
de la Memoria y la Potencia de Cómputo Mínimas:
- Identificar
los requisitos mínimos de recursos para garantizar un funcionamiento
eficiente.
- Uso
de Políticas de Filtro de Suscripción para Optimizar la Mensajería:
- Utilizar
políticas de filtro para gestionar la mensajería de manera efectiva.
- Almacenamiento
en Caché del Contenido según los Encabezados de las Solicitudes:
- Utilizar
técnicas de almacenamiento en caché para optimizar las respuestas a las
solicitudes.
Por lo tanto, el dominio 4 se enfoca en la solución de problemas y la optimización dentro del entorno de AWS.
Esto incluye la habilidad para diagnosticar y resolver problemas, incorporar observabilidad en el código y optimizar las aplicaciones utilizando servicios y características específicas de AWS.
La competencia en este dominio es vital para mantener y mejorar la eficiencia, eficacia y resiliencia de las aplicaciones en AWS.
▶️ ¡Suscríbete Gratis! Aprende mediante videos