Your SlideShare is downloading. ×
0
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Hexagonal Architecture using Grails
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Hexagonal Architecture using Grails

1,598

Published on

Instead of following the normal data centric structure in Grails, this presentation describes implementing a highly decoupled, communication centric architecture in Grails.

Instead of following the normal data centric structure in Grails, this presentation describes implementing a highly decoupled, communication centric architecture in Grails.

Published in: Software, Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Grails Hexagonal Architecture
  • 2. David Dawson CEO, Principal Consultant david.dawson@simplicityitself.com @davidthecoder
  • 3. Architecture vs Design
  • 4. Limitless Options For Design
  • 5. Only a few Architectures
  • 6. Architecture Is Philosophy
  • 7. Grails' 'default' Architecture
  • 8. Grails' 'default' Architecture N-Tier
  • 9. Grails' 'default' Architecture N-Tier Data Centric
  • 10. My Green Field Project
  • 11. My Green Field Project Web/ MVC Layer
  • 12. My Green Field Project Web/ MVC Layer Service Layer
  • 13. My Green Field Project Web/ MVC Layer Service Layer Data Layer
  • 14. My Green Field Project Web/ MVC Layer Service Layer Data Layer DataController UserController AuthController DataService UserService User
  • 15. My Green Field Project Web/ MVC Layer Service Layer Data Layer DataController UserController AuthController DataService UserService User OAuthController RandomService UserSupportPoint
  • 16. My Green Field Project Web/ MVC Layer Service Layer Data Layer DataController UserController AuthController DataService UserService User 1.2 OAuthController RandomService UserSupportPoint DataController UserController AuthController DataService UserService User OAuthController RandomService UserSupportPoint
  • 17. My Green Field Project Web/ MVC Layer Service Layer Data Layer DataController UserController AuthController DataService UserService User 1.3 OAuthController RandomService UserSupportPoint DataController UserController AuthController DataService UserService User OAuthController RandomService UserSupportPoint DataService DataService DataService MehServ iceBlahServiceDataService GahService DoWorkService
  • 18. My Green Field Project Web/ MVC Layer Service Layer Data Layer DataController UserController AuthController DataService UserService User 1.3 OAuthController RandomService UserSupportPoint DataController UserController AuthController DataService UserService User OAuthController RandomService UserSupportPoint DataService DataService DataService MehServ iceBlahServiceDataService GahService DoWorkService VIEWS
  • 19. My Green Field Project Web/ MVC Layer Service Layer Data Layer DataController UserController AuthController DataService UserService User 1.3 OAuthController RandomService UserSupportPoint DataController UserController AuthController DataService UserService User OAuthController RandomService UserSupportPoint DataService DataService DataService MehServ iceBlahServiceDataService GahService DoWorkService VIEWS
  • 20. My Green Field Project Web/ MVC Layer Service Layer Data Layer DataController UserController AuthController DataService UserService User 1.3 OAuthController RandomService UserSupportPoint DataController UserController AuthController DataService UserService User OAuthController RandomService UserSupportPoint DataService DataService DataService MehServ iceBlahServiceDataService GahService DoWorkService VIEWS
  • 21. Issues ..
  • 22. Issues .. Coupling between tiers
  • 23. Issues .. Coupling between tiers Service Spaghetti
  • 24. Issues .. Coupling between tiers Service Spaghetti User exposed to data model
  • 25. Architecture
  • 26. Architecture Data Centric
  • 27. Architecture Data Centric N-Tier
  • 28. I will show you:
  • 29. I will show you: Communication Centric
  • 30. I will show you: Communication Centric Domain Based
  • 31. I will show you: Communication Centric Domain Based Architecture
  • 32. I will show you: Hexagonal Architecture
  • 33. I will show you: Event Architecture
  • 34. I will show you: No New Frameworks
  • 35. What are Events?
  • 36. Asynchronous?
  • 37. Communication
  • 38. Imperative to Declarative
  • 39. What is Hexagonal?
  • 40. Hexagonal ●Coined by Alistair Cockburn, 2005ish ●Seperates Core application from Integration with the world http://alistair.cockburn.us/Hexagonal+architecture
  • 41. The 'Life Preserver' Approach
  • 42. Core Domain Application Policies Business Rules
  • 43. Core Domain Application Policies Business Rules REST
  • 44. Core Domain Application Policies Business Rules REST Events
  • 45. Core Domain Application Policies Business Rules REST Customer UI Events
  • 46. Core Domain Application Policies Business Rules REST Customer UI Database Events
  • 47. 'Example' Application
  • 48. A Core/ Logic Domain
  • 49. A Business Process
  • 50. A Business Process (Workflow)
  • 51. A Business Process (Workflow) Create Document
  • 52. A Business Process (Workflow) Create DocumentCreate Document Review Document
  • 53. A Business Process (Workflow) Create DocumentCreate Document Review Document Approve Document
  • 54. A Business Process (Workflow) Create DocumentCreate Document Review Document Approve Document Reject
  • 55. A Business Process (Workflow) Create DocumentCreate Document Review Document Approve Document Reject Insert into System
  • 56. No Mention of User Interface
  • 57. A User Interface Domain
  • 58. To The Code!
  • 59. What Next?
  • 60. Split Domains Into Plugins
  • 61. Split Domains Into (Micro)Services
  • 62. Blatant Promo Training ...
  • 63. Blatant Promo https://skillsmatter.com/conferences/6312-mucon Training ... µCon: The Microservices Conference 27th , 28th November, London
  • 64. Questions?
  • 65. Thank you! @davidthecoder

×