Php có tốt cho máy chủ không?

Đây là bài đầu tiên trong loạt bài viết dành cho các nhà phát triển PHP. Loạt bài này sẽ giải thích cách sử dụng các công nghệ serverless với PHP. Nó bao gồm các công cụ, khuôn khổ và chiến lược có sẵn để xây dựng các ứng dụng không có máy chủ và tại sao bây giờ là thời điểm thích hợp để bắt đầu

Trong các bài đăng tiếp theo, tôi sẽ trình bày cách sử dụng AWS Lambda cho các ứng dụng web được xây dựng bằng các framework PHP như Laravel và Symfony. Tôi trình bày cách chuyển từ sử dụng Lambda để thay thế cho chức năng lưu trữ web sang phương pháp tiếp cận theo sự kiện, tách rời. Tôi trình bày cách kết hợp nhiều chức năng Lambda ở phạm vi tối thiểu với các dịch vụ không có máy chủ khác để tạo các vi dịch vụ có thể mở rộng hiệu quả

Trong bài đăng này, bạn tìm hiểu cách sử dụng PHP với Lambda thông qua API thời gian chạy tùy chỉnh. Truy cập kho lưu trữ GitHub này để biết mã mẫu

Ngăn xếp LAMP Serverless

Những thách thức với các ứng dụng PHP truyền thống

Khả năng mở rộng là một thách thức cố hữu với ngăn xếp LAMP truyền thống. Ứng dụng có khả năng mở rộng là ứng dụng có thể xử lý các mức lưu lượng thay đổi cao. Các ứng dụng PHP thường được thu nhỏ theo chiều ngang, bằng cách thêm nhiều máy chủ web hơn nếu cần. Điều này được quản lý thông qua bộ cân bằng tải, chuyển hướng các yêu cầu đến các máy chủ web khác nhau. Mỗi máy chủ bổ sung mang lại chi phí bổ sung với kết nối mạng, quản trị, dung lượng lưu trữ, hệ thống sao lưu và khôi phục cũng như cập nhật kho quản lý tài sản. Ngoài ra, mỗi máy chủ có tỷ lệ theo chiều ngang chạy độc lập. Điều này có thể dẫn đến những thách thức về đồng bộ hóa cấu hình

Chia tỷ lệ theo chiều ngang với các ứng dụng ngăn xếp LAMP truyền thống

Những thách thức mới về lưu trữ phát sinh khi mỗi máy chủ có đĩa và hệ thống tệp riêng, thường yêu cầu nhà phát triển thêm cơ chế để xử lý phiên người dùng. Sử dụng công nghệ serverless, khả năng mở rộng được quản lý cho nhà phát triển

Nếu lưu lượng truy cập tăng đột biến, dịch vụ sẽ mở rộng quy mô để đáp ứng nhu cầu mà không cần phải triển khai thêm máy chủ. Điều này cho phép các ứng dụng chuyển đổi nhanh chóng từ nguyên mẫu sang sản xuất

Kiến trúc LAMP serverless

Một ứng dụng web truyền thống có thể được chia thành hai thành phần

  • Nội dung tĩnh [tệp phương tiện, css, js]
  • Ứng dụng động [PHP, MySQL]

Một cách tiếp cận serverless để phục vụ hai thành phần này được minh họa bên dưới

Ngăn xếp LAMP không có máy chủ

Tất cả các yêu cầu về nội dung động [mọi thứ ngoại trừ /assets/*] đều được chuyển tiếp tới Amazon API Gateway. Đây là dịch vụ được quản lý hoàn toàn để tạo, xuất bản và bảo mật API ở mọi quy mô. Nó đóng vai trò là “cửa trước” của ứng dụng PHP, định tuyến các yêu cầu xuôi dòng tới các hàm Lambda. Các hàm Lambda chứa logic nghiệp vụ và tương tác với cơ sở dữ liệu MySQL. Bạn có thể chuyển đầu vào cho hàm Lambda dưới dạng bất kỳ tổ hợp nào của tiêu đề yêu cầu, biến đường dẫn, tham số chuỗi truy vấn và nội dung

Các tính năng AWS đáng chú ý dành cho nhà phát triển PHP

Amazon Aurora không có máy chủ

Trong thời gian lại. Invent 2017, AWS công bố Aurora Serverless, cơ sở dữ liệu quan hệ không cần máy chủ theo yêu cầu với mô hình chi phí trả cho mỗi lần sử dụng. Điều này quản lý trách nhiệm cung cấp và mở rộng cơ sở dữ liệu quan hệ cho nhà phát triển

Lớp Lambda và API thời gian chạy tùy chỉnh

tại lại. Invent 2018, AWS công bố hai tính năng Lambda mới. Những điều này cho phép các nhà phát triển xây dựng thời gian chạy tùy chỉnh, đồng thời chia sẻ và quản lý mã chung giữa các chức năng

Cải thiện kết nối mạng VPC cho các chức năng Lambda

Vào tháng 9 năm 2019, AWS đã công bố những cải tiến đáng kể về khả năng khởi động nguội đối với các chức năng Lambda bên trong VPC. Điều này dẫn đến hiệu suất khởi động chức năng nhanh hơn và sử dụng giao diện mạng linh hoạt hiệu quả hơn, giảm khởi động nguội VPC

Proxy Amazon RDS

tại lại. Invent 2019, AWS công bố ra mắt dịch vụ mới mang tên Amazon RDS Proxy. Một proxy cơ sở dữ liệu được quản lý đầy đủ nằm giữa ứng dụng của bạn và cơ sở dữ liệu quan hệ của bạn. Nó gộp và chia sẻ các kết nối cơ sở dữ liệu một cách hiệu quả để cải thiện khả năng mở rộng của ứng dụng của bạn

 

Những khoảnh khắc quan trọng trong dòng thời gian ngăn xếp LAMP không có máy chủ

Kết hợp các dịch vụ này, có thể xây dựng các ứng dụng serverless có khả năng mở rộng an toàn và hiệu quả với PHP và cơ sở dữ liệu quan hệ

API thời gian chạy tùy chỉnh

API thời gian chạy tùy chỉnh là một giao diện đơn giản để cho phép thực thi hàm Lambda bằng bất kỳ ngôn ngữ lập trình nào hoặc phiên bản ngôn ngữ cụ thể. API thời gian chạy tùy chỉnh yêu cầu tệp văn bản thực thi được gọi là bootstrap. Tệp bootstrap chịu trách nhiệm giao tiếp giữa mã của bạn và môi trường Lambda

Để tạo thời gian chạy tùy chỉnh, trước tiên bạn phải biên dịch phiên bản PHP được yêu cầu trong môi trường Amazon Linux tương thích với môi trường thực thi Lambda. Để làm điều này, hãy làm theo

Tệp khởi động

Tệp bên dưới là một ví dụ về tệp khởi động PHP cơ bản. Ví dụ này nhằm mục đích giải thích vì không có xử lý lỗi hoặc trừu tượng hóa diễn ra. Để đảm bảo rằng bạn xử lý các trường hợp ngoại lệ một cách thích hợp, hãy tham khảo tài liệu API thời gian chạy khi bạn xây dựng thời gian chạy tùy chỉnh sản xuất

#!/opt/bin/php

Chủ Đề