Coder Social home page Coder Social logo

hover's Introduction

Hover

Hover is a CLI for deploying web applications to AWS Lambda. It containerizes and deploys your app using Docker, CloudFormation, and the AWS SDK.

Laravel PHP is currently supported by Hover. Contributions to help support more web frameworks (PHP or otherwise) are greatly appreciated.

Features

  • Multiple stages (dev, sandbox, production, ...)
  • Manages each stage separately. You can deploy each stage in a different AWS account.
  • Docker-based. Full control over the runtime environment.
  • Tests run on the same docker image that gets deployed.
  • Can configure multiple queue lambdas for better prioritization management.
  • Environment variables are packaged with the code. Forget the 4 KB Lambda environment variables limit.
  • Environment secrets are securely encrypted and packaged into the image.
  • Deploys from your local/CI machines. From the machine to AWS APIs directly.
  • The application and its asset files are served from the same domain.

Motivation

Taylor Otwell introduced serverless to Laravel in 2019 with the release of Laravel Vapor, and I was part of the team that worked on Vapor from the beginning. I also contributed to the platform's upkeep for over two years.

During this time, I've seen how serverless has assisted monolithic application developers in scaling their apps without the need for complex infrastructure management. As a result, they focused less on infrastructure and more on creating awesome apps.

However, due to strict compliance requirements, using Vapor or any other deployment platform was not an option in some cases. Teams developing apps under such constraints were not permitted to share their AWS credentials with a third party. Hover was designed specifically for these teams.

You can deploy serverless web applications directly from your CI or local machines using Hover. The used AWS credentials can be restricted to only handle the resources required to run the app.

Installation

Homebrew

brew tap themsaid/tools
brew install hover

Manual download

On the releases page, open the latest release and download the binary that matches your OS and architecture.

Usage

Let's create a "dev" stage for an application called "Clouder":

hover stage new clouder dev

This command will create two files in the root directory of our project: /.hover/dev.yml and /.hover/.Dockerfile. Using these files, we can configure how Hover builds and deploys the stage.

Next, we will build our stage:

hover build dev

This command will add the runtime files required for the app to run on Lambda. It will also generate the Docker images specified in the .Dockerfile file. More information on the build process is available in this guide.

Now that the build is complete, let's deploy:

hover deploy

This command will upload our asset files to S3 and our Docker image to ECR. It will also deploy a CloudFormation stack that will configure the various AWS resources that will be used to serve our application. More information on the deployment process is available in this guide.

Documentation

Fully Managed Serverless Laravel

Looking for a hosted serverless deployment platform for Laravel? Check Laravel Vapor. It provides both a GUI & CLI for managing all AWS resources needed to run a Laravel app on AWS Lambda. It handles databases, Redis cache, SSL certificates, S3 storage, DynamoDB tables and more.

Contributing

Hover ships as a binary that uses Docker to build the application, allowing it to support any web framework written in any programming language. For more information on how Hover works, see the architecture concept and runtime environment.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.