A Survey of DevOps Concepts and Challenges <s> How to qualify engineers for DevOps practice <s> In this installment of Trend Wars, Dejan Milojicic discusses autograding with David O'Hallaron, a professor of computer science and electrical and computer engineering at Carnegie Mellon University. Featured here is an excerpt from the in-depth interview, which ranged from discussions on autograding to cloud computing. The Web extra includes the video, but you can stream it at www.computer.org/portal/web/computingnow/videos/trendwars. <s> BIB001 </s> A Survey of DevOps Concepts and Challenges <s> How to qualify engineers for DevOps practice <s> Internet companies such as Facebook operate in a "perpetual development" mindset. This means that the website continues to undergo development with no predefined final objective, and that new developments are deployed so that users can enjoy them as soon as they're ready. To support this, Facebook uses both technical approaches such as peer review and extensive automated testing, and a culture of personal responsibility. <s> BIB002 </s> A Survey of DevOps Concepts and Challenges <s> How to qualify engineers for DevOps practice <s> A new discipline at the intersection of the development and operation of software systems known as DevOps has seen significant growth recently. Among the wide range of tasks of DevOps professionals, we focus on that of selecting appropriate cloud deployments for distributed applications. Despite the advent of automated software deployment and management frameworks, reasoning about good deployments still requires interaction with experts, often through discussions on online technical forums and social networks. <s> BIB003 </s> A Survey of DevOps Concepts and Challenges <s> How to qualify engineers for DevOps practice <s> Context: Development and Operations (DevOps) is an emerging software industry movement to bridge the gap between software development and operations teams. DevOps supports frequently and reliably releasing new features and products-- thus subsuming Continuous Deployment (CD) practice. Goal: This research aims at empirically exploring the potential impact of CD practice on architecting process. Method: We carried out a case study involving interviews with 16 software practitioners. Results: We have identified (1) a range of recurring architectural challenges (i.e., highly coupled monolithic architecture, team dependencies, and ever-changing operational environments and tools) and (2) five main architectural principles (i.e., small and independent deployment units, not too much focus on reusability, aggregating logs, isolating changes, and testability inside the architecture) that should be considered when an application is (re-) architected for CD practice. This study also supports that software architecture can better support operations if an operations team is engaged at an early stage of software development for taking operational aspects into considerations. Conclusion: These findings provide evidence that software architecture plays a significant role in successfully and efficiently adopting continuous deployment. The findings contribute to establish an evidential body of knowledge about the state of the art of architecting for CD practice <s> BIB004 </s> A Survey of DevOps Concepts and Challenges <s> How to qualify engineers for DevOps practice <s> DevOps is a new way of developing software that is challenging from a teaching perspective. In this paper, we outline these challenges and propose teaching methods that focus on skill acquisition and technical practices that focus on performant virtualization to overcome them. We describe central elements from our course Cloud Computing and Architecture that has been designed and executed upon these methods and practices and report our experiences and lessons learned. <s> BIB005 </s> A Survey of DevOps Concepts and Challenges <s> How to qualify engineers for DevOps practice <s> It's not magic, it just requires continuous, daily improvement at all levels. <s> BIB006 </s> A Survey of DevOps Concepts and Challenges <s> How to qualify engineers for DevOps practice <s> In recent years, Agile development has been adopted in project practices of Software Engineering (SE) courses. However, it is a great challenge to provide timely assessment and feedback to project teams and individual students with a frequency that catches up with iterative, incremental, and cooperative software development with continuous deliveries. Conventional project reviews are mostly dependent upon instructors and teaching assistants in a manual reviewing/mentoring approach, which are simply not scalable. In this paper, we argue that agile projects warrant a "continuous delivery" of personalized assessment and feedback. To this end, we propose an online-offline combined approach and built a system upon GitLab. An online platform was built by integrating DevOps tool chains so that personalized reports and assessments are delivered automatically to the teams/students, which serve as the very efficient trigger and basis for the close and targeted offline interactions between students and TAs: daily discussion over instant messaging and weekly in person meeting. This system has been in operation since 2014 for an undergraduate SE course, with over 500 students participating in over 130 project teams in total. Our results show that such a continuous assessment/feedback delivery system is very effective in educating Agile projects in SE courses. <s> BIB007
More than one-hundred DevOps tools are available  , and they are continuously evolving BIB004 . Professionals must be able to choose which tools to study in depth, which tools to have some familiarity with, which tools to test, and which ones to ignore. Such choices must be based on a conceptual analysis of personal and organizational demands and perspectives. Our conceptual maps (Section 5) and our table of major DevOps tools (Table 4 ) may guide engineers to prioritize the improvement of their professional skills. Care is needed when managers assume that employees lack competence. When questioned "Where do you get Netflix's amazing employees from?", a Netflix architect replied: "I get them from you!" BIB006 . The lesson here is that a culture of autonomy and responsibility BIB002  is an important motivating factor for employees continuous learning. In software engineering courses, operations skills, often neglected in college education, become mandatory. However, elaborate effective DevOps programs are challenging. Exercises that demand students build distributed systems with adequate availability, scalability, and performance require not only some infrastructure, but also efficient correction of such exercises with automated checks in submissions BIB005 . Although there are stable platforms for auto-grading coding assignments (autolab.github.io) BIB001 , evaluating infrastructure code and non-functional concerns are harder to automate. Christensen used Docker in the classroom to develop a small set of scripts to automate some tasks in executing and assessing submissions BIB005 . However, he did not achieve automation of exercise correction due to the nontrivial task of setting up a multi-server environment to detect errors in students' submissions. Bai et al. automate the generation of assessment reports based on patterns of tasks, commits, branches, tests, and the source code itself BIB007 . Knowledge in software engineering is always evolving, and any software engineer must also have self-learning skills to overcome daily basis challenges. Social interactions on Internet forums are a vital source of information in the daily activities of engineers. Believing that it can be enhanced, Magoutis et al. built a social network that helps DevOps engineers analyze results of past deployment executions as well as communicate and exchange ideas to better understand trade-offs in the space of deployment solutions BIB003 . The work of Magoutis et al. show evidence that more can be done to support engineers' self-learning in their daily activities.