Bref로 쉽게 만드는 서버리스 Laravel

AWS Lambda에서 Bref를 사용하여 서버리스 Laravel 애플리케이션을 실행합니다.

이 기사에서는 Bref 패키지와 AWS Lambda를 사용하여 서버리스 Laravel 애플리케이션을 실행하는 방법을 볼 수 있습니다.

서버리스란 무엇입니까?



간단하게 합시다. Serverless는 클라우드 공급자가 리소스 할당을 동적으로 처리하므로 사용된 리소스 양에 따라 요금이 부과되는 클라우드 모델입니다. 서버리스는 "Functions as a Service"또는 "FaaS"라고도 합니다.

서버리스 공급자


  • AWS 람다
  • Azure Functions
  • 구글 클라우드 함수
  • 클라우드플레어

  • 왜 서버리스인가?


  • 서버 설정은 클라우드 서비스 제공자가 관리합니다.
  • 사용한 만큼만 지불합니다.
  • 자동 스케일링.

  • 서버리스 아키텍처로 인해 유휴 시간이 아닌 코드가 실행될 때만 비용을 지불합니다.

    서버리스용 Bref:



    Bref는 PHP(Laravel) 애플리케이션을 AWS Lambda에 배포하는 데 사용되는 오픈 소스 작성기 패키지입니다. Bref는 좋은 문서를 가지고 있으며 주요 PHP 프레임워크를 지원합니다. Bref는 serverless 프레임워크를 사용하여 서버리스 애플리케이션을 배포하고 구성합니다.

    이제 Laravel 앱을 AWS Lamba에 배포해 보겠습니다.

    서버리스 프레임워크 구성


  • 아래 명령을 사용하여 Serverless framework을 전역 종속성으로 설치합니다.

  • Prerequisite Node.js 6.x or later version



    npm install -g serverless
    


  • 1단계가 완료된 후 AWS IAM console에서 IAM 프로그래밍 방식 사용자를 생성하고 필요한 정책을 사용자에게 연결합니다. 필요한 정책은 이gist를 참조하십시오. 사용자를 생성한 후 생성된 액세스 키를 기록해 두십시오.

  • Creating a separate IAM programmatic user for serverless is recommended.



  • 아래 명령을 사용하여 서버리스 구성 설정

  • serverless config credentials --provider aws --key <key> --secret <secret>
    


    이제 서버리스 프레임워크가 로컬 시스템에 구성되었습니다. 이제 Laravel 프로젝트에 Bref를 추가해 보겠습니다.

    Bref 설정


  • 기존 Laravel 프로젝트에서 작곡가를 사용하여 BrefLaravel-Bref 패키지를 설치합니다.

  • composer require bref/bref bref/laravel-bridge
    


  • 위 패키지 설치 후 아래 명령어 실행

  • php artisan vendor:publish --tag=serverless-config
    


    이 명령은 프로젝트 루트에 직접 serverless.yml 구성 파일을 생성합니다. 기본적으로 서버리스 앱은 us-east-1 지역에서 호스팅되며 지역을 변경하려는 경우 serverless.yml 파일에서 지역을 변경할 수 있으며 구성할 수 있는 많은 속성이 있습니다. 모든 속성을 보려면 here을 선택하십시오.

    앱 배포



    배포하기 전에 모든 캐시를 지우고 배포 명령을 실행합니다.

    php artisan config:clear
    


    아래 명령을 사용하여 배포하자

    serverless deploy
    


    위의 명령은 Laravel 프로젝트를 압축하고 S3에 업로드하고 CloudFormation 템플릿을 사용하여 Lambda에 배포합니다. 배포가 완료되면 AWS Lambda에 호스팅된 앱의 URL이 표시됩니다. 브라우저에서 해당 URL을 눌러 서버리스 Laravel 애플리케이션을 확인합니다.

    주의할 점


  • AWS Lambda 파일 시스템은 읽기 전용인/temp 디렉터리가 기본적으로 Bref에서 Laravel 캐싱을/temp 디렉터리로 이동하지만/temp 디렉터리는 다른 Lambda 인스턴스와 공유되지 않습니다. 따라서 이 문제를 해결하려면 Elasticache 또는 DynamoDB와 같은 중앙 집중식 스토리지 서비스를 사용해야 합니다.
  • 세션을 사용하는 경우 세션 스토리지를 Elasticache 또는 DynamoDB로 이동해야 합니다.
  • FILESYSTEM_DRIVER를 S3로 업데이트하고 모든 공개 파일을 S3에 저장합니다.
  • VPC에 있는 Lambda 함수에 대한 인터넷 액세스를 제공합니다. NAT Gateway 을 만들어야 합니다. 대부분의 AWS 서비스에 액세스하려면 Lambda가 동일한 VPC에서 실행되어야 합니다. NAT 게이트웨이는 미국 동부 지역(34$/월)의 경우 시간당 비용이 $0.045이므로 비용이 증가합니다.
  • 애플리케이션 코드베이스 크기가 증가하면 Lambda 콜드 스타트 ​​기간이 늘어날 수 있습니다. 따라서 배포하는 동안 테스트 케이스, 이미지, 파일, UI 자산을 제외하십시오.

  • 이제 서버리스 Laravel 애플리케이션은 Bref를 사용하여 AWS Lambda에서 성공적으로 호스팅됩니다.

    좋은 웹페이지 즐겨찾기