This presentation introduces the BOSS system.
BOSS Overview
BOSS is a framework to orchestrate workflow steps around the build system.
Workflow : Ruote
Ruote has been selected as the workflow framework :
- Straightforward
- Concise
- Clean design
- Ruby core
- JSON messages
- Language agnostic
- Active + welcoming upstream
Workflow
- Jobsheet based (not state-machine):
- The workflow passes a 'sheet of paper' between participants
- Each participant looks at the paper, does some work, writes on it and passes it on
- The engine decides who gets the paper next
- Paper = JSON structure
- Multiple independent workflows can co-exist
AMQP
- Reliability
- Performance
- Flexibility
- Simplicity
- Multiple Language Bindings
- Persistence, concurrence and queuing “for free”
Talking to the BOSS
- AMQP – Queues and RPC
- Queues for 'work'
- RPC for immediate calls (see BOSS/AIR)
- Messages – all JSON
- Workitems
- Service request/response
Communication : Queues
Communication : RPC
Communication : BOSS Participant
- Receive a workitem
- Process it
- Return it
- Control thread using RPC allows cancel/status