In the spirit of Voltaire, the French philosopher, I want to launch my first post with this aphorism because it is very much applicable to software architecture design.
A large part of software architecture design is making design decisions to resolve issues so that a solution can be implemented. A completed design may not be perfect, as there will be conflicting requirements that need to be met, and trade-offs made in order to meet them. If the design satisfies all of the requirements, then it is a good one.
This is why software architecture design is an iterative process. Each decision for a design issue may not be optimal for another issue, but the overall solution must be acceptable by satisfying all of the requirements.
Perfect is on the other end of the spectrum because perfect is the ideal, self-sustaining end state.
The follow up to this post will go over the design decisions made to implement this very site you are on as well as how it was integrated into Standard Notes (open-source & encrypted, @SN)/Google Cloud Platform. [GitHub:https://github.com/standardnotes]
"toto does away with web frameworks or DSLs such as sinatra, and is built right on top of rack. There is no database or ORM either, we use plain text files."
"Oh, and everything that can be done with git, is."