A Survey of DevOps Concepts and Challenges <s> TOOLSET <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> BIB001 </s> A Survey of DevOps Concepts and Challenges <s> TOOLSET <s> Specialization, and the resulting tool diversity, is a fundamental aspect of the modern DevOps toolchain. How does this affect the value stream architecture? <s> BIB002
We define "DevOps tools" as the tools pursuing one of the following goals: 1) assisting human collaboration across different departments; 2) enabling continuous delivery; or 3) maintaining software reliability. Our contribution is to associate tools to concepts presented in Section 5. This correlation between tools and concepts equips and empowers practitioners for well-informed decisions on tooling, and thereby enforces alignment between technical, managerial and organizational decisions. This conceptual approach becomes immensely important when considering the ever-changing nature of DevOps tools BIB001 . Although tools matter, caution is required to avoid turning them into the core of a DevOps strategy. Adopting new tools demands significant effort, and applying this effort without considering the expected outcome can lead to considerable waste. For example, a DevOps adoption process must consider team structuring as more critical than the choice of specific tools. DevOps heavily relies on automation tools. The choice of a proper toolset imposes challenges for DevOps professionals. It is not feasible for a single person, even an organization, to master all the DevOps tools, given the vast number of available tools [17, BIB002 and their rapid evolution BIB001 . We also contribute to discussing the most important categories of DevOps tools, presented in Table 4 , by adding the following complementary information to each category: i) some of the most used tools in each category; ii) the intended users: whether developers or operators; iii) the goals: human collaboration, continuous delivery or reliability; and iv) DevOps concepts. The complementary information, like tool examples, helps the reader to understand each category, leading to the following additional contributions: i) helping DevOps practitioners focus on organization requirements, while choosing the most suitable set of tools; ii) helping the reader to grasp a critical view about the objective of each tool and how to use it in an organization; iii) showing how the frontiers between developers and operators have been blurred in the DevOps context through toolset usage.