Microservices: Science and Engineering