Skip to content

Latest commit

 

History

History
128 lines (86 loc) · 4.35 KB

README.md

File metadata and controls

128 lines (86 loc) · 4.35 KB

Nitric Logo

A fast & fun way to build portable cloud-native applications

GitHub release (latest SemVer) GitHub GitHub Workflow Status codecov Twitter Follow Discord

About Nitric

Nitric is a framework for rapid development of cloud-native and serverless applications. Define your apps in terms of the resources they need, then write the code for serverless function based APIs, event subscribers and scheduled jobs.

Apps built with Nitric can be deployed to AWS, Azure or Google Cloud all from the same code base so you can focus on your products, not your cloud provider.

Nitric makes it easy to:

  • Create smart serverless functions and APIs
  • Build reliable distributed apps that use events and/or queues
  • Securely store, retrieve and rotate secrets
  • Read and write files from buckets

Documentation

The full documentation is available at nitric.io/docs.

We're completely opensource and encourage code contributions.

Status

Nitric is currently in Public Preview. Anyone can use or deploy applications, but work remains and changes are likely. We’d love your feedback as we build additional functionality!

Get in touch

Nitric Membrane

The Membrane is at the heart of the solution. Nitric applications communicate with the Membrane via gRPC to access the following services in a provider agnostic way:

  • Events
  • Queues
  • Storage & Buckets
  • Document Store
  • Secret Store

We provide an expressive infrastructure-as-code style SDK for Node.js. However, Nitric is built on gRPC, so support for many languages is possible.

If you have additional languages you'd like supported, let us know in the issues, we also welcome community contributions for new language support.

Development

Requirements

  • Git
  • Golang (1.16)
  • Make
  • Docker
  • Google Protocol Buffers Compiler (protoc)

Getting Started

Install dependencies

make install-tools

Run unit tests

make test

Run integration tests

make test-integration

Building

Standard Runtime Binaries

Linux support only - used in container images and for production.

make binaries
Running without a child process

It can be useful to run the Membrane in a 'service only' mode, where the cloud APIs are available but you don't need/want to start a child process to handle incoming request. This can be achieved by setting the MIN_WORKERS variable to 0:

(export MIN_WORKERS=0; ./bin/membrane)

Project Structure

The Membrane project source code structure is outlined below:

Directory Description
/core Nitric core interfaces/contracts
/cloud/common Nitric provider common module
/cloud/aws Nitric AWS provider
/cloud/gcp Nitric GPC provider
/cloud/azure Nitric Azure provider
/e2e E2E and integration testing module