The Challenges of a Devops Infrastructure As Code Implementation

The Challenges of a Devops Infrastructure As Code Implementation

From Theory to Practice: The Challenges of a DevOps Infrastructure as Code Implementation Clauirton Siebra1, Rosberg Lacerda2, Italo Cerqueira2, Jonysberg P. Quintino2, Fabiana Florentin3, Fabio Q. B. da Silva4 and Andre L. M. Santos4 1Informatics Center, Federal University of Paraiba, Joao Pessoa-PB, Brazil 2CIn/Samsung Project, Centro de Informática, Universidade Federal de Pernambuco, Recife-PE, Brazil 3SIDI/Samsung, Campinas-SP, Brazil 4Centro de Informática, Universidade Federal de Pernambuco, Recife-PE, Brazil Keywords: DevOps, Infrastructure as Code, Automation, Software Delivery Management. Abstract: DevOps is a recent approach that intends to improve the collaboration between development and IT operations teams, in order to establish a continuous and efficient deployment process. Previous studies show that DevOps is based on dimensions, such as culture of collaboration, automation and monitoring. However, few studies discuss the current frameworks that support such dimensions, so that there is a lack in information that could assist development teams in deciding for the most adequate framework according to their needs. This work aims at presenting a practical DevOps implementation and analysing how the process of software delivery and infrastructure changes was automated. Our approach follows the principles of infrastructure as code, where a configuration platform – PowerShell DSC – was used to automatically define reliable environments for continuous software delivery. Then, we compare this approach with other alternative such as Chef and Puppet tools, stressing the features, advantages and challenges of each strategy. The lessons learned from this work are then used to create a more concrete set of practices that could assist the transition from traditional approaches to an automation process of continuous software delivery. 1 INTRODUCTION and gives them an opportunity to work and collaborate effectively and seamlessly. According to The lifecycle of an application involves teams that Loukides (2012), DevOps is a culture, movement or usually work in distinct areas and have incompatible practice that emphasizes the collaboration and goals. For example, while development team wants communication of both software developers and agility; the operation team is more focused on other information-technology (IT) professionals stability issues. In such domains, applications are while automating the process of software delivery manually handed over between these teams with and infrastructure changes. It aims at establishing a minimal communication. Such separation between culture and environment where building, testing, entities, which are in fact dependent, translates into and releasing software, can happen rapidly, an increased time to market and negatively impacts frequently, and more reliably. the software quality, decreasing the actual value of Previous works on DevOps (Lwakatare et al., the product (Humble and Farley, 2010). 2015; Hosono, 2012) are mainly focused on propose The fundamental conflict in the software process conceptual frameworks, which intend to create a environment is between developers, which have to consensus to the own DevOps definition and their produce changes at a rapid pace; and IT Operators, features. Some elements such as culture of which have to maintain infrastructure configuration collaboration, automation and monitoring; emerged and availability along these changes. The term from these works and seem to be the basis for the DevOps, which is a blend of the Developers and implementation of DevOps environments. However, Operations words, is a concept that assists to while DevOps is becoming very popular between facilitate these changes (Claps et al., 2015). It builds software practitioners; there is still a lack in a living bridge between development and operations discussions on frameworks that support its 427 Siebra, C., Lacerda, R., Cerqueira, I., Quintino, J., Florentin, F., Silva, F. and Santos, A. From Theory to Practice: The Challenges of a DevOps Infrastructure as Code Implementation. DOI: 10.5220/0006826104270436 In Proceedings of the 13th International Conference on Software Technologies (ICSOFT 2018), pages 427-436 ISBN: 978-989-758-320-9 Copyright © 2018 by SCITEPRESS – Science and Technology Publications, Lda. All rights reserved ICSOFT 2018 - 13th International Conference on Software Technologies implementation and reports of real experiences that 2 STRUCTURE AS CODE could assist development teams in adopting the DevOps principles (Erich et al., 2014; Dyck et al., The creation of a DevOps environment is based on 2015). principles such as culture of collaboration (Bang et The main focus of this work is on the automation al., 2013; DeGrandis, 2011; Wettinger et al., 2014; dimension, where the definition of practices related Tessem and Iden, 2008; Walls, 2013), measurement to infrastructure as code creates the basis for an of development efforts (Liu et al., 2014; Shang, automated process of continuous integration and 2015; Bruneo et al., 2014) and monitoring of system delivery. Handling infrastructure as code, the health (Bang et al., 2013; Shang, 2015; Bruneo et following benefits can be obtained (Punjabi and al., 2014). However, according to Ebert et al (2016), Bajaj, 2016): the most important shift over the adoption of . Code can be thoroughly tested to reproduce DevOps is to treat infrastructure as code, since infrastructure consistently at scale; infrastructure can be shared, tested, and version . Developers could be provided with a controlled. Furthermore, development and simulated production environment, which production could share a homogenous infrastructure, increases testability and reliability; reducing problems and bugs due to different . Infrastructure code can be versioned; infrastructure configurations. This section discusses . Infrastructure can be provisioned and the main ideas of this approach and resources that configured on demand; support it. Proactive recovering from failures can be carried out by continuous monitoring of the 2.1 Basic Concepts environment for violations, which can trigger automatic execution of scripts for rollback or Infrastructure as Code (IaC) is a DevOps principle recovery. used to address problems regarding the manual process of configuration management by means of Our approach follows the principles of automatic provision and configuration of infrastructure as code, where a configuration infrastructural resources. In this way, the IaC platform, PowerShell DSC (Desired State concept is used to describe the idea that almost all Configuration) is used to automatically define actions performed to the infrastructure can be reliable environments for continuous software automated. As any code, developers could create delivery. The implementation of this strategy in our automation logic for different tasks such as to organization has generated a set of lessons learned deploy, configure and upgrade computational which form the basis for the definition of a more systems and infrastructures. Patterns to use the concrete set of practices, which can extend current infrastructure as code were proposed in (Duvall, conceptual models and facilitate the transition from 2011) and they can be summarized as: theoretical aspects to pragmatic uses. The remainder of this paper is structured as . Automate Provisioning: automate the process follows: Section 2 summarizes the studies on the of configuring environments to include automation dimension of DevOps, where the focus networks, external services, and infrastructure; is on the infrastructure as code aspects and their . Behavior-Driven Monitoring: automate tests implementations. Section 3 presents how DevOps to verify the behavior of the infrastructure; concepts were implemented in our organization and . Immune System: deploy software one instance the lessons learned from this experience. Section 4 at a time while conducting behavior-driven consolidates the lessons learned in our experience in monitoring. If an error is detected during the a set of practices that show how to integrate our incremental deployment, a Rollback Release infrastructure as code strategy to the development must be initiated to revert changes; process. Furthermore, other approaches for . Lockdown Environments: lock down shared infrastructure as code are analysed and compared environments from unauthorized external and with our approach. Finally, Section V concludes this internal usage, including operations staff. All work, stressing the challenges of DevOps changes must be versioned and applied implementation and future works that we intend to through automation; carry out. Production-Like Environments: development and production environments must be as similar as possible. 428 From Theory to Practice: The Challenges of a DevOps Infrastructure as Code Implementation These patterns show that DevOps pushes switching of users, applications and data from one automation from the development to the database system to another in a cluster. infrastructure. Compared with manual infrastructure Puppet, Chef and CFEngine are the most popular provisioning, for example, configuration configuration management alternatives. Therefore, it management tools can reduce production is important to understand some slight differences provisioning and configuration maintenance among them (Younge et al., 2011). Chef and Puppet complexity while enabling recreation of the are very similar since they are based on Ruby. production system on the development

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    10 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us