forked from nitrictech/nitric
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request nitrictech#233 from nitrictech/feat/readme-refresh
refresh readme to stay consistent with website.
- Loading branch information
Showing
1 changed file
with
65 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,59 +22,82 @@ | |
|
||
## About Nitric | ||
|
||
[Nitric](https://nitric.io) is a provider independent framework and runtime for cloud-native and serverless applications. Using Nitric, applications take advantage of cloud-native services for events, queues, compute, APIs, storage, and documents without direct integration to cloud specific APIs. | ||
[Nitric](https://nitric.io) 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. | ||
|
||
This decoupling enables applications to remain portable between cloud-providers and alternate deployment options such as Kubernetes or stand-alone servers, from a single application codebase. | ||
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](https://nitric.io/docs) | ||
The full documentation is available at [nitric.io/docs](https://nitric.io/docs). | ||
|
||
We're completely opensource and encourage [code contributions](https://nitric.io/docs/contributions). | ||
|
||
## Status | ||
|
||
Nitric is currently in Public Preview, anyone can use or deploy applications, but work remains and changes are likely | ||
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 | ||
|
||
- Ask questions in [GitHub discussions](https://github.com/nitrictech/nitric/discussions) | ||
|
||
- Find us on [Twitter](https://twitter.com/nitric_io) | ||
|
||
- Send us an [email](mailto:[email protected]) | ||
|
||
## 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 | ||
- Events | ||
- Queues | ||
- Storage & Buckets | ||
- Document Store | ||
- Secret Store | ||
|
||
We provide an expressive infrastructure-as-code style SDK for [Node.js](https://github.com/nitrictech/node-sdk). 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 | ||
|
||
- Git | ||
- Golang (1.16) | ||
- Make | ||
- Docker | ||
- Google Protocol Buffers Compiler | ||
|
||
### Getting Started | ||
|
||
#### Install dependencies | ||
|
||
```bash | ||
make install-tools | ||
``` | ||
|
||
##### Install Protocol Buffers | ||
|
||
Download the Google Protobuf Compiler (standalone binary called `protoc`) from https://github.com/protocolbuffers/protobuf and add it to your $PATH. | ||
|
||
> On MacOS with Homebrew, you can run `brew install protobuf` | ||
> On Fedora, run `sudo dnf install -y protobuf protobuf-compiler protobuf-devel` | ||
### Run unit tests | ||
|
||
```bash | ||
make test | ||
``` | ||
|
||
### Run integration tests | ||
|
||
```bash | ||
make test-integration | ||
``` | ||
|
@@ -95,7 +118,7 @@ make aws-static | |
|
||
Useful for local testing | ||
|
||
```bash | ||
```bash | ||
make aws-static-xp | ||
``` | ||
|
||
|
@@ -119,7 +142,7 @@ make gcp-static | |
|
||
Useful for local testing | ||
|
||
```bash | ||
```bash | ||
make gcp-static-xp | ||
``` | ||
|
||
|
@@ -147,7 +170,6 @@ make dev-static | |
make dev-docker | ||
``` | ||
|
||
|
||
### Run Locally | ||
|
||
To run the membrane server locally, perform a local build of the membrane binary for the platform you're targeting, then run the resulting binary. | ||
|
@@ -182,17 +204,28 @@ It can be useful to run the Membrane in a 'service only' mode, where the cloud A | |
|
||
The Membrane project source code structure is outlined below: | ||
|
||
Directory | Package | Description | ||
--------- |----------- |------------ | ||
`/interfaces/nitric/v1` | `v1` | protoc generated GRPC services code | ||
`/pkg/adapters/grpc` | `grpc` | GRPC service to SDK adaptors | ||
`/pkg/membrane` | `membrane` | membrane application | ||
`/pkg/plugins/...` | `...` | Cloud service SDK plugins | ||
`/pkg/providers/...` | `main` | Cloud provider main application and plugin injection | ||
`/pkg/sdk` | `sdk` | SDK service interfaces | ||
`/pkg/triggers` | `triggers` | provides Nitric event triggers | ||
`/pkg/utils` | `utils` | provides utility functions | ||
`/pkg/worker` | `worker` | Membrane workers representing function/service connections | ||
`/tests/mocks/...` | `...` | Cloud service SDK mocks | ||
`/tests/plugins/...` | `...` | Plugin services integration test suites | ||
`/tools` | `tools` | include for 3rd party build tools | ||
| Directory | Package | Description | | ||
| ----------------------- | ---------- | ---------------------------------------------------------- | | ||
| `/interfaces/nitric/v1` | `v1` | protoc generated GRPC services code | | ||
| `/pkg/adapters/grpc` | `grpc` | GRPC service to SDK adaptors | | ||
| `/pkg/membrane` | `membrane` | membrane application | | ||
| `/pkg/plugins/...` | `...` | Cloud service SDK plugins | | ||
| `/pkg/providers/...` | `main` | Cloud provider main application and plugin injection | | ||
| `/pkg/sdk` | `sdk` | SDK service interfaces | | ||
| `/pkg/triggers` | `triggers` | provides Nitric event triggers | | ||
| `/pkg/utils` | `utils` | provides utility functions | | ||
| `/pkg/worker` | `worker` | Membrane workers representing function/service connections | | ||
| `/tests/mocks/...` | `...` | Cloud service SDK mocks | | ||
| `/tests/plugins/...` | `...` | Plugin services integration test suites | | ||
| `/tools` | `tools` | include for 3rd party build tools | | ||
|
||
## Ideas for using Nitric | ||
|
||
Examples of projects built with Nitric: | ||
|
||
- Identity verification APIs | ||
- FinTech APIs with complex business rules | ||
- Move from Express.js or koa to serverless and distributed architectures | ||
- Migrate from on-prem to the cloud (AWS, Azure or GCP) | ||
|
||
Even though your apps are portable across clouds, they'll still make the best use of the fully-managed and serverless offerings of each cloud provider. Nitric deploys using services like Lambda, CloudRun, DynamoDB, FireStore, CosmosDB, SNS, Event Grid, PubSub... the list is super long. Nitric also makes sure IAM and other access is correctly configured in your deployed applications, so everything stays secure and just works. |