Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Thorn case study edits #142

Merged
merged 3 commits into from
Jul 2, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 45 additions & 78 deletions website/src/pages/case-studies/we-are-thorn.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,20 @@ import { ViewDeveloperDocumentationAction } from '../../css/components/actions/V
export default ((props: any) => (
<Layout location={props.location}>
<Helmet>
<title>Sourcegraph Case study - Thorn</title>
<meta
name="twitter:title"
content="How Thorn uses Sourcegraph to sunset legacy applications with zero downtime"
/>
<meta
property="og:title"
content="How Thorn uses Sourcegraph to sunset legacy applications with zero downtime"
/>
<title>Thorn sunsets legacy applications safely with Sourcegraph</title>
<meta name="twitter:title" content="How Thorn sunsets legacy applications safely with Sourcegraph" />
<meta property="og:title" content="How Thorn sunsets legacy applications safely with Sourcegraph" />
<meta
name="twitter:description"
content="Learn how Sourcegraph code search enabled Thorn to systematically sunset legacy systems, removing huge amounts of tech debt in the process."
content="Learn how Sourcegraph code search enabled Thorn to systematically sunset legacy systems safely, removing huge amounts of tech debt in the process."
/>
<meta
property="og:description"
content="Learn how Sourcegraph code search enabled Thorn to systematically sunset legacy systems, removing huge amounts of tech debt in the process."
content="Learn how Sourcegraph code search enabled Thorn to systematically sunset legacy systems safely, removing huge amounts of tech debt in the process."
/>
<meta
name="description"
content="Learn how Sourcegraph code search enabled Thorn to systematically sunset legacy systems, removing huge amounts of tech debt in the process."
content="Learn how Sourcegraph code search enabled Thorn to systematically sunset legacy systems safely, removing huge amounts of tech debt in the process."
/>
<link rel="icon" type="image/png" href="https://about.sourcegraph.com/favicon.png" />
<link
Expand All @@ -40,114 +34,87 @@ export default ((props: any) => (
</Helmet>

<CaseStudyPage
title="How Thorn uses Sourcegraph to sunset legacy applications with zero downtime."
title="Thorn sunsets legacy applications safely with Sourcegraph"
logo="/case-studies/thorn-logo.png"
pdf="https://storage.googleapis.com/sourcegraph-assets/Thorn%20Sourcegraph%20case%20study.pdf"
className="thorn-case-study"
>
<ContentSection color="white" className="pt-5 pb-3">
<MediaQuote
image="/case-studies/jacob-gillespie-thorn-square.jpg"
quote="It was time-consuming for developers and reviewers to ensure that changes to legacy systems didn’t affect our production stability."
quote="Ensuring that changes to legacy systems didn’t affect production stability was taking too long."
author="Thorn Software Engineer Jacob Gilesspie"
/>
</ContentSection>

<ContentSection color="white" className="col-md-6">
<h2>Thorn's mission</h2>
<h2>Thorn defends children</h2>

<p>
Thorn builds technology to defend children from sexual abuse. Their work focuses on finding victims
of child sex trafficking faster, and eliminating child sexual abuse from the internet.Thorn partners
with tech companies, law enforcement, as well as other NGOs, to build products that provide the
front lines with the latest technology to find the most vulnerable child victims faster.
</p>
<p>
Thorn’s life changing work and not-for-profit status made it a simple decision to provide
Sourcegraph’s enterprise features free of charge. For many children, Thorn plays a critical role in
speeding up the time it takes for them to be identified and we’re proud to be supporting them with
their mission.
of child sex trafficking quickly and eliminating child sexual abuse from the internet. Thorn
partners with tech companies, law enforcement, and other NGOs to build products to find vulnerable
child victims faster. Thorn software reduces the time to identify many children.
</p>

<h2 class="pt-5 pb-1">
Sunsetting deprecated systems was previously costly and risked production stability
</h2>
<h2 class="pt-5 pb-1">Sunsetting deprecated systems was costly and risked production stability</h2>
<p>
As Thorn’s products evolved, it became difficult to trace the impact of code changes to core
application components, as it was difficult to determine what code might rely on legacy
architecture, risking instability and greatly increasing the demand on development and review.
Determining which code relied on legacy architecture was difficult. Developers took too long to
ensure that changes to legacy systems didn’t affect production stability.
</p>

<InContentBlockquote quote="It was time-consuming for developers and reviewers to ensure that changes to legacy systems didn’t affect our production stability." />
<InContentBlockquote quote="Ensuring that changes to legacy systems didn’t affect production stability was taking too long." />

<p>
Over 9,000 officers in 38 countries rely on Thorn’s systems to identify child victims of sexual
abuse. Any downtime of these services has a negative impact on Thorn’s ability to identify children
globally.
Over 9,000 officers in 38 countries rely on Thorn to identify child victims of sexual abuse. Any
downtime reduced Thorn’s ability to identify these children.
</p>

<h2 class="pt-5 pb-1">Existing tooling was not sufficient</h2>

<p>
Tech debt, and the upkeep of legacy code was becoming increasingly problematic. Previous attempts,
such as cloning all repositories locally and using grep to find references, were inadequate,
especially when considering simultaneous development by multiple teams across many different
projects, repositories, and branches. It was costly to determine if all the different microservices
were properly in sync when removing legacy application code.
Tech debt and upkeep of legacy code were problematic. Previous attempts, such as cloning all
repositories locally and using grep to find references, were inadequate when considering
simultaneous development by multiple teams across many different projects, repositories, and
branches. Determining if all the different microservices were properly in sync when removing legacy
application code was painful.
</p>

<p>
Sourcegraph’s multi-repository code search, was able to prove that no code referencing legacy
systems exists organization-wide
</p>
<h2 class="pt-5 pb-1">
Sourcegraph’s multi-repository code search proved that no code referencing legacy systems existed
across the organization
</h2>

<p>
Thorn Software Engineer Jacob Gillespie deployed Sourcegraph and synced Thorn’s entire list of
repositories within minutes.
</p>

<InContentBlockquote quote="With Sourcegraph, we could search over the contents of every repository, in any or all branches in seconds." />

<p>
Sourcegraph code search gave Thorn the ability to find references to deprecated systems. But more
importantly, it proved itself to be an invaluable new part of their code review process.
repositories within minutes. With Sourcegraph, Thorn could search over the contents of every
repository, in any or all branches in seconds. Sourcegraph code search gives Thorn the ability to
find references to deprecated systems.
</p>

<InContentBlockquote quote="In pull requests, team members would include links to Sourcegraph code search, in order to prove all references to a deprecated system had been removed. This gave the reviewer confidence that the code was safe to merge." />
<p>Sourcegraph is now essential to their code review process. </p>

<h2 class="pt-5 pb-1">As a result, deprecated systems were taken offline without downtime.</h2>
<p>
Thorn’s developers could then systematically remove or modify deprecated systems, removing huge
amounts of tech debt in the process. This benefited all areas of the architecture, including not
only application code, but also build, deployment, logging, and monitoring systems—any tool that
supported the deployment and uptime of the application.
</p>

<p>
Modern microservice architecture makes the application deprecation process more challenging than
ever.{' '}
</p>
<InContentBlockquote
quote="In pull requests, team members include links to Sourcegraph code search to prove all references to a deprecated system have been removed, giving the reviewer confidence that the code is safe to merge."
/>

<h2 class="pt-5 pb-1">Deprecated systems were taken offline without downtime</h2>
<p>
<strong>
Sourcegraph’s code search enables developers and DevOps teams to find dead code, unused
packages, and references to deprecated systems, organization wide across tens of thousands of
repositories.
</strong>
Thorn’s developers removed or modified deprecated systems, eliminating huge amounts of tech debt.
This benefited all areas of the architecture, including not only application code, but also build,
deployment, logging, and monitoring systems—any tool that supported the deployment and uptime of the
application.
</p>

<p class="pb-4">
Being able to take advantage of industry leading solutions like Sourcegraph provides critical
support to Thorn’s mission. Every start-up has to make choices about when to rebuild their systems
and when to move forward accruing technical debt, Thorn is no different, but here at Sourcegraph,
we’re proud that our tools could be used to make the Thorn team a little more successful, a little
faster.
<p class="pb-5">
Using Sourcegraph provides critical support to Thorn’s mission. Every start-up has to make choices
about when to rebuild their systems and when to move forward accruing technical debt. Modern
microservice architecture makes the application deprecation process challenging.
</p>
</ContentSection>
</CaseStudyPage>
<ContentPage
title="Code search and navigation"
description="Code search helps you grok code so you can write better code more quickly. Sourcegraph's code search is used by elite software teams."
title="Get Sourcegraph for your team "
description="Sourcegraph’s code search enables developers and DevOps teams to find dead code, unused packages, and references to deprecated systems, organization-wide across tens of thousands of repositories."
mainActions={
<div className="d-flex flex-column align-items-center">
<RequestDemoAction className="mt-3" />
Expand Down
4 changes: 2 additions & 2 deletions website/src/pages/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ export default ((props: any) => (
</div>
<ContentSection color="black">
<CaseStudyJumbotron
title="See how Thorn uses Sourcegraph to sunset legacy applications"
quote="In pull requests, team members would include links to Sourcegraph code search, in order to prove all references to a deprecated system had been removed."
title="See how Thorn sunsets legacy applications safely with Sourcegraph"
quote="In pull requests, team members include links to Sourcegraph code search to prove all references to a deprecated system have been removed."
author="Thorn Software Engineer, Jacob Gilesspie"
url="/case-studies/we-are-thorn"
image="/case-studies/thorn-logo-square.png"
Expand Down