pluto gems
kevin@freshbooks.com
outline
- Brief introduction to Pluto
- Technical highlights
- Append only data model
intro to pluto
- "secret" project
- RESTful API
- Interact with the ACH network
technical highlights
Event-Drive Architecture
- Decouples entities from each other
- Allows for greater flexibility
- Code reuse (e.g., from web request or from cron job)
- [insert diagram here]
technical highlights
Auto Documentation Generation
- "annotate" in code with metadata
- ReStructed Text (rst)
- Sphinx
- Graphviz for state transition graph
- [show state transition graph]
technical highlights
Append Only Data Model
- Transparency
- Auditability
- Discuss more in detail
other HIGHLIGHTS
- Reusable library for writing fabric tasks
- Parser-generator for NACHA file
- 3rd-party integration with
- Experian
- Wells Fargo SFTP
- 100% branch code coverage
append-only data model
The Problem
- Transparency
- Auditability
append-only data model
Table Schema
- State vs identity
- Mutable attrs vs immutable attrs

append-only data model
CRU operations
- CREATE

- GET

- UPDATE

append-only data model
CRU operations (cont.)
- SEARCH by status


orm integration
Goals

orm integration
Model Mapping

orm integration
Customize attribute access
using descriptor protocol
- status = append_only_attr(...)
- Descriptor protocol
orm integration
Descriptor Protocol

orm integration
Customize Attribute Access with Descriptor

orm integration
History class without using metaclass

orm integration
History class management with metaclass

live demo
other considerations
- MySQL was our constraint
- Postgres Triggers?
- Document-oriented database?
questions?

resources
Descriptor
http://nbviewer.ipython.org/urls/gist.github.com/ChrisBeaumont/5758381/raw/descriptor_writeup.ipynb
pluto gems
By Kevin Jing Qiu
pluto gems
- 1,072