Amazon Lambda를 사용한 서버리스 컴퓨팅: 클라우드 아키텍처의 혁명

소개

10년 전만 해도 서버리스 아키텍처는 꿈이 실현되는 것처럼 보였습니다. 더 이상은 아닙니다! Amazon Lambda를 사용하면 이제 서버에 대해 생각하지 않고도 애플리케이션을 구축하고 실행할 수 있습니다. 클라우드 공급자는 모든 서버 프로비저닝, 확장 및 관리를 원활하게 처리합니다. 우리는 코드에만 집중하면 됩니다. 이는 클라우드 배포에 전례 없는 민첩성, 자동화 및 최적화를 제공합니다. 그러나 잠재력을 최대한 실현하려면 Lambda의 고유한 아키텍처와 기능을 확실하게 이해해야 합니다. 이 게시물은 실제 사례, 배운 교훈, 내부 작동에 대한 엔지니어의 통찰력을 통해 마법을 풀어내는 것을 목표로 합니다!

Amazon 클라우드 기술 개발자 커뮤니티는 개발자에게 글로벌 개발 기술 리소스를 제공합니다. 기술문서, 개발사례, 기술칼럼, 교육영상, 활동 및 대회 등이 있습니다. 중국 개발자가 세계 최고의 기술, 아이디어, 프로젝트와 연결되도록 돕고 뛰어난 중국 개발자나 기술을 글로벌 클라우드 커뮤니티에 추천하세요. 아직 관심/즐겨찾기에 관심을 두지 않으셨다면, 이 내용을 보시고 서두르지 마시고, 여기를 클릭하여 기술 보물창고로 만들어주세요!

서버리스 컴퓨팅이란 무엇입니까?

Lambda에 대해 알아보기 전에 "서버리스"가 실제로 무엇을 의미하는지 명확히 하겠습니다. 서버리스는 서버가 전혀 없다는 의미가 아닙니다. 물리적 서버는 여전히 클라우드 인프라를 강화합니다. 주요 차이점은 개발자가 이러한 서버를 직접 프로비저닝하거나 관리할 필요가 없다는 것입니다. 클라우드 제공업체는 인프라 복잡성을 추상화합니다. 우리의 코드는 이벤트 중심적이고 자동으로 확장되며 소비된 리소스에 대해서만 비용이 청구되는 임시 컨테이너에 배포됩니다. 이 "서버 없음, 운영 없음" 모델은 비용을 사용량에 맞춰 조정하고 개발을 가속화합니다. 기존 서버, 가상 머신 및 컨테이너는 여전히 많은 워크로드에서 역할을 합니다. 그러나 Lambda는 이벤트 기반 및 일시적인 컴퓨팅 요구 사항을 처리하는 데 탁월합니다.

Lambda 실행 모델

Lambda 실행 모델은 기존 아키텍처와 근본적으로 다릅니다. 후드 아래에서 무슨 일이 일어나고 있는지 분석해 보겠습니다.

3-1.  원격 측정-api-개념-diagram.png

몇 가지 주요 측면:

  • Stateless : 각 실행은 별도의 컨테이너에서 발생합니다. 실행 간에는 연관성이 없습니다.
  • Ephemeral : 컨테이너는 밀리초 이내에 초기화되고 폐기될 수 있습니다.
  • 이벤트 기반 : 구성된 이벤트에 의해 실행이 트리거됩니다.
  • 확장 가능 : 대기열 깊이에 따라 컨테이너를 동적으로 추가하고 제거합니다.
  • 서버리스 : 컨테이너 인프라를 관리하지 않습니다. Amazon Cloud 기술이 이 모든 것을 처리합니다. 이 모델을 사용하면 Lambda는 본질적으로 많은 병렬 요청을 처리하고 필요에 따라 확장할 수 있습니다. 우리 코드는 비즈니스 로직에만 중점을 둡니다. 다음으로 Lambda 실행의 수명 주기 이벤트를 살펴보겠습니다.

Lambda 함수 수명 주기

이벤트 호출이 발생하면 Lambda는 잘 정의된 수명 주기를 거칩니다.

3-2.  개요-성공-Invokes.png

  • 콜드 스타트 : 첫 번째 호출의 경우 Lambda는 컨테이너를 초기화해야 합니다. 이로 인해 약간의 지연이 발생합니다.
  • 초기화 및 호출 : 코드가 로드되고 실행됩니다. 핸들러 메소드를 호출하십시오.
  • Shutdown : 실행이 완료된 후 컨테이너가 중지됩니다. 후속 실행에서는 핫 컨테이너를 재사용합니다. 이러한 콜드 스타트 ​​오버헤드를 이해하는 것은 Lambda 성능을 최적화하는 데 중요합니다. 아래에서 수행 방법을 살펴보겠습니다.

Lambda 콜드 스타트 ​​최적화

느린 콜드 스타트보다 더 고통스러운 것은 없습니다. 다행히도 이 문제를 완화할 수 있는 몇 가지 입증된 기술이 있습니다.

  • 컨테이너 재사용 사용 : 호출 간에 컨테이너가 유지되도록 0이 아닌 시간 초과를 설정합니다.
  • 배포 패키지 크기 최적화 : 불필요한 종속성과 아티팩트를 제거하여 다운로드 시간을 최소화합니다.
  • 고성능 런타임 선택 : Go, Python 및 NodeJS는 초기화 오버헤드가 낮습니다.
  • 프리페치 컨테이너 : 프로비저닝된 동시성을 사용하여 컨테이너를 초기화된 상태로 유지합니다.
  • IAM 역할 최적화 : Amazon SSO와 같은 서비스를 사용하여 역할에 따른 지연을 줄입니다.

좋은 콜드 스타트를 수행하는 것은 예술이자 과학입니다. 위의 요령을 사용하면 1초 미만의 콜드 스타트를 쉽게 달성할 수 있습니다. 이제 실제 작동 중인 Lambda의 몇 가지 예를 살펴보겠습니다.

람다 사용 사례

Lambda의 유연한 실행 모델을 사용하면 가능성은 무한합니다. Lambda를 사용하는 몇 가지 인기 있는 방법은 다음과 같습니다.

데이터 처리

  • 실시간 분석을 위한 스트림 처리
  • 일괄 데이터 변환
  • 집계 보고서 생성

통합 및 메시징

  • 분산 워크로드에 대해 SQS를 통해 트리거됨
  • SNS 알림에 응답하기
  • 서비스 간의 통합 접착제

웹 애플리케이션

  • 서버리스 백엔드 실행
  • API 게이트웨이 지원 제공
  • HTTP 요청 전처리

인프라 자동화

  • 자동화된 워크플로 사용자 정의
  • 프로그래밍 방식의 자원 관리
  • 자기 치유 능력

등!

Lambda는 창의성에 의해서만 제한됩니다.

좀 더 구체적으로 설명하기 위해 다음에는 실제 서버리스 웹 애플리케이션을 살펴보겠습니다.

서버리스 웹 애플리케이션 구축

Lambda가 확장 가능한 서버리스 웹 아키텍처를 어떻게 지원하는지 살펴보겠습니다. 

3-3.  제품 페이지 다이어그램_Lambda-MobileBackends_option2.00f6421e67e8d6bdbc59f3a2db6fa7d7f8508073.png

  • API 게이트웨이 : Lambda 함수는 API 백엔드에 대한 지원을 제공합니다.
  • 비동기식 작업 : SQS와 SNS는 Lambda를 통합하여 확장된 워크로드를 실현합니다.
  • 정적 자산 : S3는 HTML/CSS/JS와 같은 프런트엔드 정적 자산을 호스팅합니다. 이 설정을 통해 우리는 강력한 확장성, 뛰어난 비용 성능 및 낮은 관리 오버헤드를 달성할 수 있습니다. Lambda 서비스는 가용성, 중복성, 확장성과 같은 인프라의 무거운 작업을 처리합니다. 우리는 핵심 제품 제공에만 집중합니다!물론 서버리스 애플리케이션에는 고유한 뉘앙스가 있습니다. 내일 게시물에서는 실용적인 최적화, 디버깅, CI/CD 및 기타 운영 팁을 공유하겠습니다.

결론적 생각

우리는 Lambda와 서버리스의 획기적인 잠재력을 표면적으로만 살펴보았습니다. 내부적으로 Lambda는 상태 비저장, 임시 및 이벤트 기반 실행을 통해 인프라 관리를 중단합니다. 이는 클라우드 아키텍처에 전례 없는 민첩성, 자동화 및 효율성을 제공합니다. 큰 힘에는 큰 책임이 따른다는 사실을 기억하세요! Lambda를 원활하게 실행하려면 여전히 사려 깊은 설계와 운영이 필요합니다. Amazon Lambda에 대한 간단한 둘러보기를 즐기셨기를 바랍니다. 귀하에게 공감되는 내용이나 배우고 싶은 다른 Lambda 주제를 알려주십시오. 이제 서버리스 솔루션을 계속 구축해 보세요!

참고자료

기사 출처: https://dev.amazoncloud.cn/column/article/64e5cea684d23218430681f1?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN 

Supongo que te gusta

Origin blog.csdn.net/u012365585/article/details/132550178
Recomendado
Clasificación