Skip to content

Latest commit

 

History

History
59 lines (59 loc) · 18.4 KB

pattern-ideas.md

File metadata and controls

59 lines (59 loc) · 18.4 KB
Name status Summary Category Tags Related Patterns Alternative name Context Forces Problem Solution(s) Pattern-Examples Examples Contributors source
Architecture By Implication This AntiPattern is characterized by the lack of architecture specifications for a system under development. Usually, the architects responsible for the project have experience with previous system construction, and therefore assume that documentation is unnecessary. https://sourcemaking.com/antipatterns/architecture-by-implication
Autogenerated Stovepipe This AntiPattern occurs when migrating an existing software system to a distributed infrastructure. An Autogenerated Stovepipe arises when converting the existing software interfaces to distributed interfaces. If the same design is used for distributed computing, a number of problems emerge. https://sourcemaking.com/antipatterns/autogenerated-stovepipe
Backend Fixation Considering the frontend a less important detail, putting too much emphasis on the backend part of a system behavior Micro
Big Ball of Mud A big ball of mud is a software system that lacks a perceivable architecture. structure Under-Modularization Jumble http://laputan.org/mud/
Calls in Series Just as bulbs in the old serially wired Christmas Tree lights would cause an entire string to fail, so does any service failure cause the entire call stream to fail. Christmas Tree Light Anti-Pattern, Microservice Calls in Series Anti-Pattern https://akfpartners.com/growth-blog/microservice-anti-pattern-calls-in-series-the-xmas-tree-light-anti-pattern
Conference driven development Your developers come back from a conference and have learned about many new cool tools or ways to do things. Now they need to try them in their daily project, regardless if they benefit the project or not.
Cover Your Assets Document-driven software processes often produce less-than-useful requirements and specifications because the authors evade making important decisions. In order to avoid making a mistake, the authors take a safer course and elaborate upon alternatives. The resulting documents are voluminous and become an enigma; there is no useful abstraction of the contents that convey the authors' intent. Unfortunate readers, who may have contractual obligations dependent upon the text, must pore through the mind-numbing details. https://sourcemaking.com/antipatterns/cover-your-assets
Data Fan Out Data Fan Out, the topic of this microservice anti-pattern, exists when a service relies on two or more persistence engines with categorically unique data, or categorically similar data that is not meant to be processed in parallel. “Categorically Unique” means that the data is in no way related. https://akfpartners.com/growth-blog/microservice-anti-pattern-data-fan-out
Data Fuse The Data Fuse, the topic of this microservice anti-pattern, exists when two or more unique services share a commonly deployed data store. This data store can be any persistence solution from physical file services, to a common storage area network, to relational (ACID) or NoSQL (BASE) databases. When the shared data solution “C” fails, service A and B fail as well. Similarly, when data solution “C” becomes slow, slowness under high demand propagates to services A and B. https://akfpartners.com/growth-blog/microservice-anti-pattern-data-fuse
Decoupling Illusion Functional changes required by different stakeholders require changes to overlapping services structure https://speakerdeck.com/stilkov/microservices-patterns-and-antipatterns
Design By Committee A complex software design is the product of a committee process. It has so many features and variations that it is infeasible for any group of developers to realize the specifications in a reasonable time frame. Gold Plating, Standards Disease, Make Everybody Happy, Political Party https://sourcemaking.com/antipatterns/design-by-committee
Distributed Monolith System made up of arbitrarily sized, tightly coupled modules communicating over network interfaces structure Over-Modularization Microservices Gone Bad https://speakerdeck.com/stilkov/microservices-patterns-and-antipatterns
Domain-last Approach Major driver for organizational structure is roles and technical capabilities, not business domain https://speakerdeck.com/stilkov/microservices-patterns-and-antipatterns
Entity Service Services boundaries are chosen to encapsulate “wide” business entities https://speakerdeck.com/stilkov/microservices-patterns-and-antipatterns
Frontend Monolith Anemic services joined by a monolithic frontend application that contains most of the business logic https://speakerdeck.com/stilkov/microservices-patterns-and-antipatterns
Golf Course Peer Pressure Introducing solutions because they are part of something that has been successfully applied at a competitor or business partner behavior Micro,Macro,Domain Cargo-Culting
Grand Old Duke of York Programming skill does not equate to skill in defining abstractions. There appear to be two distinct groups involved in software development: abstractionists and their counterparts (whom we call implementationists) Abstractionists are comfortable discussing software design concepts without delving into implementation details. https://sourcemaking.com/antipatterns/the-grand-old-duke-of-york
Gravitational Feature Pull Wrongly assuming responsibilities because the responsible party won’t, or because it’s easier to just add here than where it makes sense wrong-end fixation (in Anlehnung an Backend Fixation)
Innovation Addiction Trying to add too many new things and ignoring the value of mature approaches behavior Micro,Macro
Jumble When horizontal and vertical design elements are intermixed, an unstable architecture results. Vertical design elements are dependent upon the individual application and specific software implementations. Horizontal design elements are those that are common across applications and specific implementations. https://sourcemaking.com/antipatterns/jumble
Micro Platform Standardization of service-internal runtime aspects https://speakerdeck.com/stilkov/microservices-patterns-and-antipatterns
Network Ignorance Treating the existence of a network between components as an implementation detail, yielding an error-prone solution with bad performance behavior Micro,Macro
Over-Isolation Creating pseudo-independent building blocks that have to interact constantly, creating unneeded and useless overhead Micro,Macro Over-Modularization
Pattern Mis-Transfer Applying useful patterns or architectural styles to a context where there not usefully applicable Micro,Macro Knowledge Tunnelling
Reinvent The Wheel Custom software systems are built from the ground up, even though several systems with overlapping functionality exist. The software process assumes "greenfield" (build from scratch) development of a single system. Because top-down analysis and design lead to new architectures and custom software, software reuse is limited and interoperability is accommodated after the fact. https://sourcemaking.com/antipatterns/reinvent-the-wheel
Service Fan Out Fan Out, the topic of this microservice anti-pattern, exists when one service either serves as a proxy to two or more downstream services, or serves as an integration of two subsequent service calls. Any of the services (the proxy/integration service “A”, or constituent services “B” and “C”) can cause a failure of all services. When service A fails, service B and C clearly can’t be called. If either service B or C fails or becomes slow, they can affect service A by tying up communication ports. Ultimately, under high call volume, service A may become unavailable due to problems with either B or C. https://akfpartners.com/growth-blog/microservice-anti-pattern-service-fan-out
Service Fuse The Service Fuse, the topic of this microservice anti-pattern, exists when two or more unique services share a commonly deployed service pool. When the shared service “C” fails, service A and B fail as well. Similarly, when service “C” becomes slow, slowness under high demand propagates to services A and B. https://akfpartners.com/growth-blog/microservice-anti-pattern-service-fuse
Service Mesh Microservice Anti-Pattern: A “Mesh” is any solution that violates repeatedly the anti-patterns of “tree lights”, “fuses” or “fan out” https://akfpartners.com/growth-blog/microservice-anti-pattern-service-mesh
Stovepipe Enterprise Multiple systems within an enterprise are designed independently at every level. Lack of commonality inhibits interoperability between systems, prevents reuse, and drives up cost; in addition, reinvented system architecture and services lack quality structure supporting adaptability. At the lowest level are the standards and guidelines. These work like architectural building codes and zoning laws across enterprise systems. The next level up in the hierarchy is the operating environment , which comprises infrastructure and object services. The top two layers include the value-added functional services and the mission-specific services. By selecting and defining all of these technologies independently, Stovepipe Enterprises "create islands of automation," isolated from the rest of the enterprise. https://sourcemaking.com/antipatterns/stovepipe-enterprise
Stovepipe System The Stovepipe System AntiPattern is the single-system analogy of Stovepipe Enterprise, which involves a lack of coordination and planning across a set of systems. The Stovepipe System AntiPattern addresses how the subsystems are coordinated within a single system. https://sourcemaking.com/antipatterns/stovepipe-system
Swiss Army Knife A Swiss Army Knife, also known as Kitchen Sink, is an excessively complex class interface. The designer attempts to provide for all possible uses of the class. In the attempt, he or she adds a large number of interface signatures in a futile attempt to meet all possible needs. Kitchen Sink https://sourcemaking.com/antipatterns/swiss-army-knife
Uncreative Chaos Having too few rules and guidelines so that everything ends up being different without any positive benefit to it Macro
Unhealthy Ecosystem Affinity Becoming too attached to one particular solution approach so that everything is always solved with its associated tools, methods, and the community supporting it, even when it is not a good match for the problem at hand. behavior Micro,Macro Over-Configurability in eCommerce
Unjustified Re-Use Extremely generic utility functions to reduce logic redundancy https://speakerdeck.com/stilkov/microservices-patterns-and-antipatterns
Vendor Lock-In A software project adopts a product technology and becomes completely dependent upon the vendor's implementation. When upgrades are done, software changes and interoperability problems occur, and continuous maintenance is required to keep the system running. In addition, expected new product features are often delayed, causing schedule slips and an inability to complete desired application software features. Vendor-driven Architecture https://sourcemaking.com/antipatterns/vendor-lock-in
Vendor-driven Architecture Relying too much on a vendor so that every architecture is more like a shopping list behavior Micro,Macro Golf Course Peer Pressure,Vendor Lock-In buzzword compatibility, Vendor Lock In Use every service AWS offers
Warm Bodies Having too many developers in one project. Adding more developers to an ongoing project. Organizational Deadwood, Body Shop, Seat Warmers, Mythical Man-Month https://sourcemaking.com/antipatterns/warm-bodies
Wolf Ticket A Wolf Ticket is a product that claims openness and conformance to standards that have no enforceable meaning. The products are delivered with proprietary interfaces that may vary significantly from the published standard. https://sourcemaking.com/antipatterns/wolf-ticket
Cargo-Culting done Mimicking architectural approaches that have been applied by some role model organization, expecting to achieve similar success behavior Micro,Macro Golf Course Peer Pressure,Pattern Mis-Transfer Conference-driven Architecture "Using a BPMN Tool for everything in the checkout process, because a competitor uses it too" Lisa Maria Moritz,Tobias Erdle
Domain Allergy done Being unwilling to understand the business domain of the problem space, fleeing into technology problems instead behavior Domain "Two huge domain classes represent all legal forms for companies, unions and foundations"
Emotional Misattachment done Falling in love with your own framework/library/tool/method so that you can not let go even when something superior becomes available or is a better match, a.k.a. sunk cost fallacy a.k.a. Concorde effect
behavior Micro,Macro Knowledge Tunnelling The Insurance App Productline for 100+ countries,"Using a BPMN Tool for everything in the checkout process, because a competitor uses it too"
Misapplied Genericity done Building a solution that is so generic that it ends up satisfying no one structure Micro,Macro,Domain Configurability Fallacy Super-generic framework in logistics,The Insurance App Productline for 100+ countries
Never change a running system done behavior
Over-Engineering done Using an architectural approach that is way too complicated for the problem at hand, possibly adding way too many technology choices for their own sake structure Micro,Macro Super-generic framework in logistics,Use CQRS for almost every problem,"Using a BPMN Tool for everything in the checkout process, because a competitor uses it too"
Over-Modularization done Cutting things into too many too small parts structure Domain,Micro Under-Modularization
Under-Modularization done Having too few chunks that are too big structure Domain,Micro Over-Modularization "Two huge domain classes represent all legal forms for companies, unions and foundations"
Anemic Service todo Services designed to solely encapsulate data, with logic left to the caller https://speakerdeck.com/stilkov/microservices-patterns-and-antipatterns
Centralization Bottleneck todo Creating a bottleneck at development time, deployment time or run time by an architectural choice that requires centralized responsibility Organizational Micro,Macro,Domain The Insurance App Productline for 100+ countries,"Using a BPMN Tool for everything in the checkout process, because a competitor uses it too",Life insurance system with ingenious legacy tech stack
Configurability Fallacy todo Assuming making everything configurable is easier than hard-coding things, missing that configuration that is too complicated is programming in disguise Micro,Macro Global eCommerce B2B offering,Over-Configurability in eCommerce Stefan Tilkov,Gernot Starke
Detail Exposure todo Violation the principle of information hiding by exposing private details to the outside world, creating an unnecessarily strong dependency structure Macro "Two huge domain classes represent all legal forms for companies, unions and foundations"
Failing Rigidity todo Creating a set of rigid rules that inhibit development so much developers find ways around them Micro,Macro Life insurance system with ingenious legacy tech stack
Horizontalism todo Architecting the solution so that indivual teams can work on different layers of the application, but no team can deliver actual end user value on its own structure Micro Layerism,Generic Conway Failure The Insurance App Productline for 100+ countries
Knowledge Tunnelling todo Trying to apply an approach or method that is idiomatic in an environment you know well to an environment you are new to, where it is not a good match behavior Micro,Macro Life insurance system with ingenious legacy tech stack
Abstraction Bias will not do Over-abstracting everything into more and more generic abstractions, over-complicating things and yielding no additional value structure Micro,Domain Misapplied Genericity,Layerism Super-generic framework in logistics
Generic Conway Failure will not do Failing to consider the interplay between architecture and organization (communication) structure behavior Domain The Insurance App Productline for 100+ countries,Over-Configurability in eCommerce
Layerism will not do Having too many layers out of an exaggerated need to isolate oneself against dependencies structure Micro