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
- 876