Rumah >pembangunan bahagian belakang >tutorial php >Mengapa saya memindahkan aplikasi Laravel saya ke AWS Serverless (dan mengapa saya dapat menjimatkan masa dan wang anda)

Mengapa saya memindahkan aplikasi Laravel saya ke AWS Serverless (dan mengapa saya dapat menjimatkan masa dan wang anda)

DDD
DDDasal
2025-01-29 08:19:091031semak imbas

Artikel ini meneroka manfaat menggunakan aplikasi Laravel pada AWS tanpa pelayan, membezakannya dengan hosting EC2 tradisional. Penulis berkongsi pengalaman mereka berpindah dari persediaan EC2 yang berintensifkan sumber kepada seni bina tanpa efektif dan berskala.


Por qué Migré Mi Aplicación Laravel a AWS Serverless (Y Por Qué Podría Ahorrarte Tiempo y Dinero)


Spoiler : Ini bukan hanya untuk menjimatkan wang -walaupun dompet saya tidak mengadu.

Bayangkan ini: Anda telah membina aplikasi Laravel yang cemerlang -karya anda, pisau tentera Swiss digital dengan ciri -ciri yang sangat berguna mereka dapat memotong mentega ... atau maklum balas pengguna. Tetapi ada tangkapan. Setiap bulan, anda membayar untuk contoh EC2 yang kurang dimanfaatkan. Skala terasa seperti meletak kapal pelayaran dalam taufan.

bunyi biasa? Ia berlaku kepada saya.

Tiga tahun yang lalu, saya melakukan apa yang kebanyakan pemaju akan memanggil Crazy: Saya mengerahkan PHP ke AWS Lambda. "PHP? Pada tanpa pelayan? Itu seperti meletakkan nanas pada pizza! ", Kata mereka.

Tetapi di sini saya, tiga tahun kemudian, dengan bangga memakan pizza nanas saya. Izinkan saya memberitahu anda mengapa Laravel pada Serverless adalah peningkatan awan yang anda tidak tahu yang anda perlukan.


    Masalah hosting Laravel tradisional
(atau: Kenapa contoh EC2 saya mengalami krisis eksistensi)

Sebelum tanpa pelayan, aplikasi Laravel saya tinggal di EC2. Untuk yang tidak dikenali, EC2 adalah versi Amazon dari pelayan peribadi maya, di mana anda menyewa sepotong mesin untuk menjalankan kod anda. Kedengarannya hebat, bukan? Sehingga realiti lebih keras daripada penyangak

.

composer update a) Pertama: Kos kewujudan

menjalankan contoh EC2 adalah seperti memiliki Tesla yang anda tinggalkan berjalan 24/7, sekiranya anda mahu memandu. Permohonan saya tidak selalu sibuk, tetapi itu tidak menghentikan meter. Antara contoh EC2, pengimbang beban, dan penyimpanan bersama, saya menghabiskan sekitar $ 110/bulan pada timbunan pelayan yang menghabiskan sebahagian besar masa terbiar. Dompet saya? Tenggelam seperti titanic.

Saya tahu, ia tidak banyak dalam skema besar perkara, tetapi sebagai pemaju solo/usahawan, setiap dolar.

b) Kemudian: Skala Nightmares

contoh EC2 adalah seperti rakan yang bereaksi terhadap segala -galanya.

Spike trafik?

"Saya terhempas sekarang, terima kasih!"

  • tiada lalu lintas? "Saya masih akan membakar wang anda!"
  • Menguruskan autoscaling merasakan seperti mengajar ikan untuk menyesuaikan diri, tetapi pada kos apa? Secara manual menyesuaikan kumpulan penskalaan, mengkonfigurasi pengimbang beban, dan berdoa anda tidak terlalu berpakaian seperti pekerjaan kedua yang saya tidak pernah memohon. c) dan akhirnya: DevOps, Intern tidak dibayar
Tidak ada yang memberitahu saya pembangunan Laravel datang dengan satu sisi tanggungjawab sysadmin:

  • Memohon patch keselamatan.
  • debugging nginx/Apache configurations pada pukul 3 pagi.
  • berbisik nothings manis untuk sudo arahan, dengan harapan mereka akan bekerja kali ini.

Saya tidak mendaftar untuk kehidupan ini.


Itulah ketika saya mula meneroka alternatif, dan tanpa pelayan menonjol sebagai penyelesaian yang sempurna untuk sakit kepala ini.


  1. AWS Serverless: Kebangkitan PHP di awan

mari kita jelaskan mitos: tanpa pelayan tidak bermaksud "tiada pelayan." Ia hanya bermaksud pelayan adalah masalah orang lain. Dalam kes ini, AWS mengendalikan pengangkat berat semasa saya memberi tumpuan kepada apa yang sebenarnya saya nikmati: pengekodan.

a) lambda: ahli sihir yang didorong oleh acara

AWS Lambda adalah seperti seorang superhero yang hanya muncul apabila anda memerlukannya. Ia melaksanakan kod anda sebagai tindak balas kepada peristiwa -permintaan HTTP, mesej SQS, tugas yang dijadualkan, anda namakannya. Dan apabila pekerjaan itu selesai, ia hilang lebih cepat daripada pizza percuma pada pertemuan pemaju.

  • tiada kos terbiar : anda hanya membayar untuk masa pelaksanaan (diukur dalam milisaat).
  • Magic Scaling Automatic : Mendapat sebanyak 100,000 permintaan? Lambda mengendalikannya tanpa melanggar peluh (atau mengosongkan akaun bank anda).
  • Stateless by Design : Ia seperti permulaan yang baru setiap kali, reka bentuk yang memaksa anda untuk berfikir secara modular.

b) Perkhidmatan Terurus: The Heroes Unsung

Serverless bukan hanya Lambda -ia adalah ekosistem. AWS menggantikan infrastruktur DIY anda dengan perkhidmatan terurus yang "hanya berfungsi":

  • pangkalan data : pilihan seperti Aurora Serverless (MySQL/Postgres) untuk pencinta SQL.
  • s3 : Simpan fail anda tanpa bimbang tentang kehabisan ruang cakera.
  • sqs : Decouple pekerjaan lama dan memprosesnya secara tidak segerak.

c) paradoks php

Saya akan mengakuinya: PHP tidak lahir untuk pelayan tanpa pelayan. Ia seperti meminta ikan untuk memanjat pokok -ia akan mengadu, tetapi akhirnya akan melakukannya. Laravel, secara tradisional bergantung pada PHP-FPM, memerlukan beberapa penyesuaian untuk berkembang maju di dunia lama Lambda:

  • sesi : gerakkannya ke pangkalan data luaran seperti mysql atau redis.
  • Penyimpanan Fail : Redirect semua operasi penyimpanan ke S3, menggunakan fasad Laravel. Storage
  • Pengurusan barisan : Konfigurasi SQS sebagai pemacu lalai untuk pelaksanaan tugas asynchronous.
  • Caching : memanfaatkan perkhidmatan luaran seperti Redis atau DynamoDB dan bukannya penyimpanan tempatan.
  • Pengoptimuman Masa Boot : Kurangkan sejuk bermula dengan memangkas lemak (kebergantungan yang tidak digunakan).
  • Pembolehubah Alam Sekitar : menggantikan fail dengan Pengurus Rahsia AWS atau kedai parameter untuk pengurusan konfigurasi berpusat dan selamat. .env

Ingat, Serverless bukan sekadar menggantikan pelayan dengan fungsi Lambda. Ini mengenai pemikiran semula seni bina anda -kemelesetan AWS mengendalikan titik sakit operasi semasa anda memberi tumpuan kepada bangunan.


  1. bagaimana pelayan tidak membuka potensi penuh Laravel

Jadi, adakah Laravel pada pelayan sebenarnya menyampaikan janji -janjinya?

Serverless bukan sekadar kata kunci, ia adalah peralihan transformatif. Keindahan Laravel pada kebohongan tanpa pelayan dalam keupayaannya untuk menangani kelemahan hosting tradisional sambil membolehkan penyelesaian yang lebih cepat, lebih berskala, dan kos efektif. Tetapi sihir sebenar berlaku apabila anda menyelidiki bagaimana manfaat ini menggabungkan. Mari kita pecahkan.

a) Permulaan sejuk: Memisahkan mitos dari realiti

permulaan sejuk berlaku apabila Lambda memulakan contoh baru. Fikirkan ia sebagai PHP bangun dari tidur. Pengkritik memperlakukan mereka seperti kiamat, tetapi mereka dapat diurus:

  • realiti : Tipikal sejuk bermula dengan php laravel adalah sekitar ~ 3-5 saat.
  • Penyelesaian :
    • Laravel Octane : Memelihara aplikasi hidup di antara permintaan, mengurangkan masa permulaan. Permintaan berikutnya diproses dalam ~ 200ms atau kurang.
    • Concurrency yang disediakan : AWS Pra-habuk contoh untuk titik akhir kritikal (kos tambahan, tetapi berbaloi untuk titik akhir utama) .
Bagi kebanyakan aplikasi, kelewatan sub-3-saat semasa trafik yang rendah boleh diterima. Kebanyakan pengguna tidak akan melihat permulaan yang sejuk, terutamanya semasa pancang lalu lintas apabila lambda tetap "hangat."

b) Skala tanpa rasa sakit

skala dalam hosting tradisional sering terasa seperti pertempuran yang tidak pernah berakhir. Dengan tanpa pelayan, penskalaan menjadi mudah: tidak ada lagi peraturan autoscaling tweaking atau menyeberang jari anda semasa lonjakan lalu lintas yang tiba -tiba. AWS Lambda menghilangkan tekaan, skala secara mendatar secara lalai.

Berikut adalah contoh:

  • Senario : Aplikasi anda menjadi virus? yay!
  • persediaan EC2 lama : Anda mula mengalami latensi, tergesa -gesa untuk log masuk ke AWS, secara manual menyesuaikan bilangan contoh, dan berdoa untuk yang terbaik?. Oh, dan jangan lupa untuk menyeimbangkan keadaan dengan betul di zon ketersediaan.
  • Persediaan Lambda Baru : AWS secara automatik mencipta banyak contoh yang diperlukan, mengendalikan beribu -ribu permintaan serentak tanpa anda mengangkat jari. Anda merebut beberapa popcorn dan menonton metrik Cloudwatch seperti siri Netflix?

Ini bukan sekadar kemudahan, ia adalah ketenangan fikiran. Semasa anda memberi tumpuan kepada meraikan kejayaan aplikasi anda, Lambda melakukan pengangkat berat. Dan bahagian terbaik? Anda hanya membayar untuk masa pengiraan yang anda gunakan, bukan untuk kapasiti terbiar yang mungkin anda perlukan "sekiranya berlaku."

c) Kecekapan Kos: MVP

tanpa pelayan tidak hanya menjimatkan wang, ia seperti mempunyai bufet semua-anda-boleh-makan di mana anda hanya membayar untuk apa yang anda makan.

  • persediaan EC2 lama saya: ~ $ 110 /bulan.
    • 4x T3.Small EC2 Contoh: $ 60.00
    • 1x Load Balancer: $ 16.40
    • 1x EBS (penyimpanan bersama antara contoh EC2): $ 7.80
    • 1x rds mysql Instance (db.t4g.medium): ~ $ 26.00
  • Lambda: ~ $ 34 /bulan (penjimatan 60%!) .
    • Lambda, API Gateway ~ 2.5m Permintaan (~ 500ms / 512MB Memory) / Bulan: $ 4.80
    • Perkhidmatan Terurus (S3, SQS, CloudWatch): ~ $ 2.90
    • RDS MySQL Instance (db.t4g.medium): ~ $ 26.00
**Resource** **EC2 Cost** **Lambda Cost**
Compute .00 .50
Networking (LB, API Gateway) .40 .30
Storage .80 .90
Database .00 .00
**TOTAL** **0.20** **~.70**
Singkatnya, tanpa pelayan bukan sahaja menjimatkan wang, ia membebaskan jalur lebar mental. Sumber-sumber yang lebih sedikit yang saya sia-sia membimbangkan tentang penyediaan yang terlalu banyak, semakin saya dapat memberi tumpuan kepada membina sesuatu yang luar biasa.

Pada ketika ini, saya masih menggunakan contoh MySQL sebagai enjin pangkalan data saya. Catatan masa depan akan meneroka berpindah ke DynamoDB untuk mengurangkan kos.

d) Kebebasan Penyelenggaraan: Mengucapkan Selamat tinggal kepada Mimpi Buruk Operasi

Serverless membebaskan saya dari belenggu penyelenggaraan pelayan. Inilah caranya:

tetapi Laravelless untuk semua orang?
  1. Sebagai revolusioner sebagai Laravel pada tanpa pelayan, ia bukan penyelesaian sejagat. Bagi sesetengah aplikasi, sifat tanpa kerakyatan dan yang didorong oleh peristiwa tidak kelihatan seperti mimpi yang menjadi kenyataan. Bagi yang lain, ia mungkin berasa seperti cuba menyesuaikan pasak persegi ke dalam lubang bulat. Sebelum anda melompat pada kereta tanpa server, mari kita mundur dan menilai sama ada ia sesuai untuk projek anda.

  2. a) Sifat tanpa statur: Pedang bermata dua

Laravel suka operasi yang memelihara maklumat antara interaksi, seperti menyimpan fail secara tempatan dan menyimpan sesi ke sistem fail. Untuk pergi tanpa pelayan, anda mesti menukar:

sesi

: Gunakan pangkalan data (MySQL/Postgres) atau redis; Tiada lagi kebergantungan sistem fail.
  • Fail : Redirect file muat naik ke S3, atau elakkan Laravel sama sekali dan gunakan URL Pra-ditandatangani S3.
  • log : Konfigurasi Laravel untuk mengalirkannya ke CloudWatch. Konfigurasi
  • : bergerak pembolehubah kepada pengurus rahsia AWS atau kedai parameter untuk pengurusan berpusat.
  • beratur : memindahkan pekerjaan ke AWS SQS untuk giliran berskala dan pengendalian mesej. .env
  • b) Pertimbangan penguncian vendor Perkhidmatan AWS adalah ajaib, tetapi mereka juga proprietari:
    • mahu berhijrah dari SQS ke beratur redis? Bersedia untuk menulis semula kod.
    • mahu bergerak dari lambda ke docker? Dapatkan kopi: Ini akan menjadi malam yang panjang.

    c) Apabila tidak memilih Serverless

    Serverless bukan peluru perak untuk semua beban kerja. Elakkan jika:

    • anda memerlukan WebSockets : Walaupun dapat dicapai dengan perkhidmatan seperti API Gateway Websocket API atau alat pihak ketiga seperti Ably, ia menambah kerumitan.
    • Aplikasi anda mempunyai
    • beban pengiraan berat : tugas seperti kesimpulan AI/ml atau pengekodan video mungkin memukul had masa 15 minit Lambda.
    • anda bergantung pada
    • Perkhidmatan Stateful : Aplikasi yang menganggap cakera berterusan atau keadaan pelayan boleh mahal untuk refactor.

  1. Apa yang seterusnya?

Laravel pada Serverless mempunyai potensi untuk mengubah cara anda membina dan menggunakan aplikasi, tetapi sihir sebenar adalah dalam pelaksanaan. Bersedia untuk mengambil lompatan dan memberi aplikasi Laravel anda rawatan tanpa pelayan? Nantikan bahagian 2, di mana saya akan membimbing anda melalui langkah -langkah yang tepat untuk membawa seni bina ini ke kehidupan.


Soalan untuk anda : Apa ketakutan terbesar anda tentang Serverless? Kongsi di bawah, dan saya akan menangani 3 teratas dalam bahagian 2!

Atas ialah kandungan terperinci Mengapa saya memindahkan aplikasi Laravel saya ke AWS Serverless (dan mengapa saya dapat menjimatkan masa dan wang anda). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn