Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Fundamentals Workshop
Part 1: From Developer to Architect
Mark Richards
Independent Consultant
Hands-on Enterprise / Integration Architect
Published Author / Conference Speaker
http://www.wmrichards.com
http://www.linkedin.com/pub/mark-richards/0/121/5b9
agenda
nealford.com/katas/
Programmers know
the benefits of
everything and the
tradeoffs of nothing.
http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
software architecture?
Architecture is the highest level
concept of the expert developers.
“In most successful software projects, the expert developers
working on that project have a shared understanding of the
system design. This shared understanding is called
‘architecture.’ This understanding includes how the system is
divided into components and how the components interact
through interfaces. These components are usually
composed of smaller components, but the architecture only
includes the components and interfaces that are understood
by all the developers.”
http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
software architecture?
developers product
owner
Martin Fowler
operations
http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
soft skills
technical skills
sr. developer
developer
jr. developer
intern
social skills
shy
withdrawn
loner
cave dweller
hermit
Decisions
architecture decisions
hard
moderate
easy
type of change
architecture decisions
vs.
the decision to use a web-based user
interface for your application
architecture decisions
vs.
the decision that components should
be distributed remotely for better
scalability
justifying
architecture decisions
justifying decisions
groundhog day anti-pattern
no one understands why a decision was made so it
keeps getting discussed over and over and over...
justifying decisions
the scenario
external
b2b
integration
hub
justifying decisions
the decision: dedicated broker instances?
external
internal internal
application
b2b jms
integration
hub destination
justifying decisions
the decision: centralized broker
external
b2b
integration
hub
justifying decisions
identify the conditions and constraints
considerations:
performance bottleneck
justifying decisions
architecture decision:
centralized broker
justification:
the internal applications should not have to know from which
broker instance the request came from.
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
Fred Flintstone
communicating decisions
email-driven architecture
people forget, lose, or don't know an
architecture decision was made, and therefore
don't implement the architecture correctly
communicating decisions
documenting your architecture decisions
https://github.com/stuarthalloway/presentations/wiki/Architectural-Briefings
Archeology
root for all
docs documents
current archeology
interesting historical
useful enough to update
artifacts
anti-pattern
sacrificial
architecture
layered architecture
database layer
layered architecture
request
presentation layer component component component
database layer
layered architecture
database layer
separation of concerns
layered architecture
database layer
layers of isolation
layered architecture
hybrids and variants
presentation layer component component component
persistence
services layer
layer component component component
database layer
layered architecture
hybrids and variants
presentation layer component component component
database layer
layered architecture
considerations
good general purpose architecture and a good
starting point for most systems
event
event
event mediator
queue
module module module module module module module module module module
event-driven architecture
mediator topology
event
event
event mediator
queue
module module module module module module module module module module
event-driven architecture
you
moved!
you move...
process engine
event event
processor processor
module module
event module module
event event
processor processor
module module
event module module
customer process
change
you move... address
change
address
update
claims
plug-in plug-in
component component
claims processing
NH CA
module module
TX NY
module module
GA MA
module module
microkernel architecture
registry
registry
1: <location>, <contract>
2: <location>, <contract>
3: <location>, <contract>
plug-in 4: <location>, <contract>
plug-in
component 1 component 3
core system
plug-in plug-in
component 2 component 4
microkernel architecture
considerations
http://martinfowler.com/bliki/SacrificialArchitecture.html
architecture pitfall
architecture by implication
systems lacking a clear documented architecture
architecture by implication
remember that agile methodologies are not a
substitute for creating an architecture
Technical Writing Skills
Software is more about
communication than
technology.
Know Your Audience
practical
vs.
classic style
passive voice
revise!
revise!
all important documentation
proposals
emails !
spell check!
Expanding role
Understanding of architect.
shifting structure.
Mature engineering
practices.
Manage
coupling intelligently.
agile 101
"Agile" team
Customer
Delivery team
Constant flow of new features into production always
production
business needs > operational constraints ready
Continuous Integration
90
Deployment Pipelines
Env & Env &
Source Version control
app app
code
config config
UAT
Configure environment
Testers
Deploy binaries
Self-service
Developers Smoke test
deployments
See code metrics
and test failures
Production
Operations
perform Configure environment
push-button Deploy binaries
releases Smoke test
reports
binaries reports reports
metadata binaries metadata binaries metadata
Artifact repository
92
Complected Deployments
!
complect, transitive verb:
intertwine, embrace, especially
to plait together production
Evolutionary Architecture
Components are
deployed.
Applications consist
of routing.
production
Evolutionary Architecture
production
architecture pitfall
“accidental” architect
role versus title
architecture types
architecture types
application
integration
enterprise
Integration Architecture
coordination
communication
challenges
open closed closed
internal app internal app external app
jms database
jms soap
your
internal app
1 The network is reliable.
2 Latency is zero.
3 Bandwidth is infinite.
4 The network is secure.
5 Topology doesn't change.
6 There is one administrator.
7 Transport cost is zero.
8 The network is homogeneous.
en.wikipedia.org/wiki/Fallacies_of_distributed_computing
integration styles
From Enterprise Integration Patterns by Hohpe and Woolf
app v205 app v230 app v234 app v241 app v248
compatible with db compatible with db compatible with db compatible with db compatible with db
v13 and v14 v14 v14 v14 and 15 v15
DB DB DB
version version version
13 14 15
app v205 migrate app v230 app v234 app v234 migrate app v248
deployed db to v14 deployed deployed deployed db to v15 deployed
Time
remote procedure
?
file transfer shared database
Enterprise Architecture
enterprise architecture context
Business Strategy and Operating Model
Business Needs
IT Capabilities
Enterprise Architecture
Feedback Loop
Architecture
- Technology Plan and Roadmap
Business and IT
Capabilities Model - Future State Architecture
- Architecture Models
EA Governance
- Transition Plan
Program / ARB
- Prioritization Model and Plan
Business - Component Models
Architecture
Execution
@neal4d
nealford.com/videos
nealford.com/books
www.oreilly.com/software-architecture-video-training-series.html