brefphp / bref

Serverless PHP on AWS Lambda
https://bref.sh
MIT License
3.12k stars 367 forks source link

Built with Bref #267

Open mnapoli opened 5 years ago

mnapoli commented 5 years ago

I would like to create a page that references applications or websites built with Bref.

In the meantime let's collect here links and descriptions of those applications. Feel free to post a comment, your application doesn't have to be a public website, it can also be anything not visible on the internet.

Here is my (public) list for now:

mnapoli commented 5 years ago

https://arkadiuszkondas.com/php-grandmaster/ (https://github.com/akondas/php-grandmaster)

atrope commented 5 years ago

Https://www.suamusica.com.br (website built with phalcon uses alb to lambda) Suamusica private APIs to our apps (cacheable and world-wide deployed with Cloudfront caching the public responses close to the user)

nealio82 commented 5 years ago

https://kittyquotes.net (someday there'll be a PHP / serverless tutorial on github to accompany this site)

mnapoli commented 5 years ago

@atrope that's really interesting. Did you build a PHP layer yourself or are you using the Bref layers? If you have any numbers to share (either here or via a blog post) I'm sure many people would be interested to learn more :)

atrope commented 5 years ago

@mnapoli first we built ourselves our layer, and then we migrated to bref. With bref we changed the PHP dockerfile so we could build some custom extensions with custom support (redis with igbinary, phalcon, imagick etc) and change some code (ALB Support and other issues).

The Performance with bref is 30% better than it was with our runtime(also was FPM based).

I Will write a blog post sometime but just for now here are some numbers:

Roughly 40M requests daily In Peak, we have 2.5k concurrent lambdas In API our average duration is 90ms In Portal(Website) is 130ms

This of course when it goes to lambda and is not cached in CF.

I do plan to write a detailed blog post as soon as i have some free time but if anyone want to know something specific can shoot me a message :)

mnapoli commented 5 years ago

@atrope this is amazing! Thanks for sharing.

BTW ALB is definitely on my TODO list, I'm working on a project to try it out and document it (it just takes some time to go through everything).

yousafs commented 5 years ago

@mnapoli first we built ourselves our layer, and then we migrated to bref. With bref we changed the PHP dockerfile so we could build some custom extensions with custom support (redis with igbinary, phalcon, imagick etc) and change some code (ALB Support and other issues).

I do plan to write a detailed blog post as soon as i have some free time but if anyone want to know something specific can shoot me a message :)

@atrope That is fantastic work!! I have been trying to get Imagemagick & Imagick installed using the same method but my PHP Dockerfile is not right and although I have installed the delegates for decoding I always get an error 'no decode delegate for this image format `PNG'. If you could publish yours (or the sections for adding these) it would be amazing!

atrope commented 5 years ago

@yousafs Of course i can send you :)

In php.Dockerfile:

RUN LD_LIBRARY_PATH= yum install -y ImageMagick-devel
RUN pecl install imagick

and then rebuild, Simple as that.

yousafs commented 5 years ago

@atrope Thank you! That is much simpler than my version - clearly I am not worthy :) I will give it a try ...

mnapoli commented 5 years ago

Here is a new website shared in the Slack channel:

We launched a Project with bref on Lambda last week.

Setup is

  • Domain DNS is at Route53
  • All Requests go through Cloudfront /static -> S3 everything else through API Gateway to Lambda (No caching there currently)
  • Lambda is in a VPC with a Aurora and an Elasticache (tbh. I think I'm going to cut the Elasticache and move the sessions stuff to Auroa)
  • It's an Laravel App with Nova and some Jobs
  • Assets are synced while deloying via a Gitlabrunner + Cloudfront Cache is invalidated at that point
  • Entire Cloudfront Setup is in Cloudformation

Pain Points:

  • I needed the Requested Hostname at my Lambda Function to determine the Language (Tenant) of the Page so a Lambda@Edge Function is running on every request that maps my Host to (yeah that's not really nice I know but I havn't found an alternative with Cloudfront)
  • Setting Up VPC with Cloudformation is a pain so i did it manually

Url: https://radiome.de/ https://radiome.at/ https://radiome.fr/

nealio82 commented 5 years ago

at https://mybuilder.com we're using Bref to generate reports in PDF format.

Using the fpm layer we have a single api endpoint which accepts a request payload containing an HTML string and a destination of where to upload the generated report. The endpoint does auth and validation, then pushes a notification through SNS.

A 2nd lambda function defined in the same template.yml using the base php layer (along with our own wkhtmltopdf layer which we created) converts the HTML string into PDF, before uploading it to the destination specified in the original payload.

We chose to launch this on lambda because we expect there to be spikes of usage throughout the day, and probably zero instantiations overnight, so fast scaling up-and-down was a key consideration.

We created our own wkhtmltopdf layer because:

  1. there is no 'currrent' generic Linux binary any more (this is covered in the wkhtmltopdf FAQ)
  2. there are 3rd party pre-compiled generic Linux binaries available, but they're also out-of-date, and we didn't want to have to trust random people over the internet not to include anything nefarious
  3. we didn't want to use the vendor-specific binaries because that would have involved spinning up an EC2 box, which is an expensive way of just providing a PDF conversion service
  4. we looked at puppeteer, but one of our teams had already used wkhtmltopdf so we wanted to carry on with what they'd already tried / learned
  5. we also felt the performance of wkhtmltopdf would be better than running headless Chrome in Lambda using puppeteer
  6. we felt this would be a great chance to learn about creating layers and compiling software in Lambda
ondrejmirtes commented 5 years ago

https://phpstan.org - running PHPStan inside a Bref project 😊

vincentcau commented 4 years ago

and a new one https://www.chouchouhotel.com/ 😊

mnapoli commented 4 years ago

Nice!

WyriHaximus commented 4 years ago

The static map image service for https://wyrimaps.net/ is now powered by Bref. Even though it isn't a full website, and only outputs images like https://st0.cf.wyrimaps.wyri.haxim.us/wow_battle_for_azeroth/4/512/256/frinCobny@.png using bref was a no-brainer. Creating those images is CPU heavy so my VPS' CPU got saturated quickly. With bref it will scale to infinity 🎉.

RikudouSage commented 4 years ago

https://pornhub-meme-generator.com

The deploy process:

crisdiehard commented 4 years ago

Considering all the key points listed by @RikudouSage, the funny thing is not that the site is a pornhub meme generator. The funny thing is that a blog post explaining all steps to deploy a pornhub meme generator using Bref would be absolutely valuable.

RikudouSage commented 4 years ago

@crisdiehard Well, I could create such post using less controversial meme generator. Don't know where I would post it, though.

Nemo64 commented 4 years ago

Not a public site but I build a demo symfony mulipage application as reference: https://github.com/Nemo64/serverless-symfony

Documentation on how to test and deploy it is in the readme.

The main highlight is probably the database handling. I uses custom CloudFormation resources to create users and databases (within a shared database server) and even do schema migrations. But it is also a working example of hosting assets and the app under the same domain behind CloudFront. And it has working caching and logging.

Not all features are tested in production environments yet.

shouze commented 4 years ago

Hi there, we're currently building a new Hotel Brand. I can't communicate a lot on it at the moment as the launch is in more than a year. We've never experienced λ in php before.

We've switched from ECS to Lambda about 10 days ago to give it a try. It's not so bad, our λ (workers & REST API) are in a VPC (with a NAT GW) and they connect to:

This app is based on Symfony framework with Api Platform. Both ar pretty big but with the ad-hoc process we're able to generate a less than 5M zip artifact to deploy. We've tried opcache.preload and some bref layer's optimizations too. We've found nothing big.

Everything works pretty well. The api is consumed by a customer frontend app (react nextjs) and with SWR (Stale While Revalidate) trick on frontend side we forget that sometimes API request can be a bit slow.

This was some work to make the migration but as we manage AWS with IaaC (thanks to terraform) the process was under control. What we appreciate:

About cold starts, this is mostly OK, we will wait 2020 re:Invent announcements, we expect following things:

umihico commented 3 years ago

I just built a demo Laravel page on AWS Lambda with Docker container image using Bref. I'd like to introduce my README here because I couldn't find a document about this type of deployment yet.

https://github.com/umihico/laravel-lambda-docker-bref

Manuelacosta98 commented 3 years ago

Hi https://www.alana.jobs/ not the landing that is made with Webflow, the actual web and mobile app api is build from the ground up with bref, we start with bref v0.5 , so we went early.

Is a employee management tool with everything you need from user panel, to realtime dashboards to see if your employees are late to work or on a break, is also a time checking app with face recognition, and has a buildin checklist feature to manage inspections, also has a pre calculate monthly payment system in Mexico and Colombia, also has a module that lets you plan employees schedules and leaves for childbirth, sick and other types of leaves.

Was a lot of fun, we integrate https://sentry.io/ for logs and debugging at the time that was a real trouble, been a contributer of @mnapoli since then, this year I am going for my aws solutions architect associate, this proyect and reactPHP made me passionate about php.

chekalsky commented 3 years ago

Hey, backend of https://neural.love works with bref too.

Our fastest handler is only 40ms in average.

GMBN commented 2 years ago

Hello! https://coingoback.com/ is built with Bref and Laravel. Coingoback is a cryptocurrency wallet with benefits, e-commerce cash backs, crypto-games play-to-earn, crypto subscription with credit-card etc.

kevincerro commented 1 year ago

Here is my list:

mnapoli commented 1 year ago

@atrope it's been years now, but I wonder if you have any updates for us 😛

Is the website still running with Bref? Still the same traffic?

RikudouSage commented 1 year ago

Integration between Slack and OpenAI / ChatGPT: https://github.com/RikudouSage/SlackChatGPT

It does support deploying via docker everywhere, but it's made with bref / serverless in mind and is the default (and also the way I use it).

Edit: I also finally got to try Symfony messenger using bref.

atrope commented 1 year ago

Hey @mnapoli long time :)

We are still running our API and Website with a Modified version of Bref.

Now with the end of support of Amazon Linux 1 i am working to migrate to the newer bref layers (fpm 8.2)

The website I Already managed to migrate and the API i should finnish by the end of next week and then we can check performance (4 years without changing the bref version).

atrope commented 8 months ago

Hey @mnapoli we finished the migration and now we are fully using php-fpm from bref 8.2 version layer 31 (#1528).

Before the migration we were running on avg ~100ms After migrating we are running at ~70ms that is awesome and that means 30% cheaper. This is Powering our API with more than 1B requests/mo

beeradmoore commented 7 months ago

@mnapoli , may want to remove prettyci.com, looks like domain is expired and now for sale.