Rails in the Large: How Agility Allows Us to Build One Of the World's Biggest Rails Apps
Neal Ford shows what ThoughtWorks learned from scaling Rails development: infrastructure, testing, messaging, optimization, performance.
Tracking change and innovation in the enterprise software development community
Presented by Martin Fowler and Rebecca Parsons on Jun 25, 2009
Agile Development: A Manager's Roadmap for Success
VersionOne is recognized by Agile practitioners as the leader in Agile project management tools. Companies such as Adobe, BBC, CNN, Dow, HP, IBM, Sony and 3M have turned to VersionOne to help deliver greater value to their customers.
Condescension flows both ways. The notion that agilists are the guerillas, outnumbered in their fight for the one true vision, is just as harmful as the idea of pre-planned and regimented architectures handed down from on high.
I've been doing software architecture work for quite some time. Both with and without OutSystems platform, and in the recent year adopting agile methodologies.
What I seem to find out is that Agile goes hand in hand with large and distributed systems architecture. By nature these systems already change a lot. We've been trying to reach patterns since the beggining of ages that allow for easy maintenance, no (or low) impact on performance, and most of all, accelerated development. This requires design both at a high level as well as a low level.
Yes, we're agile. However, we cannot drop the high level design up front. We need to have a (not very clear) vision of what we are going to need. And agile copes with that. I found out, when moving to OutSystems, that you are provided with the most relevant patterns from scratch. The very nature of the platform extension mechanisms won't let you easily fail. It also provides you a kind of Domain Specific Language approach from the beggining, that will force you to create (and all developers to follow) well defined guidelines. All the assynchronous design patterns are also easily mapped to the patform potentials in timers. When coping with external systems or a corporate company architecture definition there's not much to trouble us as well. We're either at SOA (which OutSystems fits like a ring) or some other kind of integration pattern, for which you know you'll have an integration layer only for transforming/transporting/auditing/etc., that will be either implemented out of the box, or via a simple extension. All this facilities reduces the effort in defining the high level architecture, assuming you're confortable with the usual design patterns. This way you don't have to go very deep on the initial architecture definition. Just focus on business components/modules decoupling.
I am now in a software factory with a very large architecture basis. The only thing required is that, whenever a new requirement appears, you do an overall architecture impact analysis. If you have the above topics considered, you end up in having a new component. If the business requirement changes (and you'll adopt it "immediately" because you are an agilist), it will probably fit in its own business component, or have relatively low impact on the surroundings.
What about when there's a requirement that reaches all levels? If you've decoupling from the start the Core entities (business domain core - the ones you usually specify the DSL for) from the business components/processes on top of them and also from the integration layers, there's no big issue. You'll probably end up in refactoring some core processes to decouple even more, so that the new requirement fits in an isolated way.
This proved me that agile will make you good architectural choices. And if you know from the start you're going agile, the architecture will come out much stronger and maintainable, just because of the fact that you're thinking, from the beggining of ages it will be ment to change.
Kind regards,
Gonçalo Borrêga
OutSystems Solution Delivery team
www.outsystems.com
Neal Ford shows what ThoughtWorks learned from scaling Rails development: infrastructure, testing, messaging, optimization, performance.
Stuart Halloway discusses Clojure and functional programing on the JVM in depth, and touches on the uses of a number of other modern JVM languages including JRuby, Groovy, Scala and Haskell.
Orion Henry and Blake Mizerany talk about the technology behind Heroku and the benefits of the new add-on system.
Chris Riley presents security issues threatening service based systems, examining security threats, presenting measures to reduce the risks, and mentioning available security frameworks.
This talk investigates technical issues encountered when moving to an Agile process.
Don Box and Amanda Laucher present “M”, a declarative language for building data models, domain models or external DSLs. Don Box's demos show some of M’s features and latest changes of the language.
It is four months since the SOA manifesto was announced; InfoQ interviewed the original author’s to get insight into the motivations and the process behind the initiative.
This article explains the impact memory barriers, or fences, have on the determinism of multi-threaded programs.
2 comments
Watch Thread Reply