When we design a software architecture, there are lots of strategies can enhance performance, optimize cost, and simplify its effort to implement/operate the system.
An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are similar to software design patterns but have a broader scope.
- Client-Server architectural pattern - very common architecture for world wide web service
- Layered architectural pattern - very common in J2EE application
- Master-Slave architectural pattern - useful for disaster recovery solutions
- Pipe-filter architectural patterns - useful approach for analytics based on daisy chain
- Broker architectural pattern - usually used in Message Middlewares like Apache ActiveMQ, Apache Kafka, RabbitMQ
- Peer-to-peer architectural pattern - usually used in file sharing like BitTorrent or multimedia protocols like P2PTV or PDTP
- Event-bus archiectural pattern - used in Android app development and Push Notification Service
- MVC(Model-view-controller) architectural pattern - used in web application development like Django and Rails
- Blackboard architectural pattern - used in NLU(Natural Language Understanding) and car recognition
- Interpreter architectural pattern - used in database query language such as SQL
- Microservice architectural pattern aka MSA - one of the trends of service architecture in 2018-
- Active-Active / Active-Stand-by Architectural Pattern