Principles of Fog and Edge Computing