Apps
Cyclic apps are a combination of code from a git repository and serverless cloud infrastructure. Each app is a stack like:
- Infrastructure: Serverless cloud components - Lambda, ApiGateway, SNS/SQS etc.
- Runtime: Instrumentation and bootstrapping
- Code: Application code from git
When deployed, they service requests from browsers, servers, other apps, or anything that can call out to the internet over http.
Infrastructure
Cyclic manages the provisioning, upgrades, instrumentation, configuration and cloud best practices to set your code up with scalable, fault tolerant, serverless infrastructure.
- AWS Cloud: App infrastructure is provisioned and managed as infrastructure as code (IaC) in AWS CloudFormation
- Serverless: a cloud execution model that enables your apps to be highly scalable, they can process single requests or millions of requests on demand without having to change logic, manage clusters, tune parameters or deploy anything.
- Fault Tolerant: Apps have the capability to be provisioned with active-active disaster recovery strategy in all AWS regions. This means that applications can be made resilient to severe outages, limiting impact to end-users with zero downtime.
Hosting
We describe hosting in terms of where the underlying app infrastructure is hosted. While the application code is executed on AWS Lambda compute, the Lambdas themselves can be hosted in any AWS cloud account, ours or yours.
Runtime
The runtime is the Cyclic environment and process that manages the execution of your code.
- Bootstraps applications to run in a serverless Lambda environment
- Marshalls/unmarshalls requests and responses from port-listening applications to ApiGateway
- Error handling and reporting
- Captures request/response pairs to and from the application code
- Captures traces and logs generated by application code
Code
You bring the code by connecting a git repository to Cyclic. Code is built and deployed on git push
to the default branch on GitHub. Apps are directly linked to their git repositories via webhooks that Cyclic installs.
The repos must contain a package.json
file to inform the build and runtime processes on how to build and start apps.
Build
Cyclic follows the instructions provided in package.json
scripts included in your code. The build environment is transient, all build files/memory is removed after the build. While built apps are limited to 250 MB, the build environment can support up to 10GB including dev dependencies.
Cyclic will prune any devDependencies from the build directory before trying to package. Therefore move any frameworks or modules that are only needed at build time into the devDependencies
section of your package.json
.