From 350c97dee8e7322b61700f388b02c8e355bd10b5 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 29 Sep 2023 23:08:01 +0200 Subject: [PATCH 1/2] feat: added blog post Signed-off-by: blam --- ...ago-traiding-company-adopter-spotlight.mdx | 64 ++++++++++++++++++ microsite/blog/assets/2023-09-29/header.png | Bin 0 -> 60288 bytes 2 files changed, 64 insertions(+) create mode 100644 microsite/blog/2023-09-29-chicago-traiding-company-adopter-spotlight.mdx create mode 100644 microsite/blog/assets/2023-09-29/header.png diff --git a/microsite/blog/2023-09-29-chicago-traiding-company-adopter-spotlight.mdx b/microsite/blog/2023-09-29-chicago-traiding-company-adopter-spotlight.mdx new file mode 100644 index 0000000000..fbf4fa89e8 --- /dev/null +++ b/microsite/blog/2023-09-29-chicago-traiding-company-adopter-spotlight.mdx @@ -0,0 +1,64 @@ +--- +# prettier-ignore +title: "Adopter Spotlight: How Chicago Trading Company saved 18 months of developer effort with Backstage" +author: Tiffany Cox, Spotify +--- + +![backstage header](assets/2023-09-29/header.png) + +**_TL;DR [Chicago Trading Company](https://www.chicagotrading.com/) (CTC) adopted Backstage ten months ago to help reduce onboarding frictions with their new cloud-based DevOps Kubernetes platform. Through templatization and open feedback loops, the team has conservatively saved 18 months of developer time to date with Backstage. We spoke with CTC DevOps engineer [Scott Kausler](https://github.com/scott-kausler) who shared the details of their onboarding journey, lessons learned, and insights for other Backstage adopters._** + +{/* truncate */} + +## Templates or the cluster didn't happen + +While mid-activation on a new cloud-based DevOps Kubernetes platform, Scott's team received early feedback that it was difficult to onboard teams onto this platform due to the breadth of requirements and new tools developers needed — from dependency management tools (such as Gradle, Conan, and Conda) to Docker/Kubernetes, Helm/FluxCD, and Vault. Not only were CTC developers required to learn new systems to build, package, and deploy their apps, in several cases even the code needed to be changed. There were also significant modifications required to existing tools such as Jenkins. + +Scott's team quickly recognized that this friction could lead to lower adoption and longer onboarding times to the new platform. So he started investigating solutions that would allow him to templatize these new services and create turnkey onboarding with less reference knowledge required. + +After exploring several service routes from managed to in-house/owned, CTC opted to use Backstage — already in POC for use of the [Software Catalog](https://backstage.io/docs/features/software-catalog/) — due to the [Software Templates](https://backstage.io/docs/features/software-templates/) plugin form-based input, UI/json-schema-form abilities, and its extensibility. Scott's team felt Backstage provided the most sustainable solution for growth amongst the multiple developer portal and templation options vetted and would help bridge the gap between UI-driven deployment and GitOps. + + +## Early wins on documentation and onboarding + +The CTC DevOps team created a small special interest group to champion the developer portal build and quickly delved into the big issues impacting their developer experience. From there, the team began creating tasks and templates within Backstage. + +To start, Scott worked with end-user teams outside DevOps early in the process of documenting migration to the new DevOps Kubernetes platform services. When Scott wrote the onboarding documentation, he made it a point to pair with a developer on another team that would be using it. This approach provided him with a quality sounding board, great instantaneous feedback, and a sort of "beta developer" to test V1 documentation clarity., A few weeks later, another colleague on the same end-user team followed the documentation and she didn't reach out to Scott at all. + +After this early win, the team was ready for broad distribution. Partnering with the senior leadership team, Scott's team began onboarding teams to the new DevOps Kubernetes platform using the templates his team created in Backstage. At CTC, their Backstage instance is set up to automatically scan for deployments in Kubernetes; so if you're in Kubernetes, you're onboarded to Backstage. + +"Backstage made onboarding [to the new DevOps platform] not scary,"" Scott said. "Because now — all of a sudden — you have this recipe for how to do it, you don't have to jump through these hoops, the templates are there and ready for you. You choose what you want based on these templates we have available, and you're off and running on your own."" + +Scott's team monitored progress against their onboarding goals partially by how often the DevOps team was getting pinged for support and found that it has made support smoother. They can easily refer people to templates and repo standards instead of making them create something ad hoc. + +"It's really been cool seeing how that progressed. I even have a few teams that didn't talk to DevOps at all. They used a [template] and they have a service ready. We were actually pretty excited about that, because that means now we have a scalable tool able to onboard others onto our platform."" said Scott. + +Another exciting win for CTC was template additions generated outside the initial toolkit, which has eased the burden substantially for the DevOps team. They were able to create new templates to deploy against best practices such as a template for creating a brand-new Terraform module and Git repo or — Scott's favorite — ​​a template that creates a Java repository along with Jenkins jobs for CI and the Flux CD config for deployment. + +"The template builds and auto-deploys a Docker image, so if you make a change to your mainline branch, then it will automatically build a new Docker image and deploy it to a Kubernetes cluster."" Scott said. "So within basically 10 minutes of you filling out a form, you actually have something deployed out to a Kubernetes cluster."" + +This process eased flows for both end-user devs and DevOps teams overall. + + +## Measuring Backstage impact at CTC + +To calculate the impact of Backstage, Scott began with reviewing template types and assigning a weighted value to each based upon their perceived workload. + +At CTC, some templates create a repo, some templates create a repo with some code, some templates even go as far as creating a repo with code and all the prerequisites to deploy to Flux and Jenkins jobs. To be conservative, the highest weight Scott assigned to a template would be saving three days of developer time. Even with that conservative estimate, the figure came out to be a savings of 18 months in developer effort since Backstage was deployed ten months ago. + +For CTC, the journey with Backstage has just begun. They're now looking to drive more Catalog adoption and determine what custom plugins they need to build to better support their workflows. + + +## The power of partnership (and good docs!) + +When asked about advice he has for other Backstage adopters, Scott talked about the DevOps team's comms strategy and ensuring end-user developers had pathways to provide feedback. In addition to the focus on templates for the new services, having both a dedicated Slack channel and open-door communication with the DevOps team helped reduce onboarding friction to the DevOps Kubernetes platform. + +Outside of that, he believes the approach to documentation is paramount. "Write your documentation from the perspective of, 'Hey, you have this task assigned to you to write a template, here are the exact steps you have to follow.'"" Scott said. "Think of it as a recipe. Removing your familiarity bias will help make this tool more useful for less familiar teams."" + +Finally, don't be afraid to step outside the core use cases when it comes to the Backstage framework and finding solutions to meet your needs. + +"Backstage gives you a lot of really easy to use features right out of the box. And one of the great things about open source is you can look at the code and see exactly what the behavior is and work within that behavior. But we've also developed our own processes for custom tasks because — at the end of the day — our platform has some very custom aspects to it."" Scott said. + +Interested in more stories from Backstage adopters? Check out these recent posts from [Stash](https://backstage.io/blog/2023/07/08/stash-adopter-post) and [Expedia Group](https://backstage.io/blog/2023/08/17/expedia-proof-of-value-metrics-2). + +Want to learn more about Backstage? Join our weekly [Office Hours](https://info.backstage.spotify.com/office-hours) and bring your burning questions. diff --git a/microsite/blog/assets/2023-09-29/header.png b/microsite/blog/assets/2023-09-29/header.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc48954c30b27f4b162ca6dcb742f8a9628f90c GIT binary patch literal 60288 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 Date: Mon, 2 Oct 2023 10:06:26 +0200 Subject: [PATCH 2/2] chore: make pretty Signed-off-by: blam --- ...ago-traiding-company-adopter-spotlight.mdx | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/microsite/blog/2023-09-29-chicago-traiding-company-adopter-spotlight.mdx b/microsite/blog/2023-09-29-chicago-traiding-company-adopter-spotlight.mdx index fbf4fa89e8..8b4f332d54 100644 --- a/microsite/blog/2023-09-29-chicago-traiding-company-adopter-spotlight.mdx +++ b/microsite/blog/2023-09-29-chicago-traiding-company-adopter-spotlight.mdx @@ -18,47 +18,44 @@ Scott's team quickly recognized that this friction could lead to lower adoption After exploring several service routes from managed to in-house/owned, CTC opted to use Backstage — already in POC for use of the [Software Catalog](https://backstage.io/docs/features/software-catalog/) — due to the [Software Templates](https://backstage.io/docs/features/software-templates/) plugin form-based input, UI/json-schema-form abilities, and its extensibility. Scott's team felt Backstage provided the most sustainable solution for growth amongst the multiple developer portal and templation options vetted and would help bridge the gap between UI-driven deployment and GitOps. - -## Early wins on documentation and onboarding +## Early wins on documentation and onboarding The CTC DevOps team created a small special interest group to champion the developer portal build and quickly delved into the big issues impacting their developer experience. From there, the team began creating tasks and templates within Backstage. -To start, Scott worked with end-user teams outside DevOps early in the process of documenting migration to the new DevOps Kubernetes platform services. When Scott wrote the onboarding documentation, he made it a point to pair with a developer on another team that would be using it. This approach provided him with a quality sounding board, great instantaneous feedback, and a sort of "beta developer" to test V1 documentation clarity., A few weeks later, another colleague on the same end-user team followed the documentation and she didn't reach out to Scott at all. +To start, Scott worked with end-user teams outside DevOps early in the process of documenting migration to the new DevOps Kubernetes platform services. When Scott wrote the onboarding documentation, he made it a point to pair with a developer on another team that would be using it. This approach provided him with a quality sounding board, great instantaneous feedback, and a sort of "beta developer" to test V1 documentation clarity., A few weeks later, another colleague on the same end-user team followed the documentation and she didn't reach out to Scott at all. After this early win, the team was ready for broad distribution. Partnering with the senior leadership team, Scott's team began onboarding teams to the new DevOps Kubernetes platform using the templates his team created in Backstage. At CTC, their Backstage instance is set up to automatically scan for deployments in Kubernetes; so if you're in Kubernetes, you're onboarded to Backstage. "Backstage made onboarding [to the new DevOps platform] not scary,"" Scott said. "Because now — all of a sudden — you have this recipe for how to do it, you don't have to jump through these hoops, the templates are there and ready for you. You choose what you want based on these templates we have available, and you're off and running on your own."" -Scott's team monitored progress against their onboarding goals partially by how often the DevOps team was getting pinged for support and found that it has made support smoother. They can easily refer people to templates and repo standards instead of making them create something ad hoc. +Scott's team monitored progress against their onboarding goals partially by how often the DevOps team was getting pinged for support and found that it has made support smoother. They can easily refer people to templates and repo standards instead of making them create something ad hoc. "It's really been cool seeing how that progressed. I even have a few teams that didn't talk to DevOps at all. They used a [template] and they have a service ready. We were actually pretty excited about that, because that means now we have a scalable tool able to onboard others onto our platform."" said Scott. -Another exciting win for CTC was template additions generated outside the initial toolkit, which has eased the burden substantially for the DevOps team. They were able to create new templates to deploy against best practices such as a template for creating a brand-new Terraform module and Git repo or — Scott's favorite — ​​a template that creates a Java repository along with Jenkins jobs for CI and the Flux CD config for deployment. +Another exciting win for CTC was template additions generated outside the initial toolkit, which has eased the burden substantially for the DevOps team. They were able to create new templates to deploy against best practices such as a template for creating a brand-new Terraform module and Git repo or — Scott's favorite — ​​a template that creates a Java repository along with Jenkins jobs for CI and the Flux CD config for deployment. -"The template builds and auto-deploys a Docker image, so if you make a change to your mainline branch, then it will automatically build a new Docker image and deploy it to a Kubernetes cluster."" Scott said. "So within basically 10 minutes of you filling out a form, you actually have something deployed out to a Kubernetes cluster."" - -This process eased flows for both end-user devs and DevOps teams overall. +"The template builds and auto-deploys a Docker image, so if you make a change to your mainline branch, then it will automatically build a new Docker image and deploy it to a Kubernetes cluster."" Scott said. "So within basically 10 minutes of you filling out a form, you actually have something deployed out to a Kubernetes cluster."" +This process eased flows for both end-user devs and DevOps teams overall. ## Measuring Backstage impact at CTC -To calculate the impact of Backstage, Scott began with reviewing template types and assigning a weighted value to each based upon their perceived workload. +To calculate the impact of Backstage, Scott began with reviewing template types and assigning a weighted value to each based upon their perceived workload. At CTC, some templates create a repo, some templates create a repo with some code, some templates even go as far as creating a repo with code and all the prerequisites to deploy to Flux and Jenkins jobs. To be conservative, the highest weight Scott assigned to a template would be saving three days of developer time. Even with that conservative estimate, the figure came out to be a savings of 18 months in developer effort since Backstage was deployed ten months ago. -For CTC, the journey with Backstage has just begun. They're now looking to drive more Catalog adoption and determine what custom plugins they need to build to better support their workflows. +For CTC, the journey with Backstage has just begun. They're now looking to drive more Catalog adoption and determine what custom plugins they need to build to better support their workflows. - -## The power of partnership (and good docs!) +## The power of partnership (and good docs!) When asked about advice he has for other Backstage adopters, Scott talked about the DevOps team's comms strategy and ensuring end-user developers had pathways to provide feedback. In addition to the focus on templates for the new services, having both a dedicated Slack channel and open-door communication with the DevOps team helped reduce onboarding friction to the DevOps Kubernetes platform. Outside of that, he believes the approach to documentation is paramount. "Write your documentation from the perspective of, 'Hey, you have this task assigned to you to write a template, here are the exact steps you have to follow.'"" Scott said. "Think of it as a recipe. Removing your familiarity bias will help make this tool more useful for less familiar teams."" -Finally, don't be afraid to step outside the core use cases when it comes to the Backstage framework and finding solutions to meet your needs. +Finally, don't be afraid to step outside the core use cases when it comes to the Backstage framework and finding solutions to meet your needs. -"Backstage gives you a lot of really easy to use features right out of the box. And one of the great things about open source is you can look at the code and see exactly what the behavior is and work within that behavior. But we've also developed our own processes for custom tasks because — at the end of the day — our platform has some very custom aspects to it."" Scott said. +"Backstage gives you a lot of really easy to use features right out of the box. And one of the great things about open source is you can look at the code and see exactly what the behavior is and work within that behavior. But we've also developed our own processes for custom tasks because — at the end of the day — our platform has some very custom aspects to it."" Scott said. -Interested in more stories from Backstage adopters? Check out these recent posts from [Stash](https://backstage.io/blog/2023/07/08/stash-adopter-post) and [Expedia Group](https://backstage.io/blog/2023/08/17/expedia-proof-of-value-metrics-2). +Interested in more stories from Backstage adopters? Check out these recent posts from [Stash](https://backstage.io/blog/2023/07/08/stash-adopter-post) and [Expedia Group](https://backstage.io/blog/2023/08/17/expedia-proof-of-value-metrics-2). -Want to learn more about Backstage? Join our weekly [Office Hours](https://info.backstage.spotify.com/office-hours) and bring your burning questions. +Want to learn more about Backstage? Join our weekly [Office Hours](https://info.backstage.spotify.com/office-hours) and bring your burning questions.