|
3 | 3 | > [!IMPORTANT] |
4 | 4 | > This package is in active development - contributions are welcome! |
5 | 5 |
|
6 | | -YOLO helps you deploy high-availability PHP applications on AWS. |
| 6 | +YOLO helps you deploy high-availability PHP applications to AWS. |
7 | 7 |
|
8 | | -The CLI tool takes care of provisioning and configuring all required resources on AWS, coupled with build and deployment |
| 8 | +The CLI tool lives inside your Laravel app in `vendor/bin/yolo`, and takes care of provisioning and configuring all |
| 9 | +required resources on |
| 10 | +AWS, coupled with build and deployment |
9 | 11 | commands to deploy applications to production from your local machine or CI pipeline. |
10 | 12 |
|
| 13 | +YOLO has been battle-tested on apps that serve 2 million requests per day. |
| 14 | + |
| 15 | +## Features |
| 16 | + |
| 17 | +### Autoscaling Worker Groups |
| 18 | + |
| 19 | +YOLO provisions an Application Load Balancer and autoscaling groups (web, queue, scheduler) for each environment. |
| 20 | + |
| 21 | +Each group is self-healing should an instance become unresponsive, and the web group automatically scales up to handle |
| 22 | +traffic bursts. |
| 23 | + |
| 24 | +In addition, worker groups can be combined (coming soon) to a single EC2 instance to consolidate small workloads. |
| 25 | + |
| 26 | +### Resource Sharing |
| 27 | + |
| 28 | +YOLO shares various resources between applications to reduce costs. |
| 29 | + |
| 30 | +### Zero-downtime Deployments |
| 31 | + |
| 32 | +YOLO leverages AWS CodeDeploy to perform zero-downtime deployments, which can be triggered from the CLI or via a CI |
| 33 | +pipeline. |
| 34 | + |
| 35 | +### Multi-tenancy |
| 36 | + |
| 37 | +Specify tenants in the manifest and YOLO will take care of provisioning resources for each tenant. |
| 38 | + |
| 39 | +### S3 |
| 40 | + |
| 41 | +Leverage S3 for storing build artefacts and user data files. |
| 42 | + |
| 43 | +### Octane (experimental) |
| 44 | + |
| 45 | +YOLO supports Laravel Octane for turbocharged PHP applications. |
| 46 | + |
| 47 | +### Video Transcoding |
| 48 | + |
| 49 | +YOLO can provision resources on AWS to simplify video transcoding on AWS using AWS Elemental MediaConvert. |
| 50 | + |
| 51 | +### And Much More... |
| 52 | + |
| 53 | +- Least priviledge permissions with strong segregation across environments and apps |
| 54 | +- Seperate commands that run on deployment across worker groups |
| 55 | +- Scheduled MySQL backups using `mysqldump` |
| 56 | +- Control of build and deploy commands |
| 57 | +- Re-use existing VPCs, subnets, internet gateways and more |
| 58 | + |
11 | 59 | ___ |
12 | 60 |
|
13 | 61 | ## Disclaimer |
14 | 62 |
|
15 | | -YOLO is designed for PHP developers who want to manage AWS using an infrastructure-as-code approach, using plain-old PHP |
16 | | -rather than CloudFormation / Terraform / K8s / Elastic Beanstalk / <some-other-fancy-alternative>. |
| 63 | +YOLO is designed for PHP developers who are comfortable managing AWS using an infrastructure-as-code approach. |
17 | 64 |
|
18 | | -> [!IMPORTANT] |
19 | | -> While YOLO has been battle-tested on apps serving millions of requests per day, it is not supposed to be a |
20 | | -> set-and-forget solution for busy apps, but rather allows you to proactively manage, grow and adapt your infrastructure |
21 | | -> as requirements change over time. |
| 65 | +It is, at it's core, a Symfony CLI app that leverages the AWS SDK, rather than CloudFormation / Terraform / K8s / |
| 66 | +Elastic |
| 67 | +Beanstalk / <some-other-fancy-alternative>. |
| 68 | + |
| 69 | +While YOLO has underpinned very large, mission-critical production applications, it is not intended to be a set and |
| 70 | +forget solution; rather it acts as a control plane that allows you to manage and expand your AWS footprint over time. |
22 | 71 |
|
23 | 72 | It goes without saying, but use YOLO at your own risk. |
24 | 73 |
|
@@ -173,7 +222,7 @@ environments: |
173 | 222 | artefacts-bucket: |
174 | 223 | cloudfront: |
175 | 224 | alb: |
176 | | - transcoder: false |
| 225 | + mediaconvert: false |
177 | 226 | autoscaling: |
178 | 227 | web: |
179 | 228 | queue: |
|
0 commit comments