Skip to content

[brainstorm]: tags, versions and environment #39

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

Open
4 tasks
zmzlois opened this issue Dec 6, 2024 · 10 comments
Open
4 tasks

[brainstorm]: tags, versions and environment #39

zmzlois opened this issue Dec 6, 2024 · 10 comments

Comments

@zmzlois
Copy link
Contributor

zmzlois commented Dec 6, 2024

Atm barely anyone understood how we handle tags, versions and environment. They are the strong primitives of the zephyr platform, as powerful as they are, this section lacks significant education.

It needs additional effort to explain how user can use them for different use case. We need to explore multiple scenarios and add education in this area.

Scenario:

  • Feature flags
  • Feature flags with regional traffic
  • OTA update for React Native and cross-platform application
  • More TBD

cc @zackarychapple @swalker326 @arthurfiorette

@zmzlois zmzlois changed the title [docs]: tags, versions and environment [brainstorm]: tags, versions and environment Dec 6, 2024
@zackarychapple
Copy link
Contributor

This will also have a heavy data aspect and dora metric side too

@swalker326
Copy link
Contributor

Image

Just a sketch I used to help me understand

@arthurfiorette
Copy link
Member

version, tags and envs is a simple concept and MUST be described to our users in a simple and fast way. Complications aren't tags/envs specific but other features that use them.

Version: specific point in time, just as a git commit. (put a snapshots id alongside it to exemplify)
Tag: Mutable reference to a version that has a stable url. (put a tag url to exemplify, but split tag part and domain part to be easily understood)
Environment: Mutable reference to a version or tag that has a stable url, support for custom domains and is the last wrapper around a version.

Having anything more tense than that will just move to problem (it being hard to understand it first time) somewhere else.

Devs are jump-readers when were talking about documentation. keep things simple and concise.

Chat gpt is very good at language, so feel free to write lengthy topics and just ask it to reduce the text without losing information.

@arthurfiorette
Copy link
Member

For example, for the above input, chatgpt wrote this:


A version is an immutable snapshot of your application, similar to a Git commit (e.g., snapshot-abc123). A tag is a mutable reference to a version, providing a stable URL for easy access (e.g., https://app.example.com/tag/my-tag, where my-tag is the reference). An environment is a mutable reference to a version or tag that offers a stable URL, supports custom domains, and serves as the final abstraction layer for connecting your application to real-world usage (e.g., https://my-app.custom-domain.com).


Which, for me, just fixing the examples into what we actually have right now is enough.

@arthurfiorette
Copy link
Member

I'm not sure what feature flags have to do with this @zmzlois, we do not support nor have plans to move feature flags to module federation at deployment level.

@zmzlois
Copy link
Contributor Author

zmzlois commented Dec 6, 2024

This will also have a heavy data aspect and dora metric side too

For user's DORA metric:

  • Deployment frequency
  • Lead time for changes
  • Change failure rate
  • Time to restore service

Other than Change failure rate felt like something need to accumulate runtime metrics but others are pretty attainable at the moment through current set up

  • display on dashboard
  • query through SDK
  • Github application comments

A combination of three?

@zmzlois
Copy link
Contributor Author

zmzlois commented Dec 6, 2024

Image

Just a sketch I used to help me understand

Attaching another one

Image

@zmzlois
Copy link
Contributor Author

zmzlois commented Dec 7, 2024

version, tags and envs is a simple concept and MUST be described to our users in a simple and fast way. Complications aren't tags/envs specific but other features that use them.

Version: specific point in time, just as a git commit. (put a snapshots id alongside it to exemplify) Tag: Mutable reference to a version that has a stable url. (put a tag url to exemplify, but split tag part and domain part to be easily understood) Environment: Mutable reference to a version or tag that has a stable url, support for custom domains and is the last wrapper around a version.

Having anything more tense than that will just move to problem (it being hard to understand it first time) somewhere else.

Devs are jump-readers when were talking about documentation. keep things simple and concise.

Chat gpt is very good at language, so feel free to write lengthy topics and just ask it to reduce the text without losing information.

I think this is very good as a beginning paragraph to introduce "what it is", but I'd imagine user need more hands-on guide with purpose on "how to do what"

Take some example:

structure

  • "what's this" What are versions, tags and environments is a good start
  • "how to use it" Where to find it on the platform, how to modify them is a bunch of reference when they are configuring and trouble shooting
  • "how to use the thing to do what" Use versions, tags and environments to set up QA testing fast lane or Set up feature flags without SDK is where they actually start using the product and do things step by step

happy to hear more feedback on structure too

@zmzlois
Copy link
Contributor Author

zmzlois commented Dec 7, 2024

I'm not sure what feature flags have to do with this @zmzlois, we do not support nor have plans to move feature flags to module federation at deployment level.

i think i am referring to "Do things like feature flag without feature flag SDK"

Imagine a normal scenario how user use feature flag:

  • If the user haven't signed in, show them discount widget
  • If the user signed in for the first time, discount widget tell them they have the discount code and it will auto-apply when they check out
  • If the user bought a shirt last time, recommend them skirts, jeans and accessories to pair with the shirt, and vice versa

But on zephyr all of these components can be federated applications:
The discount widget is just a custom environment and they control which version or tags they want to rollback to and promote

The condition is these (they must be completed):

@mariod3005
Copy link

Image

Just a sketch I used to help me understand

this is AWESOME. thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants