input-output-hk / Developer-Experience-working-group

23 stars 15 forks source link

Cardano Well-Architected Framework #28

Open scarmuega opened 1 year ago

scarmuega commented 1 year ago

Cloud-development platforms usually provide a "well-architected framework" that describes their view of how to approach the development of complex systems on top of their platforms.

Here are some examples:

In essence, each framework provides a set of best-practices on how to approach different development disciplines, such as: security, reliability, performance-optimization, monitoring, tracing, etc.

Having a "Cardano Well-Architected Framework" in a similar fashion to the mentioned above would serve as useful guidelines for developer teams entering the ecosystem.

Benjmhart commented 1 year ago

100% in favor of something like this.

scarmuega commented 1 year ago

The following is a non-exhaustive list of topics to trigger a discussion regarding the content of what a Well-Architected framework for Cardano might include.

DISCLAIMER: I'm far from being an expert in most of the topics enumerated here. This list is my best-effort trying to extrapolate topics from similar frameworks (mainly cloud providers) to our context. Many topics are probably missing and present ones might require to be reframed.

Reliability

Principles

Best Practices

Security

Principles

Best Practices

Cost Optimization

Principles

Best Practices

Performance

Principles

Best Practices

Benjmhart commented 1 year ago

I'm going to leave some further notes here.

Rollback handling

Yes Please! guidelines on correctly handling a rollback or some assurance that a given indexer will deal with rollbacks automatically would be beneficial.

For me, a well-architected framework would necessarily address issues of Portability & Reproducibility

Though admittedly, Light wallets currently don't support this kind of behavior. Otherwise we are very close.

Benjmhart commented 1 year ago

I would also say that build time and tight feedback loops are key to such a framework.

Benjmhart commented 1 year ago

@scarmuega Are you proposing that we work to build such a framework?

What would our path to success look like?

Lets discuss at the meeting Nov 15

scarmuega commented 1 year ago

@Benjmhart I agree with all of the points mentioned in your previous comments. I'm going to try to paraphrase the background of the ticket as discussed in previous meetings.

Development teams need to make architectural decisions when designing a dApp. Some examples:

... and the list goes on.

Within the context of this issue, framework refers to a set of principles and best-practices, not necessarily tied to any particular source code or binary (other than those used for reference / example), that could help developers answer questions such as the above.

I think that a path to success would entail:

aleeusgr commented 7 months ago

discuss how this work aligns with https://github.com/input-output-hk/cardano-engineering-handbook