Turn your SOA up to 11

1,629
-1

Published on

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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,629
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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?
  • resources
  • Turn your SOA up to 11

    1. 1. 11
    2. 2.  Jim Siegienski ~20 Years Experience Fortune 50 to Startups Enterprise Architect at Dave Ramsey (Lampo)
    3. 3. THE FIRST RULE…
    4. 4. ProcessGovernanceConflict
    5. 5. PROCESS
    6. 6. 3 KeySteps
    7. 7. Functional
    8. 8. ReviewFunctional
    9. 9. Functional API
    10. 10. ReviewFunctional API
    11. 11. Functional API Technical
    12. 12. ReviewFunctional API Technical
    13. 13. Functional API Technical
    14. 14. Implementation
    15. 15. FUNCTIONAL
    16. 16. SimplicityScopeContext
    17. 17. keep itsimple
    18. 18. User ServiceDescription: Represent a user in the system Create user Update user Get user Get current time Get favorite color
    19. 19. Business UnitBusiness Unit ServiceBusiness UnitBusiness Unit
    20. 20. API
    21. 21. REST SecurityVersioning
    22. 22. Method: GETURI: /users/{key}Response: 200Representation: { “first_name”: ”John”, “last_name”:”Doe” }Error: 400 Bad Request 401 Unauthorized 404 Not Found
    23. 23. A Noun is aPerson, Plac e, or Thing.
    24. 24. GETPOST PUTDELETEPATCH
    25. 25. GET ReadPOST PUTDELETEPATCH
    26. 26. GETPOST Create PUTDELETEPATCH
    27. 27. GETPOST PUT UpdateDELETEPATCH
    28. 28. GETPOST PUTDELETE DeletePATCH
    29. 29. GETPOST PUTDELETEPATCH Partial Update
    30. 30. Svc1App2 Svc2 Security App1 Svcn
    31. 31. PermissionROLE Permission Permission Permission Permission
    32. 32. Accept: application/vnd.lampo.service-v2+json
    33. 33. Custom HTTP Headers?
    34. 34. TECHNICAL
    35. 35. Flow Chart Class DiagramSequence Diagram Data Model
    36. 36. Start ProcessFlow Chart Done? No Yes Start
    37. 37. Person FirstName LastName GetName()Class Diagram VIP User Username Importance Password GetImportance() Login()
    38. 38. Controller Service ModelSequence Diagram
    39. 39. Data Model person first_name last_name
    40. 40. IMPLEMENTATION
    41. 41. ControllerServiceModel
    42. 42. Controller Service Model
    43. 43. Controller Service Model
    44. 44. •No Business Logic •Take the CallController •Format the Output Service Model
    45. 45. ControllerService Model
    46. 46. Controller •Business Logic •Model OrchestrationService •Heart of the System Model
    47. 47. Controller ServiceModel
    48. 48. Controller Service •Data Access •As Fat as PossibleModel
    49. 49. Controller Service Model
    50. 50. WhoWhat Why?How
    51. 51. UI1 UI2 UI3 UIn App1 App2 AppnSvc1 Svc2 Svc3 Svc4 Svcn
    52. 52. Glory isfleeting, but obscurity is forever. Napoleon Bonaparte
    53. 53. Not Everything is black and white.
    54. 54. THANK YOU!
    55. 55. FURTHER READING
    56. 56. 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 JohnsonLinks: 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
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×