# Implementation Journey 🛠️

## Phase 0: POC (Weeks 1 & 2)

* **Goals**
  * Local Backstage setup
  * Quick example template to showcase automation capabilities
    * Service Discovery example
      * read Org data from Github
    * Scaffolder Automation example
      * write to Github (pull requests & repository creation)
* **Challenges**
  * Learning about platform and configuration&#x20;
  * Getting permissions to create a Github App
* **Outcomes**
  * Transferred knowledge to team
  * Demo'd platform capabilities
  * Received approval to implement&#x20;

## Phase 1: Deployment, Service Discovery & API Docs (Quarter 1)

* **Goals**
  * Deploy Backstage to Cloud
  * Authentication via Okta SSO integration
  * API Documentation Feature Setup
* **Challenges**
  * IaC and CI/CD setup
    * Multiple meetings with Cloud Engineering team to figure out right architecture
      * Settled on Cloud Run for cost savings
    * GitOps CI/CD Setup
      * Deployments on merge to default branch
      * Automated tests (linting, unit, e2e, etc.) on push to any branch
  * Authentication requirements gathering and implementation
    * Worked with IT to receive secrets and setup Okta configuration
  * &#x20;API documentation publishing feature released
    * Friction to push teams to use feature
  * Cross-team alignment on service discovery standards
    * Once again friction to get teams to implement across org repositories
* **Outcomes**
  * First few Backstage deployments
  * Secure authentication flow
  * CI/CD pipeline setup
  * Centralized API documentation started
    * Found out it takes time to get adoption :crying\_cat\_face:
  * Initial developer feedback

## Phase 2: Scaffolder Templates (Quarter 2)

* **Goals**
  * Achieve full API documentation adoption
  * Scaffolder templates framework
  * Templates for backend and frontend engineers
  * Plugins to reduce context switching
  * Google Analytics to track usage of Backstage
* **Challenges**
  * Gathering unwritten engineering standards
    * Working with architecture team and engineers to document best practices and create re-usable "skeleton" repositories
  * Long hours spent testing and debugging templates
  * Implementing plugins for various patforms (datadog, sentry, snyk and entity feedback)
* **Outcomes**
  * Crentralized all of our API docs
  * Added two backend templates (nodejs/php microservice) and one frontend template (vuejs microfrontend)
  * Documented engineering standards for all future projects
  * Quick wins implementing plugins that reduced context switching and allowed engineers to leave feedback on eachother's projects

## Phase 3: More Templates & Enhancements (Quarter 3-4)

* **Goals**
  * Work with new teams to create more templates
  * Implement cost insights
  * Automate engineering standard checks against entities and visualization
* **Challenges**
  * Org wide tagging of cloud resources to allow getting GCP billing data linked to Backstage entities&#x20;
    * Took a lot of effort because it affected lots of team's projects IaC
  * Migrating engineering standards documentation to automated checks using Spotify's Sound Check plugin &#x20;
    * Lots of time spent figuring out how to get the correct metadata to make sure checks are reliable
* **Outcomes**
  * Multiple team-specific and generic templates like pub/sub topics
  * Users can visualize cloud costs per entity

    <figure><img src="https://1588585907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MTwgToRvLjYdjfpAVgP%2Fuploads%2FnWAQBudwQ3v5wHI1MrUJ%2Fimage.png?alt=media&#x26;token=6c284d8d-dd72-4701-91c8-e965781a7e54" alt=""><figcaption></figcaption></figure>
  * Engineering standards turned in to automated checks which allowed visualizing service maturity

    * Management can track reliability and quality insights on their team's projects

    <figure><img src="https://1588585907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MTwgToRvLjYdjfpAVgP%2Fuploads%2FgCo1pZe1V7iefmKxbRnf%2Fimage.png?alt=media&#x26;token=5ef9f42e-23eb-40c6-9133-644eaaa037fe" alt=""><figcaption></figcaption></figure>
