Uploaded by Никита Комиссаров

9467c7c2-9b94-4ace-8046-b4f0cc6d5167

advertisement
2020
The Guide to
Remote DevOps
How to build or transition
to successful remote DevOps
• Remote DevOps for all
• Fundamentals of remote DevOps
• Tips for building a DevOps culture remotely
2
Table of contents
03
INTRODUCTION
04
COMMUNICATION: A KEY DIFFERENTIATOR
FOR REMOTE DEVOPS
05
FOUNDATIONS OF REMOTE DEVOPS
Culture
Communication
Documentation
Cycle time
07
STAGES OF REMOTE DEVOPS
Not remote – until now
Hybrid remote
All-remote
Watch GitLab for Remote Teams Demo
09
BUILDING A DEVOPS CULTURE REMOTELY
It’s about the people
Document roles and responsibilities
Designate an official communication channel
Bring structure to every meeting
11
APPLY DEVOPS PRINCIPLES REMOTELY USING GITLAB
Agile planning
Automation (use CI/CD to keep everyone informed)
Security
15
HOW GITLAB DOES REMOTE DEVSECOPS
Built-in security
A complete DevSecOps platform
17
REMOTE TEAMS BRING DEVOPS TO THE NEXT LEVEL
Follow us:
#AllRemote
3
Introduction
DevOps and remote work go hand in hand: Communication, collaboration, and asynchronous work are key
for both practices. At GitLab, we practice remote work daily. GitLab’s culture is communicated through our
publicly accessible handbook; our teams livestream their monthly release kick offs and retrospectives; and
we designate GitLab issues as the official source of communication on all projects.
Remote work can be an invaluable asset to any company. For DevOps, these benefits are multiplied
when you’re able to align the foundations of remote work with the underpinnings of DevOps. According
to GitLab’s 2018 Global Developer Report, remote teams trend higher in DevOps satisfaction compared
to in-office teams.
Remote workplace culture can aid DevOps adoption. As shown by the data to the right, remote teams
report better visibility, more ingrained practices, better-established culture, and stronger team member
buy-in than in-office teams. If DevOps practices came before remote work for your team, it’s likely that
working remote will help your team further their DevOps skills. Conversely, if remote came before
DevOps, your team may have an easier time adopting DevOps, as it will feel like an extension of
remote work practices.
This guide will help teams build strong remote DevOps practices and culture. Explore the benefits of
remote DevOps, find best practices, and learn how GitLab has adopted DevSecOps as a remote company.
As we continue to work from our kitchen tables, home offices, and sunny deck chairs during COVID-19 and
potentially beyond, we hope that this guide will help you get the best remote DevOps experience possible.
of remote teams say they have
visibility into what others are
working on compared to 57%
of in-office teams
of in-office teams cite replacing
ingrained practices as their
number one challenge compared to 49% of remote teams
of remote teams agree they
have a well-established
DevOps culture compared
to 34% of in-office teams
of in-office teams disagree that
their organization has a strong
DevOps culture, compared to
27% of remote teams
Watch GitLab for Remote Teams Demo
Follow us:
#AllRemote
4
Communication: A key differentiator for remote DevOps
Remote work requires deliberate communication. While there are social advantages to in-person
meetings, recording and documenting virtual meetings guarantees that all parties are on the same
page. Employees sometimes take mutual understanding for granted during in-person meetings. People
may feel like they agreed on the same decision when, in reality, they left with different impressions of
what was discussed and decided. Furthermore, those who couldn't attend the meeting are out of the
loop. For teams that hold daily standups and rely on in-person meetings, the likelihood of confusion
and misunderstanding can increase dramatically without proper documentation.
Remote work also means fewer interrupted tasks, which is especially important to employees who are
part of the software development lifecycle (SDLC). According to a study conducted by former Georgia Tech
PhD candidate Chris Parnin, programmers are likely to have only one 2-hour block of uninterrupted time
during the day. After interruptions, it takes 10 to 15 minutes to get back on track.
Watch GitLab for Remote Teams Demo
In an office, interruptions can be more frequent.
The benefit one feels from walking over to talk to
a colleague at random may be a detriment for the
other person. In a remote setting, employees can
disconnect from communication while focusing
on an important task. Over the course of a week,
the time saved by efficient communication could
add up to several extra hours for each employee.
Remote DevOps provides valuable benefits
to teams that can get it right. In the following
sections, we’ll cover ways to succeed with DevOps
in a remote setting.
Follow us:
#AllRemote
5
Foundations of remote DevOps
Communication and collaboration are extremely important in remote organizations. Transparency and
highly detailed documentation are central tenets to all remote work, and are also essential to DevOps.
Culture
Communication
When building a remote team from the ground up, it’s easier to ingrain culture
in new hires as they’re onboarded. But for teams that have suddenly become
remote, it’s extremely important for managers to remind team members of
the company’s values and cultures, and to be intentional about displaying
and recognizing those values in everyday work. Team members must be able
to trust one another and communicate clearly without malintent or fear of
judgement. Managers need to trust that their teams will complete work.
A sudden shift to remote work might entice some to micromanage, but in a
distributed, remote environment, managers should track results, not hours.
In remote work, communication is not saved or delayed for meetings — it
needs to be done immediately and with clarity. Team leaders should choose
formal and informal methods for communication. For example, teams could
use chat or forums for informal communication, and a collaborative software
tool for official communication.
Team leadership needs to be connected and partnered with engineering,
product, and security teams to ensure alignment with the organization
and department. Quarterly reviews of key objectives with senior leadership
will help to further the company strategy. Not only does this help business
initiatives, it also helps DevOps teams work more efficiently, keeping everyone
on the same page and informed on a project status.
Watch GitLab for Remote Teams Demo
Teams must learn to balance synchronous and asynchronous communication
and work. We recommend starting with a brief, synchronous communication
at the beginning of a project — like a project launch meeting, recorded for any
team members whose time zones prevent them from attending. This way,
the team can align on expectations, understand scope, and iterate on
possible ideas.
Follow us:
#AllRemote
6
Documentation
Cycle time
Documentation is another key tenet of both remote work and DevOps.
Without it, teams will struggle to achieve transparency and will be doomed
to inefficiency. Strong documentation practices enable self-sufficient problem
solving and boost transparency. This is especially important for remote
DevOps teams: In an all-remote setting, mutual understanding should
be intentionally achieved, and never assumed. For DevOps in particular,
documentation will improve understanding and reduce the need for
extraneous meetings. Standups can then be used to discuss persistent
problems rather than tactical updates.
Good culture, communication, and documentation all foster efficiency.
Remote work allows you to get tasks done faster if culture, documentation,
and communication are in place. Asynchronous communication enables
continuous forward progress, rather than waiting for synchronous meetings
that can function like bottlenecks. Remote work encourages a self-service
mindset; combined with transparency, this allows employees to get work
done without waiting for sign-offs and to communicate that work with other
team members immediately.
Recorded meetings are a helpful resource to refer back to later on. Creating a
single document to house all notes and decisions is another way to effectively
work asynchronously. If team members are unable to join a meeting, they can
easily retrieve information by accessing the project documentation. Google
docs is one documentation platform that maintains and saves real-time notes.
DevOps tools are another way to collaborate and share useful information.
Automation in DevOps can accelerate further speed up the feedback cycle
by providing regular reports on project elements. For example, in GitLab,
code can be scanned upon every commit, allowing developers to remediate
in real-time rather than waiting for a code review further down the road.
Using the SAST (static application security testing) template or Auto SAST, GitLab checks the SAST report, compares the found
vulnerabilities between the source and target branches, and shows the information right on the merge request.
Watch GitLab for Remote Teams Demo
Follow us:
#AllRemote
7
Stages of remote DevOps
There are different levels of remote DevOps and every organization has unique needs. It’s important
to know the stages of remote DevOps when considering what’s best for both the short and long term,
as there are advantages and disadvantages to each.
Not remote — until now
Some enterprises (or even individual teams) don’t allow for any remote work.
This could be due to a leadership mandate, the nature of the business itself,
or an overall production preference. Teams are entirely colocated — meetings
and standups are always face-to-face and physical location helps project
teams collaborate effectively. Part of the business workflow includes being
in the same time zone, working within the same location, and Dev and Ops
teams participating within the same guidelines.
However, some enterprises have recently found themselves forced into
remote settings. Luckily, DevOps teams are built on solid collaboration and
communication, and likely have the software tools to support going fully
remote. Here are five steps to succeed in a newly remote workflow:
01
Keep your best practices through remote enablement.
What has worked well for your DevOps practices? Whether it’s
a communication process, standups, reviews, etc., take the time
to document those things and ensure that team members know
how to do them in a remote environment.
02
Assess your tech stack for maximum efficiency. Endless chat
and email questions are not the best way to find information.
Streamline information sharing for remote employees by adopting
a single source of truth so that everyone knows exactly where to
go for what they need.
Watch GitLab for Remote Teams Demo
03
Allow time to adjust. This applies to everyone at all levels of
an organization: Give each other time to adjust to this new way
of working. Remote work may come naturally for some, and may
be difficult for others. Let fellow team members know where they
can find information, hold leadership office hours, and allow time
for questions at the end of meetings.
04
Use video conferencing for every meeting. Newly remote
employees may feel isolated or distant from their teammates.
It’s important to set a standard for video meetings so that team
members can still interact face-to-face and feel a sense of
connection with their peers.
05
Encourage meetings that aren’t about work. At GitLab, we call
these coffee chats. Coffee chats are the virtual equivalent of water
cooler conversations, allowing employees to connect and build
relationships beyond their day-to-day work. Casual chats help
to alleviate feelings of burnout and isolation.
Follow us:
#AllRemote
8
Hybrid remote
Hybrid remote companies include employees who work in the office and employees who work remote, either part or full-time. Coordination and communication ensure that business processes are efficient with people both in and out
of the office. In many instances, employers will define a set working schedule,
and regardless of where employees are, they’ll work within that time frame,
in their own time zone. Overlapping time zones give teams the ability to have
synchronous meetings.
In a setting where remote work is allowed, DevOps teams need to plan in
advance if face-to-face time is a requirement for specific projects. In partially
remote DevOps teams, the goals must be clear and a level of trust between
team members needs to be established. Async work empowers people to
work independently, while working towards a common goal.
Watch GitLab for Remote Teams Demo
All-remote
An all-remote company means there is no office where teams work and people
can live all over the world. Asynchronous communication encourages documentation, discourages synchronous meetings as a default for collaboration,
and provides flexibility for each member to determine the working hours that
best suit their lifestyle.
DevOps teams depend on asynchronous standups over synchronous meetings.
Discussions and decisions are regularly documented (formally or informally).
Software projects have the ability to move faster with people working at all
hours of the day. In a remote setting, the end result tends to be more important
than the hours worked
Follow us:
#AllRemote
9
Building a DevOps culture remotely
Building culture remotely is similar to building culture in-person, except everything is communicated
in a direct manner, and nothing is left to ambiguity. This is especially helpful to DevOps teams, where
defined roles, responsibilities, and expectations help teams thrive. Managers must be intentional about
creating shared understanding between development, security, and operations — thereby building a
culture of trust. Of course, it’s easier said than done, and there are many things to focus on. Here are
a few suggestions to get you started.
It’s about the people
There are plenty of tools, methods, and tips to share when it comes to
building culture. But before we get carried away, we have to remember one
thing: Culture is about people and the relationships between them. Trust and
camaraderie between teams is core to successful DevOps. In a remote setting,
it’s important to make space for building connections in fun ways. That space
could come in the form of coffee chats, virtual team trivia sessions, hobby and
interest-themed Slack channels, or virtual happy hours. Try to schedule fun
meetups regularly, and make sure that employees in all time zones have the
opportunity to socialize.
Document roles and responsibilities
DevOps brings teams together and can sometimes jumble workloads,
making it important to set clear expectations for who does what (and when
that “what” gets done). The best way to do this is to document it in a location
that everyone has access to – similar to GitLab’s Handbook. Invite team
members to contribute to these expectations if they find gaps or want to
make adjustments to the guidelines. Document this information to help
employees resolve conflict and build trust between teams that may
traditionally be siloed.
Watch GitLab for Remote Teams Demo
Follow us:
#AllRemote
10
Designate an official
communication channel
Slack is fine for casual communication and
discussion, but teams should choose an official
channel to serve as a resource for all project
communications and updates. This ensures that
all team members receive the same information,
and everyone is kept on the same page. At GitLab,
we do this via issues. Any important information,
regardless of whether it originates in Slack or
a video call, ultimately is documented in the
appropriate issue.
Bring structure to every meeting
Meetings should be intentional. Provide an
agenda before every meeting so that attendees
can come prepared and know what to expect.
With strong communication outside of personto-person interactions, tactical planning and
discussion can be kept to a minimum, and
meeting times can be used to discuss strategic
issues or persistent problems, or to make a
group decision. If there is a complex topic or
an idea that requires significant explanation,
consider explaining the idea in a video or
presentation and providing it to attendees
in advance of the meeting.
An example of a GitLab issue.
Watch GitLab for Remote Teams Demo
Follow us:
#AllRemote
11
Apply DevOps principles remotely using GitLab
Remote work naturally facilitates collaboration between teams in a DevOps model. Remote environments
break down barriers so that development and operations teams are no longer siloed. Because teams can’t
work together in a single location, they’re forced to document information to ensure that others have all
the facts. A reliance on documentation and other methods increases visibility across all teams, resulting
in a decrease in handoff friction, which delays the delivery of software releases and negatively impacts
business results. In addition to documentation, there are a few specific ways remote teams — across
development, operations, and security — can build a strong foundation on which to collaborate.
Remote environments
break down barriers so that
development and operations
teams are no longer siloed.
Agile planning
Agile is an iterative approach to software delivery in which teams build
software incrementally at the beginning of a project rather than ship it at once
upon completion. When remote teams embrace Agile planning, they identify
the smallest changes that can be done now to obtain immediate feedback.
All communication and collaboration is focused on small iterations, so the
scope of a typical problem is manageable. By using Milestones (sprints),
Issues (user stories), weights (points and estimation), and other common
Agile artifacts, teams can quickly break down a large project over the course
of several releases. This method of planning work encourages team members
to participate in a small problem, since it only takes a few minutes to read
through an issue description, instead of being forced to attend a two-hour
slide presentation explaining a big problem.
With Agile planning, the problem is made transparent by default, so the pool of
contributors is high — from the earliest stages of development. Team members
can quickly view issue boards and track issues rather than wait until dedicated,
ongoing, synchronous meetings to obtain progress reports.
Watch GitLab for Remote Teams Demo
Milestones are a way to track issues and merge requests created to achieve a broader goal
in a certain period of time.
Follow us:
#AllRemote
12
Automation (use CI/CD to keep everyone informed)
DevOps automation allows teams to improve performance through more efficient and effective use of time
and resources. To simplify automated development, high performing teams select a CI/CD workflow, which
accelerates how quickly teams can deliver results to customers and stakeholders.
Continuous integration (CI) is a
software development practice in
which you build and test software
every time a developer pushes code
to the application, and can happen
several times a day.
Continuous Deployment (CD) is a
software development practice in
which every code change goes
through the entire pipeline and is
put into production automatically,
resulting in many production deployments every day. The process is fully
automated, without any human
intervention at all.
Issue Boards are used to plan, organize, and visualize a workflow for a feature or product release. They can be used as a Kanban
or a Scrum board.
Watch GitLab for Remote Teams Demo
Follow us:
#AllRemote
13
Once teams push commits to a feature branch in
a remote repository, the CI/CD pipeline set for a
project is triggered, building and testing the app,
then previewing the changes in a review app.
Once the code is reviewed and approved, teams
can merge the feature branch into master, which
deploys change automatically to a production
environment. Teams can easily roll back changes
if something goes wrong.
CI helps teams catch and reduce bugs early in
the development cycle, and CD moves verified
code to applications faster. Automation brings
teams together because they’re no longer
bogged down by tedious tasks that sipher time
and energy. Using a CI/CD workflow, teams can
spend less time on manual tasks that can lead
to silos and more time collaborating to develop
innovative solutions.
This workflow exemplifies GitLab’s ability to track the entire process, without the need for an external tool to deliver software.
You can easily revert changes if problems arise.
Watch GitLab for Remote Teams Demo
Follow us:
#AllRemote
14
Security
Iterative development workflows can make security a release bottleneck,
especially if there aren’t enough people or the right tools to test every line
of code. Oftentimes, teams only test major releases or limit testing to certain
apps, leaving weak spots hackers can exploit. In a DevOps workflow, security
shifts left. Rather than waiting to do testing at the end of the development
process, security is embedded within the workflow.
Shared responsibility is critical to the success of security in a remote
environment. It starts with establishing goals that are aligned with the
organization, supported by leadership, communicated to stakeholders, and
understood by all. Education and awareness of security policies that promote
an environment of safe, secure practices — while not inhibiting, but enabling
the business to succeed — is key to a project’s success.
Shared responsibility is critical to the success
of security in a remote environment.
Shared responsibility is further emphasized in a remote environment, which
requires organizations to plan and execute a distributed security strategy.
Automation, in the form of a CI/CD workflow, can help developers and security
professionals work together to create secure code. When every piece of
code is tested upon commit for security threats, a developer can remediate
immediately while they’re still working in that code or create an issue to alert
the security team. Developers immediately see the cause and effect of specific
changes so they can iteratively address security flaws alongside code flaws.
For security teams, dashboards can organize all remaining vulnerabilities that
developers didn’t resolve on their own. Developers and security professionals
can then collaborate to determine next steps or do pair programming to
identify a solution.
Watch GitLab for Remote Teams Demo
Follow us:
#AllRemote
15
How GitLab does remote DevSecOps
At GitLab, we have six core values that we lean on to make decisions: Collaboration, Results, Efficiency,
Diversity/Inclusion, Iteration, and Transparency (CREDIT). Every team member is encouraged to contribute to any project, making cross-team collaboration part of our daily life. We exemplify our Results value
by measuring the impact of what gets done rather than the time it takes to accomplish it. We live by the last
four values when using our own product, also known as Dogfooding. Every team member knows where to
find up-to-date information on every project, and we’re able to get diverse input by making a majority of
projects visible to the general public. If something
breaks, doesn't work well, or needs improvement,
we are more likely to iterate and address it before
it impacts our larger community. We release new
features on the 22 nd of every month, and often
test these new features for ourselves.
Built-in security
Security done at the end of a development cycle can be a roadblock, so we
started our DevSecOps journey by embedding security into our CI/CD pipelines:
•
Static Application Security Testing (SAST)
•
Dynamic Application Security Testing (DAST)
•
Container Scanning
•
Dependency Scanning
Developers identify vulnerabilities and remove them early on with integrated
security capabilities. This helps us fix problems quickly when they’re fresh,
not after a developer has committed code and moved on to their next project.
By reducing context switching, we deliver better results.
We iterated our DevSecOps process by adding the Security Dashboard, with
later releases enabling security dashboards at the pipeline project group and
instance levels. The security dashboard helps teams analyze risks and provides
an overview of security vulnerabilities that shows the project and file location
of each.
The GitLab Security Dashboard.
Watch GitLab for Remote Teams Demo
Follow us:
#AllRemote
16
A complete DevSecOps platform
GitLab’s product vision is to replace complicated
toolchains with a single application that works
by default across the entire DevOps lifecycle.
To achieve this goal, we are always iterating on
our existing features and listening to contributions from the community. The GitLab Maturity
Model lists our hierarchy of features and groups
them by lifecycle stage. From there, we assess
their maturity model on a scale from Planned,
which means it is on our roadmap but not yet
implemented, to Lovable, meaning it is an
elevated experience that users love.
The GitLab Maturity Model
Watch GitLab for Remote Teams Demo
Our goal is for every feature in every category
to be lovable and best-in-class. As a single
application that offers end-to-end visibility,
we’re able to look at the software development
lifecycle as a whole. We use our product and
improve our product with the goals of a complete
platform in mind. DevSecOps is the natural
next iteration of DevOps, and GitLab brings
developers, security, and operations together
in one interface.
Follow us:
#AllRemote
17
Remote teams bring DevOps to the next level
Remote work tenets like communication, transparency, and trust build a stronger DevOps team.
Employees feel more culturally aligned and are empowered by self-sufficiency. Once you’ve achieved
remote DevOps, the next step is to unite teams with a single tool for the entire application lifecycle.
This guarantees end-to-end visibility, streamlines communication, and serves as a single source of
truth on all projects.
Watch GitLab for Remote Teams Demo
Follow us:
#AllRemote
18
Using GitLab for remote collaboration
GitLab is a collaboration tool designed to help people work better together whether they are in the same location or spread across multiple time zones. Originally,
GitLab let software developers collaborate on writing code and packaging it up into software applications. Today, GitLab has a wide range of capabilities that are
used by people in all kinds of companies and all kinds of roles from sales and marketing to legal and customer support.
DOCUMENT WHILE YOU WORK
TRACK WORK FROM DREAM TO DONE
Instead of critical information getting lost in email or chat, writing down what’s
happening inside of GitLab Issues means the plan, process, and execution
are automatically documented. Other users can be tagged to comment and
collaborate. Since Issues are a many-to-many channel, it’s easy to loop in more
folks without the clutter of a reply-all thread.
Adding labels to GitLab Issues lets you categorize work into different stages,
such as planning, in-progress, and complete. GitLab Boards give you visibility
and control over how work is being done. It’s like moving digital post-it notes
across an online whiteboard that everyone can use, not just the folks in the
conference room.
Watch GitLab for Remote Teams Demo
Follow us:
#AllRemote
19
CONNECT STRATEGY TO EXECUTION
VERSION EVERY WORD
GitLab Epics and Roadmaps provide a way to organize and visualize your
entire portfolio of work over the long term. While Issues represent everyday
tasks, Epics represent entire features or projects. Roadmaps let you plan work
by seeing which work is competing for space and track progress against an
assigned completion date.
One of the advanced uses for GitLab is to treat copy like code. You can store,
version, review, and approve not only software code, but any text at all. Using
GitLab’s version control and “code review” capabilities for your text-based
copywriting, you’ll be able to track versions, know who changed what when,
make multiple proposals to the same document, and easily manage approvals.
Watch GitLab for Remote Teams Demo
Follow us:
#AllRemote
20
GET THE REMOTE WORK EMERGENCY PLAN
If suddenly remote work is the only option, how can
you make that happen? We’ve got all the answers here
thanks to a long successful history with remote work.
From tools to procedures and BTDT advice, you’ll find
what you need to dive right in to working remotely.
Learn more
GET THE REMOTE NEWSLETTER
Do you want more remote (and less office) in your life?
Sign-up for a biweekly dose of tips, tricks and new
remote opportunities.
Sign up
Try GitLab Free
All GitLab features — free for 30 days. GitLab is more than just
source code management or CI/CD. It is a full software development
lifecycle & DevOps tool in a single application.
Learn more
Watch GitLab for Remote Teams Demo
GET THE REMOTE WORK REPORT
We asked and over 3,000 of you answered. Created to
foster innovation, collaboration, and evolution in the
future of work, GitLab’s Remote Work Report drills
down into where we are today and what’s needed
for tomorrow.
Start your trial
Follow us:
#AllRemote
21
About GitLab
GitLab is a DevOps platform built from the ground up as a single application for all stages
of the DevOps lifecycle enabling Product, Development, QA, Security, and Operations
teams to work concurrently on the same project.
GitLab provides teams a single data store, one user interface, and one permission model
across the DevOps lifecycle allowing teams to collaborate and work on a project from a
single conversation, significantly reducing cycle time and focus exclusively on building
great software quickly.
Built on Open Source, GitLab leverages the community contributions of thousands of
developers and millions of users to continuously deliver new DevOps innovations. More
than 100,000 organizations from startups to global enterprise organizations, including
Ticketmaster, Jaguar Land Rover, NASDAQ, Dish Network and Comcast trust GitLab to
deliver great software at new speeds. GitLab is the world's largest all-remote company,
with more than 1,200 team members in over 65 countries.
Watch GitLab for Remote Teams Demo
Follow us:
#AllRemote
Download