SlideShare uma empresa Scribd logo
Hexagonal Rails
Luiz Costa
gutomcosta@gmail.com
@gutomcosta
nosso propósito é criar as melhores
experiências em serviços médicos
hexágonos?
ou ports and adapters
mas antes, layers…
ou simplesmente camadas
Components within the layered
architecture pattern are organized
into horizontal layers, each layer
performing a specific role within the
application (e.g., presentation logic or
business logic).
Software Architecture Patterns, Mark Richards
https://www.oreilly.com/library/view/software-architecture-patterns/9781491971437/
Na versão mais “restrita” deste
pattern, as camadas
superiores só acessam as
inferiores passando pela
camada seguinte.
Existem algumas variações,
por exemplo, quando algumas
camadas podem acessar
diretamente outras camadas
sem passar pela seguinte.
Neste caso diz-se que existem
camadas “abertas”.
hexágonos?
ou ports and adapters
Hexagonal Rails
Hexagonal Rails
Business
Business
entry / exit
points
Business
entry exit
Business
entry exit
cada lado pode ter
vários entry / exit points
Business
entry exit
… …
hexágonos
finalmente!
Hexagonal Rails
Hexagonal Architecture, Alistair Cockburn
https://bit.ly/2XBQHNx
Allow an application to equally be driven
by users, programs, automated test or
batch scripts, and to be developed and
tested in isolation from its eventual run-
time devices and databases.
outside
ao invés de entry/exit points, agora inside/outside
ports and adapters
Each face of the hexagon (port)
represents some "reason" the application
is trying to talk with the outside world.
Events arrive from the outside world at a
port. The adapter converts it into a
usable procedure call or message and
passes it to the application. The
application is blissfully ignorant of the
nature of the input device…
Ports and Adapters Architecture, Alistair Cockburn
http://wiki.c2.com/?
PortsAndAdaptersArchitecture
Ports and Adapters Architecture, Alistair Cockburn
http://wiki.c2.com/?
PortsAndAdaptersArchitecture
Each face of the hexagon (port)
represents some "reason" the application
is trying to talk with the outside world.
Events arrive from the outside world at a
port. The adapter converts it into a
usable procedure call or message and
passes it to the application. The
application is blissfully ignorant of the
nature of the input device…
O adaptador converte a
mensagem e manipula ou
delega para os objetos de
domínio
uma aplicação pode ter
várias portas e isso não
se limita ao número de
lados do hexágono
algumas vantagens
• diminuir acoplamento
• melhor para testar
• adaptabilidade
clean architecture
Hexagonal Rails
Hexagonal Rails
sobre o quê?
sobre o quê?
como uma rails app se
parece?
sobre o quê?
Screaming Architecture, Robert Martin
https://blog.cleancoder.com/uncle-bob/2011/09/30Screaming-Architecture.html
Architectures are not (or should not) be
about frameworks. Architectures should
not be supplied by frameworks.
Frameworks are tools to be used, not
architectures to be conformed to. If you
architecture is based on frameworks,
then it cannot be based on your use
cases.
Screaming Architecture, Robert Martin
https://blog.cleancoder.com/uncle-bob/2011/09/30Screaming-Architecture.html
Architectures are not (or should not) be
about frameworks. Architectures should
not be supplied by frameworks.
Frameworks are tools to be used, not
architectures to be conformed to. If you
architecture is based on frameworks,
then it cannot be based on your use
cases.
sobre o quê?
Your architectures should tell readers
about the system, not about the
frameworks you used in your system.
If you are building a health-care
system, then when new programmers
look at the source repository, their first
impression should be: “Oh, this is a
health-care system”.
Screaming Architecture, Robert Martin
https://blog.cleancoder.com/uncle-bob/2011/09/30Screaming-Architecture.html
architecture is
about intent.
Architecture the lost years, Robert Martin
https://youtu.be/WpkDN78P884?t=704
rails is not your
application
http://blog.firsthand.ca/2011/10/rails-is-not-your-application.html
it’s a web framework
the web is a
delivery
mechanism
Architecture the lost years, Robert Martin
https://youtu.be/WpkDN78P884?t=581
Hexagonal Rails
Hexagonal Rails
Hexagonal Rails
como implementar
com rails?
separar o código de
negócio do framework
1
O código de negócio fica dentro da
pasta application. Dentro da pasta,
todo acesso ao framework é feito por
adaptadores.
O código da aplicação web, escrita em rails, fica dentro de web
app. Esta pasta é a implementação de um delivery mechanism.
O código de negócio, que vive dentro de application, é
acessado através de portas.
modularizar o código que
vive dentro de application
2
alguns dos possíveis módulos de uma aplicação que
resolve o problema de vacinação domiciliar
o mesmo objeto de
domínio em diferentes
contextos ou módulos
Paciente
Atendimento
+ qual nome, nascimento…?
+ qual dia do agendamento?
+ qual endereço de atendimento?
Paciente
Vacinação
+ como a caderneta de vacinação
está organizada?
+ qual a próxima vacina?
+ qual vacina foi aplicada?
Paciente
Financeiro
+ qual custo das vacinas aplicadas?
+ alguma condição de desconto?
+ qual meio de pagamento utilizado?
É responsabilidade de cada
contexto modelar os dados da
melhor maneira, de acordo com
as suas responsabilidades.
cada módulo é como se
fosse uma implementação
do padrão hexagonal
anatomia de um módulo
Application Domain
Atendimento.Fila
Infrastructure
show me the code!
talk is cheap
como é a
implementação de um
use case?
implementação de um use case
O fluxo de execução
é simples e limpo
As dependências são
injetadas no
construtor
Usa um factory
method* para manter
o encapsulamento e
diminuir o acoplamento
com o objeto cliente
* https://en.wikipedia.org/wiki/Factory_method_pattern
application/src
como o delivery
mechanism se conecta
com a application?
conectando a web app com o application
Aqui o factory method é
usado para instanciar o use
case.
A interface pública do use case é usada como
Port para acessar o código da application
* https://en.wikipedia.org/wiki/Factory_method_pattern
web-app/app/controllers
foco total no
domain model
domain model != model
objetos de domínio são escritos em código ruby puro
(PORO*)
Não existe nenhuma
relação direta com o
Active Record
*http://blog.jayfields.com/2007/10/ruby-poro.html
e os models? Active
Record?
Nas implementações padrão do rails,
o model é uma subclasse de
ApplicationRecord, isso faz com que
o acoplamento com o banco de dados
seja bem alto.
O domain object é separado do
Model e o seu ciclo de vida é
controlado por um Repositório*.
O repositório é responsável por
executar as consultas (queries),
e mapear os objetos de domínio.
Para isso pode ter a
colaboração de uma Factory*.
O Model tem a responsabilidade de
garantir a consistência dos dados,
de acordo com o modelo relacional.
Pode definir algumas queries e ter
validações de dados
O domain object é quem tem a
implementação das lógicas de
negócio.
*https://martinfowler.com/eaaCatalog/repository.html
Um único Model pode dar origem a um modelo de domínio bem mais
complexo. Neste caso, todos os dados do domain model são persistidos
na mesma tabela (Rails Model) do banco de dados.
implementação de um repositório
Aqui o model é usado para tirar
vantagem do Active Record.
Uma factory é usada para fazer
a construção do objeto de
domínio.
.active_nurses é uma query que
está encapsulada no Model.
O save também delega
para o Active Record.
onde estamos mesmo?
e a história dos hexágonos?
a partir da representação original…
para uma proposta de implementação
O controlador acessa os módulos através de uma porta que
expõe a interface pública de um caso de uso.
O repositório encapsula o acesso
aos models, funcionando como
mais um adaptador.
A implementação do caso de
uso atua como um adaptador.
para uma proposta de implementação
inside outside
outside
O controlador acessa os módulos através de uma porta que
expõe a interface pública de um caso de uso.
O repositório encapsula o acesso
aos models, funcionando como
mais um adaptador.
A implementação do caso de
uso atua como um adaptador.
implementando uma
User Story
Deve permitir ao paciente
agendar a aplicação de
vacina.
Ao fazer o agendamento
deve-se efetuar o
pagamento e reservar o
estoque dos produtos
agendados.
Deve permitir ao paciente
agendar a aplicação de
vacina.
Ao fazer o agendamento
deve-se efetuar o
pagamento e reservar o
estoque dos produtos
agendados.
módulos
módulos bounded contexts
como um contexto
executa uma ação em
outro contexto?
boundaries
https://martinfowler.com/bliki/ApplicationBoundary.html
O ideal é que um contexto
só exponha objetos de
fronteira. Ex: Use Cases,
Services ou Repositories
Se precisar retornar um conjunto de
dados mais complexo, dê
preferência para Hashs ou Tuplas
Mantenha o domain model
protegido dentro do
contexto. O ideal é não
deixar “vazar" do contexto
os objetos de domínio
public class
deve-se reduzir o número de classes públicas para
promover o encapsulamento
exemplo
context maps
Open Host Service
(OHS)
Anti Corruption
Layer (ACL)
Event Publisher
(EP)
1
Gestão de Agendas
Pagamentos
Neste caso os contextos se
falam através dos objetos de
fronteira: Services e Use Case
Hexagonal Rails
construa uma
arquitetura que te
permita atrasar as
decisões
https://8thlight.com/blog/uncle-bob/2011/11/22/Clean-Architecture.html
Indireção para o contexto de
pagamento
Injeção de Dependências
Único ponto de contato com
contexto de pagamento
efetuar agendamento
Tradução do modelo entre os dois contextos
efetuar agendamento
2
Gestão de agendas
Gestão de estoque
Os dois contextos se falam
através de um domain event
AgendamentoCriado
Publica o
evento através
da EP
Contato com o
contexto de
gestão de
estoque
como tirar vantagem e
extrair para um
microsserviço?
contexto de pagamento como microsserviço
O único ponto de contato com o contexto de
pagamento no agendamento era o objeto de fronteira
Pagamento. Este objeto vai precisar ser alterado e,
em vez de chamar o contexto diretamente, vamos
introduzir uma service layer para implementar a
chamada remota ao microsserviço de pagamento
O contexto de pagamento foi extraído e
adicionado em uma nova aplicação rails. Foi
necessário expor uma api para disponibilizar
o acesso aos casos de uso. Neste caso,
provavelmente os respositórios deverão ser
alterados para conectar no banco de dados
diferente.
contexto de pagamento como microsserviço
O único ponto de contato com o contexto de
pagamento no agendamento era o objeto de fronteira
Pagamento. Este objeto vai precisar ser alterado e,
em vez de chamar o contexto diretamente, vamos
introduzir uma service layer para implementar a
chamada remota ao microsserviço de pagamento
O contexto de pagamento foi extraído e
adicionado em uma nova aplicação rails. Foi
necessário expor uma api para disponibilizar
o acesso aos casos de uso. Neste caso,
provavelmente os respositórios deverão ser
alterados para conectar no banco de dados
diferente.
como extrair o contexto de
Gestão de Estoque?
Como lidar com o Domain Event AgendamentoCriado?
publish/subscribe ou
observers
https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern
https://en.wikipedia.org/wiki/Observer_pattern
contexto de estoque como microsserviço
O contexto de agendamento continua publicando o domain event
AgendamentoCriado da mesma forma que antes, nada muda aqui.
O Event Handler original é substituído por
outro que publica o evento em um Broker de
mensagem. Ex: RabbitMQ, Kafka, ActveMQ
No microsserviço de estoque, é necessário adicionar
na ACL, handlers que serão estimulados pelas
mensagens entregues pelo broker. Estes handlers,
delegam a execução para os caso de uso.
O contexto de agendamento continua publicando o domain event
AgendamentoCriado da mesma forma que antes, nada muda aqui.
O Event Handler original é substituído por
outro que publica o evento em um Broker de
mensagem. Ex: RabbitMQ, Kafka, ActveMQ
No microsserviço de estoque, é necessário adicionar
na ACL, handlers que serão estimulados pelas
mensagens entregues pelo broker. Estes handlers,
delegam a execução para os caso de uso.
contexto de estoque como microsserviço
considerações Finais
modelagem de domínio
não é simples
O controle de
acoplamento é
extremamente importante
mas lembre-se:
https://martinfowler.com/articles/dont-start-monolith.html
obrigado!
Luiz Costa
gutomcosta@gmail.com
@gutomcosta
Referências
https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
https://blog.cleancoder.com/uncle-bob/2011/09/30/Screaming-Architecture.html
http://blog.firsthand.ca/2011/10/rails-is-not-your-application.html
https://cleancoders.com/video-details/clean-code-episode-7
https://www.youtube.com/watch?v=WpkDN78P884
Anúncio

Mais conteúdo relacionado

Mais procurados (20)

Swagger With REST APIs.pptx.pdf
Swagger With REST APIs.pptx.pdfSwagger With REST APIs.pptx.pdf
Swagger With REST APIs.pptx.pdf
Knoldus Inc.
 
Object Oriented Concept Static vs. Non Static
Object Oriented Concept Static vs. Non StaticObject Oriented Concept Static vs. Non Static
Object Oriented Concept Static vs. Non Static
OXUS 20
 
Basic java important interview questions and answers to secure a job
Basic java important interview questions and answers to secure a jobBasic java important interview questions and answers to secure a job
Basic java important interview questions and answers to secure a job
Garuda Trainings
 
Introduction Node.js
Introduction Node.jsIntroduction Node.js
Introduction Node.js
Erik van Appeldoorn
 
Presentation of framework Angular
Presentation of framework AngularPresentation of framework Angular
Presentation of framework Angular
Lhouceine OUHAMZA
 
20 most important java programming interview questions
20 most important java programming interview questions20 most important java programming interview questions
20 most important java programming interview questions
Gradeup
 
Mongoose and MongoDB 101
Mongoose and MongoDB 101Mongoose and MongoDB 101
Mongoose and MongoDB 101
Will Button
 
The Secrets of Hexagonal Architecture
The Secrets of Hexagonal ArchitectureThe Secrets of Hexagonal Architecture
The Secrets of Hexagonal Architecture
Nicolas Carlo
 
Java cheat sheet
Java cheat sheetJava cheat sheet
Java cheat sheet
Piyush Mittal
 
Spring boot
Spring bootSpring boot
Spring boot
NexThoughts Technologies
 
Introduction to the Web API
Introduction to the Web APIIntroduction to the Web API
Introduction to the Web API
Brad Genereaux
 
Hexagonal architecture in PHP
Hexagonal architecture in PHPHexagonal architecture in PHP
Hexagonal architecture in PHP
Paulo Victor Gomes
 
Core java
Core javaCore java
Core java
Sun Technlogies
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
07.pallav
 
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Steve Pember
 
Functions in PHP.pptx
Functions in PHP.pptxFunctions in PHP.pptx
Functions in PHP.pptx
Japneet9
 
Angular 10 course_content
Angular 10 course_contentAngular 10 course_content
Angular 10 course_content
NAVEENSAGGAM1
 
Oops in Java
Oops in JavaOops in Java
Oops in Java
malathip12
 
SOLID Principles and The Clean Architecture
SOLID Principles and The Clean ArchitectureSOLID Principles and The Clean Architecture
SOLID Principles and The Clean Architecture
Mohamed Galal
 
Spring ppt
Spring pptSpring ppt
Spring ppt
Mumbai Academisc
 
Swagger With REST APIs.pptx.pdf
Swagger With REST APIs.pptx.pdfSwagger With REST APIs.pptx.pdf
Swagger With REST APIs.pptx.pdf
Knoldus Inc.
 
Object Oriented Concept Static vs. Non Static
Object Oriented Concept Static vs. Non StaticObject Oriented Concept Static vs. Non Static
Object Oriented Concept Static vs. Non Static
OXUS 20
 
Basic java important interview questions and answers to secure a job
Basic java important interview questions and answers to secure a jobBasic java important interview questions and answers to secure a job
Basic java important interview questions and answers to secure a job
Garuda Trainings
 
Presentation of framework Angular
Presentation of framework AngularPresentation of framework Angular
Presentation of framework Angular
Lhouceine OUHAMZA
 
20 most important java programming interview questions
20 most important java programming interview questions20 most important java programming interview questions
20 most important java programming interview questions
Gradeup
 
Mongoose and MongoDB 101
Mongoose and MongoDB 101Mongoose and MongoDB 101
Mongoose and MongoDB 101
Will Button
 
The Secrets of Hexagonal Architecture
The Secrets of Hexagonal ArchitectureThe Secrets of Hexagonal Architecture
The Secrets of Hexagonal Architecture
Nicolas Carlo
 
Introduction to the Web API
Introduction to the Web APIIntroduction to the Web API
Introduction to the Web API
Brad Genereaux
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
07.pallav
 
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Steve Pember
 
Functions in PHP.pptx
Functions in PHP.pptxFunctions in PHP.pptx
Functions in PHP.pptx
Japneet9
 
Angular 10 course_content
Angular 10 course_contentAngular 10 course_content
Angular 10 course_content
NAVEENSAGGAM1
 
SOLID Principles and The Clean Architecture
SOLID Principles and The Clean ArchitectureSOLID Principles and The Clean Architecture
SOLID Principles and The Clean Architecture
Mohamed Galal
 

Semelhante a Hexagonal Rails (20)

TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
tdc-globalcode
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Luiz Costa
 
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Luiz Costa
 
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
tdc-globalcode
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
tdc-globalcode
 
Oficina cake php
Oficina cake phpOficina cake php
Oficina cake php
Allan George
 
Framework struts2v2.5
Framework struts2v2.5Framework struts2v2.5
Framework struts2v2.5
Eduardo Gabina
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
Eric Gallardo
 
Aula1
Aula1Aula1
Aula1
mentrixmax
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
Deep Tech Brasil
 
O desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicosO desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicos
Graziella Bonizi
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualização
Darlan Segalin
 
10 Dicas para Implementacao do OracleAS
10 Dicas para Implementacao do OracleAS10 Dicas para Implementacao do OracleAS
10 Dicas para Implementacao do OracleAS
acsvianabr
 
Architecture performance using micro services
Architecture performance using micro servicesArchitecture performance using micro services
Architecture performance using micro services
Joao Galdino Mello de Souza
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
Opakus - Soluções Inteligentes
 
Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016
Huge
 
Testes webservice tdc
Testes webservice tdcTestes webservice tdc
Testes webservice tdc
Ricardo Moura
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
Ruben Marcus Luz Paschoarelli
 
Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3
Flávio Lisboa
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
Norberto Enomoto
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
tdc-globalcode
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Luiz Costa
 
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Luiz Costa
 
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
tdc-globalcode
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
tdc-globalcode
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
Eric Gallardo
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
Deep Tech Brasil
 
O desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicosO desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicos
Graziella Bonizi
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualização
Darlan Segalin
 
10 Dicas para Implementacao do OracleAS
10 Dicas para Implementacao do OracleAS10 Dicas para Implementacao do OracleAS
10 Dicas para Implementacao do OracleAS
acsvianabr
 
Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016
Huge
 
Testes webservice tdc
Testes webservice tdcTestes webservice tdc
Testes webservice tdc
Ricardo Moura
 
Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3
Flávio Lisboa
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
Norberto Enomoto
 
Anúncio

Hexagonal Rails