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.
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.
-
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.
- 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:
Tiada lagi kemas kini manual - : AWS mengendalikan patch keselamatan, kemas kini OS, dan penambahbaikan runtime, yang bermaksud anda sentiasa berjalan pada infrastruktur yang selamat dan terkini.
Konfigurasi yang dipermudahkan
: Dengan perkhidmatan seperti API Gateway dan S3, kerumitan menguruskan konfigurasi nginx dan penyebaran adat menjadi sesuatu yang lalu. -
Kapasiti elastik
: Lupakan overpaying untuk sumber pelayan yang tidak digunakan atau berebut untuk menyediakan lebih banyak semasa pancang lalu lintas. Lambda secara automatik skala untuk memenuhi permintaan dan berhenti pengebilan semasa terbiar. -
Fokus pada ciri -ciri, bukan pemadam kebakaran
: Masa yang saya habiskan sebelum ini memohon patch atau masalah pengeluaran debug kini dilaburkan dalam ciri -ciri bangunan dan meningkatkan pengalaman pengguna.
-
Serverless tidak hanya mengurangkan penyelenggaraan, ia menghapuskan gangguan operasi yang menghalang anda daripada pengekodan.
tetapi Laravelless untuk semua orang?
-
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.
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.
- 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!