Abstract
Information systems have been moved into the cloud for many years now and recently also into more distributed, so-called edge environments in order to integrate sensor data or to reach mobile consumers. In this paper, we will review engineering techniques that help to migrate and run these software systems effectively and efficiently in these environments. The technology layer and software architecture, both from a structural but also a dynamic perspective, are crucial here. The role that microservices and containers as units of development and deployment play shall be investigated as specific architecture solutions. DevOps for more rapid, automated release cycles is a solution for continuous evolution, as are controllers for more autonomous and immediate adaptation. The increasingly important management of performance and dependability in these distributed, heterogeneous environments shall also be discussed. Guiding principles and patterns can help to frame these in terms of an architectural style for distributed mobile information systems that become more dynamic and are often (self)-adaptive.