Slide 1

Slide 1 text

Viktor Holmqvist Jonathan Nilsfors Philipp Leitner Cachematic – Automatic Invalidation in Application-Level Caching Systems Industry Track Presentation

Slide 2

Slide 2 text

Chalmers !2 Company Partner - Bison https://bisonanalytics.com

Slide 3

Slide 3 text

Chalmers !3 Application-Level Caching https://medium.com/@MatthewFTech/spring-boot-cache-with-redis-56026f7da83a

Slide 4

Slide 4 text

Chalmers !4 Cache Invalidation When to purge / update cached data?

Slide 5

Slide 5 text

Chalmers !5 Cache Invalidation When to purge / update cached data? • Time-Based • Explicit

Slide 6

Slide 6 text

Chalmers !6 Cache Invalidation When to purge / update cached data? • Time-Based • Explicit (company requirement)

Slide 7

Slide 7 text

Chalmers !7 Current State Manual Cache Management

Slide 8

Slide 8 text

Chalmers !8 Current State Manual Cache Management Consistent with state of industry, see for example Mertz and Nunes (TSE 2017) https://ieeexplore.ieee.org/stamp/stamp.jsp? tp=&arnumber=7762909

Slide 9

Slide 9 text

Chalmers !9 Challenges of Manual Cache Management • Easy to miss cacheable queries • Development / maintenance complexity • Potential for bugs

Slide 10

Slide 10 text

Chalmers !10 Goal Develop a library for application-level caching • Automated • Reusable • Minimal developer input “Cachematic”

Slide 11

Slide 11 text

Chalmers !11 Cachematic

Slide 12

Slide 12 text

Chalmers !12 Cachematic

Slide 13

Slide 13 text

Chalmers !13 Application Code …. End Users Statement Parser Dependency Tree Hash Function Read Request Processor Write Request Processor SQL Database Key-Value Store Cachematic Code Annotations Serialization Function Cachematic Architecture

Slide 14

Slide 14 text

Chalmers !14 Cache Management Algorithm parse DB statement process based on statement type (query or write)

Slide 15

Slide 15 text

Chalmers !15 If Query: if result in cache then: return cached val else: query DB save to val to cache Cache Management Algorithm parse DB statement process based on statement type (query or write)

Slide 16

Slide 16 text

Chalmers !16 If Query: if result in cache then: return cached val else: query DB save to val to cache Cache Management Algorithm If Write: decide which tables / columns / rows are touched foreach cached result: check for invalidation (hierarchically) write update to DB parse DB statement process based on statement type (query or write)

Slide 17

Slide 17 text

Chalmers !17 Implementation Application Code …. End Users Statement Parser Dependency Tree Hash Function Read Request Processor Write Request Processor SQL Database Key-Value Store Cachematic Code Annotations Serialization Function pyparsing Open Source release planned

Slide 18

Slide 18 text

Chalmers !18 Experimental Evaluation

Slide 19

Slide 19 text

Chalmers !19 Experiment Goal • Evaluate Cachematic based on Bison’s production application

Slide 20

Slide 20 text

Chalmers !20 Experiment Goal • Evaluate Cachematic based on Bison’s production application Main RQ: • Can we improve cache hit rate / performance for read requests?

Slide 21

Slide 21 text

Chalmers !21 Experiment Setup Load Testing Runs 6 user profiles AWS using Locust (https://locust.io) 30-minute test runs

Slide 22

Slide 22 text

Chalmers !22 Read Case (median)

Slide 23

Slide 23 text

Chalmers !23 Read Case Cache Hit Rate 69% (manual: 42%)

Slide 24

Slide 24 text

Chalmers !24 Read Case (90th percentile)

Slide 25

Slide 25 text

Chalmers !25 Lessons Learned • Can we improve cache hit rate / performance for read requests? Yes (by about a factor of 1.6 in our test setup)

Slide 26

Slide 26 text

Chalmers !26 Lessons Learned • Can we improve cache hit rate / performance for read requests? Yes (by about a factor of 1.6 in our test setup) • But: significant overhead in write requests To some extent engineering limitation Needs to be improved for OSS release

Slide 27

Slide 27 text

Chalmers !27 Conclusions Cachematic: Automatic application cache management for Python Improves cache hit rate and read performance (w.r.t. manual cache management solution) However: negative impact on write requests Although acceptable for Bison, Cachematic is not (yet) a general solution for all applications

Slide 28

Slide 28 text

Chalmers !28 I Am Hiring! Talk to me about opportunities in Sweden! (PhD / postdoc)