Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Agile Architecture BITKOM Software Summit 2013

Avatar for Adam Boczek Adam Boczek
February 05, 2014

Agile Architecture BITKOM Software Summit 2013

Talk about concepts of Agile Architecture done at BITKOM Software Summit 2013 in Frankfurt am Main, Germany. It focuses on the JavaScript stack with AngularJS, Express, Node.js and MongoDB an the influence of it on the way we think about software architecture.

Avatar for Adam Boczek

Adam Boczek

February 05, 2014
Tweet

Other Decks in Technology

Transcript

  1. Adam Boczek Agile Coach | Enterprise Architect xing.com/profiles/Adam_Boczek @nativeagile [email protected]

    http://codecentric.de @codecentric https://www.xing.com/net/pri1f221ex/agilearchitecture
  2. ARCHITECTUREREPRESENTS THE FUNDAMENTALORGANIZATION OF A SYSTEM EMBODIED IN ITS COMPONENTS,

    THEIR RELATIONSHIPS TO EACH OTHER, AND TO THE ENVIRONMENT AND THE PRINCIPLES GUIDING ITS DESIGN AND EVOLUTION. (IEEE1471 2007)
  3. ARCHITECTUREREPRESENTS THE SIGNIFICANT DESIGN DECISIONS THAT SHAPE A SYSTEM, WHERE

    SIGNIFICANT IS MEASURED BY COST OF CHANGE. (BOOCH 2006)
  4. CLEAN ARCHITECTURE AND DIP* Enterprise Business Rules Application Business Rules

    Interface Adapters Frameworks & Drivers Controllers Ext. Interfaces Processes Entities * Robert C. Martin (Uncle Bob), Dependency inversion principle AGILE ARCHITECTURE IS BUSINESS-CENTRIC
  5. DOMAIN DRIVEN DESIGN* AGILE ARCHITECTURE IS BUSINESS-CENTRIC Problem Space (Business)

    Solution Space (IT) * http://domainlanguage.com/ddd/ Agile Architecture Ubiquitous Language Core and sub domains Bounded contexts Entities and value objects Aggregates Factories and repositories Services and modules Domain Events Context Mapping
  6. AGILE ARCHITECTURE IS SIMPLE-AS-POSSIBLE * http://simplearchitectures.blogspot.de/2011/10/sip-complexity-model.html controlling complexity Through Partitioning

    & Reduction Subclasses of a partition should be constructed with the synergistic equivalence relation. Complexity Number Of the System States dice are homomorphic representatives of variables in software systems and paths in business processes.
  7. EVENT SOURCING & BIG DATA CAPTURE ALL CHANGES TO AN

    APPLICATION STATE AS A SEQUENCE OF EVENTS* * http://martinfowler.com/eaaDev/EventSourcing.html Event Source T1 | State 1 Event Source T2 | State 2 Event Source T3 | State 3 BIG Data Repository Event T1 | State 1 Event T2 | State 2 Event T3 | State 3 AGILE ARCHITECTURE IS EVENT-DATA-DRIVEN
  8. PURE LAYERING AGILE ARCHITECTURE IS SINGLE-RESPONSIBILITY-BASED * MV* = MVP,

    MVC or MVVM DOES ALL THE CLIENT JOB, MV* Presentation Layer Business Layer Persistence Layer DOES ALL THE BUSINESS JOB DOES ALL THE DB JOB No business stuff No business stuff No Presentation stuff
  9. CLEAN HYBRID ARCHITECTURE Ext. Interfaces Entities Controllers Use Cases Entities

    Controllers Use Cases Entities Controllers Use Cases Active Record Command Query Responsibility Segregation Domain Driven Design AGILE ARCHITECTURE IS SINGLE-RESPONSIBILITY-BASED
  10. JAVASCRIPT ONE LANGUAGE FITS ALL* JavaScript is a prototype-based scripting

    language with dynamic typing and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles. Coding Testing Operating * http://en.wikipedia.org/wiki/JavaScript AGILE ARCHITECTURE IS MULTI-PARADIGM
  11. JSON ONE FORMAT FITS ALL* AGILE ARCHITECTURE IS MULTI-PARADIGM JSON

    or JavaScript Object Notation, is a text-based open standarddesigned for human-readable data interchange. Derived from the JavaScript scripting language, JSON is a language for representing simple data structures and associative arrays, called objects. Calling Persisting Transforming * http://en.wikipedia.org/wiki/JSON
  12. MEAN STACK (JAVASCRIPT & JSON) NodeJSis an event-driven I/O server-side

    JavaScript environment based on Google’s V8 engine. ExpressJS is a node.js web application framework. MongoDB is A superb No-SQL database. AngularJS is framework to create one-page dynamic apps. AGILE ARCHITECTURE IS MULTI-PARADIGM
  13. * MV* = MVP, MVC or MVVM DOES ALL THE

    CLIENT JOB, MV* ANGULARJS Presentation Layer Business Layer Persistence Layer DOES ALL THE BUSINESS JOB NODEJS, EXPRESSJS DOES ALL THE DB JOB MONGODB No business stuff No business stuff No Presentation stuff MEAN STACK (JAVASCRIPT & JSON) IN ACTION
  14. HATEOAS/REST AGILE ARCHITECTURE SUPPORTS SELF-DIRECTING Consumer IS Directing* Producer/ Backend

    var response = producer.foo(); if (response.status == X) { producer.foo1(); } else { producer.foo2(); }; Consumer/ Client Hypermedia as the Engine of Application State Representational state transfer RPC API Producer is directing* var response = producer.foo(); // next_foo() is foo1() or foo2() // producer decides what is right response.next_foo(); Consumer/ Client Producer/ Backend Rest HATEOAS * Pseudo-source-code for demonstration purposes only
  15. AGILE ARCHITECTURE SUPPORTS SELF-HEALING The microcapsules release a healing agent

    when the material is damaged* * http://www.bbc.co.uk/news/science-environment-19781862 SELF-HEALING MATERIALS SOFTWARE ERROR DETECTION AND SOFTWARE HEALING AGENTS MEAN SELF-HEALING SOFTWARE SYSTEMS
  16. THE BEHAVIOR OF A SYSTEM THAT FOLLOWS AGILE ARCHITECTURE CAN

    BE CALLED ARCHITECTURAL INTELLIGENCE ABILITY OF THE SYSTEM TO DIRECT, OPTIMIZE, AND HEAL ITSELF