Software Architecture Fundamentals - 10 : Integration Architecture
Integration Architecture
Mainframe applications
- closed
- didn’t scale
- high-availability
- no integration required
Now, heterogeneous systems - require integration
3 type apps
Open internal app
Closed internal apps
Closed external app
Challenges
Slow method invocations
Remote system unavailable
Remote contract changes - versioning is one solution
Remote connections secure?
Four Integration styles
1. File Transfer
- Shared directory, easy,
- Expensive, error processing, timeliness, data synch, data-only transfer
2. Shared database
- universal via sql, system decoupled, system abstraction , but db coupled.
- can’t use persistent caching, perf issues, coupled forever
- schema can’t be changed
- ORMs don’t work with shared database. ORM is a cache. So can’t assume cache is current.
- change slow
- Book Refactoring databases
Move column refactoring
- transistion period
- same column on both tables
- then remove
3. Remote procedure
Pros
- Data encapsulation
- Webservices Cons
- systems coupled
- poor async
Current - SOAP and REST
Richardson’s restful levels of maturity
Level 0 RPC Architectural Style
Single URI and single HTTP verb
- semantics in XML
- HTTP meta-data ignored
- lightweight
- Not robust
Level 1 URI Tunneling
Many URIs , single HTTP verb
URI determines the the service, params etc.
URI encode operations, rather than identify operations
Level 2 CRUD web services
Numerous URI addressable resources
Level 3
URI And verb
HATEOAS
Rest in Practice book
Aligning resource state
- state conflicts inevitable
- entity tags (ETags) - token to uniquely identify state
- if-match (ETag) before update
CRUD Services
- HTTP and URI
- reliable, robust, and easy to implement
tightly couple, shared,
Microservice , REST style
4. Messaging
Too brief