|
13 | 13 | - **secure**: all data is encrypted, only visible to authorized users
|
14 | 14 | - **extensible**: you can develop custom actions in golang
|
15 | 15 |
|
16 |
| -µTask allows you to model business processes in a **declarative yaml format**. Describe a set of inputs and a graph of actions and their inter-dependencies: µTask will asynchronously handle the execution of each action, working its way around transient errors and keeping a trace of all intermediary states until completion. |
| 16 | +µTask allows you to model business processes in a **declarative yaml format**. Describe a set of inputs and a graph of actions and their inter-dependencies: µTask will asynchronously handle the execution of each action, working its way around transient errors and keeping an encrypted, auditable trace of all intermediary states until completion. |
17 | 17 |
|
18 | 18 | <img src="./assets/img/utask.png" width="50%" align="right">
|
19 | 19 |
|
20 |
| -Here are some example usecases for µTask: |
21 |
| -- empower your internal PaaS ecosystem by connecting services through a single entry point |
22 |
| -- automate a sequence of API calls across services, replacing ad-hoc scripts without version control |
23 |
| -- formalize user requests: user A requests access to a resource, user B validates and triggers a sequence of actions fulfilling the request |
24 |
| -- trigger remediation commands across a farm of machines over ssh |
25 |
| - |
26 |
| -µTask keeps a structured and encrypted trace of every process that it runs, for you to audit. |
27 |
| - |
28 | 20 | ## Table of contents
|
29 | 21 |
|
| 22 | +- [Real-world examples](#examples) |
30 | 23 | - [Quick Start](#quickstart)
|
31 | 24 | - [Operating in production](#operating)
|
32 | 25 | - [Configuration](#configuration)
|
33 | 26 | - [Authoring Task Templates](#templates)
|
34 | 27 | - [Extending µTask with plugins](#plugins)
|
35 | 28 | - [Contributing](#contributing)
|
36 | 29 |
|
| 30 | +## Real-world examples <a name="examples"></a> |
| 31 | + |
| 32 | +Here are a few real-world examples that can be implemented with µTask: |
| 33 | + |
| 34 | +### Kubernetes ingress TLS certificate provisioning |
| 35 | + |
| 36 | +A new ingress is created on the production kubernetes cluster. A hook triggers a µTask template that: |
| 37 | +- generates a private key |
| 38 | +- requests a new certificate |
| 39 | +- meets the certificate issuer's challenges |
| 40 | +- commits the resulting certificate back to the cluster |
| 41 | + |
| 42 | +### New team member bootstrap |
| 43 | + |
| 44 | +A new member joins the team. The team leader starts a task specifying the new member's name, that: |
| 45 | +- asks the new team member to generate an SSH key pair and copy the public key in a µTask-generated form |
| 46 | +- registers the public SSH key centrally |
| 47 | +- creates accounts on internal services (code repository, CI/CD, internal PaaS, ...) for the new team member |
| 48 | +- triggers another task to spawn a development VM |
| 49 | +- sends a welcome email full of GIFs |
| 50 | + |
| 51 | +### Payments API asynchronous processing |
| 52 | + |
| 53 | +The payments API receives a request that requires an asynchronous antifraud check. It spawns a task on its companion µTask instance that: |
| 54 | +- calls a first risk-assessing API which returns a number |
| 55 | +- if the risk is low, the task succeeds immediately |
| 56 | +- otherwise it calls a SaaS antifraud solution API which returns a score |
| 57 | +- if the score is good, the task succeeds |
| 58 | +- if the score is very bad, the task fails |
| 59 | +- if it is in between, it triggers a human investigation step where an operator can enter a score in a µTask-generated form |
| 60 | +- when it is done, the task sends an event to the payments API to notify of the result |
| 61 | + |
| 62 | +The payments API keeps a reference to the running workflow via its task ID. Operators of the payments API can follow the state of current tasks by requesting the µTask instance directly. Depending on the payments API implementation, it may allow its callers to follow a task's state. |
| 63 | + |
37 | 64 | ## Quick start <a name="quickstart"></a>
|
38 | 65 |
|
39 | 66 | ### Running with docker-compose
|
|
0 commit comments