Learn the secrets of a successful Service Oriented Architecture from a seasoned veteran that has seen large scale implementations come and go with varying levels of success.
57. Books:
SOA Governance by Thomas Erl
Design Patterns: Elements of Reusable Object Oriented Software by GoF
Expert One-on-One J2EE Design and Development by Rod Johnson
Links:
http://bestoked.blogspot.com/2012/02/restful-resources-required-reading.html
http://www.springsource.org/
http://www.lucidchart.com/
Contact:
jim.siegienski@gmail.com
@JimSiegienski
Hinweis der Redaktion
Functional - Keep it simple
Functional - Limit scopeOne conceptDoes the capability belong here? Be honestDefine terminology
Context free
If you use the word "and" it's doing too much
API - Clear, consistent, and concise-void tight coupling (RMI, RPC)
API - REST - Resource as noun
API - REST - Access via verb (method)Post, put, get, deletePatch?
API - REST - Access via verb (method)Post, put, get, deletePatch?
API - REST - Access via verb (method)Post, put, get, deletePatch?
API - REST - Access via verb (method)Post, put, get, deletePatch?
API - REST - Access via verb (method)Post, put, get, deletePatch?
API - REST - Access via verb (method)Post, put, get, deletePatch?
API - SecurityCentralize AuthorityTrust no-one
Use permissions, not roles… pleasePermissions are granular and flexibleRoles are annoyingYou can grant Roles for administrative gains, but secure/check permissions (be specific)
API - Versioning Accept headerAccept: application/vnd.lampo.service-v2+jsonDon't put versions in your URL! That will break the API
API - Custom headers? We use some for tokens and error codes, need to do more evaluation
Technical – documentationFlow chart, class diagram, sequence diagram, data model
Simple flow chart top to bottom, left to right
Simple class diagram
Simple sequence diagram
Simple data model
Technical – ControllerKeep thin. Take call, respond to call. Separation of concerns
Technical – ControllerKeep thin. Take call, respond to call. Separation of concerns
Technical – ServiceIf using a thin model (cough, java) then have a thick serviceCross model orchestration.Heavy business logic if model is thin
Technical – ServiceIf using a thin model (cough, java) then have a thick serviceCross model orchestration.Heavy business logic if model is thin
Technical – ModelThin model (VO)Thick model (business) - works better in Ruby and other robust languages
Technical – ModelThin model (VO)Thick model (business) - works better in Ruby and other robust languages
Success is Fragile
Not everything is black and white – ask what’s working and what’s not working?