A helpful guide for designing backend systems was published on github: https://github.com/donnemartin/system-design-primer
Make sure you really learn TCP and the unix toolchain for digging into network problems e.g. tcpdump. It's always important to isolate things: is it the latest push causing things or is it network problems?