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