All Projects → andrewchambers → Orderly

andrewchambers / Orderly

Licence: mit
Ordered process (re)start, shutdown, and supervision.

Programming Languages

rust
11053 projects

Labels

Projects that are alternatives of or similar to Orderly

Hydra
OpenID Certified™ OpenID Connect and OAuth Provider written in Go - cloud native, security-first, open source API security for your infrastructure. SDKs for any language. Compatible with MITREid.
Stars: ✭ 11,884 (+8768.66%)
Mutual labels:  server
Stocazzo
Stocazzo As A Service
Stars: ✭ 129 (-3.73%)
Mutual labels:  server
Health
Laravel Health Panel
Stars: ✭ 1,774 (+1223.88%)
Mutual labels:  server
Server Go
🎨OpenIoTHub Server[内网穿透和物联网设备管理服务器]
Stars: ✭ 127 (-5.22%)
Mutual labels:  server
Docker Vlmcsd
vlmcsd is a replacement for Microsoft's KMS server.
Stars: ✭ 128 (-4.48%)
Mutual labels:  server
Armor
Uncomplicated, modern HTTP server
Stars: ✭ 1,629 (+1115.67%)
Mutual labels:  server
Node Oidc Provider
OpenID Certified™ OAuth 2.0 Authorization Server implementation for Node.js
Stars: ✭ 2,018 (+1405.97%)
Mutual labels:  server
Practical Server Side Swift
Vapor 4 code samples for the Practical Server Side Swift book
Stars: ✭ 133 (-0.75%)
Mutual labels:  server
Old
每天大红包 · 旧版(不再维护,仅供参考)
Stars: ✭ 1,611 (+1102.24%)
Mutual labels:  server
Compose Server Side
Experiment with server side rendering using compose and ktor
Stars: ✭ 131 (-2.24%)
Mutual labels:  server
Flock
Automated deployment of Swift projects to servers
Stars: ✭ 127 (-5.22%)
Mutual labels:  server
Playlistfromsong
Create an offline music playlist from a single song 🎶
Stars: ✭ 128 (-4.48%)
Mutual labels:  server
Ardb
A redis protocol compatible nosql, it support multiple storage engines as backend like Google's LevelDB, Facebook's RocksDB, OpenLDAP's LMDB, PerconaFT, WiredTiger, ForestDB.
Stars: ✭ 1,707 (+1173.88%)
Mutual labels:  server
Jsonrpcserver
Process JSON-RPC requests in Python
Stars: ✭ 126 (-5.97%)
Mutual labels:  server
Spreadsheet server
A python server harnessing the calculational ability of LibreOffice Calc (thanks to 'pyoo'). It provides 'instant' access to the cell ranges of a set of spreadsheets.
Stars: ✭ 132 (-1.49%)
Mutual labels:  server
Http Server
a simple zero-configuration command-line http server
Stars: ✭ 11,280 (+8317.91%)
Mutual labels:  server
Nano
Lightweight, facility, high performance golang based game server framework
Stars: ✭ 1,888 (+1308.96%)
Mutual labels:  server
Luna
A highly scalable and efficient Runescape server. Targets revision #317
Stars: ✭ 133 (-0.75%)
Mutual labels:  server
Jstp
Fast RPC for browser and Node.js based on TCP, WebSocket, and MDSF
Stars: ✭ 132 (-1.49%)
Mutual labels:  server
Express Env Example
A sample express environment that is well architected for scale. Read about it here:
Stars: ✭ 130 (-2.99%)
Mutual labels:  server

Orderly

orderly is a tool that provides ordered and controlled start, stop, restart and cleanup of a group of processes. It aims to be a building block for reliable servers/services/containers/dev-environments.

orderly draws inspiration from erlang supervisor trees, It provides mechanisms to build a tree of supervised processes, and failure can propagrate when process restarts rate exceeds a specified limit.

orderly does actions via external hooks written in any programming language you prefer. orderly does not make assumptions about your application or the setup/teardown that must be done to run it correctly and reliably.

If this interests you, you can read the manual here.

Rationale

orderly was originally made to support reliable recovery of inter-dependant services after failure on a runit based linux system. In this configuration orderly runs beneath runit, providing grouping, left to right start and right to left cleanup that runit lacks. This allows for things like crashed fuse file systems to be cleanly unmounted and recreated, where the unordered restarts of runit cause problems.

orderly also addresses some quality of life problems when developing a group of servers. Generally when developing 'microservice' style projects you are stopping and starting many processes that depend on eachother. orderly makes this work easier, as a single terminal window + ctrl+c is all that is needed to reliably kill/restart all your services.

More complicated init systems like systemd support some of this functionality, but not for these use cases, and only for systems that go 'all-in' with systemd. The project author is a fan of the openbsd operating system for example, which does not even support systemd.

Example

$ orderly -max-start-tokens 2 -start-tokens-per-second 0.1 -- \
  -name redis   -run ./run-redis -wait-started ./wait-redis  -- \
  -name website -run ./run-website -check ./health-check-website -cleanup ./website-cleanup 

For a full featured example with code, check the example directory.

Implementation status

The software works, but the interface is not stable and still being tweaked. Expect breaking changes between releases until version 1.0.0 is released.

Building from source

builds.sr.ht status

Orderly is a rust project, so running cargo build is sufficient for most people after cloning the git repository.

Installation

Binary packages are not yet provided.

The program can be installed from cargo with cargo install orderly

Contact

Try the mailing list

Or create a github issue

Sponsor Messages

This project was sponsored by backupbox.io

Sponsoring

This project took time and effort to make, please sponsor the project via this paypal donation link.

Add a markdown message shorter than 70 characters total to your donation it will be added to the sponsor section. Note that sponsor messages may be rejected at the project authors judgement.

Authors

Andrew Chambers

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].