npm.io
0.24.0-alpha.0 • Published 2 years ago

@toa.io/filesystem

Licence
MIT
Version
0.24.0-alpha.0
Deps
3
Size
14 kB
Vulns
0
Weekly
0
Stars
3

Toa

Runtime for low code eventually consistent distributed systems.

Status

The project is under heavy development, while being used in production by its authors. Non-scattered documentation is coming some time later.

Features

Runtime
  • Interservice communications
    • Reliable RPC and Events (ComQ)
    • Flow control
    • Eventual consistency guarantee
    • Uniform interface
      • Input/query segregation
      • Successful rejections: a refusal is an answer rather than a failure
      • Readonly chains: a call that may only read is refused where it reaches an operation that may change state, however far down the chain
      • Distributed exception handling: a failure reaches whoever is waiting, or is tried again and then kept
      • Tasks: a call nobody waits for — accepted, kept, and run later by whichever process is free to take it
    • Contracts: a component is given what another one provides, at the version its deployment names
    • Multi-protocol transmission
      • built-in support for AMQP and HTTP
    • In-memory communications
    • Messages validation
  • Persistent state management
    • Concurrency control
    • Data validation
    • Multi-document transactions
    • Transactional outbox: state and its events commit together
    • Transactional inbox: the same call arriving twice changes state once
    • Convergence: deployments of one context, each with its own database, converging on the same entity state
    • Invariants (guards)
    • Migrations: indexes and data changes, applied once per database
    • MongoDB
  • Cadence: calls that happen on their own time
    • a pulse calls a component's own operation on a cadence, with no schedule stored anywhere
    • a delay hands one call over to be made later, and answers the id that cancels it
  • Continuity: a task that raised picks up where it failed, rather than making again what had already answered
  • Configuration with secrets
  • API Gateway
  • Atomicity: what the replicas of a component decide together
  • Telemetry
    • Structured logs: to stdout, to an OTLP endpoint, or both
    • Distributed tracing
    • Metrics: unsampled, and what the runtime records by zone
  • Introspection: product topology collection and visualization
    • Halt: a deployment stops, holds nothing open, and comes back on its own — and is taken down only once the map says nothing was running
  • Realtime streams
  • BLOB storage
    • MIME type detection and validation
    • Providers: file system, Amazon S3, Cloudinary
  • Transient state
  • Built-in Fetch with retries and telemetry
Development
  • Language interoperability
  • Service prototyping (inheritance)
    • Generic prototype
  • Data and operations schemas
  • Declarative API Gateway endpoints with authorization policies
  • Integration tests SDK
  • Runtime bootloader API
  • Development environment configuration
  • CLI
    • toa mono — composition and extension services in one process
  • Extensibility:
    • Persistent storages
    • Communication protocols
    • Runtime core abstractions
    • Arbitrary services
Operations
  • Standardized containerization
  • Compositions: the components, and the extension services, deployed as one pod
  • Resource management
  • Environment variables
  • Standalone infrastructure configuration
  • One-command fully automated deployment
    • Preset multi-arch docker images
    • Helm deployment to kubernetes
    • Single-image (toa deploy --mono) deployment
  • CLI utilities
    • Secrets management
    • Remote container shell