SlideShare una empresa de Scribd logo
1 de 33
Soluções escaláveis com
Microsoft Orleans
Vinicius Quaiato
Mahmoud Ali
Lambda3
Esta palestra não é sobre
• A venda de um produto
• Deep dive em código
• Comparativos entre frameworks
• Gatinhos fofinhos
• Ensinar padrões arquiteturais super bacanas
• Repositórios
Esta palestra é sobre
• Conhecer algo novo
• (Brevemente) conhecer um novo padrão
• Ver um pouco de código (ilustrar exemplo)
• Pensar fora da caixa
• Gatinhos fofinhos
Você já viu isso?
Alto tráfego
• Sua aplicação recebe uma grande quantidade de acessos (sazonal
ou constante)
• Seu servidor não é capaz de atender todas as requisições
Escalabilidade horizontal
Possíveis gargalos
• Persistência de dados
• Recuperação de estado
• Serviços centralizadores
• Operações computacionalmente custosas
Diminuindo gargalos
• Analisar as tecnologias de armazenamento
• Cache
• Otimizações no front-end
• Pré-compilação de views
• Processamento em fila
• Mudança de paradigma arquitetural
Monolitos
Modelagem concorrente
• Granularizar a aplicação
• Independência para executar
• Comunicação assíncrona
Actor
Actor
Actor
Mensagem
Modelagem concorrente
• Unidades isoladas
• Estado interno local
• Comportamento
• Comunicação através de mensagens
• Processamento distribuído
Actor Model
• Padrão criado na década de 70 que propõe tratar “atores” como a
primitiva universal num sistema
• Atores devem poder
• tomar decisões locais
• criar mais atores
• enviar mensagens
• Atores devem ser isolados
Actor
Actor
Actor
Mensagem
Actor
Actor
Actor
mensagem
Como pensar em Actors?
• Pense em trechos de computação com estado
• Carrinho de compra?
• Processo de checkout?
• Rastreamento de carro/pet?
• Processador de achievements (gamification)?
• Saldo de cartão de crédito?
• Histórico de compras de cartão de crédito?
É tudo sempre simples?
• Complicações de aplicações concorrentes com actor model:
• Como subir novos atores?
• Como gerenciar o ciclo de vida desses atores?
• Como detectar que um ator morreu?
• Como se recuperar de erros?
• Como localizar um ator para enviar uma mensagem a ele?
Implementações de Actor Model
O que é o Microsoft Orleans?
• Framework .NET para a criação de aplicações distribuídas e
concorrentes.
• Implementa e disponibiliza o padrão (Virtual) Actor Models dentro
do .NET
• Como framework padrão Microsoft, facilita sua vida e abstrai uma
série de preocupações
Principais Benefícios
• Escalável por padrão
• Orleans lida com toda a complexidade na distribuição de sistemas,
escalando sua aplicação para o infinito e além
• Baixa latência
• Manter estado necessário em memória
• Concorrência simplificada
• Escreva código C# da forma como você está acostumado/a, mensagens
assíncronas entre Grains
Conceitos Chave
• Grains – Representação de Actors
• São a menor unidade computacional neste tipo de sistema
• Silos – Gerenciam os ciclos de vida dos Grains
• Não acessam estado de outros Grains diretamente
• Escaláveis de forma horizontal
• Leves
• Clients – Aplicações que fazem chamadas aos Grains
Recursos
• Stateless
• Stateful
• At-Most-Once
• At-Least-Once
• Timers
• Reminders
• Persistência transparente
Demo (ou quase isso)
Quem está usando?
• Microsoft
• Azure
• Skype
• 343 Industries
• Halo 4, 5, Reach
• Visa
Ah, quem somos nós..?
akamud (Mahmoud Ali)
• @akamud
• http://github.com/akamud
• Lambda3
• http://high5devs.com
• Mestre cervejeiro
Vinicius Quaiato
• @vquaiato
• http://github.com/vquaiato
• Lambda3
• Juiz de Magic
• Pai
• Ciclista
• Vegano
Obrigado =)

Más contenido relacionado

La actualidad más candente

Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Rodrigo Kono
 

La actualidad más candente (20)

.NET Core Internals. O que é o .NET Platform Standard?
.NET Core Internals. O que é o .NET Platform Standard?.NET Core Internals. O que é o .NET Platform Standard?
.NET Core Internals. O que é o .NET Platform Standard?
 
100% de código compartilhado com Xamarin.Forms
100% de código compartilhado com Xamarin.Forms100% de código compartilhado com Xamarin.Forms
100% de código compartilhado com Xamarin.Forms
 
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
 
Animation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom RenderersAnimation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom Renderers
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
 
Novidades do ASP.NET MVC 4
Novidades do ASP.NET MVC 4Novidades do ASP.NET MVC 4
Novidades do ASP.NET MVC 4
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 
ASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e alémASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e além
 
Elmish com xamarin.forms
Elmish com xamarin.formsElmish com xamarin.forms
Elmish com xamarin.forms
 
Comunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalRComunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalR
 
Desenvolvimento para web com Meteor
Desenvolvimento para web com MeteorDesenvolvimento para web com Meteor
Desenvolvimento para web com Meteor
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
 
Campus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NETCampus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NET
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
Meteor - TechParty 2015
Meteor - TechParty 2015Meteor - TechParty 2015
Meteor - TechParty 2015
 
Microframeworksphp
MicroframeworksphpMicroframeworksphp
Microframeworksphp
 
Xamarin em 7 minutos
Xamarin em 7 minutosXamarin em 7 minutos
Xamarin em 7 minutos
 
Novidades do ASP.NET 5.X
Novidades do ASP.NET 5.XNovidades do ASP.NET 5.X
Novidades do ASP.NET 5.X
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - Introdução
 

Similar a Soluções escaláveis com Microsoft Orleans

Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemas
taniamaciel
 
Resumo diagrama de casos de utilização
Resumo diagrama de casos de utilizaçãoResumo diagrama de casos de utilização
Resumo diagrama de casos de utilização
Marco Coelho
 

Similar a Soluções escaláveis com Microsoft Orleans (20)

01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Métricas de Código
Métricas de CódigoMétricas de Código
Métricas de Código
 
Clean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimentoClean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimento
 
Arquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGArquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMG
 
ORM e EF
ORM e EFORM e EF
ORM e EF
 
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemas
 
Resumo diagrama de casos de utilização
Resumo diagrama de casos de utilizaçãoResumo diagrama de casos de utilização
Resumo diagrama de casos de utilização
 
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
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
CosmosDB from zero2hero
CosmosDB from zero2heroCosmosDB from zero2hero
CosmosDB from zero2hero
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
Servidores de Aplicações
Servidores de AplicaçõesServidores de Aplicações
Servidores de Aplicações
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e Erlang
 
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
 
Rational Unfied Process
Rational Unfied ProcessRational Unfied Process
Rational Unfied Process
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
 
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
 

Más de akamud

Más de akamud (20)

Hacktoberfest - Contribuindo com Open Source
Hacktoberfest  - Contribuindo com Open SourceHacktoberfest  - Contribuindo com Open Source
Hacktoberfest - Contribuindo com Open Source
 
Automatizando os testes da sua aplicação hoje
Automatizando os testes da sua aplicação hojeAutomatizando os testes da sua aplicação hoje
Automatizando os testes da sua aplicação hoje
 
Indo além do Enterprise: fazendo aplicativos para usuários finais com Xamarin...
Indo além do Enterprise: fazendo aplicativos para usuários finais com Xamarin...Indo além do Enterprise: fazendo aplicativos para usuários finais com Xamarin...
Indo além do Enterprise: fazendo aplicativos para usuários finais com Xamarin...
 
.NET MAUI - O futuro do desenvolvimento de apps no .NET
.NET MAUI - O futuro do desenvolvimento de apps no .NET.NET MAUI - O futuro do desenvolvimento de apps no .NET
.NET MAUI - O futuro do desenvolvimento de apps no .NET
 
Azure DevOps + App Center: DevOps multi-staging para seu app
Azure DevOps + App Center: DevOps multi-staging para seu appAzure DevOps + App Center: DevOps multi-staging para seu app
Azure DevOps + App Center: DevOps multi-staging para seu app
 
O Futuro do .NET
O Futuro do .NETO Futuro do .NET
O Futuro do .NET
 
Interfaces reativas com ReactiveUI no Xamarin.Forms
Interfaces reativas com ReactiveUI no Xamarin.FormsInterfaces reativas com ReactiveUI no Xamarin.Forms
Interfaces reativas com ReactiveUI no Xamarin.Forms
 
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
 
Mobile Development Simplified with Xamarin
Mobile Development Simplified with XamarinMobile Development Simplified with Xamarin
Mobile Development Simplified with Xamarin
 
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobileXamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
 
Desenvolvimento cross-platform em C# com Xamarin - 2018
Desenvolvimento cross-platform em C# com Xamarin - 2018Desenvolvimento cross-platform em C# com Xamarin - 2018
Desenvolvimento cross-platform em C# com Xamarin - 2018
 
O que há de novo no Xamarin.Forms
O que há de novo no Xamarin.FormsO que há de novo no Xamarin.Forms
O que há de novo no Xamarin.Forms
 
Automatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlaneAutomatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlane
 
Tornando o Xamarin.Forms ainda melhor com Prism
Tornando o Xamarin.Forms ainda melhor com PrismTornando o Xamarin.Forms ainda melhor com Prism
Tornando o Xamarin.Forms ainda melhor com Prism
 
Animações com Xamarin.Forms
Animações com Xamarin.FormsAnimações com Xamarin.Forms
Animações com Xamarin.Forms
 
Instrumentação completa com Visual Studio Mobile Center
Instrumentação completa com Visual Studio Mobile CenterInstrumentação completa com Visual Studio Mobile Center
Instrumentação completa com Visual Studio Mobile Center
 
Xamarin Forms: O caminho para 100% de código compartilhado em aplicativos móveis
Xamarin Forms: O caminho para 100% de código compartilhado em aplicativos móveisXamarin Forms: O caminho para 100% de código compartilhado em aplicativos móveis
Xamarin Forms: O caminho para 100% de código compartilhado em aplicativos móveis
 
Instrumentação completa para sua aplicação Mobile com Visual Studio Mobile Ce...
Instrumentação completa para sua aplicação Mobile com Visual Studio Mobile Ce...Instrumentação completa para sua aplicação Mobile com Visual Studio Mobile Ce...
Instrumentação completa para sua aplicação Mobile com Visual Studio Mobile Ce...
 
Animation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom RenderersAnimation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom Renderers
 
Desenvolvimento Cross-mobile com Xamarin
Desenvolvimento Cross-mobile com XamarinDesenvolvimento Cross-mobile com Xamarin
Desenvolvimento Cross-mobile com Xamarin
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Último (6)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Soluções escaláveis com Microsoft Orleans

  • 1. Soluções escaláveis com Microsoft Orleans Vinicius Quaiato Mahmoud Ali Lambda3
  • 2.
  • 3. Esta palestra não é sobre • A venda de um produto • Deep dive em código • Comparativos entre frameworks • Gatinhos fofinhos • Ensinar padrões arquiteturais super bacanas • Repositórios
  • 4. Esta palestra é sobre • Conhecer algo novo • (Brevemente) conhecer um novo padrão • Ver um pouco de código (ilustrar exemplo) • Pensar fora da caixa • Gatinhos fofinhos
  • 6. Alto tráfego • Sua aplicação recebe uma grande quantidade de acessos (sazonal ou constante) • Seu servidor não é capaz de atender todas as requisições
  • 8.
  • 9.
  • 10.
  • 11. Possíveis gargalos • Persistência de dados • Recuperação de estado • Serviços centralizadores • Operações computacionalmente custosas
  • 12. Diminuindo gargalos • Analisar as tecnologias de armazenamento • Cache • Otimizações no front-end • Pré-compilação de views • Processamento em fila • Mudança de paradigma arquitetural
  • 14. Modelagem concorrente • Granularizar a aplicação • Independência para executar • Comunicação assíncrona
  • 16. Modelagem concorrente • Unidades isoladas • Estado interno local • Comportamento • Comunicação através de mensagens • Processamento distribuído
  • 17.
  • 18. Actor Model • Padrão criado na década de 70 que propõe tratar “atores” como a primitiva universal num sistema • Atores devem poder • tomar decisões locais • criar mais atores • enviar mensagens • Atores devem ser isolados
  • 20. Como pensar em Actors? • Pense em trechos de computação com estado • Carrinho de compra? • Processo de checkout? • Rastreamento de carro/pet? • Processador de achievements (gamification)? • Saldo de cartão de crédito? • Histórico de compras de cartão de crédito?
  • 21. É tudo sempre simples? • Complicações de aplicações concorrentes com actor model: • Como subir novos atores? • Como gerenciar o ciclo de vida desses atores? • Como detectar que um ator morreu? • Como se recuperar de erros? • Como localizar um ator para enviar uma mensagem a ele?
  • 23. O que é o Microsoft Orleans? • Framework .NET para a criação de aplicações distribuídas e concorrentes. • Implementa e disponibiliza o padrão (Virtual) Actor Models dentro do .NET • Como framework padrão Microsoft, facilita sua vida e abstrai uma série de preocupações
  • 24. Principais Benefícios • Escalável por padrão • Orleans lida com toda a complexidade na distribuição de sistemas, escalando sua aplicação para o infinito e além • Baixa latência • Manter estado necessário em memória • Concorrência simplificada • Escreva código C# da forma como você está acostumado/a, mensagens assíncronas entre Grains
  • 25. Conceitos Chave • Grains – Representação de Actors • São a menor unidade computacional neste tipo de sistema • Silos – Gerenciam os ciclos de vida dos Grains • Não acessam estado de outros Grains diretamente • Escaláveis de forma horizontal • Leves • Clients – Aplicações que fazem chamadas aos Grains
  • 26.
  • 27.
  • 28. Recursos • Stateless • Stateful • At-Most-Once • At-Least-Once • Timers • Reminders • Persistência transparente
  • 29. Demo (ou quase isso)
  • 30. Quem está usando? • Microsoft • Azure • Skype • 343 Industries • Halo 4, 5, Reach • Visa
  • 31.
  • 32. Ah, quem somos nós..? akamud (Mahmoud Ali) • @akamud • http://github.com/akamud • Lambda3 • http://high5devs.com • Mestre cervejeiro Vinicius Quaiato • @vquaiato • http://github.com/vquaiato • Lambda3 • Juiz de Magic • Pai • Ciclista • Vegano

Notas del editor

  1. Escalabilidade transparente - utilizando Orleans as equipes de desenvolvimento focam-se em produzir código de negócios ao invés de lidar com as complexidades e lock, thread, semáforos, etc. Extensibilidade - Orleans integra-se com diferentes formas de persistência como SQL Premises, SQL Azure, Azure Storage. E caso necessário é possível extender o framework para utilizar formas customizadas de persistência.
  2. Grains - são a representação de Actors. São a menor unidade computacional neste tipo de sistema. Grains existem de forma isolada entre si. Não acessam estado de outros Grains diretamente. Para isso trocam mensagens. Escaláveis de forma horizontal. Leves. Silos - são nós que gerenciam o ciclo de vida de Grains. Nos Silos que Grains executam. Silos podem existem dentro de um cluster. São criados conforme as necessidades de escalabilidade. Clients - são as aplicações que realizam chamadas para os Grains. O Orleans abstrai todo o processo de criação, inicialização e destruição dos Grains. Clients podem ser aplicações Web, Mobile, IoT, Desktop, games, etc.
  3. Stateless - alguns grains, para efeito de performance podem ser marcados como sendo _Stateless_. Stateful - grains podem manter estado At-Most-Once - por padrão Orleans garante que as mensagens serão entregues no máximo uma vez. At-Least-Once - se recursos como retry estiverem habilitados, então Orleans garante que estas mensagens serão entregues pelo menos uma vez, não garantindo sua unicidade. Timers - Timers são formas de adicionar comportamento recorrente a um Grain. Eles precisam que o Grain esdteja ativo. Reminders - Reminders são parecidos com Timers, exceto que se um Grain não existir, ele será ativado. Eles estão vinculados a um Grain e não a uma astivação específica de um Grain.