Ebook Devops Toolchain.Pdf
Total Page:16
File Type:pdf, Size:1020Kb
DevOps Toolchain 1 Introduction accordingly based on the problem at hand. DevOps may need little introduction these days, Similarly, most systems administrators possess but many are still at a loss to explain precisely competent programming abilities for traversing what the movement entails. Some emphasize the the stack—on top of the requisite skills for portmanteau of the two terms, stating that the managing IT operations. The industry has heart of DevOps is the collaboration between been quick in attaching new labels to these developers and operations staff. Others choose emerging hybrid roles: DevOps Engineer and to focus on the tools and the problems they solve, DevOps Specialist being the most common. singing the praises of DevOps for fixing their Notwithstanding, the key takeaway is that no respective infrastructure woes. Tools—though single IT skill is more important or valuable than crucial enablers of the movement—only form part another; subsequently, many different tools are of the equation. DevOps encompasses cultural required to do the job effectively. So as DevOps innovation, a breaking down of walls and silos is comprised of a group of concepts clustered between software development, operations, around the premise of continuous software and QA/ testing—in addition to the tools and delivery, these concepts in turn encompass a methodologies enabling this transformation. range of associated tools for fulfilling particular Ultimately, the definition of DevOps varies per functions. organization. Since its meaning depends heavily on the audience and context in question, general All in all, these complementary tools fill out the discussions around the true definition of DevOps DevOps toolchain, unifying the best elements are for the most part inconsequential. If you is from development and operations. Keep in specifically concerned about what is/not DevOps, mind that both tools and cultural innovation check out our ebook “DevOps for Cynics” and are required for DevOps; adopting a popular our blog post “Defining DevOps.” If you want to solution on its own as a magic on- ramp to know about tools that can make your life easier, DevOps is a quick path to disillusioned, as there what makes each one unique, and how they fit are no “DevOps” tools, per se. The combination together, read on. of cultural changes, information de-siloing, and tooling implemented along way is what enables Hybridization of Roles an organization to recognize ROI from DevOps. A discussion regarding tools and DevOps should In a sentence, it’s not just about the tools, but the therefore begin by considering the individuals people as well. who will be utilizing the tools. The rise of so- called “polyglot programmers” and systems administrators with coding proficiency reflects a general trend inIT towards despecialization. Developers these days are adept in a number of languages and approaches, applying each 2 Agile Roots and server components. This unification of all At first glance, DevOps may seem like an sides of the software delivery puzzle is also evolutionor extension of Agile and Lean referred to as “programmable infrastructure,” methodologies that have gained prominence and is central to practicing DevOps. in the last decade. While this is certainly true in many respects, an important distinction lies in scope: while Agile deals primarily on the development side of affairs, DevOps stresses a unified approach that covers the entire scope of software delivery. So as Agile stresses cross-functional collaboration to aid incremental, continuous development of quality software, DevOps expands this ideal to include development, IT operations, and QA/ Testing teams as interdependent cogs of the same software delivery mechanism. Indeed, many of the Agile tools and methodologies find their way into the DevOps toolchain and workflow, as the two promote the same style of collaboration. Furthermore, as software development ultimately depends on operations for deployment, a closer integration of the two groups will naturally boost quality and efficiency. Infrastructure as Code With Agile software teams becoming commonplace, IT operations needs a way to keep up infrastructure with this rapid pace of development. Furthermore, as virtualized environments and cloud infrastructures become more commonplace, the operations side needs a more dynamic, flexible approach to managing systems. Borrowing from their software development counterparts, systems administrators can now manage their infrastructures as code—automating and tracking configurations like source code. This enables the ability for version control, rolling back of changes, as well as integrated testing and deployment to production of necessary software 3 The DevOps Toolchain Project Infrastructure changes are tracked as tickets in UpGuard Examples: Management and sent to your project management tool of choice. ira, Asana, Pivotal Requirements The requirements of current applications are avaliable in Examples: Gathering UpGuard’s system state documentation. Word, Wikis, Spreadsheets Artifacts Code and UpGuard policies are versioned and Examples: Versioning checked in to be used in build and deployment process Git, SVN Continuous integration and deployment tools use Examples: Continuous UpGuard policies to validate environments before enkins, Team City, Travis, Integration and after deployment. CircleCI, Drone.io UpGuard generates manifests for configuration Configuration Examples: management tools like Puppert, Chef, Powershell DSC, Management Puppet, Chef, Ansible Ansible, Salt and more. Configuration state is continuously checked for deviation Examples: Monitoring from baseline, much like you would with Shell Scripts performance monitoring. Complete configuration state is documented and Examples: Discovery accessible for anomaly analysis and troubleshooting. CMDBs After confirming the system state’s health, Examples: New Baseline UpGuard documents the new baseline None for development. UpGuard provides the feedback mechanism from the Examples: Standardize end of one development cycle to the beginning of the next. None 4 Versioning and Source Control Testing and Validation Tracking code level changes is a common Tools and frameworks for testing and validation and necessary activity of today’s software are important for ensuring quality at all phases developers. Doing so enables concurrent of development. In many cases, unique solutions development, merging, and rollback capabilities are applied to a specific aspect of testing— for applications/ software. Source Control for example, one tool may be used for unit Management (SCM) tools are popular options for testing while another is used for integration keeping track of software code; many DevOps testing. Solutions like UpGuard provide crucial practitioners also track versions of their systems functionality for testing/validating environments, configuration with these tools, essentially and are indispensable for troubleshooting and managing their infrastructure “as code.” For debugging software applications. The platform example, it’s a common practice for systems allows one to anticipate changes and pre-validate administrators to store and manage their Puppet every environment before deployment; by Manifests or Chef Cookbooks in GitHub. generating tests directly from development and running them against the target environment, Continuous Integration DevOps practitioners can confidently release and Orchestration quality, error-free software. Combined, these Continuous integration (CI) and testing and validation solutions provide a orchestration tools enable the integration of consistent mechanism and format for testing development code into the overall software application features and behavior on both a product frequently and early in order to mitigate micro and macro-level. potential conflicts down the line. Typically, these tools are employed to automate software builds Configuration Management (CM) and testing, and are crucial for applying quality CM tools allow one to define the desired state control on a continual basis (as opposed to after of a system and/or environment in regards to the software has been developed and released). configuration files, software installed, users, These tools can also be used to track and manage groups and many other resource types. They changes for CM—for example, Chef Cookbooks also provide functionality to automatically can also be stored in version control with Github. push changes onto specific machines, also The appropriate CI tool can then be used to test known as automation and orchestration. Tools cookbooks for bugs and errors, and set up to like UpGuard can provide initial discovery and automatically to do so every time infrastructure visibility into an infrastructure, create “golden changes are committed and merged.This is an images” for automation tools like Puppet and area where the automation side of DevOps Chef, and validate that results are in line with really comes into play. Automated deployment, expectations, post-automation. automated testing and continuous integration are key. When managing environments and Containerization moving applications through them consistency Containerization essentially allows one to is what you want. The first step towards that is package up or “containerize” an application in its consistent builds. Automated deployment tools own environment, making software easier are a must. No PM wants to hear that it will take 5 Application Performance System of Record Management (APM)