321 North Fort Lauderdale Beach Boulevard
Fort Lauderdale, FL 33304
Lead Architect @ Netflix
I consider myself a pragmatic software architect – someone who finds that adaptive design appears in the friction between ideas and implementation, vision and application, or as the Chinese say – “between the Thunder and the Rain”. There are several types of systems, and each of them requires structural design, model design, and process-design. Consequently I use design patterns, TDD, the cloud and Agile methodologies as the means to design, develop and deploy software.
I believe that building software is as much art as it is science and I find that every good idea creates it's own weather and this is what makes software development a continuous process of discovery and fun.
As web applications evolve and the use of widget toolkits proliferate, the problems of designing and building scalable front ends has become more and more involved. Today, a web application is a complex blend of scaffolding, business logic and embedded content – and this can be a challenge (some might say a nightmare), to develop, debug and evolve – even in the best of times.
There are many solutions to this problem. Some folks use the MVC pattern, others use app building tools and many use server-side solutions. The approach being proposed here is based on Domain Driven Design: it consists of a Platform which uses DSLs and a layered architecture to build and deploy web applications. The platform is composed of services that create and maintain the DSLs as well as handle all user requests, layout generation, customization, content authoring, data persistence, B-to-B interactions and native business flows.
By having a DSL which sits above widgets and the DOM, the platform can use widgets to “generate and maintain” the DOM. This provides a far more robust and flexible means for building web applications. Also – DSL based web platforms are far more adaptive and lend themselves more easily to change. In this platform everything is loosely coupled: layout's can be changed, content can be attached or detached, and services can be “plugged-in” as needed. Even the backend web application server with it's data store can be replaced with a users preferred server and it's data store.
This presentation will demonstrate an RIA platform with its UI and service backend, including an example of a B-to-B interaction with Etsy – an ecommerce application. The takeaways from this presentation are:
A Demo of an application being built from the ground up together with it's interaction with a remote business service - Etsy. A Domain Model for a Web Application and it's components. Continuous Application Refactoring. A Layered Architecture for the Front End including: Handlers, Modelers, Builders, Managers, Services, Events.