Introduction to Distributed Computer Systems: Principles and Features