# 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="/files/wdCZiz1rXwKHM08xpLHu" 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="/files/sUnmN6eqlYiGYa5Q9oKo" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://notes.mikaelsamvelian.com/devops-knowledge/developer-portal/implementation-journey.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
