https://learning.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/