A pattern documents a recurring problem-solution pairing within a given context. While selecting an architecture pattern for your application, you should be aware of the context of your application. A pattern that solves the messaging challenges of Facebook might not be a good fit for an application that caters to a small number of users. You need to resolve the applicability of a pattern by matching your problem with the associated scenario of the design pattern.