Write this down: An architecture is a framework that guides the significant decisions involved in creating or enhancing something that matters. Matters = important enough that you want to be thoughtful and controlled in your decision-making. Means that success or fulfillment depends on how it turns out. Generally, but not always, that means something that is (a) complex, (b) expensive and (c) hard to undo.
Many of us understand what is meant by a Craftsman house, a Tudor house, a Victorian house, or a Federal house. These houses have many things in common: houses built according to any of these styles can be functional, comfortable. None is better than any other. We use the stylistic labels as a way to convey certain desirable characteristics that we want to achieve from designs.
Ask about styles of application architecture, as a further illustration
Point out that this is an evolution…towards what? (Agility)
Architecture should tell us: How do we describe/define exchanges (requirements)? How do we format the information? How is information transported (securely, reliably)? How do systems connect? What infrastructure do we share? What does it do? What technologies? How do we find exchanges? Who does/owns/funds what?
Abstractness A service’s models and name should reflect what the service does or what it accomplishes and should not describe how the service works or how it is implemented. Autonomy There should be one and only one service that produces a given real-world effect. Once a service is available to provide access to a capability, consumers should not access that capability except through the service. Reusability A service should not preclude usage by consumers or in contexts not explicitly prohibited by the service’s stated policy or contract. Loose Coupling A service should have minimal dependencies on other services, the execution context, and the business organization responsible for providing it. Separable real-world effects should be achieved through use of separate services. Statelessness All information necessary for a service to perform an action in its action model should be provided by the consumer during interaction, or obtained by the service implementation during performance of the action. A service should not rely upon information retained from a previous interaction with a consumer.
At the end of this slide, make a couple of key points: We have not once yet talked about a specific vendor product or even class of products We have not yet mentioned web services, SOAP, etc.
What is SOA? NAJIS Conference Santa Fe, NM October 17, 2007 Mark Perbix Justice Information Systems Specialist SEARCH
…that produce the distinguishing characteristics of the SOA style
Incremental Adoption of SOA Agility XML Industry Standards Controlled vocab Standard messages (IEPDs) SOAP WS-* Location Independence (registry) Repositories Separation of Business logic (intermediaries) Provisioning Models (shared services) Event-driven architecture Shared Message Transport