Deploying to Lambda is easy. The rest is still hard. You won't build a web application using only lambdas.
Lift focuses on "the rest" (other AWS services, CloudFormation, IAM…) with 2 main goals:
- make it simpler
- help getting it right for production (good architecture)
Lift addresses both:
- experienced web developers without serverless/AWS knowledge - it reduces the AWS onboarding lead time
- experienced serverless web developers - it reduces the lead time to ship web application standard features
Addressing both those personas, we ease up our goal to maximize adoption.
Make it simpler:
- Simpler technically: replace lengthy CloudFormation stuff with a few lines of YAML
- Simpler conceptually: use-case focused, developer vocabulary instead of AWS vocabulary.
Help getting it right for production (well architected):
- By default, things deployed by Lift should be "production-ready" (production best practices). Services are provisioned in an opinionated way.
- Covering all possible options/configuration is not a goal.
- Provide a "dev" mode with appropriate configuration. (note: this goal isn't reached yet)
Maximize adoption:
- Open-source
- Low effort: I can install and deploy in 3 commands. Lift is familiar with existing tools and practices.
- No lock-in: I can easily eject to native CloudFormation.
- Not invasive: Minimal impact or constraint on the code or the project. 1 configuration file.
In order to achieve our goals, we first drew a picture of the current AWS serverless ecosystem. We chose to focus on 3 main evaluation criterion to rate existing solutions.
- Is it feature-oriented ? Being an AWS oriented framework requires the developer to have some existing knowledge of AWS services. It is not made for serverless beginners.
- How many steps required to get started ? Solution with a complicated onboarding process are cumbersome
- Can I eject easily ? In case the solution does not fit my requirements anymore, can I easily opt-out without loosing everything I implemented ?
- Which common web features can I easily implement with the solution ?
Criterion \ Solution | Stackery | Architect | Laravel Vapor | Amplify | CDK | SST | SLS | SLS Components |
---|---|---|---|---|---|---|---|---|
Underlying technology | SAM | SAM | CDK | CFN | ||||
Onboarding: Feature-oriented | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ |
Onboarding: Steps quantity | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
Lock-in: Ejectable | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ |
Feature: File upload | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Feature: Authentication | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
Feature: Asynchronous jobs | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Feature: Database | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Feature: Real-time feedback | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Feature: File storage | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Feature: Static website | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ |
Feature: Server-side rendering | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ |
Feature: HTTP API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Feature: Webhook | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |