Facilitating rapid prototyping in the distributed data analytics platform OODIDA via active-code replacement

Abstract OODIDA (On-board/Off-board Distributed Data Analytics) is a platform for distributed real-time analytics, targeting fleets of reference vehicles in the automotive industry. Its users are data analysts. The bulk of the data analytics tasks are performed by clients (on-board), while a central cloud server performs supplementary tasks (off-board). OODIDA can be automatically packaged and deployed, which necessitates restarting parts of the system, or all of it. As this is potentially disruptive, we added the ability to execute user-defined Python modules on clients as well as the server. These modules can be replaced without restarting any part of the system; they can even be replaced between iterations of an ongoing assignment. This feature is referred to as active-code replacement. It facilitates use cases such as iterative A/B testing of machine learning algorithms or modifying experimental algorithms on-the-fly. Various safeguards are in place to ensure that custom code does not have harmful consequences, for instance by limiting the allowed types for return values or prohibiting importing of certain modules of the Python standard library. Consistency of results is achieved by majority vote, which prevents tainted state. Our evaluation shows that active-code replacement can be done in less than a second in an idealized setting whereas a standard deployment takes many orders of magnitude more time. The main contribution of this paper is the description of a relatively straightforward approach to active-code replacement that is very user-friendly. It enables a data analyst to quickly execute custom code on the cloud server as well as on client devices. Sensible safeguards and design decisions ensure that this feature can be used by non-specialists who are not familiar with the implementation of OODIDA in general or this feature in particular. As a consequence of adding the active-code replacement feature, OODIDA is now very well-suited for rapid prototyping.

[1]  Mats Jirstrand,et al.  OODIDA: On-board/Off-board Distributed Data Analytics for Connected Vehicles , 2019, ArXiv.

[2]  Dirk Merkel,et al.  Docker: lightweight Linux containers for consistent development and deployment , 2014 .

[3]  Jian Lu,et al.  Javelus: A Low Disruptive Approach to Dynamic Software Updates , 2012, 2012 19th Asia-Pacific Software Engineering Conference.

[4]  Blaise Agüera y Arcas,et al.  Communication-Efficient Learning of Deep Networks from Decentralized Data , 2016, AISTATS.

[5]  D. Manivannan,et al.  A Classification and Characterization of Security Threats in Cloud Computing , 2016, Int. J. Next Gener. Comput..

[6]  Gaël Varoquaux,et al.  Scikit-learn: Machine Learning in Python , 2011, J. Mach. Learn. Res..

[7]  Haibo Chen,et al.  POLUS: A POwerful Live Updating System , 2007, 29th International Conference on Software Engineering (ICSE'07).

[8]  Sajjad Haider,et al.  Security threats in cloud computing , 2011, 2011 International Conference for Internet Technology and Secured Transactions.

[9]  Hai Jin,et al.  MUC: Updating cloud applications dynamically via multi-version execution , 2017, Future Gener. Comput. Syst..

[10]  Carl Boettiger,et al.  An introduction to Docker for reproducible research , 2014, OPSR.

[11]  Mats Jirstrand,et al.  Functional Federated Learning in Erlang (ffl-erl) , 2018, WFLP.

[12]  Hassan Abolhassani,et al.  A survey of dynamic software updating , 2013, J. Softw. Evol. Process..

[13]  Mats Jirstrand,et al.  Active-Code Replacement in the OODIDA Data Analytics Platform , 2019, Euro-Par Workshops.

[14]  Farzad Sabahi,et al.  Cloud computing security threats and responses , 2011, 2011 IEEE 3rd International Conference on Communication Software and Networks.

[15]  Cristiano Giuffrida,et al.  A Taxonomy of Live Updates , 2010 .