Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this questionI am mainly a business app developer and I hear terms like CQRS, ServiceBus, SOA, DDD, BDD, AOP a lot. My question is that do these patterns/practices exist only in the "enterprise" world? In contrast to the enterprise world is the open source community. Highly trafficked sites like Digg, LiveJournal whenever there is an article mentioning about how they built/scaled their sites all I am hearing is what open source software (Memcached, NoSQL) they used in order to scale/simplify the way they tackle software problems and they rarely mention those above terms. Is it because they are not as sophisticated as those of enterprise level software (I doubt it)? Or are people just making up those terms/practices/patterns in order to keep them jobs? Or am I confusing myself with differences between software development and internet website scaling?
Also I feel that with the increasing number of patterns/architecture/practices whatever I do seems to be wrong because there seems to always be a better/nicer approach if I am willing to invest a bit of time to learn and introduce a bit of complicity. I see myself will end up with endless of refactoring/learning new approaches without doing/producing anything concrete stuffs.
Software is software, design patterns can be applied to any software project whether it's open or closed source, hobby or enterprise level. Some very specific things may only apply or be necessary in certain niche markets, which may be dominated by a closed source vendor that has "invented" some very specific thing.
The main difference though is that keywords sell better.
Architecture is deduced from the requirements. Architectural design patterns differ as much as the requirements differ. Open source and enterprise are independent terms, a software project can be as well open source, enterprise as both or neither.
To my personal experience open source is mostly a bit under engineered, whereby enterprise tends to be way over engineered.
Enterprise Applications and Open Source are not mutually exclusive. EA implies a set of patterns to create robust, scalable applications that can be deployed to massive environments.
I can think of a number of open source projects that follow EA principles.
精彩评论