Advertisement

Containers in Software Development: A Systematic Mapping Study

  • Mikael KoskinenEmail author
  • Tommi Mikkonen
  • Pekka Abrahamsson
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 11915)

Abstract

Over the past decade, continuous software development has become a common place in the field of software engineering. Containers like Docker are a lightweight solution that developers can use to deploy and manage applications. Containers are used to build both component-based architectures and microservice architectures. Still, practitioners often view containers only as way to lower resource requirements compared to virtual machines. In this paper, we conducted a systematic mapping study to find information on what is known of how containers are used in software development. 56 primary studies were selected into this paper and they were categorized and mapped to identify the gaps in the current research. Based on the results containers are most often discussed in the context of cloud computing, performance and DevOps. We find that what is currently missing is more deeply focused research.

Keywords

Containers Software engineering Systematic mapping studies 

References

  1. 1.
    Paraiso, F., Challita, S., Al-Dhuraibi, Y., et al.: Model-driven management of docker containers, pp. 718–725. IEEE (2016)Google Scholar
  2. 2.
    Dua, R., Raja, A.R., Kakadia, D.: Virtualization vs Containerization to support PaaS, pp. 610–614. IEEE Computer Society, Washington, DC (2014)Google Scholar
  3. 3.
    Hoenisch, P., Weber, I., Schulte, S., Zhu, L., Fekete, A.: Four-fold auto-scaling on a contemporary deployment platform using docker containers. In: Barros, A., Grigori, D., Narendra, N.C., Dam, H.K. (eds.) ICSOC 2015. LNCS, vol. 9435, pp. 316–323. Springer, Heidelberg (2015).  https://doi.org/10.1007/978-3-662-48616-0_20CrossRefGoogle Scholar
  4. 4.
    Lau, K.-K., Wang, Z.: Software Component Models. TSE 33(10), 709–724 (2007).  https://doi.org/10.1109/TSE.2007.70726CrossRefGoogle Scholar
  5. 5.
    Jaramillo, D., Nguyen, D.V., Smart, R.: Leveraging microservices architecture by using Docker technology, pp. 1–5. IEEE (2016)Google Scholar
  6. 6.
    Woodfield, S.N., Dunsmore, H.E., Shen, V.Y.: The effect of modularization and comments on program comprehension, pp. 215–223. IEEE Press, Piscataway (1981)Google Scholar
  7. 7.
    Card, D.N., Page, G.T., McGarry, F.E.: Criteria for software modularization, pp. 372–377. IEEE Computer Society Press, Los Alamitos (1985)Google Scholar
  8. 8.
    Völter, M.: Pluggable component – a pattern for interactive system configurationGoogle Scholar
  9. 9.
    Crnkovic, I.: Component-based software engineering? New challenges in software development (2003)Google Scholar
  10. 10.
    Birsan, D.: On plug-ins and extensible architectures. Queue 3(2), 40–46 (2005).  https://doi.org/10.1145/1053331.1053345MathSciNetCrossRefGoogle Scholar
  11. 11.
    Mayer, J., Melzer, I., Schweiggert, F.: Lightweight plug-in-based application development. In: Aksit, M., Mezini, M., Unland, R. (eds.) NODe 2002. LNCS, vol. 2591, pp. 87–102. Springer, Heidelberg (2003).  https://doi.org/10.1007/3-540-36557-5_9CrossRefGoogle Scholar
  12. 12.
    Marquardt, K.: Patterns for Plug-Ins. In: EuroPLoP (1999)Google Scholar
  13. 13.
    Garousi, V., Felderer, M., Mäntylä, M.V.: Guidelines for including grey literature and conducting multivocal literature reviews in software engineering. Inf. Softw. Technol. 106, 101–121 (2019).  https://doi.org/10.1016/j.infsof.2018.09.006CrossRefGoogle Scholar
  14. 14.
    Eisenhardt, K.: Building theory from case study research. Acad. Manag. Rev. 14, 532–550 (1989).  https://doi.org/10.2307/258557CrossRefGoogle Scholar
  15. 15.
    Petersen, K., Feldt, R., Mujtaba, S., et al.: Systematic mapping studies in software engineering, pp. 68–77. BCS Learning & Development Ltd., Swindon (2008)Google Scholar
  16. 16.
    Kitchenham, B.: Guidelines for performing systematic literature reviews in software engineering. EBSE Technical report EBSE-2007-01 (2007)Google Scholar
  17. 17.
    Kitchenham, B., Charters, S.: Systematic reviews (2009). https://www.york.ac.uk/crd/guidance/
  18. 18.
    Kitchenham, B., Brereton, P.: Using mapping studies in software engineering. Inf. Softw. Technol. 55(12), 2049–2075 (2013).  https://doi.org/10.1016/j.infsof.2013.07.010CrossRefGoogle Scholar
  19. 19.
    Kitchenham, B.A., Mendes, E., Travassos, G.H.: Cross versus within-company cost estimation studies: a systematic review. TSE 33(5), 316–329 (2007).  https://doi.org/10.1109/TSE.2007.1001CrossRefGoogle Scholar
  20. 20.
    Stillwell, M., Coutinho, J.G.F.: A DevOps approach to integration of software components in an EU research project. In: Proceedings of the 1st International Workshop on Quality-Aware DevOps, pp. 1–6. ACM, New York (2015)Google Scholar
  21. 21.
    Tuo, F., Bai, Y., Long, S., et al.: A new model of docker-based E-learning in Hadoop. In: Proceedings of the 2018 International Conference on Distance Education and Learning - ICDEL 2018, pp. 22–31. ACM Press, New York (2018)Google Scholar
  22. 22.
    Kozhirbayev, Z., Sinnott, R.O.: A performance comparison of container-based technologies for the cloud. Future Gener. Comput. Syst. 68, 175–182 (2017).  https://doi.org/10.1016/j.future.2016.08.025CrossRefGoogle Scholar
  23. 23.
    Telschig, K., Schonberger, A., Knapp, A.: A real-time container architecture for dependable distributed embedded applications. In: 2018 IEEE 14th International Conference on Automation Science and Engineering (CASE), pp. 1367–1374. IEEE (2018)Google Scholar
  24. 24.
    Syed, M.H., Fernandez, E.B.: A reference architecture for the container ecosystem. In: Proceedings of the 13th International Conference on Availability, Reliability and Security, pp. 1–6. ACM, New York (2018)Google Scholar
  25. 25.
    Rahman, M., Chen, Z., Gao, J.: A service framework for parallel test execution on a developer’s local development workstation. In: Proceedings - 9th IEEE International Symposium on Service-Oriented System Engineering, IEEE SOSE 2015, vol. 30, pp. 153–160 (2015)Google Scholar
  26. 26.
    Kratzke, N.: About the complexity to transfer cloud applications at runtime and how container platforms can contribute? In: Ferguson, D., Muñoz, V.M., Cardoso, J., Helfert, M., Pahl, C. (eds.) CLOSER 2017. CCIS, vol. 864, pp. 19–45. Springer, Cham (2018).  https://doi.org/10.1007/978-3-319-94959-8_2CrossRefGoogle Scholar
  27. 27.
    Song, M., Zhang, C., Haihong, E.: An auto scaling system for API gateway based on Kubernetes. In: 2018 IEEE 9th International Conference on Software Engineering and Service Science (ICSESS), pp. 109–112 (2018)Google Scholar
  28. 28.
    Cito, J., Schermann, G., Wittern, J.E., et al.: An empirical analysis of the docker container ecosystem on GitHub. In: IEEE International Working Conference on Mining Software Repositories, pp. 323–333. IEEE Press, Piscataway (2017)Google Scholar
  29. 29.
    Zhang, Y., Yin, G., Wang, T., et al.: An insight into the impact of dockerfile evolutionary trajectories on quality and latency. In: 2018 IEEE 42nd Annual Computer Software and Applications Conference (COMPSAC), vol. 1, pp. 138–143. IEEE (2018)Google Scholar
  30. 30.
    Naughton, T., Sorrillo, L., Simpson, A., Imam, N.: Balancing performance and portability with containers in HPC: an OpenSHMEM example. In: Gorentla Venkata, M., Imam, N., Pophale, S. (eds.) OpenSHMEM 2017. LNCS, vol. 10679, pp. 130–142. Springer, Cham (2018).  https://doi.org/10.1007/978-3-319-73814-7_9CrossRefGoogle Scholar
  31. 31.
    Naik, N.: Building a virtual system of systems using docker swarm in multiple clouds. In: ISSE 2016 - 2016 International Symposium on Systems Engineering - Proceedings Papers, pp. 1–3 (2016)Google Scholar
  32. 32.
    Shah, J., Dubaria, D.: Building modern clouds: using Docker, Kubernetes & Google cloud platform. In: 2019 IEEE 9th Annual Computing and Communication Workshop and Conference (CCWC), p. 184. IEEE (2019)Google Scholar
  33. 33.
    Klinaku, F., Frank, M., Becker, S.: CAUS: an elasticity controller for a containerized microservice. In: Companion of the 2018 ACM/SPEC International Conference on Performance Engineering, pp. 93–98. ACM, New York (2018)Google Scholar
  34. 34.
    Kehrer, S., Riebandt, F., Blochinger, W.: Container-based module isolation for cloud services. In: 2019 IEEE International Conference on Service-Oriented System Engineering (SOSE), pp. 177–186 (2019)Google Scholar
  35. 35.
    Berger, C., Nguyen, B., Benderius, O.: Containerized development and microservices for self-driving vehicles: experiences & best practices. In: Proceedings - 2017 IEEE International Conference on Software Architecture Workshops, ICSAW 2017: Side Track Proceedings, pp. 7–12 (2017)Google Scholar
  36. 36.
    Sharma, P., Chaufournier, L., Shenoy, P., et al.: Containers and virtual machines at scale: a comparative study. In: Proceedings of the 17th International Middleware Conference, pp. 1–13. ACM, New York (2016)Google Scholar
  37. 37.
    Révész, Á., Pataki, N.: Continuous A/B testing in containers. In: Proceedings of the 2019 2nd International Conference on Geoinformatics and Data Analysis - ICGDA 2019, pp. 11–14. ACM, New York (2009)Google Scholar
  38. 38.
    Barna, C., Khazaei, H., Fokaefs, M., et al.: Delivering elastic containerized cloud applications to enable DevOps. In: Proceedings of the 12th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, pp. 65–75. IEEE Press, Piscataway (2017)Google Scholar
  39. 39.
    Bahadori, K., Vardanega, T.: DevOps meets dynamic orchestration. In: Bruel, J.-M., Mazzara, M., Meyer, B. (eds.) DEVOPS 2018. LNCS, vol. 11350, pp. 142–154. Springer, Cham (2019).  https://doi.org/10.1007/978-3-030-06019-0_11CrossRefGoogle Scholar
  40. 40.
    Dhakate, S., Godbole, A.: Distributed cloud monitoring using Docker as next generation container virtualization technology. In: 2015 Annual IEEE India Conference (INDICON), pp. 1–5 (2015)Google Scholar
  41. 41.
    Naik, N.: Docker container-based big data processing system in multiple clouds for everyone. In: 2017 IEEE International Symposium on Systems Engineering, ISSE 2017 - Proceedings, pp. 1–7 (2017)Google Scholar
  42. 42.
    Martin, A., Raponi, S., Combe, T., et al.: Docker ecosystem – vulnerability analysis. Comput. Commun. 122, 30–43 (2018).  https://doi.org/10.1016/j.comcom.2018.03.011CrossRefGoogle Scholar
  43. 43.
    Nardelli, M., Hochreiner, C., Schulte, S.: Elastic provisioning of virtual machines for container deployment. In: Proceedings of the 8th ACM/SPEC on International Conference on Performance Engineering Companion, pp. 5–10. ACM, New York (2017)Google Scholar
  44. 44.
    Fokaefs, M., Barna, C., Veleda, R., et al.: Enabling DevOps for containerized data-intensive applications: an exploratory study. In: Proceedings of the 26th Annual International Conference on Computer Science and Software Engineering, pp. 138–148. IBM Corp, Riverton (2016)Google Scholar
  45. 45.
    Santos, E.A., McLean, C., Solinas, C., et al.: How does docker affect energy consumption? Evaluating workloads in and out of Docker containers. J. Syst. Softw. 146, 14–25 (2018).  https://doi.org/10.1016/j.jss.2018.07.077CrossRefGoogle Scholar
  46. 46.
    Zhu, H., Bayley, I.: If Docker is the answer, what is the question?. In: 2018 IEEE Symposium on Service-Oriented System Engineering (SOSE), pp. 152–163. IEEE (2018)Google Scholar
  47. 47.
    Casalicchio, E., Perciballi, V.: Measuring Docker performance: what a mess!!!. In: Proceedings of the 8th ACM/SPEC on International Conference on Performance Engineering Companion, pp. 11–16. ACM, New York (2017)Google Scholar
  48. 48.
    Guo, D., Wang, W., Zeng, G., et al.: Microservices architecture based cloudware deployment platform for service computing. In: Proceedings - 2016 IEEE Symposium on Service-Oriented System Engineering, SOSE 2016, pp. 358–364 (2016)Google Scholar
  49. 49.
    Shadija, D., Rezai, M., Hill, R.: Microservices: granularity vs. performance. In: Companion Proceedings of the 10th International Conference on Utility and Cloud Computing, pp. 215–220. ACM, New York (2017)Google Scholar
  50. 50.
    Naik, N.: Migrating from virtualization to dockerization in the cloud: simulation and evaluation of distributed systems. In: Proceedings - 2016 IEEE 10th International Symposium on the Maintenance and Evolution of Service-Oriented and Cloud-Based Environments, MESOCA 2016, pp. 1–8 (2016)Google Scholar
  51. 51.
    Balalaie, A., Heydarnoori, A., Jamshidi, P.: Migrating to cloud-native architectures using microservices: an experience report. In: Leitner, P. (ed.) Advances in Service-Oriented and Cloud Computing. CCIS, vol. 567, pp. 201–215. Springer, Cham (2016).  https://doi.org/10.1007/978-3-319-33313-7_15CrossRefGoogle Scholar
  52. 52.
    Xu, T., Marinov, D.: Mining container image repositories for software configuration and beyond. In: Proceedings of the 40th International Conference on Software Engineering: New Ideas and Emerging Results, pp. 49–52. ACM, New York (2018)Google Scholar
  53. 53.
    Ferrer, A.J., Pérez, D.G., González, R.S.: Multi-cloud platform-as-a-service model, functionalities and approaches. Procedia Comput. Sci. 97, 63–72 (2016)CrossRefGoogle Scholar
  54. 54.
    Zhang, Y., Vasilescu, B., Wang, H., et al.: One size does not fit all: an empirical study of containerized continuous deployment workflows. In: Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, pp. 295–306. ACM, New York (2018)Google Scholar
  55. 55.
    Yarygina, T., Bagge, A.H.: Overcoming security challenges in microservice architectures. In: 2018 IEEE Symposium on Service-Oriented System Engineering (SOSE), pp. 11–20. IEEE (2018)Google Scholar
  56. 56.
    Lv, K., Zhao, Z., Rao, R., et al.: PCCTE: a portable component conformance test environment based on container cloud for avionics software development. In: 2016 International Conference on Progress in Informatics and Computing (PIC), pp. 664–668 (2016)Google Scholar
  57. 57.
    Wang, B., Song, Y., Cui, X., et al.: Performance comparison between hypervisor- and container-based virtualizations for cloud users. In: 2017 4th International Conference on Systems and Informatics (ICSAI), pp. 684–689. IEEE (2017)Google Scholar
  58. 58.
    Heinrich, R., van Hoorn, A., Knoche, H., et al.: Performance engineering for microservices: research challenges and directions. In: Proceedings of the 8th ACM/SPEC on International Conference on Performance Engineering Companion, pp. 223–226. ACM, New York (2017)Google Scholar
  59. 59.
    Jindal, A., Podolskiy, V., Gerndt, M.: Performance modeling for cloud microservice applications. In: Proceedings of the 2019 ACM/SPEC International Conference on Performance Engineering, pp. 25–32. ACM, New York (2019)Google Scholar
  60. 60.
    Siami Namin, A., Sridharan, M., Tomar, P.: Predicting multi-core performance: a case study using solaris containers. In: Proceedings of the 3rd International Workshop on Multicore Software Engineering, pp. 18–25. ACM, New York (2010)Google Scholar
  61. 61.
    Hassan, F., Rodriguez, R., Wang, X.: RUDSEA: recommending updates of dockerfiles via software environment analysis. In: Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering, pp. 796–801. ACM, New York (2018)Google Scholar
  62. 62.
    Gogouvitis, S.V., Mueller, H., Premnadh, S., et al.: Seamless computing in industrial systems using container orchestration. Future Gener. Comput. Syst. (2018).  https://doi.org/10.1016/j.future.2018.07.033CrossRefGoogle Scholar
  63. 63.
    Goldschmidt, T., Hauck-Stattelmann, S.: Software containers for industrial control. In: Proceedings - 42nd Euromicro Conference on Software Engineering and Advanced Applications, SEAA 2016, pp. 258–265 (2016)Google Scholar
  64. 64.
    Yin, K., Chen, W., Zhou, J., et al.: STAR: a specialized tagging approach for Docker repositories. In: 2018 25th Asia-Pacific Software Engineering Conference (APSEC), pp. 426–435. IEEE (2018)Google Scholar
  65. 65.
    Benni, B., Mosser, S., Collet, P., et al.: Supporting micro-services deployment in a safer way: a static analysis and automated rewriting approach. In: Proceedings of the 33rd Annual ACM Symposium on Applied Computing, pp. 1706–1715. ACM, New York (2018)Google Scholar
  66. 66.
    Ye, F., Jing, Z., Huang, Q., et al.: The research of a lightweight distributed crawling system. In: 2018 IEEE 16th International Conference on Software Engineering Research, Management and Applications (SERA), pp. 200–204. IEEE (2018)Google Scholar
  67. 67.
    Oh, J., Kim, S., Kim, Y.: Toward an adaptive fair GPU sharing scheme in container-based clusters. In: 2018 IEEE 3rd International Workshops on Foundations and Applications of Self* Systems (FAS*W), pp. 79–85 (2018)Google Scholar
  68. 68.
    López, M.R., Spillner, J.: Towards quantifiable boundaries for elastic horizontal scaling of microservices. In: Companion Proceedings of the10th International Conference on Utility and Cloud Computing, pp. 35–40. ACM, New York (2017)Google Scholar
  69. 69.
    Morris, D., Voutsinas, S., Hambly, N.C., et al.: Use of Docker for deployment and testing of astronomy software. Astron. Comput. 20, 105–119 (2017).  https://doi.org/10.1016/j.ascom.2017.07.004CrossRefGoogle Scholar
  70. 70.
    Punjabi, R., Bajaj, R.: User stories to user reality: a DevOps approach for the cloud. In: 2016 IEEE International Conference on Recent Trends in Electronics, Information Communication Technology (RTEICT), pp. 658–662 (2016)Google Scholar
  71. 71.
    Senington, R., Pataki, B., Wang, X.V.: Using Docker for factory system software management: experience report. Procedia CIRP 72, 659–664 (2018).  https://doi.org/10.1016/j.procir.2018.03.173CrossRefGoogle Scholar
  72. 72.
    Knoche, H., Eichelberger, H.: Using the Raspberry Pi and Docker for replicable performance experiments: experience paper. In: Proceedings of the 2018 ACM/SPEC International Conference on Performance Engineering, pp. 305–316. ACM, New York (2018)Google Scholar
  73. 73.
    Morabito, R.: Virtualization on internet of things edge devices with container technologies: a performance evaluation. IEEE Access 5, 8835–8850 (2017).  https://doi.org/10.1109/ACCESS.2017.2704444CrossRefGoogle Scholar
  74. 74.
    Tesfatsion, S.K., Klein, C., Tordsson, J.: Virtualization techniques compared: performance, resource, and power usage overheads in clouds. In: Proceedings of the 2018 ACM/SPEC International Conference on Performance Engineering, pp. 145–156. ACM, New York (2018)Google Scholar
  75. 75.
    Ueda, T., Nakaike, T., Ohara, M.: Workload characterization for microservices. In: 2016 IEEE International Symposium on Workload Characterization (IISWC), pp. 1–10. IEEE (2016)Google Scholar
  76. 76.
    Wieringa, R., Maiden, N., Mead, N., et al.: Requirements engineering paper classification and evaluation criteria: a proposal and a discussion. Requir. Eng. 11(1), 102–107 (2005)CrossRefGoogle Scholar

Copyright information

© Springer Nature Switzerland AG 2019

Authors and Affiliations

  1. 1.Faculty of Information TechnologyUniversity of JyväskyläJyväskyläFinland
  2. 2.Department of Computer ScienceUniversity of HelsinkiHelsinkiFinland

Personalised recommendations