Advice and tips about DevOps for beginners
Source – techtarget.com
Brand new to DevOps? Here’s our get started guide
If you or your organization is brand new to DevOps it might feel as if you’ve traveled to a foreign country. Nearly everything you thought you knew about software development, deployment, testing, security and UX is altered when seen through the DevOps lens. DevOps for beginners really isn’t for the faint of heart, but with advice, time and patience, you’ll get there.
For developers, the move to DevOps requires a mindset shift — yes, you’re going to own some test responsibility — and new skills, like cutting-edge coding languages such as Groovy or Node.js. Developers headed to that DevOps for beginners land need tolerance, an open mind and a willingness to work with people from a wide variety of backgrounds, including those who are not technical.
Ops pros also face challenges that can feel unsettling. Going down the DevOps for beginners path means letting go of some control while simultaneously taking ownership of new projects neither of which will be easy or feel natural. Testers, who already stare down the barrel of automation even in Agile-only shops, face the biggest reinvention of all. As they set foot on the DevOps for beginners road they’ll need to think of themselves as risk managers and scramble to learn the skills to get there.
For user experience and security professionals, DevOps is going to make their already tricky-to-integrate roles even more so. In both cases, being open to working with a much wider group of individuals than before helps to ease the DevOps for beginners transition.
But there is some good news: Start now and you won’t be a rank beginner for long.
A comprehensive beginner’s guide to DevOps for developers
Your organization wants to jump into DevOps, but it’s brand-new to you as a developer. Here are steps both individual coders and aggregated software development teams can take to grease the DevOps slide.
Learn a scripting language
Out of the gate, a good first step to enhance the programming team’s ability to bring DevOps processes into the software development lifecycle is to learn a powerful scripting language, like Node.js or Groovy. When developers access operational resources, they will be doing it programmatically. The programs that developers will use to access infrastructure-as-a-service resources, AWS instances or even traditional application servers, like WebSphere or WebLogic, are not usually coded in a language like Java or C++. It’s important to understand a popular scripting language, know how to write a few lines of code that can authenticate against a resource protected by the operations team and be able to script the control of operational resources. Do all of that while elegantly handling exceptions and error conditions, and your DevOps for developers journey will carry into the operations domain.
In DevOps, it’s all about automatic deployments. So, the second step on the DevOps for developers journey is to locally install a CI server, like Jenkins or Concourse. With an installed CI tool on the local workstation, developers can use CI to automate processes such as software packaging, test execution and deployment to local servers. Management, configuration and troubleshooting of a CI server can be the glue that holds the DevOps horse together, as the tasks a CI server governs often fall on both sides of the DevOps divide. A strong understanding of how to work with a CI server, by both developers and operators, will make the DevOps for developers transition a more seamless one.
Copious and comprehensive test coverage
As the term DevOps implies, implementation requires that developers get their hands on systems traditionally under the exclusive purview of operations. But no-ops team will easily relinquish control of its resources if it isn’t confident in the developers’ code. IT ops doesn’t want anything to cause irreparable harm to existing systems.
Fortunately, it won’t be difficult to reassure the ops side, but it will require devs to do something they don’t normally do: properly test software.
All software development teams do testing. That’s a given. But DevOps for developers requires more than just paying lip service to the concept. Software must be unit tested, integration tested and regression tested. And unit tests need to be comprehensive. Too often, software developers write a set of lackluster unit tests that serve no other purpose than to appease the audit team when the question of software testing arises. Monotonous tests won’t fly in a DevOps shop.
If the operations team is to trust developers to push their buttons and tweak their dials, assurances should be made that every option has been tested and every possible outcome has been evaluated. As development elbows its way deeper into the operations world, there will inevitably be objections that the dev team can’t be trusted to take care of the operational side of things. When such complaints arise, the development team must assure all stakeholders that every path has been tested six ways to Sunday, and a history of quality control through applied software testing must exist to lend credence to its case.
Expansive DevOps testing
When it comes to DevOps for developers, teams also need to integrate new forms of testing into their software development lifecycle. Penetration testing, performance testing and security auditing are often tasks performed by operations. But in a world where a developer has the ability to pull the trigger on a deployment, tests must be performed without sending a requisition form to the head of the ops department. Coders not only need to speed up the ferocity of their testing routines, but they must test their systems in ways that may feel alien.
DevOps has the potential to improve software quality, increase the velocity of feature releases and bring great efficiencies to the IT department. Learn a scripting language, familiarize yourself with the nuances of an integration server and bring your test game to a new level of coverage and comprehensiveness. These DevOps for developers steps will make the adoption processes easier and ultimately inevitable.
Help ops to begin a DevOps implementation the right way
The push is on for organizations to make DevOps implementation, with all of its development and deployment advantages, a priority. But rolling out DevOps for the first time can be a serious challenge, especially for operations groups bogged down by traditional IT silos and practices.
DevOps demands changes on the operations side, and leadership must work to prepare operations for any DevOps transition. It’s not just a simple matter of adding a particular tool or system to the existing infrastructure. Success requires a closer partnership between developers and operations staff — particularly the different groups within operations — to establish the collaboration, team, tools, practices and infrastructure needed to make a DevOps implementation work.
Prepare to collaborate
Effective communication and collaboration are at the heart of successful DevOps deployments. Developers and operations staff (and even varied groups within IT) must interact well together. Collaboration takes trust, inclusion and empowerment — attributes that can be difficult and time-consuming to establish. Some organizations may develop interaction by creating interteam focus groups to identify and resolve IT challenges.
For example, 10 development teams are competing for two test environments. One collaborative project might bring developers and operations staff together to better understand developer needs and allow for access to additional test environments. As another example, developers who need operations to spin up new software components faster can work across silos to identify the time and resource requirements to accelerate response times, while ensuring compliance with company policies and regulatory concerns.
Such initiatives or special project groupings are invaluable to identify silos and bottlenecks within the organization. For a DevOps implementation to be successful, business and IT leaders must make a commitment to mitigate traditional silos and team structures. Even when it’s not practical to eradicate IT silos entirely, leadership can and should ease those barriers.
Collaboration can also involve tools such as Microsoft Teams (part of Office 365 Enterprise), Slack, HipChat and Basecamp. The choice depends on the preferences and needs of the particular business.
Prepare the operations team
Team interaction has a critical role to play in DevOps implementation. Traditional IT silos tend to foster a sense of status quo, discouraging the kinds of cross-team support needed to make DevOps work. IT staff — particularly the leaders — must commit to learning and mutual support intended to eliminate barriers and solve problems. Finding those flexible and committed professionals early on pays dividends in a DevOps transition process. Consider moving those individuals to small, cross-disciplinary teams to facilitate pilot DevOps projects. Smaller teams can also work to refine the operations practices and processes used for DevOps and later share that expertise with other IT groups as DevOps implementation expands.
Smaller IT groups will benefit from cross-training. Rather than relying on traditional administration of compute, storage, network and other silos, operations teams benefit if members share roles and tasks. Team members should also cross-train with all the tools that accompany DevOps implementations — automation, orchestration, code management, configuration management. They should also be well-versed in the back-end systems that bring automation together with developers’ routine work. For example, it’s not uncommon for both developers and operations staff to use a configuration management tool, such as Puppet or Chef.
The operations team must also radically change the way in which they perceive or value data center resources. IT professionals traditionally see a server as a long-term commitment — a pet to be looked after and protected along with its unique idiosyncrasies. The move to DevOps abandons this paradigm, treating instances more like cattle, to be identically provisioned, managed and ultimately destroyed in high volumes.
Prepare IT automation and orchestration tools
Although DevOps depends heavily on collaboration and communication, operations also experiences an influx of tools — Ansible, Puppet, Chef, SaltStack, Ubuntu’s Juju, Jenkins, Vagrant and others — to support new processes. Tools don’t guarantee an effective DevOps implementation, but they’re essential components of its success. IT staff must be prepared to use them. Some of the most common tools enable automation and orchestration.
DevOps should accelerate software development and deployment, so automation on the operations side is crucial to keep pace with rapid releases on the development side. Automation reduces the human errors and unnecessary troubleshooting that often accompany manual provisioning processes. Automation also helps ensure that resources get provisioned and managed in accordance with business policies and regulatory constraints, such as security. Tools typically provide robust management capabilities with communication and notification features that facilitate collaboration.
Developers often use these tools, too. Developers can provision and configure IT resources for testing, and a shared toolset offers a valuable frame of reference for operations staff.
Operations personnel should also learn and use some of the tools that developers rely on. Examples include Docker for running containers, Kubernetes for container orchestration, Hadoop for distributed cluster computing and GitHub for software repository management. For example, developers frequently deliver release candidates to a software repository (or repo) and rely on operations staff to pull, compile and deploy the correct version from the repo.
Prepare processes and procedures
DevOps flexibility and speed should not be mistaken for an abdication of control. Operations staff and the greater enterprise must prepare for a DevOps implementation by embracing the appropriate balance between dynamic change and compliance/governance.
This means business and IT leaders must plan for everyday DevOps interactions — particularly when operations must manage, maintain and protect production systems. Considerations include, but are not limited to, backup schedules; release testing and deployment processes, such as red-blue testing; and rollback procedures. The goal is to facilitate software development, yet preserve the integrity and reliability of production applications.
Many companies lay the foundation for a DevOps implementation with simple, low-priority projects as test beds. Organizations can use those low-priority projects to identify skill gaps, streamline tool integrations and refine the practices or policies that best suit DevOps and business needs.
It is common practice to attach metrics or analytics to DevOps. Operations teams analyze event logs and log correlation to reduce the wait for root cause analysis and service restoration.
The operations team should share these metrics with the developers to help improve the quality of subsequent patches or releases. For example, operations can share logged errors that help developers understand issues that made the release unstable.
Prepare cloud integrations
DevOps does not technically require the cloud, but initiatives often benefit from the speed and flexibility native to public, private and hybrid clouds.
Rather than provision costly local data center resources for software release testing, operations staff turn to the public cloud as an alternative deployment option. With DevOps, it’s easy to simply spin up cloud infrastructure as desired, execute the required testing and then destroy the cloud deployment with no further cost or obligation to the business. Similarly, some workloads are more cost-effective to run as a production workload in the cloud than on premises, freeing more costly local resources for mission-critical workloads.
Private clouds give a company the flexibility and services of the cloud when it requires the close ownership, control and transparency of a local data center. The operations team can also construct hybrid cloud infrastructure to connect private and public clouds, which allows for a transition between and integration of local and provider resources.
Success with any cloud technology requires yet another suite of skills and expertise in diverse cloud services, APIs and API integration with automation tools — to allow the DevOps automation to extend to the cloud. Operations staff must be familiar with architecting the wealth of cloud services needed to deploy large, complex workloads. DevOps teams should evaluate microservices applications and use cloud monitoring data for event and performance monitoring.
Stick with DevOps
The transition to DevOps can be a culture shock, and initial attempts to implement a DevOps culture in operations can stumble or fail outright. But the rewards of operational agility and efficiency are often worth the effort. Introduce DevOps changes in phases with small teams, and focus on easy, low-priority projects where IT leaders can manage roadblocks and failure. Learn from the lessons that failure brings, and make the adjustments needed to get operations ready for a DevOps implementation.