Conclusion
In this lab you learned to use all available methods to upgrade Smart Contracts. From an audit perspective, itās always better to use a simpler method. I am personally a big fan of KISS (keep it simple stupid), although it sometimes means that it doesnāt look elegant.
I think the Diamond Storage is a very interesting way to ādeconstructā a Smart Contract into smaller parts and plug them back together in a Proxy contract. At this point I would not choose the architecture, because it adds a new layer of complexity to an ecosystem that often manages large amounts of money.
Knowing whatās happening under the hood, if Iād start a new larger project from scratch, Iād use OpenZepplin Pluginsā now, if upgradeability is necessary to keep an address constant.
If I donāt need a constant address, Iād probably go with either the Eternal Storage pattern or something even simpler. Itās easier to audit, easier to grasp, and less error prone.
I hope this lab helped you to choose the right pattern for your project.