Architecting for Continuous Deployment and DevOps
Project Context: Continuous deployment (CD) and DevOps has emerged as popular software development paradigm, which tries to establish a strong connection between development and operations teams. Adopting and supporting CD/DevOps for industrial organizations involves a large number of challenges because organizational processes, practices, and tool support may not be ready to support the highly complex and challenging nature of DevOps. It is argued that one of the most pressing challenges which the organizations may encounter is how software applications should be architected to support CD/DevOps practices such as Continuous Delivery, Continuous Testing, Continuous Monitoring and Optimization and Continuous Deployment. Due to the highly complex and challenging nature of DevOps practices, developing such kind of software applications entail high complexity during the development lifecycle.
The main objective of this project is to develop and evaluate a new generation of framework, reference architectures, guidelines, and tools to support architectural decision making process in the context of DevOps. The framework and associated tool will be built upon the large-scale empirical study involving practitioners from industrial collaborators. This framework and tools will help document several aspects of DevOps-specific decisions, patterns and reusable components. Since most of DevOps practices (e.g., deployability, testability and security) can be considered as quality attributes, the framework should assist software architect to make the right and informed architectural decisions to meet DevOps practices and make a trade-off between them as well as guide the architecting for DevOps. To evaluate the effectiveness and usability of this framework and tooling support, we will conduct several case studies with both industrial software systems and big data analytics applications.