Skip to content
This repository has been archived by the owner on Nov 2, 2024. It is now read-only.

Develop SRE recipe that introduce general delay for home page rendering in Online Boutique #1009

Open
minherz opened this issue Mar 12, 2023 · 3 comments
Assignees
Labels
priority: p3 Desirable enhancement or fix. May not be included in next release. type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design.
Milestone

Comments

@minherz
Copy link
Contributor

minherz commented Mar 12, 2023

Implement an SRE recipe that will replace recipe 0 and will introduce latency in displaying the Online Boutique's home page by injecting code in one of the other services that support source code refresh at runtime (e.g. Javascript or Python*).

--
* cpython does not support this feature without the use of additional modules (e.g. watchdog). Another way to do it is to convert one or more of the Online Boutique services to run on pypy.

@minherz minherz added type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design. priority: p3 Desirable enhancement or fix. May not be included in next release. labels Mar 12, 2023
@minherz minherz added this to the version 0.10 milestone Mar 12, 2023
@minherz minherz self-assigned this Mar 12, 2023
minherz added a commit that referenced this issue Apr 18, 2023
The release includes the following:

* Use [Online Boutique][ob-github] (v0.6.0) as a demo application instead of outdated fork of Hipster Shop
* Change the branching model from [gitflow] to [trunk-based]
* Modification of CI/CD including:
   * Cleanup not used workflows
   * Conversion from self-hosted to Github-hosted [agents]
   * Improved Terraform validation
   * Shell script linting validation
* Consolidation of all (non-Terraform) scripts into a single `sandboxctl` implemented in Bash script
* Support of "delete" operation that does not require shutting down (a.k.a. deleting) Google Cloud project.
* Revision of the site documentation and consolidation all documentation in the Github repo.
* Revision of the walkthrough guide to help in Sandbox launching 

As part of the above changes and in order to support further development, this release discontinues support of the following:

* Website ([cloud-ops-sandbox.dev](https://cloud-ops-sandbox.dev/)) has a deprecation note displayed in every page announcing end of life (in July).
* Website allows to users to launch previous minor release (version 0.8.0) of Sandbox in the case they need discontinued functionality.
* Support of the custom Cloud Shell image to launch Sandbox is stopped. Launching process will be guided using interactive tutorial.

### Discontinued functionality

This is release does not support some functions and features that exist in the previous minor release (0.8).

* Rating service does not in Online Boutique. It has the following effect on Sandbox features:
   * Sandbox stops provisioning AppEngine services and CloudSQL DB instance.
   * Sandbox does not demonstrate a window-based SLO definition.
   * SLO recipe that was using rating service will be removed
* Single-click installation is no longer available. Users will use the guided installation using the walkthrough tutorial (from README page).
* Launch process does not create a new project. Users will have to create a project by themselves.
* Suspension of SRE recipes. Online Boutique does not currently provide adequate support for chaos engineering that is used in SRE recipes. Because of it the version 0.9.0 does not feature SRE recipes. This functionality will be restored in the version 0.10.0 after changing the chaos engineering engine of the recipes. #1009 tracks the work on restoring this function.
* Load generator from Online Boutique does not expose GUI for manual customization. It only provides a constant low load. You can use CLI parameter `--skip-loadgenerator` to avoid load generation. GoogleCloudPlatform/microservices-demo#1692 was created to support this functionality in Online Boutique.

### Pending tasks

There is a number of tasks that are incomplete at the time of the 0.9.0 release. These tasks will be implemented in the following releases. The list below captures the current set of the tasks:

* integration tests to validate correctness of provisioned Cloud Ops resources
* enabling release-please bot to automate release PRs
* Use [cloud-ops-sandbox.dev](https://cloud-ops-sandbox.dev/) to host a _read-only_ version of Cloud Ops Sandbox that can be used for a reference or as a preview
* rennovated SRE recipes engine (will be released in version 0.10.0)

### 🛠️ Resolved issues

Fixes #1001, Fixes #1002, Fixes #1003, Fixes #1010, Fixes #1012, Fixes #1018, Fixes #1021, Fixes #987

The following issues will be closed by this release:
Closes #216, Closes #324, Closes #453 (as no longer reproducible), Closes #575, Closes #748, Closes #789, Closes #880, Closes #888, Closes #914 (obsolete), #1006 (obsolete)

[ob-github]: https://github.com/GoogleCloudPlatform/microservices-demo
[gitflow]: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
[trunk-based]: https://trunkbaseddevelopment.com/
[agents]: https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners
@minherz minherz added priority: p2 Moderately-important priority. Fix may not be included in next release. and removed priority: p3 Desirable enhancement or fix. May not be included in next release. labels Apr 19, 2023
@minherz
Copy link
Contributor Author

minherz commented Jul 26, 2023

Downgrading the issue priority to reflect the decrease in the maintenance capacity of the project.

@minherz minherz added priority: p3 Desirable enhancement or fix. May not be included in next release. and removed priority: p2 Moderately-important priority. Fix may not be included in next release. labels Jul 26, 2023
@lvaylet
Copy link

lvaylet commented Sep 26, 2023

Hi @minherz, I understand this issue and #1010 are the main reasons why SRE Recipes were temporarily disabled in 0.9.

Instead of injecting code into the current running version of the Online Boutique provisioned by Kustomize, would it make more sense to open PRs on the Online Boutique so faults can be injected by modifying the value of an environment variable, like in 0.8? For example, we could request an update to recommendation_server.py, from:

max_responses = 5

to:

max_responses = int(os.environ.get("MAX_RESPONSES", 5))

This is compliant with the twelve-factor app good practices and does not introduce any breaking change, so I do not see why the Online Boutique maintainers would decline the PR.

That could work for other recipes as well.

WDYT?

@minherz
Copy link
Contributor Author

minherz commented Sep 27, 2023

We would like to avoid introducing unrelated code changes to other projects. One of the primary goals to remove the code of the demo application from COS was to reduce chorn maintenance of artifacts that aren't related to COS.
Adding code that is used solely in COS to the demo projects will (re)introduce these maintenance tasks that we want to avoid.
The new recipe engine in COS should provide flexibility to recipe developers to demonstrate targeting scenarios without maintaining a specialized branch or code in the demo apps that are used with COS.
Regarding the particular proposal, it seems unrelated to the scenario that is described in this issue. However, if the demo app allows to simulate a desired behavior by misconfiguration, it can be used as an alternative to the suggested approach.

@minherz minherz modified the milestones: version 0.10, version 0.11 Oct 27, 2023
@minherz minherz modified the milestones: version 0.11, backlog Jan 29, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
priority: p3 Desirable enhancement or fix. May not be included in next release. type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design.
Projects
None yet
Development

No branches or pull requests

2 participants