i want to begin build distributed application
what subjects i need to read/learn