Sunday, 20 January 2013

Resilience, responsive design and vertical integration

Jason Grigsby had an excellent post recently on responsive design for mobile apps. In short he says that one always need to design in a responsive way, because the lines between screen sizes, input models and form factors are so blurry that, in fact, it's impossible to know how the user expects your app to work.

I like to put this in context with mixed model mobile apps (Frameworks like Calatrava) and the new trend infrastructure trend of "vertical integration", i.e. expand cell architectures into the hardware domain.

BlackBerry 10 is a new type of platform which is streamlined (managing user experience) and open at the same time. It allows polyglot programming, hence not only mixed model apps but a cross-tier, cross-device integration of components. You could have a database model in Java, covering almost all platforms. A UI which is responsivly designed for each platform, and business logic which is in a DSL. The latter is most imporant because, with vertical integration, it could be aware of the consistency models offered by the backend. Independent of data storage, the business layer could offer several consistency models. If one or the other model is favoured, only this kind of hardware could be scaled. Just like with Facebook's photo storage, all parameters can be negotiated by both server and client. Which will eventually lead to emergent and resilient systems which will be able to run for longer than most platforms.

These cross-device, cross-tier software systems work like swars. The benevolent dictator nudges the swarm, bringing in new systems, monitoring both user experience and infrastructure efficiency. Now the question would be - how to control? Agile software development aims toward one product, this is clearly not  enough. So how would be build, distribute and manage these kind of systems? How would we manage the API's to connect them, the directories to find the services and the resilience to learn from our mistakes?