Skip to content

Commit

Permalink
Merge branch 'main' into projection-actor
Browse files Browse the repository at this point in the history
  • Loading branch information
eliasdarruda committed Nov 27, 2024
2 parents ba73cfd + d2f66de commit fb3e236
Show file tree
Hide file tree
Showing 113 changed files with 4,033 additions and 453 deletions.
2 changes: 1 addition & 1 deletion Dockerfile-activator-api
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ ENV RELEASE_NAME="activator_api"
# This will be the full nodename
ENV RELEASE_NODE="${RELEASE_NAME}@${POD_IP}"

RUN echo "-setcookie ${NODE_COOKIE}" >> ./rel/vm.args.eex
RUN echo "-setcookie ${RELEASE_COOKIE}" >> ./rel/vm.args.eex

RUN cd spawn_activators/activator_api \
&& mix deps.get \
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile-activator-kafka
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ ENV RELEASE_NAME="activator_kafka"
# This will be the full nodename
ENV RELEASE_NODE="${RELEASE_NAME}@${POD_IP}"

RUN echo "-setcookie ${NODE_COOKIE}" >> ./rel/vm.args.eex
RUN echo "-setcookie ${RELEASE_COOKIE}" >> ./rel/vm.args.eex

RUN cd spawn_activators/activator_kafka \
&& mix deps.get \
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile-activator-pubsub
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ ENV RELEASE_NAME="activator_pubsub"
# This will be the full nodename
ENV RELEASE_NODE="${RELEASE_NAME}@${POD_IP}"

RUN echo "-setcookie ${NODE_COOKIE}" >> ./rel/vm.args.eex
RUN echo "-setcookie ${RELEASE_COOKIE}" >> ./rel/vm.args.eex

RUN cd spawn_activators/activator_pubsub \
&& mix deps.get \
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile-activator-rabbitmq
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ ENV RELEASE_NAME="activator_rabbitmq"
# This will be the full nodename
ENV RELEASE_NODE="${RELEASE_NAME}@${POD_IP}"

RUN echo "-setcookie ${NODE_COOKIE}" >> ./rel/vm.args.eex
RUN echo "-setcookie ${RELEASE_COOKIE}" >> ./rel/vm.args.eex

RUN cd spawn_activators/activator_rabbitmq \
&& mix deps.get \
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile-activator-sqs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ ENV RELEASE_NAME="activator_sqs"
# This will be the full nodename
ENV RELEASE_NODE="${RELEASE_NAME}@${POD_IP}"

RUN echo "-setcookie ${NODE_COOKIE}" >> ./rel/vm.args.eex
RUN echo "-setcookie ${RELEASE_COOKIE}" >> ./rel/vm.args.eex

RUN cd spawn_activators/activator_sqs \
&& mix deps.get \
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile-elixir-example
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ RUN mix local.rebar --force \
&& mix release.init

RUN echo "-name spawn_sdk_elixir@${HOSTNAME}" >> ./rel/vm.args.eex \
&& echo "-setcookie ${NODE_COOKIE}" >> ./rel/vm.args.eex
&& echo "-setcookie ${RELEASE_COOKIE}" >> ./rel/vm.args.eex

RUN cd spawn_sdk/spawn_sdk_example \
&& mix deps.get \
Expand Down
8 changes: 2 additions & 6 deletions Dockerfile-initializer
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,11 @@ RUN mix local.rebar --force \
&& mix deps.get \
&& mix release.init

# Overriden at runtime
ENV POD_IP="127.0.0.1"

# This will be the basename of node
ENV RELEASE_NAME="spawn_initializer"

# This will be the full nodename
ENV RELEASE_NODE="${RELEASE_NAME}@${POD_IP}"

# Disable Erlang Dist
ENV RELEASE_DISTRIBUTION=none

RUN mix deps.get \
&& mix release spawn_initializer
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile-operator
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ ENV RELEASE_NAME="spawn_operator"
# This will be the full nodename
ENV RELEASE_NODE="${RELEASE_NAME}@${POD_IP}"

RUN echo "-setcookie ${NODE_COOKIE}" >> ./rel/vm.args.eex
RUN echo "-setcookie ${RELEASE_COOKIE}" >> ./rel/vm.args.eex

RUN cd spawn_operator/spawn_operator \
&& mix deps.get \
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile-proxy
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ ENV RELEASE_NAME="proxy"
# This will be the full nodename
ENV RELEASE_NODE="${RELEASE_NAME}@${POD_IP}"

#RUN echo "-setcookie ${NODE_COOKIE}" >> ./priv/rel/vm.args.eex
#RUN echo "-setcookie ${RELEASE_COOKIE}" >> ./priv/rel/vm.args.eex

RUN cd spawn_proxy/proxy \
&& mix deps.get \
Expand Down
53 changes: 16 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,58 +8,35 @@
**Actor Mesh Runtime**

![ci](https://github.com/eigr/spawn/actions/workflows/ci.yaml/badge.svg)
[![docs-ci](https://github.com/eigr/spawn/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/eigr/spawn/actions/workflows/pages/pages-build-deployment)
![last commit](https://img.shields.io/github/last-commit/eigr/spawn?style=social)
[![join discord](https://badgen.net/badge/discord/Join%20Eigr%20on%20Discord/discord?icon=discord&label&color=blue)](https://discord.gg/2PcshvfS93)
[![twitter](https://badgen.net/badge/twitter/@eigr_io/blue?label&icon=twitter)](https://twitter.com/eigr_io)

### **[Website](https://eigr.io)****[Getting Started](docs/getting_started.md)****[SDKs](docs/sdks.md)****[Documentation](https://eigr.io/docs/projects-spawn/spawn-introduction/)****[Blog](https://eigr.io/blog/)**
### **[Getting Started ](https://eigr.io/spawn/docs/getting_started.html)****[Website](https://eigr.io/spawn)****[Documentation](https://eigr.io/spawn/docs/)****[Blog](https://eigr.io/blog/)**


## Overview
## Overview

Spawn is a groundbreaking open-source runtime designed to address the needs of modern businesses. Originating from contributors to [Cloudstate](https://github.com/cloudstateio/cloudstate), Spawn offers a flexible and scalable solution for both cloud and on-premises environments.
Spawn is an actor-based service mesh that abstracts away infrastructure complexities while offering a powerful, polyglot API that accelerates business development. Built by contributors to [Cloudstate](https://github.com/cloudstateio/cloudstate), Spawn simplifies stateful application design for cloud or on-premises environments.

With its polyglot capabilities, Spawn supports multiple programming languages, empowering your team to utilize the best tools for each task. This flexibility not only enhances developer productivity but also accelerates the achievement of your business goals.
With support for multiple programming languages, Spawn empowers teams to work faster and smarter, using the best tools for the job. Whether you're scaling up or refining internal processes, Spawn’s architecture allows you to focus on what matters: delivering value to your business.

Explore how Spawn can help you meet your business objectives efficiently. Check out our [documentation](docs/index.md) to [get started](docs/getting_started.md).
Explore how Spawn can help you meet your business objectives efficiently. Check out our [documentation](docs/index.md) and [installation guide](docs/install.md) to [get started](docs/getting_started.md).

## Why Choose Spawn?
## Why Spawn?

- **Business-Driven Development:** Focus on delivering business value by leveraging a runtime that simplifies infrastructure management, allowing your team to concentrate on core objectives.
- **Stateful Computing:** Manage state effortlessly within your applications, ensuring consistency and reliability across distributed systems.
- **Polyglot Programming Model:** Use multiple languages to build your applications, providing the flexibility to choose the best tools and frameworks for your needs.
- **Scalability:** Designed to scale with your business, Spawn can handle growing demands seamlessly, whether on the cloud or on-premises.
- **Resilience and Performance:** Benefit from robust architecture that ensures high availability and performance, crucial for mission-critical applications.
- **Simplified Infrastructure:** Spawn abstracts the complex backend architecture so developers can focus on writing business logic, not managing infrastructure.
- **Stateful Computing Made Easy:** Spawn handles state management natively, allowing your applications to be both scalable and resilient across distributed systems.
- **Polyglot Flexibility:** Build in the language of your choice, from Elixir to Java to TypeScript and others, all within the same ecosystem.
- **Seamless Scalability:** Whether you’re deploying in the cloud or on-premises, Spawn grows with your business, ensuring high availability and performance.
- **Designed for Business Needs:** Optimize productivity by streamlining your development process with a runtime that enables rapid time-to-market for critical features.

## How Spawn Empowers Your Business

Spawn's stateful computing model abstracts complex infrastructure tasks, enabling your developers to focus on what truly matters—delivering features that drive your business forward. By automating state management, configuration, and integration flows, Spawn reduces the overhead on your team and accelerates time-to-market.
By abstracting infrastructure, Spawn lets engineers focus on what truly drives growth—building features that matter. With automated state management and simplified configuration, Spawn accelerates development cycles and enhances team efficiency.

For CEOs and CTOs, Spawn provides confidence that your company's objectives can be achieved more swiftly and efficiently, enhancing competitiveness without compromising on technical quality or scalability.

## Getting Started with Spawn

Starting with Spawn is straightforward and efficient. Here are two quick demonstrations to help you begin:

### Step 1: Installing the Actor Orchestrator Runtime

To get started, you'll need to install the Spawn Actor Orchestrator runtime. The current runtime is available as an operator for Kubernetes. We also provide a CLI to simplify this process.

1. **Install the CLI:**

```sh
curl -sSL https://github.com/eigr/spawn/releases/download/v1.4.3/install.sh | sh
```

2. **Install the Operator**

![Setting Up Operator](docs/gifs/install.gif)

### Step 2: Create Your First Project

![Create Your First Project](docs/gifs/new-project.gif)

Check out our [documentation](docs/index.md) for detailed guides and tutorials.
For technical leaders, Spawn provides the confidence to meet business goals more efficiently, enhancing competitiveness without compromising on scalability or technical robustness.

## Latest Blogs

Expand All @@ -80,6 +57,8 @@ Watch some insightful talks on Eigr Community and Spawn:
- **Adriano Santos ElugSP 2023**: https://www.youtube.com/watch?v=MKTqiAtpK1E _(Portuguese)_
- **Elias Arruda on Elixir CWB (Curitiba)**: https://www.youtube.com/live/yE_uWbPEWnI?si=5L3SORG3PERZpQ4V&t=463 _(Portuguese)_

- **Adriano Santos NodeBR on Microsoft Reactor - API's Like a Boss**: https://www.youtube.com/live/ZXJJ3BdgVBk?si=Ai0kfBrVTl6V7toT&t=373 _(Portuguese)_


## Meet Sepp: Our Cyberpunk Mascot

Expand Down
5 changes: 5 additions & 0 deletions config/config.exs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ config :do_it, DoIt.Commfig,
dirname: System.tmp_dir(),
filename: "spawn_cli.json"

config :flame, :terminator,
shutdown_timeout: :timer.minutes(3),
failsafe_timeout: :timer.minutes(1),
log: :debug

# config :spawn_statestores, Statestores.Vault,
# json_library: Jason,
# ciphers: [
Expand Down
2 changes: 2 additions & 0 deletions docs/activators.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

TODO

[Back to Index](index.md)

[Next: Observability](observability.md)

[Previous: Statestores](statestores.md)
2 changes: 2 additions & 0 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ As we use Kubernetes to orchestrate our workloads through our Operator each user

In turn, each Sidecar container within a POD organizes itself to form an Erlang cluster for each ActorSystem. Different ActorSystems can coexist in the same Kubernetes cluster and these in turn communicate cross ActorSystem using a Nats Broker as a transport mechanism via message passing. In this way we can granulate a large system into smaller parts, forming small Erlang clusters that still manage to maintain the behavior of a larger cluster depending on how the developer organizes its deployable units.

[Back to Index](index.md)

[Next: Conceptual](conceptual.md)

[Previous: Overview](overview.md)
2 changes: 2 additions & 0 deletions docs/conceptual.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@ processing, real-time data ingestion, service integrations, financial or transac
and logistics are some of the domains that can be mastered by the Eigr Functions Spawn
platform.

[Back to Index](index.md)

[Next: Features](features.md)

[Previous: Overview](architecure.md)
2 changes: 2 additions & 0 deletions docs/crds.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ Spawn defines some custom Resources for the user to interact with the API for de
handle them. Examples of this CRD can be found in the [examples/k8s/activators
folder](../examples/k8s/activators).

[Back to Index](index.md)

[Next: Actor System Resource](crds/actor_system.md)

[Previous: SDKs](sdks.md)
2 changes: 2 additions & 0 deletions docs/durable.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

TODO

[Back to Index](index.md)

[Next: Protocol](protocol.md)

[Previous: Main Concepts](main.md)
2 changes: 2 additions & 0 deletions docs/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@
- [ ] Actor invocation with Authentication/Authorization Basic Auth flow. Under development.
- [ ] Actor invocation with Authentication/Authorization JWT Auth flow. Under development.

[Back to Index](index.md)

[Next: Install](install.md)

[Previous: Architecture](architecture.md)
Loading

0 comments on commit fb3e236

Please sign in to comment.