Análise detallada de AWS Lambda

A tradución do artigo foi elaborada expresamente para o alumnado do curso "Servizos na nube". Interesado en desenvolverse nesta dirección? Mira a clase maxistral de Egor Zuev (TeamLead en InBit) "Servizo AWS EC2" e únete ao seguinte grupo do curso: comeza o 26 de setembro.

Análise detallada de AWS Lambda

Máis persoas están migrando a AWS Lambda para obter escalabilidade, rendemento, aforro e a capacidade de xestionar millóns ou mesmo billóns de solicitudes ao mes. Para iso, non é necesario xestionar a infraestrutura na que se executa o servizo. E a escala automática permítelle atender miles de solicitudes simultáneas por segundo. Creo que AWS Lambda pódese chamar xustamente un dos servizos de AWS máis populares.

AWS Lambda

AWS Lambda é un servizo informático sen servidor dirixido por eventos que che permite executar código sen aprovisionar ou xestionar servidores e estender outros servizos de AWS mediante lóxica personalizada. Lambda responde automaticamente a varios eventos (chamados disparadores), como solicitudes HTTP a través de Amazon API Gateway, cambios nos datos en depósitos de Amazon S3 ou táboas de Amazon DynamoDB; ou pode executar o seu código mediante chamadas de API usando o SDK de AWS e as transicións de estado en AWS Step Functions.

Lambda executa código nunha infraestrutura informática de alta dispoñibilidade e é totalmente responsable da administración da plataforma subxacente, incluíndo o mantemento do servidor e do sistema operativo, o aprovisionamento de recursos, a escala automática, o seguimento do código e o rexistro. É dicir, só tes que cargar o teu código e configurar como e cando se debe executar. Á súa vez, o servizo encargarase do seu lanzamento e garantirá a alta dispoñibilidade da súa aplicación.

Cando cambiar a Lambda?

AWS Lambda é unha plataforma informática conveniente que é adecuada para unha variedade de casos de uso, sempre que o servizo admita o idioma e o tempo de execución do código. Se queres centrarte no teu código e na lóxica empresarial mentres subcontratas o mantemento, o aprovisionamento e a escala do servidor a un custo razoable, AWS Lambda é definitivamente o camiño a seguir.

Lambda é ideal para crear interfaces de programación e, cando se usa xunto con API Gateway, pode reducir significativamente os custos e chegar ao mercado máis rápido. Existen diferentes formas de usar as funcións e opcións de Lambda para organizar unha arquitectura sen servidor: todos poden escoller algo axeitado segundo o seu obxectivo.

Lambda permítelle realizar unha ampla gama de tarefas. Así, grazas ao soporte de CloudWatch, podes crear tarefas diferidas e automatizar procesos individuais. Non hai restricións sobre a natureza e intensidade de uso do servizo (téñense en conta o consumo de memoria e o tempo), e nada impide traballar de forma sistemática nun microservizo completo baseado en Lambda.

Aquí pode crear accións orientadas a servizos que non se executen continuamente. Un exemplo típico é a escala de imaxes. Mesmo no caso dos sistemas distribuídos, as funcións Lambda seguen sendo relevantes.

Polo tanto, se non quere ocuparse da asignación e xestión de recursos informáticos, probe AWS Lambda; se non precisa de cálculos pesados ​​e que consumen moito recursos, tamén probe AWS Lambda; se o teu código se executa periódicamente, é certo, deberías probar AWS Lambda.

Безопасность

Polo de agora non hai queixas sobre a seguridade. Por outra banda, dado que moitos dos procesos internos e funcións de implementación deste modelo están ocultas ao usuario do ambiente de execución xestionado por AWS Lambda, algunhas regras xeralmente aceptadas de seguridade na nube vólvense irrelevantes.

Como a maioría dos servizos de AWS, Lambda ofrécese nunha base de seguridade e cumprimento compartido entre AWS e o cliente. Este principio reduce a carga operativa do cliente, xa que AWS asume as tarefas de mantemento, administración e supervisión dos compoñentes do servizo, desde o sistema operativo host e a capa de virtualización ata a seguridade física dos activos da infraestrutura.

En concreto, falando de AWS Lambda, AWS é responsable de xestionar a infraestrutura subxacente, os servizos subxacentes asociados, o sistema operativo e a plataforma de aplicacións. Mentres que o cliente é o responsable da seguridade do seu código, almacenando os datos confidenciais, controlando o acceso a este, así como ao servizo e recursos Lambda (Identity and Access Management, IAM), incluso dentro dos límites das funcións utilizadas.

O seguinte diagrama mostra o modelo de responsabilidade compartida tal e como se aplica a AWS Lambda. A responsabilidade de AWS é laranxa e a responsabilidade do cliente é azul. Como podes ver, AWS asume máis responsabilidade polas aplicacións despregadas no servizo.

Análise detallada de AWS Lambda

Modelo de responsabilidade compartida aplicable a AWS Lambda

Tempo de execución Lambda

A principal vantaxe de Lambda é que ao realizar unha función no teu nome, o propio servizo asigna os recursos necesarios. Pode evitar perder tempo e esforzo na administración do sistema e centrarse na lóxica e codificación empresarial.

O servizo Lambda divídese en dous planos. O primeiro é o plano de control. Segundo Wikipedia, o plano de control é a parte da rede responsable de transportar o tráfico de sinalización e o encaminamento. É o compoñente principal que toma decisións globais sobre a subministración, o servizo e a distribución de cargas de traballo. Ademais, o plano de control actúa como a topoloxía de rede do provedor de solucións, responsable do enrutamento e xestión do tráfico.

O segundo plano é o plano de datos. El, como o avión de control, ten as súas propias tarefas. O plano de control proporciona API para xestionar funcións (CreateFunction, UpdateFunctionCode) e controla como Lambda se comunica con outros servizos de AWS. O plano de datos controla a API de Invoke, que executa funcións Lambda. Despois de chamar a unha función, o plano de control asigna ou selecciona un ambiente de execución existente que está preparado previamente para esa función e, a continuación, executa o código nel.

AWS Lambda admite unha variedade de linguaxes de programación, incluíndo Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 e outros, a través dos seus respectivos contornos de execución. AWS actualízaos regularmente, distribúe parches de seguranza e realiza outras actividades de mantemento nestes ambientes. Lambda permítelle usar tamén outros idiomas, sempre que implemente vostede mesmo o tempo de execución adecuado. E entón terás que ocuparte do seu mantemento, incluíndo vixiar a súa seguridade.

Como funciona todo e como realizará o servizo as súas funcións?

Cada función execútase nun ou máis ambientes dedicados, que só existen durante a vida desa función e despois destrúense. Cada entorno fai só unha chamada á vez, pero reutilizase se hai varias chamadas en serie para a mesma función. Todos os ambientes de execución execútanse en máquinas virtuais con virtualización de hardware, as chamadas microVM. Cada microVM está asignada a unha conta de AWS específica e pode ser reutilizada polos ambientes para realizar diferentes funcións dentro desa conta. As microVM están empaquetadas en bloques da plataforma de hardware Lambda Worker, que é propiedade e está operada por AWS. O mesmo tempo de execución non pode ser usado por funcións diferentes, nin as microVM son exclusivas para diferentes contas de AWS.

Análise detallada de AWS Lambda

Modelo de illamento AWS Lambda

O illamento dos ambientes de execución implétase mediante varios mecanismos. No nivel superior de cada ambiente hai copias separadas dos seguintes compoñentes:

  • Código de función
  • Calquera capa Lambda seleccionada para a función
  • Entorno de execución de funcións
  • Espazo mínimo de usuario baseado en Amazon Linux

Utilízanse os seguintes mecanismos para illar diferentes contornos de execución:

  • cgroups: limita o acceso á CPU, memoria, almacenamento e recursos de rede para cada ambiente de execución;
  • espazos de nomes: agrupación de ID de proceso, ID de usuario, interfaces de rede e outros recursos xestionados polo núcleo de Linux. Cada tempo de execución execútase no seu propio espazo de nomes;
  • seccomp-bpf - restrinxe as chamadas ao sistema que se poden usar no tempo de execución;
  • iptables e táboas de enrutamento: illamento dos contornos de execución entre si;
  • chroot: proporciona acceso limitado ao sistema de ficheiros subxacente.

Combinados coas tecnoloxías de illamento propietarias de AWS, estes mecanismos garanten unha separación fiable do tempo de execución. Os entornos illados deste xeito non poden acceder nin modificar datos doutros entornos.

Aínda que se poden executar varios tempos de execución da mesma conta de AWS nunha única microVM, en ningún caso se poden compartir microVM entre diferentes contas de AWS. AWS Lambda só usa dous mecanismos para illar as microVM: instancias EC2 e Firecracker. O illamento de hóspedes en Lambda baseado en instancias EC2 existe desde 2015. Firecracker é un novo hipervisor de código aberto deseñado especificamente por AWS para cargas de traballo sen servidor e introducido en 2018. O hardware físico que executa microVM compártese entre cargas de traballo de diferentes contas.

Gardar ambientes e estados de procesos

Aínda que os tempos de execución de Lambda son exclusivos de diferentes funcións, poden chamar a mesma función repetidamente, o que significa que o tempo de execución pode sobrevivir varias horas antes de ser destruído.

Cada tempo de execución de Lambda tamén ten un sistema de ficheiros escribible accesible a través do directorio /tmp. Non se pode acceder ao seu contido desde outros tempos de execución. En canto á persistencia do estado do proceso, os ficheiros escritos en /tmp existen durante todo o ciclo de vida do ambiente de execución. Isto permite acumular os resultados de varias chamadas, o que é especialmente útil para operacións caras como a carga de modelos de aprendizaxe automática.

Transferencia de datos de chamada

A API de Invoke pódese usar en dous modos: modo de evento e modo de solicitude-resposta. No modo de evento, a chamada engádese a unha cola para a súa execución posterior. No modo de solicitude-resposta, a función chámase instantáneamente coa carga útil proporcionada, despois de que se devolve a resposta. En ambos os casos, a función execútase nun ambiente Lambda, pero con diferentes rutas de carga útil.

Durante as chamadas de solicitude-resposta, a carga útil flúe desde unha API de procesamento de solicitudes (API Caller), como AWS API Gateway ou AWS SDK, ao equilibrador de carga e, a continuación, ao servizo de chamadas Lambda (Invoke Service). Este último determina o ambiente axeitado para executar a función e pasa alí a carga útil para completar a chamada. O equilibrador de carga recibe tráfico protexido por TLS a través de Internet. O tráfico dentro do servizo Lambda, despois do equilibrador de carga, pasa por un VPC interno nunha rexión de AWS específica.

Análise detallada de AWS Lambda

Modelo de procesamento de chamadas AWS Lambda: modo de solicitude-resposta

As chamadas de eventos pódense facer inmediatamente ou engadirse a unha cola. Nalgúns casos, a cola implementarase mediante Amazon SQS (Amazon Simple Queue Service), que pasa as chamadas ao servizo de atención de chamadas Lambda mediante un proceso de sondeo interno. O tráfico transmitido está protexido por TLS e non hai cifrado adicional dos datos almacenados en Amazon SQS.

As chamadas de eventos non devolven respostas; o Lambda Worker simplemente ignora calquera información de resposta. As chamadas baseadas en eventos de Amazon S3, Amazon SNS, CloudWatch e outras fontes son procesadas por Lambda en modo evento. As chamadas de fluxos de Amazon Kinesis e DynamoDB, as colas SQS, o equilibrador de carga de aplicacións e as chamadas de API Gateway procesanse de xeito solicitude-resposta.

Seguimento

Pode supervisar e auditar as funcións de Lambda mediante unha variedade de mecanismos e servizos de AWS, incluídos os seguintes.

Amazon CloudWatch
Recopila varias estatísticas, como o número de solicitudes, a duración das solicitudes e o número de solicitudes que fallaron.

Amazon CloudTrail
Permítelle iniciar sesión, supervisar continuamente e manter a información da actividade da conta asociada á súa infraestrutura de AWS. Terá un historial completo das accións realizadas mediante a Consola de xestión de AWS, o SDK de AWS, as ferramentas de liña de comandos e outros servizos de AWS.

AWS X-Ray
Ofrece visibilidade completa de todas as fases do procesamento de solicitudes na súa aplicación baseándose nun mapa dos seus compoñentes internos. Permite analizar aplicacións durante o desenvolvemento e en ambientes de produción.

AWS Config
Poderás facer un seguimento dos cambios na configuración da función Lambda (incluída a eliminación) e os tempos de execución, as etiquetas, os nomes dos controladores, o tamaño do código, a asignación de memoria, a configuración de tempo de espera e a configuración de concorrencia, así como a función de execución de Lambda IAM, as subredes e as ligazóns de grupos de seguranza. .

Conclusión

AWS Lambda ofrece un potente conxunto de ferramentas para crear aplicacións seguras e escalables. Moitas das prácticas de seguridade e cumprimento de AWS Lambda son as mesmas que noutros servizos de AWS, aínda que hai excepcións. Desde marzo de 2019, Lambda cumpre co SOC 1, SOC 2, SOC 3, PCI DSS, Health Insurance Portability and Accountability Act (HIPAA) e outras normativas. Polo tanto, cando estea pensando en implementar a súa próxima aplicación, considere o servizo AWS Lambda: pode ser o mellor axeitado para a súa tarefa.

Fonte: www.habr.com

Engadir un comentario