Agile Architecture & Design



Similar documents
Continuous Delivery Workshop

Delivery. Continuous. Jez Humble and David Farley. AAddison-Wesley. Upper Saddle River, NJ Boston Indianapolis San Francisco

An Introduction to Extreme Programming

The Phios Whole Product Solution Methodology

Continuous Delivery. Jez Humble, ThoughtWorks #continuousdelivery DevOpsDays, Hamburg

Deep Agile Blending Scrum and Extreme Programming. Jeff Sutherland Ron Jeffries

Agile Testing and Extreme Programming

Moderator: Albert Jeffrey Moore, ASA, MAAA. Presenters: Albert Jeffrey Moore, ASA, MAAA Kelly J. Rabin, FSA, MAAA Steven L. Stockman, ASA, MAAA

Agile with XP and Scrum

Comparing Servicebased nealford.com

Finally, an agile test strategy (that works)! AS OW Test Model, Objectware

Kevin Lee Technical Consultant As part of a normal software build and release process

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Agile Projects 7. Agile Project Management 21

White paper: Delivering Business Value with Apache Mesos

RUP and XP, Part I: Finding Common Ground

Continuous Integration: Put it at the heart of your development

In an ERP implementation how the entire organization works changes forever

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

Basic Trends of Modern Software Development

PLATFORM-AS-A-SERVICE, DEVOPS, AND APPLICATION INTEGRATION. An introduction to delivering applications faster

Business Discovery, la nuova frontiera della BI. Arianna Antico, QlikView Italy - Partner Sales Manager June, 2013

Continuous Delivery Software-Deployments ohne graue Haare. 3. April 2012 Corsin Decurtins

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

Continuous Delivery. Anatomy of the Deployment Pipeline (Free Chapter) by Jez Humble and David Farley

Xtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda

Iteration Planning. also called Iteration Kickoff

Web Application Development Process

Agile Project Management and the Real World. Emily Lynema DLF Fall 2010 November 1, 2010

CORPORATE INFORMATION AND TECHNOLOGY STRATEGY

Software Configuration Management Best Practices

Building Heavy Load Messaging System

ENTERPRISE ARCHITECTUE OFFICE

API Architecture. for the Data Interoperability at OSU initiative

Juniper Networks QFabric: Scaling for the Modern Data Center

Building the EDM Roadmap An Innovation Platform for New Product Development & Regulatory Compliance. Mark Cowan mark@cowaninc.

10 Tips to Better Manage Your Service Team

18/09/2015. DevOps. Prof. Filippo Lanubile. Outline. Definitions Collaboration in DevOps Automation in DevOps. Prof.

The Tools For Continuous Delivery

Introduction to Agile Software Development Process. Software Development Life Cycles

INTRODUCING CONTINUOUS DELIVERY IN THE ENTERPRISE

Business Process Management The Must Have Enterprise Solution for the New Century

WHITEPAPER. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Principle #1, Agile Manifesto

SmartBear Software Pragmatic Agile Development (PAD) Conceptual Framework

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

Software Construction

Software Defined Storage Networks An Introduction

Reaching for the cloud: the potential and the reality of using cloud-based platforms. Speaker: Michael Michaelides October 22, 2015

Essential Elements of an IoT Core Platform

Increasing frequency of releases to every week down from quarterly major releases

Agile Notetaker & Scrum Reference. Designed by Axosoft, the creators of OnTime the #1 selling scrum software.

Agile Testing. What Students Learn

What is Application Lifecycle Management? At lower costs Get a 30% return on investment guaranteed and save 15% on development costs

Introduction to extreme Programming (XP)

DevOps for the Mainframe

Rapid Game Development Using Cocos2D-JS

Quality Assurance Software Development Processes

Continuous Delivery: implementation considerations. Léon Hagenaars-Keus Edwin van Dillen

Agile Project Management

Optimally Manage the Data Center Using Systems Management Tools from Cisco and Microsoft

DevOps Best Practices for Mobile Apps. Sanjeev Sharma IBM Software Group

Case Study: Using Jenkins to Build WebSphere Portal Applications for the Enterprise. #jenkinsconf. Jenkins User Conference Boston #jenkinsconf

Integrating Team Foundation Server, Microsoft Test Manager and Coded UI Tests

Continuous Delivery and Test Automation in Agile SW projects with Robot Framework Antti Pohjonen

The Deployment Pipeline

Why continuous delivery needs devops, and why devops needs infrastructure-as-code. Sriram 25-Oct-2012

Surviving the Big Rewrite: Moving YELLOWPAGES.COM to Rails. John Straw YELLOWPAGES.COM

Continuous???? Copyright 2015 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Modern practices TIE-21100/

Service Quality Management The next logical step by James Lochran

XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories

Microservices on AWS

Simplify IT. With Cisco Application Centric Infrastructure. Roberto Barrera VERSION May, 2015

Best Practices in Release and Deployment Management

Wilhelmenia Ravenell IT Manager Eli Lilly and Company

Agile Requirements And Testing For Continuous Software Delivery

Agile Techniques for Object Databases

Digital Messaging Platform. Digital Messaging Platform. AgilityHarmony. Orchestrate more meaningful relationships between you and your customers

Achieving Business Agility Through An Agile Data Center

Business-Driven Software Engineering Lecture 3 Foundations of Processes

TRANSFORM THE DATA CENTER E-GUIDE

7 Ways To Explode Your Profits as a Tint Professional and Change your Life Forever!

White Paper. Executive Guide to Business Process Management (BPM) and Integration with ERP

Seven Steps to Maximizing Central Plant Efficiency

Creating Business Value with Mature QA Practices

Automation and the DevOps Workflow

Software Continuous Integration & Delivery

E-vote 2011 Version: 1.0 Testing and Approval Date: 26/10/2009. E-vote SSA-U Appendix 5 Testing and Approval Project: E-vote 2011

D25-2. Agile and Scrum Introduction

Transcription:

Agile Architecture & Design 1

There are known unknowns. That is to say there are things that we now know we don't know. But there are also unknown unknowns. There are things we do not know we don't know. 2

There are things we do not know we don't know. unknown unknowns 3

focus on proven practices the future is hard to predict! 4

traditional vs agile architecture 5

traditional role 6

agile role 7

consequences of < time up front good feel for current events hands-on ability to switch from micro <=> macro often & easily fewer boat anchors 8

Agile Architecture & Design 9

Rising or emerging out of anything that covers or conceals; issuing; coming to light. [1913 Webster] Emergent Design Suddenly appearing; arising unexpectedly; calling for prompt action; urgent. [1913 Webster] 10

finding abstractions & patterns 11

finding abstractions & patterns last responsible moment 12

last responsible moment the longer the delay => more relevant data for decision 13

finding abstractions & patterns last responsible moment 14

emergent design 15

finding & harvesting idiomatic patterns 16

finding & harvesting idiomatic patterns 17

finding & harvesting idiomatic patterns see the composed method pattern Smalltalk Best Practice Patterns Kent Beck 18

harvesting idiomatic patterns 19

cyclomatic complexity measures the complexity of a method/function V(G)= e - n + 2 V(G) = cyclomatic complexity of G e= # edges n= # of nodes 20

cyclomatic complexity 21

coupling afferent efferent x i t code artifact 22

http://struts.apache.org/ 23

UIBean evaluateparams() 24

evaluate.*params? find. -name "*.java" xargs grep -l "void evaluate.*params"./org/apache/struts2/components/abstractremotecalluibean.java./org/apache/struts2/components/anchor.java./org/apache/struts2/components/autocompleter.java./org/apache/struts2/components/checkbox.java./org/apache/struts2/components/combobox.java./org/apache/struts2/components/datetimepicker.java./org/apache/struts2/components/div.java./org/apache/struts2/components/doublelistuibean.java./org/apache/struts2/components/doubleselect.java./org/apache/struts2/components/file.java./org/apache/struts2/components/form.java./org/apache/struts2/components/formbutton.java./org/apache/struts2/components/head.java./org/apache/struts2/components/inputtransferselect.java./org/apache/struts2/components/label.java./org/apache/struts2/components/listuibean.java./org/apache/struts2/components/optiontransferselect.java./org/apache/struts2/components/password.java./org/apache/struts2/components/reset.java./org/apache/struts2/components/select.java./org/apache/struts2/components/submit.java./org/apache/struts2/components/tabbedpanel.java./org/apache/struts2/components/table/webtable.java./org/apache/struts2/components/textarea.java./org/apache/struts2/components/textfield.java./org/apache/struts2/components/token.java./org/apache/struts2/components/tree.java./org/apache/struts2/components/uibean.java./org/apache/struts2/components/updownselect.java 25

harvest build frameworks 26

agile architecture 27

yesterday s best practice is tomorrow s anti-pattern 28

complect to interweave or entwine from Latin complectī http://www.infoq.com/presentations/simple-made-easy 29

30

CRUD images by Martin Fowler: martinfowler.com/bliki/cqrs.html 31

CQRS Command-Query Responsibility Segregation http://codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/ 32

33

Continuous Delivery 34

continuous integration everyone commits to trunk at least once a day deployment deploy as the last stage of continuous integration delivery software is always in a deployable state 35

agile 101 + continuous delivery always production ready business needs > operational concerns 36

continuous integration Fast, automated feedback on the correctness of your application every time there is a change to code 37

continuous delivery Fast, automated feedback on the production readiness of your application every time there is a change to code, infrastructure, or configuration 38

deployment pipelines 39

commit stage run against every check-in mimics continuous integration builds down-stream artifacts if it fails, fix it immediately 40

milestone (acceptance phase) end-to-end tests in a production-like environment triggered by upstream success all downstream tests will create their environments 41

42

component pipeline 43

pipelining libraries 44

45

functional reactive programming 46

Java 8 & Streams iterate filter transform 47

Java 8 & Streams 48

49

micro-services 50

monoliths vs. micro-services 51

organized logic everywhere logic everywhere around business capabilities logic everywhere 52

organized around business capabilities 53

products, not projects you build it, you run it! 54

decentralized data management 55

decentralized governance 56

infrastructure automation 57

design for failure clients must respond gracefully to provider failure aggressive monitoring: business relevant architectural semantic 58

small, single responsibility small enough to fit in your head! don t maintain rewrite! 59

containerless, Unix services embedded web container (Jetty / SimpleWeb) packaged as an executable installed the same way as httpd & similar 60

James Lewis tells the story of building a resource oriented, event driven system out of applications about 1000 lines long. http://www.infoq.com/presentations/micro-services 61

holistic engineering don t over-optimize around a particular tool or practice and harm your overall engineering efficiency 62

everything interconnects cannot separate process from architecture tools offer a primrose path awesome while you re on the path awful when you need to step off 63

http://kent.spillner.org/blog/ work/2009/11/14/java-build-tools.html Maven builds are an infinite cycle of despair that will slowly drag you into the deepest, darkest pits of hell (where Maven itself was forged). 64

composable Rake Gant contextual PowerShell less implicit behavior better building blocks greater eventual power less initial power more flexibility languages frameworks more out of the box better contextual intelligence less flexibility less ability to evolve 65

Dietzler s Law what the user wants Users always want 100% of what they want. 66

how do you choose?!? 67

generic opinionated start with the easiest rigid dogmatic 68

never wonderful again 69

cut & run! 70

malleability malleable, n. - able to be hammered or pressed permanently out of shape without breaking or cracking. capable of being altered or controlled by outside forces emphasize malleability always tends towards less µ 71

annealing refactoring and restructuring exercises require increasing effort for the same result plan escalating effort towards remedial architecture & design tradeoff for reduced up-front effort anneal, n. - heat (metal or glass) and allow to cool slowly, in order to remove internal stresses and toughen it greenfield projects => emphasize malleability brownfield projects => maximize annealing efforts 72

prefer pro/reactive to predictive 73

remove friction 74

simplify, un-tangle 75

evolve 76

deliver! 77

Thank you Enjoy the conference! Agile Architecture & Design 78