Skip to content
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

Add non-functional application requirements #962

Merged
merged 2 commits into from
Sep 25, 2024

Conversation

cristiklein
Copy link
Collaborator

@cristiklein cristiklein commented Sep 11, 2024

⚠️ IMPORTANT ⚠️: This is a public repository. Make sure to not disclose:

  • personal data beyond what is necessary for interacting with this Pull Request;
  • business confidential information, such as customer names.

Quality gates:

  • I'm aware of the Contributor Guide and did my best to follow the guidelines.
  • I'm aware of the Glossary and did my best to use those terms.

Screenshot below:

127 0 0 1_8000_user-guide_prepare-application_

@cristiklein cristiklein self-assigned this Sep 11, 2024
@cristiklein cristiklein requested a review from a team as a code owner September 11, 2024 12:08
@llarsson
Copy link
Contributor

llarsson commented Sep 11, 2024

I am not sure about this.

All make sense. Some make great sense within certain contexts. Not all are truly requirements of Compliant Kubernetes.

For the first such point, R1.2 REQUIRES versioned APIs. This makes great sense in all contexts, but is not truly a requirement of Compliant Kubernetes, in the same sense that "the software must be packaged in the OCI container format" is.

I see the idea and appreciate the effort, but I think that this table ought to stick to what is truly required for Compliant Kubernetes.

@cristiklein
Copy link
Collaborator Author

I am not sure about this.

All make sense. Some make great sense within certain contexts. Not all are truly requirements of Compliant Kubernetes.

For the first such point, R1.2 REQUIRES versioned APIs. This makes great sense in all contexts, but is not truly a requirement of Compliant Kubernetes, in the same sense that "the software must be packaged in the OCI container format" is.

I see the idea and appreciate the effort, but I think that this table ought to stick to what is truly required for Compliant Kubernetes.

This sounds like the beginning of a very useful debate. I really appreciate it.

I see what you mean, but let me challenge it a bit. 😄 I'd like this list not to be "minimum requirements" for Compliant Kubernetes, but all things you should consider in order to draw the greatest benefit from Compliant Kubernetes. Don't like a requirements, no problem: Just make sure to fill the "justification for exclusion" column.

Zooming in on R1.2 REQUIRES versioned APIs: I agree that this requirement is way above the "minimum requirement" threshold. However, in order to take advantage of Kubernetes's rolling update Deployment strategy, wouldn't the application need to be loosely coupled via versioned API? So, although I might have been leaning towards the more generous side, I expect each requirement to make the application benefit more from the platform, directly or indirectly.

I see a few options on how to move forward:

  1. We focus on "minimum requirements".
    • Good, because we will converge on these a lot easier.
    • Bad, because these already feel covered towards the top of the page, hence this table would add little value.
  2. We keep it as-is and add a sentence clarifying that the list of requirements is merely an example which needs to be adjusted for each context.
    • Good, because the list becomes both "strong" and flexible.
    • Bad, because it will be hard for us to converge on these.
  3. We convert the list from "requirements" to "considerations".
    • Good, because we will converge on these rather fast.
    • Bad, because I really like "requirement" more than "consideration". The former demands a justification for exclusion, whereas the latter may easily be discarded as spam. 😄

I'd prefer 2. What do you think?

@llarsson
Copy link
Contributor

As in many of these cases, I agree with you technically (and indeed, you wrote why I am a big proponent of versioned APIs myself), but I don't want to make anyone think that Compliant Kubernetes itself cannot be used unless you fulfill all of these requirements. Because they aren't truly "Compliant Kubernetes" requirements, they are more like "good software practices that you learn the hard way" lessons.

Compliant Kubernetes requirements are such things as Linux containers, since we don't support Windows or non-containerized workloads. But there's no safeguard or other prevention from running software that doesn't version APIs or carry out asynchronous maintenance tasks inside of a Pod instead of a Kubernetes Job -- there just isn't.

So in my mind, it's probably also Option 2, but with the possibility for us to perhaps add a note or two about why something is a very good idea (even if not a hard and firm requirement)? 🤔

@cristiklein cristiklein requested a review from a team as a code owner September 23, 2024 08:52
@cristiklein
Copy link
Collaborator Author

@llarsson I think this is ready for another review. See updated screenshot in the description.

Copy link
Contributor

@Elias-elastisys Elias-elastisys left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

Copy link
Contributor

@llarsson llarsson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like it! :) Well done with the explanations and such as well, it does a lot to add context and understanding, and therefore also adds tons of value.

@cristiklein cristiklein merged commit 0558a22 into main Sep 25, 2024
1 check passed
@cristiklein cristiklein deleted the add-application-requirements branch September 25, 2024 07:54
@cristiklein
Copy link
Collaborator Author

@llarsson Thanks for the feedback!

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

Successfully merging this pull request may close these issues.

3 participants