Skip to content

An architecture & platform for moving data through a complex series of business rules.

License

Notifications You must be signed in to change notification settings

1o1brian/ellington

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ellington

Named after Duke Ellington whose signature tune was "Take the 'A' Train". The song was written about New York City's A train.

Subway Tunnel

Decomposing complex business processes

Ellington's nomenclature is taken from New York's subway system. We've found that drawing parallels to the physical world helps us reason more clearly about the complexities of software. The subway analogy isn't perfect but gets pretty close.

Goals

  • Provide a nomenclature simple enough to be shared by engineering and business folks.
  • Establish constraints to ensure that complex projects are easy to manage, develop, and maintain.

Lexicon

  • Passenger - The stateful context or passenger that will be riding our virtual subway.
  • Ticket - An authorization token that indicates the passenger can ride a specific route.
  • State - The status or disposition assigned to the passenger.
  • State Transition - The transition, performed on the passenger, from one state to another state.
  • Conductor - A supervisor responsible assembling passengers and putting them on a route.
  • Attendant - A helper that determines whether or not a station's logic should run for a given passenger.
  • Station - A stop where business logic is applied. The passenger's state can change once per stop.
  • Line - A rigid track that moves the passenger from point A to point B.
  • Sub Line - A line invoked by a station owned by another line within the same route.
  • Connection - A link between lines.
  • Route - A collection of lines and their connections. Routes are synonymous with projects (e.g. a physical collection of lines into a single repo).
  • Transfer - A link between routes.
  • Network - An entire system of routes & transfers designed to work together.

Rules

  • The passenger's state must transition at each station if the station's logic runs.
  • The passenger's state may only transition once per station.

Visualizations

Ellington Diagram

Implementation

Logging

Ellington exposes a logger that logs all of the following at each station.

  • Date/Time
  • Passenger - Its possible to customize what properties get logged from the passenger.
  • Ticket
  • State
  • Transition
  • Route
  • Line
  • Station

The log output coupled with technologies like map/reduce provides powerful analytics capabilities.

About

An architecture & platform for moving data through a complex series of business rules.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%