https://aadarch.com/blog/architecture-styles