AWS Lambda-nın ətraflı təhlili

Məqalənin tərcüməsi kursun tələbələri üçün xüsusi hazırlanmışdır "Bulud xidmətləri". Bu istiqamətdə inkişaf etməkdə maraqlısınız? Egor Zuevin master-klassına baxın (InBit-də Komanda rəhbəri) "AWS EC2 Xidməti" və kursun növbəti qrupuna qoşulun: 26 sentyabrda başlayın.

AWS Lambda-nın ətraflı təhlili

Getdikcə daha çox insan miqyaslılıq, performans, xərclərə qənaət və ayda milyonlarla və hətta trilyonlarla sorğuları emal etmək imkanı üçün AWS Lambda-ya keçir. Bunun üçün xidmətin işlədiyi infrastrukturu idarə etməyə ehtiyac yoxdur. Avtomatik miqyaslama sizə saniyədə minlərlə paralel sorğuya xidmət etməyə imkan verir. Düşünürəm ki, AWS Lambda haqlı olaraq ən çox tələb olunan AWS xidmətlərindən biri adlandırıla bilər.

AWS Lambda

AWS Lambda, serverləri təmin etmədən və ya idarə etmədən kodu işlətməyə və fərdi məntiqə əsaslanan digər AWS xidmətlərini genişləndirməyə imkan verən hadisəyə əsaslanan serversiz hesablama xidmətidir. Lambda avtomatik olaraq Amazon API Gateway vasitəsilə HTTP sorğuları, Amazon S3 vedrələrindəki məlumat dəyişiklikləri və ya Amazon DynamoDB cədvəlləri kimi müxtəlif hadisələrə (sözdə tetikleyiciler) cavab verir; və ya AWS Step Functions-da AWS SDK və vəziyyət keçidlərindən istifadə edərək API zəngləri vasitəsilə kodunuzu işlədə bilərsiniz.

Lambda yüksək əlçatan hesablama infrastrukturunda kod işlədir və server və əməliyyat sisteminə texniki xidmət, resurs təminatı, avtomatik miqyaslama, kod monitorinqi və giriş daxil olmaqla, əsas platformanın idarə edilməsi üçün tam məsuliyyət daşıyır. Yəni, sadəcə kodunuzu yükləməlisiniz və onun necə və nə vaxt icra olunacağını konfiqurasiya etməlisiniz. Öz növbəsində, xidmət işə salınması ilə məşğul olacaq və tətbiqinizi yüksək dərəcədə əlçatan edəcək.

Lambdaya nə vaxt keçmək lazımdır?

AWS Lambda, əlbəttə ki, kodunuzun dili və işləmə müddəti xidmət tərəfindən dəstəkləndiyi müddətcə, bir çox istifadə halları üçün uyğun, istifadəsi asan hesablama platformasıdır. Əgər münasib qiymətə üçüncü tərəf satıcısına serverə texniki qulluq, təchizat və miqyas verərkən koda və biznes məntiqinə diqqət yetirmək istəyirsinizsə, mütləq AWS Lambda-ya keçməyi düşünməlisiniz.

Lambda API qurmaq üçün idealdır və API Gateway ilə istifadə edildikdə, xərcləri əhəmiyyətli dərəcədə azalda və bazara daha tez çıxa bilərsiniz. Lambda funksiyalarından istifadə etməyin müxtəlif yolları və serversiz arxitekturanın təşkili variantları var - hər kəs öz məqsədinə uyğun olanı seçə bilər.

Lambda sizə geniş tapşırıqları yerinə yetirməyə imkan verir. Beləliklə, CloudWatch dəstəyi sayəsində siz gözlənilən tapşırıqlar yarada və fərdi prosesləri avtomatlaşdıra bilərsiniz. Xidmətdən istifadənin təbiəti və intensivliyi ilə bağlı heç bir məhdudiyyət yoxdur (yaddaş istehlakı və vaxt nəzərə alınır) və heç bir şey sizə Lambda əsaslı tam hüquqlu mikroservis üzərində sistemli şəkildə işləməyə mane olmur.

Burada daim yerinə yetirilməyən xidmət yönümlü hərəkətlər yarada bilərsiniz. Tipik bir nümunə görüntü miqyasıdır. Hətta paylanmış sistemlərdə belə Lambda funksiyaları öz aktuallığını itirmir.

Beləliklə, hesablama resurslarının ayrılması və idarə edilməsi ilə məşğul olmaq istəmirsinizsə, AWS Lambda-nı sınayın; ağır, resurs tələb edən hesablamalara ehtiyacınız yoxdursa, AWS Lambda-nı da sınayın; kodunuz vaxtaşırı işləyirsə - hər şey düzgündür, siz AWS Lambda-nı sınamalısınız.

təhlükəsizlik

Hələlik təhlükəsizliklə bağlı heç bir şikayət yoxdur. Digər tərəfdən, bu modelin bir çox daxili prosesləri və tətbiqi təfərrüatları AWS Lambda idarə olunan iş vaxtının istifadəçisindən gizləndiyi üçün bəzi ümumi bulud təhlükəsizliyi qaydaları əhəmiyyətsiz olur.

Əksər AWS xidmətləri kimi, Lambda təhlükəsizlik və uyğunluq üçün AWS və müştərinin ortaq məsuliyyəti altında təmin edilir. Bu prinsip müştərinin əməliyyat yükünü azaldır, çünki AWS əsas əməliyyat sistemindən və virtuallaşdırma səviyyəsindən infrastruktur aktivlərinin fiziki təhlükəsizliyinə qədər xidmətin komponentlərinin saxlanması, idarə edilməsi və nəzarəti ilə məşğul olur.

Xüsusilə AWS Lambda haqqında danışarkən, AWS əsas infrastrukturun, əlaqəli əsas xidmətlərin, əməliyyat sisteminin və tətbiq platformasının idarə edilməsinə cavabdehdir. Müştəri öz kodunun təhlükəsizliyinə, məxfi məlumatların saxlanmasına, onlara girişə nəzarətə, həmçinin Lambda xidmətinə və resurslarına (Identity and Access Management, IAM), o cümlədən istifadə edilən funksiyalar çərçivəsində cavabdehdir.

Aşağıdakı diaqram AWS Lambda üçün tətbiq olunan paylaşılan məsuliyyət modelini göstərir. AWS məsuliyyət sahəsi narıncı, müştərinin məsuliyyəti isə mavi rəngdədir. Gördüyünüz kimi, AWS xidmətdə yerləşdirilən tətbiqlər üçün daha çox məsuliyyət daşıyır.

AWS Lambda-nın ətraflı təhlili

AWS Lambda-ya tətbiq olunan Paylaşılan Məsuliyyət Modeli

Lambda işləmə müddəti

Lambda-nın əsas üstünlüyü ondan ibarətdir ki, sizin adınıza bir funksiya yerinə yetirməklə, xidmət özü lazımi resursları ayırır. Siz sistem idarəçiliyində vaxta və səyə qənaət edə, biznes məntiqi və kodlaşdırmaya diqqət yetirə bilərsiniz.

Lambda xidməti iki təyyarəyə bölünür. Birincisi idarəetmə təyyarəsidir. Vikipediyaya görə, idarəetmə təyyarəsi siqnal trafikinin və marşrutun nəqlinə cavabdeh olan şəbəkə hissəsidir. İş yüklərinin bölüşdürülməsi, saxlanması və paylanması ilə bağlı qlobal qərarlar qəbul edən əsas komponentdir. Bundan əlavə, idarəetmə müstəvisi marşrutlaşdırma və trafikin idarə edilməsi üçün cavabdeh olan həll provayderinin şəbəkə topologiyası kimi çıxış edir.

İkinci müstəvi məlumat müstəvisidir. Onun, idarəetmə təyyarəsi kimi, öz vəzifələri var. İdarəetmə müstəvisi funksiyaları idarə etmək üçün API təmin edir (CreateFunction, UpdateFunctionCode) və Lambda-nın digər AWS xidmətləri ilə necə qarşılıqlı əlaqədə olduğuna nəzarət edir. Məlumat təyyarəsi Lambda funksiyalarını idarə edən Invoke API-ni idarə edir. Funksiya çağırıldıqdan sonra idarəetmə müstəvisi həmin funksiya üçün hazırlanmış mövcud iş vaxtı mühitini ya ayırır və ya seçir, sonra isə oradakı kodu icra edir.

AWS Lambda Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2 və daha çox daxil olmaqla bir çox proqramlaşdırma dillərini müvafiq iş vaxtları vasitəsilə dəstəkləyir. AWS onları müntəzəm olaraq yeniləyir, təhlükəsizlik yamaqlarını paylayır və bu mühitlərdə digər texniki xidmət fəaliyyətlərini həyata keçirir. Lambda sizə uyğun iş vaxtını özünüz həyata keçirdiyiniz müddətcə başqa dillərdən istifadə etməyə imkan verir. Və sonra təhlükəsizliyin monitorinqi də daxil olmaqla, onun saxlanması ilə məşğul olmalı olacaqsınız.

Bütün bunlar necə işləyir və xidmət sizin funksiyalarınızı necə yerinə yetirəcək?

Hər bir funksiya yalnız həmin funksiyanın həyat dövrü ərzində mövcud olan və sonra məhv edilən bir və ya bir neçə xüsusi mühitdə işləyir. Hər bir mühit eyni anda yalnız bir zəng edir, lakin eyni funksiyaya çoxlu ardıcıl zənglər olduqda o, təkrar istifadə olunur. Bütün iş vaxtları microVM adlanan hardware virtualizasiyası olan virtual maşınlarda işləyir. Hər bir microVM xüsusi AWS hesabına təyin edilir və həmin hesabda müxtəlif funksiyaları yerinə yetirmək üçün mühitlər tərəfindən təkrar istifadə edilə bilər. MicroVM-lər AWS-ə məxsus və idarə olunan Lambda Worker aparat platformasının tikinti bloklarına yığılmışdır. Eyni işləmə müddəti müxtəlif funksiyalar tərəfindən istifadə edilə bilməz və microVM-lər fərqli AWS hesabları üçün unikal deyil.

AWS Lambda-nın ətraflı təhlili

AWS Lambda-da izolyasiya modeli

İş vaxtının izolyasiyası bir neçə mexanizmdən istifadə etməklə həyata keçirilir. Hər bir mühitin yuxarı səviyyəsində aşağıdakı komponentlərin ayrıca nüsxələri var:

  • Funksiya kodu
  • Funksiya üçün seçilmiş istənilən Lambda təbəqələri
  • Funksiya icra müddəti
  • Amazon Linux-a əsaslanan minimum istifadəçi sahəsi

Müxtəlif iş vaxtlarını təcrid etmək üçün aşağıdakı mexanizmlərdən istifadə olunur:

  • cgroups - hər bir iş mühiti üçün CPU, yaddaş, yaddaş və şəbəkə bant genişliyinə girişi məhdudlaşdırmaq;
  • ad boşluqları Linux nüvəsi tərəfindən idarə olunan proses identifikatorlarının, istifadəçi identifikatorlarının, şəbəkə interfeyslərinin və digər resursların qruplaşdırılmasıdır. Hər bir iş vaxtı öz ad məkanında işləyir;
  • seccomp-bpf - İş vaxtında istifadə edilə bilən sistem zənglərini məhdudlaşdırır.
  • iptables və marşrutlaşdırma cədvəlləri - iş mühitlərinin öz aralarında izolyasiyası;
  • chroot - əsas fayl sisteminə məhdud giriş imkanı verir.

AWS xüsusi izolyasiya texnologiyaları ilə birlikdə bu mexanizmlər iş vaxtı mühitlərinin təhlükəsiz şəkildə ayrılmasını təmin edir. Bu şəkildə təcrid olunmuş mühitlər digər mühitlərin məlumatlarına daxil ola və ya onları dəyişdirə bilməz.

Baxmayaraq ki, eyni AWS hesabının çoxsaylı iş vaxtı bir microVM-də işləyə bilər, lakin heç bir halda microVM-lər müxtəlif AWS hesabları arasında paylaşıla bilməz. AWS Lambda microVM-ləri təcrid etmək üçün yalnız iki mexanizmdən istifadə edir: EC2 nümunələri və Firecracker. EC2 nümunələrinə əsaslanan Lambda-da qonaqların təcrid edilməsi 2015-ci ildən bəri mövcuddur. Firecracker, serversiz iş yükləri üçün AWS tərəfindən xüsusi olaraq hazırlanmış və 2018-ci ildə təqdim edilmiş yeni açıq mənbəli hipervizordur. MicroVM-ləri idarə edən fiziki avadanlıq müxtəlif hesablar üzrə iş yükləri arasında paylaşılır.

Mühitlərin və proses vəziyyətlərinin saxlanması

Lambda işləmə müddətləri funksiyalar arasında unikal olsa da, onlar eyni funksiyanı dəfələrlə çağıra bilərlər, yəni işləmə müddəti məhv edilməzdən əvvəl bir neçə saat yaşaya bilər.

Hər bir Lambda iş vaxtı, həmçinin /tmp kataloqu vasitəsilə əldə edilə bilən yazıla bilən fayl sisteminə malikdir. Onun məzmununa digər iş vaxtlarından daxil olmaq mümkün deyil. Proses vəziyyətinin davamlılığına gəldikdə, /tmp-ə yazılmış fayllar iş vaxtının ömrü boyu mövcuddur. Bu, çoxlu zənglərin nəticələrinin toplanmasına imkan verir ki, bu da maşın öyrənmə modellərinin yüklənməsi kimi bahalı əməliyyatlar üçün xüsusilə faydalıdır.

Zəng datası ötürülür

Invoke API iki rejimdə istifadə edilə bilər: hadisə rejimi və sorğu/cavab rejimi. Hadisə rejimində zəng daha sonra yerinə yetirilmək üçün növbəyə qoyulur. Sorğu-cavab rejimində funksiya təqdim edilmiş faydalı yüklə dərhal çağırılır, bundan sonra cavab qaytarılır. Hər iki halda funksiya Lambda mühitində yerinə yetirilir, lakin müxtəlif faydalı yük yolları ilə.

Sorğu-cavab zəngləri zamanı faydalı yük AWS API Gateway və ya AWS SDK kimi API zəng edəndən (API Zəng edən) yük balanslaşdırıcısına, sonra isə Lambda zəng xidmətinə (Çağırış Xidmətinə) keçir. Sonuncu funksiyanın yerinə yetirilməsi üçün uyğun mühiti müəyyən edir və çağırışı tamamlamaq üçün faydalı yükü ora ötürür. Yük balanslaşdırıcısı İnternet üzərindən TLS ilə qorunan trafik alır. Lambda xidməti daxilində trafik - yük balanslaşdırıcısından sonra - müəyyən bir AWS bölgəsində daxili VPC-dən keçir.

AWS Lambda-nın ətraflı təhlili

AWS Lambda Zəng Emalı Modeli: Sorğu-Cavab Rejimi

Tədbir zəngləri dərhal edilə və ya növbəyə əlavə edilə bilər. Bəzi hallarda növbə daxili sorğu prosesi vasitəsilə zəngləri Lambda zəng yerinə yetirmə xidmətinə ötürən Amazon Simple Queue Service (SQS) istifadə edərək həyata keçirilir. Amazon SQS-də saxlanılan məlumatların əlavə şifrələməsi olmadığı halda ötürülən trafik TLS tərəfindən qorunur.

Hadisə zəngləri cavabları qaytarmır - Lambda Worker sadəcə olaraq hər hansı cavab məlumatına məhəl qoymur. Amazon S3, Amazon SNS, CloudWatch və digər mənbələrdən gələn hadisələrə əsaslanan zənglər hadisə rejimində Lambda xidməti tərəfindən idarə olunur. Amazon Kinesis və DynamoDB tellərindən edilən zənglər, SQS Queues, Tətbiq Yükü Balanslaşdırıcısı və API Gateway-ə edilən zənglər sorğu-cavab rejimində idarə olunur.

Monitorinq

Aşağıdakılar da daxil olmaqla müxtəlif AWS mexanizmləri və xidmətlərindən istifadə edərək Lambda funksiyalarına nəzarət edə və yoxlaya bilərsiniz.

amazoncloudwatch
Sorğuların sayı, sorğuların müddəti və uğursuz olan sorğuların sayı kimi müxtəlif statistik məlumatları toplayır.

Amazon Cloud Trail
AWS infrastrukturunuzla bağlı hesab fəaliyyətini daxil etməyə, davamlı olaraq izləməyə və yadda saxlamağa imkan verir. AWS İdarəetmə Konsolu, AWS SDK, komanda xətti alətləri və digər AWS xidmətlərindən istifadə etməklə həyata keçirilən fəaliyyətlərin tam tarixçəsinə sahib olacaqsınız.

AWS X Ray
Tətbiqinizdə onun daxili komponentlərinin xəritəsi əsasında sorğunun emalının bütün mərhələləri haqqında tam görünürlük təmin edir. İnkişaf zamanı və istehsal mühitində tətbiqləri təhlil etməyə imkan verir.

AWS Konfiqurasiyası
Siz Lambda funksiyalarının konfiqurasiyasına (onların silinməsi daxil olmaqla) və icra müddətlərinə, teqlərə, işləyici adlarına, kod ölçüsünə, yaddaşın ayrılmasına, vaxt aşımı parametrlərinə və paralellik parametrlərinə, həmçinin Lambda IAM icra roluna, alt şəbəkəyə, və təhlükəsizlik qrupları birlikləri.

Nəticə

AWS Lambda təhlükəsiz və genişləndirilə bilən proqramlar yaratmaq üçün güclü alətlər dəsti təqdim edir. İstisnalar olsa da, AWS Lambda-da təhlükəsizlik və uyğunluq təcrübələrinin çoxu digər AWS xidmətlərində istifadə olunanlarla eynidir. 2019-cu ilin mart ayından etibarən Lambda SOC 1, SOC 2, SOC 3, PCI DSS, HIPAA və digər qaydalara uyğundur. Beləliklə, növbəti tətbiqinizi həyata keçirməyi düşünərkən, AWS Lambda xidmətini nəzərdən keçirin - bu, tapşırığınız üçün ən uyğun ola bilər.

Mənbə: www.habr.com

Добавить комментарий