Lumen Laravel là gì

Benchmarking Serverless Laravel vs Lumen với Bref

Trong bài đăng này, tôi sẽ so sánh hiệu suất của Laravel và Lumen để xây dựng một chức năng không máy chủ chạy trên AWS Lambda .

Laravel là một PHP framework nổi tiếng và thanh lịch được viết bởi Taylor Otwell . Đến nay, Laravel là khung phụ trợ có nhiều sao hơn trên Github .

Lumen là một phiên bản rút gọn của Laravel, với ít yêu cầu về gói hơn, vì vậy nó nhỏ hơn, nhanh hơn và gọn gàng hơn so với full framework. Lumen được xây dựng cho các dịch vụ vi mô, thay vì các ứng dụng hướng tới người dùng.

Bref , được viết bởi Matthieu Napoli , là một công cụ giúp bạn dễ dàng triển khai các ứng dụng PHP không máy chủ lên AWS và chạy chúng trên AWS Lambda . Bref là một gói Composer mã nguồn mở và bao gồm hỗ trợ Laravel và Symfony .

Kịch bản thử nghiệm

Tôi đã tạo một dự án Laravel và Lumen. Trong cả hai, tôi đã thêm một tuyến đường rất đơn giản trả về "Xin chào, thế giới!". Bằng cách này, tôi chỉ đang so sánh chi phí khung công tác và không có gì khác.

Tôi đang sử dụng lớp Bref php-74-fpm chạy Lambda với 1024 MB bộ nhớ trong khu vực eu-west-1.

Tạo Kiểm tra Laravel

Hãy tạo một dự án Laravel và thêm Bref theo hướng dẫn tại đây :

laravel new laravel-test composer require bref/bref bref/laravel-bridge php artisan vendor:publish --tag=serverless-config cp .env.example .env $router->get['/test', function [] { return "Hello, world!"; }]; php artisan config:clear composer install --optimize-autoloader --no-dev sls deploy

Mặc dù Lumen không được đề cập trong tài liệu Bref, nhưng việc triển khai ứng dụng Lumen cho Lambda rất đơn giản. Đây là các bước:

Nếu bạn chưa làm như vậy, hãy cài đặt Bref như được mô tả ở đây .

Mở dấu nhắc lệnh và chạy:

composer create-project --prefer-dist laravel/lumen lumen-test cd lumen-test cp .env.example .env wget //raw.githubusercontent.com/brefphp/laravel-bridge/master/config/serverless.yml

Chỉnh sửa .envtệp và thay đổi: LOG_CHANNEL=stackthành LOG_CHANNEL=stderr.

Hãy chuẩn bị điểm chuẩn: đặt DEBUG=falsetrong .envtệp và thêm tuyến sau vào tệp routes/web.php:

$router->get['/test', function [] { return "Hello, world!"; }]; composer install --optimize-autoloader --no-dev sls deploy

Sau khi hoàn tất việc triển khai Bref cho cả Laravel và Lumen, bạn sẽ nhận được kết quả sau:

... endpoints: ANY //abcdefghi.execute-api.us-east-1.amazonaws.com/dev ANY //abcdefghi.execute-api.us-east-1.amazonaws.com/dev/{proxy+} ...

Nhớ lấy:

  • bạn phải thêm /api/testvào URL Laravel,
  • bạn phải thêm /testvào URL Lumen.

Các kết quả

Đây là kết quả cho Lumen :

Duration: 140.17 ms Billed Duration: 500 ms Memory Size: 1024 MB Max Memory Used: 87 MB Init Duration: 313.36 ms Duration: 2.58 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 87 MB Duration: 2.64 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 87 MB Duration: 2.56 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 87 MB Duration: 2.56 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 87 MB Duration: 2.52 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 87 MB Duration: 2.44 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 87 MB Duration: 2.47 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 87 MB Duration: 2.68 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 87 MB Duration: 2.53 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 87 MB Duration: 455.10 ms Billed Duration: 800 ms Memory Size: 1024 MB Max Memory Used: 100 MB Init Duration: 341.48 ms Duration: 8.12 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 100 MB Duration: 7.96 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 100 MB Duration: 7.82 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 100 MB Duration: 8.28 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 100 MB Duration: 7.64 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 100 MB Duration: 8.06 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 100 MB Duration: 7.68 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 100 MB Duration: 7.81 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 100 MB Duration: 8.04 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 100 MB

Đây là bản tóm tắt các điểm chuẩn của tôi:

Kết luận

Trước hết, hãy để tôi nói rằng tôi không đặc biệt ngạc nhiên về kết quả. Laravel cung cấp nhiều loại dịch vụ hơn, vì vậy bạn có thể mong đợi chi phí thực thi.

Một xem xét khác là sự khác biệt giữa hai khuôn khổ trong một ứng dụng thế giới thực sẽ ít đáng kể hơn do chi phí kết nối với cơ sở dữ liệu hoặc dịch vụ bộ nhớ cache, có thể cao hơn nhiều. Ví dụ: nếu chi phí để đọc hoặc ghi từ cơ sở dữ liệu là khoảng 200 mili giây, thì sự khác biệt giữa hai khung [207,93 mili giây so với 202,55 mili giây] sẽ không đáng kể.

Tuy nhiên, nếu bạn đang phát triển các dịch vụ vi mô có độ trễ thấp, trong đó mili giây quan trọng và bạn không cần các dịch vụ do Laravel cung cấp, thì Lumen có thể đáng xem xét.

Nếu bạn tình cờ biết cách nhận được các kết quả khác nhau bằng cách áp dụng các tối ưu hóa hơn nữa, vui lòng liên hệ với tôi.

Tôi hy vọng bạn thấy bài viết này hữu ích, cảm ơn bạn đã đọc!

Video liên quan

Chủ Đề