Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[PHPSP] Hexagonal Architecture

[PHPSP] Hexagonal Architecture

Todo mundo fica frustrado quando demora muito mais do que deveria para entregar uma feature que era pra ser simples. É aí que surge a Arquitetura Hexagonal, também conhecida como Ports & Adapters, cujo objetivo é minimizar o trabalho de criar ou fazer modificações em um software. Essa talk apresenta o que é essa arquitetura, por que ela existe e como ela funciona, passando por todo o caminho que um recurso faz no software, desde seu ponto de entrada.

Camila Campos

December 19, 2017
Tweet

More Decks by Camila Campos

Other Decks in Programming

Transcript

  1. @camposmilaa “we need to release this soon, let’s do it

    anyhow! we can clean it up later...” - every dev I know
  2. @camposmilaa use cases or interactors - what the system does

    create ask for refund ship check fraud risk
  3. @camposmilaa create order input - customer data - shipping address

    - payment data flow 1. customer requests order creation 2. system validates given data 3. system creates order and define order id 4. system given order id back to the customer
  4. @camposmilaa adapters - dependency inversion principle (DIP) presenter controler use

    case input port use case output port use case interactor control flow I I
  5. @camposmilaa user requests resource request model controller entity entity aggregate

    entity entity use case (interactor) domain service interaction
  6. @camposmilaa user requests resource request model controller entity entity aggregate

    entity entity use case (interactor) domain service repository database persistency
  7. @camposmilaa user requests resource request model controller entity entity aggregate

    entity entity use case (interactor) domain service repository database persistency dip
  8. @camposmilaa user requests resource request model controller entity entity aggregate

    entity entity result model use case (interactor) domain service repository database translation
  9. @camposmilaa user requests resource request model controller entity entity aggregate

    entity entity result model use case (interactor) domain service presenter repository database result model
  10. @camposmilaa user requests resource request model controller entity entity aggregate

    entity entity result model use case (interactor) domain service presenter repository database result model dip
  11. @camposmilaa user requests resource user gets resource back request model

    controller entity entity aggregate entity entity result model use case (interactor) domain service presenter repository database json
  12. @camposmilaa Interesting Links https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html https://8thlight.com/blog/uncle-bob/2011/09/30/Screaming-Architecture.html http://alistair.cockburn.us/Hexagonal+architecture http://blog.mattwynne.net/2012/05/31/hexagonal-rails-objects-values-and-hexagons/ https://spin.atomicobject.com/2013/02/23/ports-adapters-software-architecture/ http://five.agency/android-architecture-part-3-applying-clean-architecture-android/ http://tidyjava.com/clean-architecture-screaming/

    Domain Driven Rails by Yan Pritzker https://vimeo.com/106759024 Clean Architecture by Uncle Bob https://www.youtube.com/watch?v=Nltqi7ODZTM Clean Architecture and Desing by Uncle Bob https://www.youtube.com/watch?v=Nsjsiz2A9mg Hexagonal Rails by Matt Wynne https://www.youtube.com/watch?v=CGN4RFkhH2M Clean Architecture: A Craftsman's Guide to Software Structure and Design by Uncle Bob (Livro)