SlideShare uma empresa Scribd logo
Akka basics
Why | What | When | How …
Por que Akka?
Curiosidades
Akka é o nome de uma montanha na Suécia (Lapônia)
É também o nome de uma deusa que representava toda a
beleza do mundo para os antigos povos suecos.
Akka é reativo
Comentários sobre o Manifesto Reativo por Martin Thompson
(https://twitter.com/search?q=%40mjpt777&src=typd) dados em
entrevista ao InfoQ
(https://www.infoq.com/br/news/2015/01/thompson-reactive-
manifesto-2)
• Responsivo e Resiliente parecem ser termos que soam bem e
são propriedades desejáveis. […] Na semana passada eu vi uma
demonstração da linguagem de programação Extempore
controlando uma parede 3D com interação através do toque
humano. A visualização era impressionante e a resposta ao toque
em tempo real. Se sistemas assim podem ser construídos por que
a maioria dos websites levam segundos para responder a
mudanças simples em páginas?
Comentários sobre o Manifesto Reativo por Martin Thompson
(https://twitter.com/search?q=%40mjpt777&src=typd) dados em
entrevista ao InfoQ
(https://www.infoq.com/br/news/2015/01/thompson-reactive-
manifesto-2)
• A maioria das pessoas considera que escalável significa aumentar
escala. Pode ser tão importante aumentar quanto diminuir de
forma que um negócio possa economizar. Tenho clientes do
varejo e de aluguel de espaços para férias e feriados que
apresentam variações de 3 ordens de magnitude na necessidade
de recursos entre períodos tranquilos e períodos de pico.
Dimensionar recursos com base no uso de pico seria desperdício
ao ponto de tornar o negócio economicamente inviável.
Comentários sobre o Manifesto Reativo por Martin Thompson
(https://twitter.com/search?q=%40mjpt777&src=typd) dados em
entrevista ao InfoQ
(https://www.infoq.com/br/news/2015/01/thompson-reactive-
manifesto-2)
• Ao ler sobre sistemas reativos muitas pessoas acham que estes
implicam na necessidade de um sistema de fila de mensagens.
Esse não é o caso. Qualquer mecanismo de comunicação que
proporcione uma fronteira assíncrona binária é suficiente. Pode
ser um produto de mensagens, mas também podem ser
websockets ou um protocolo assíncrono construído sobre REST.
O que é
• Akka oferece um modelo matemático de
computação concorrente (concurrency), conhecido
como o "modelo de ator". Neste modelo, o "ator"
fornece uma construção leve para:
• enviar e receber mensagens,
• tomar decisões locais, eventualmente criando novos
atores, de forma assíncrona e sem bloqueios.
Akka basics
Proposta de valor
• Um modelo de programação unificado para:
• simplificação de concorrência - escrever código com
a ilusão de "single-threadedness" sem bloqueios,
variáveis sincronizadas ou atômicas.
• distribuição mais simples - distribuída por padrão,
com configuração local ou remota.
• tolerância a falhas mais simples - desacopla a
comunicação da falha através da supervisão.
Comparando casos
• Devore e Walsh exemplificam chamadas
assíncronas entre duas “threads”:
• com bloqueio
• com callback
• com Future
• com Akka
Caso 1:
Chamada assíncrona com bloqueio
• Ruim!
Caso 2:
Chamada assíncrona com "callback"
• Razoável.
Caso 3:
Chamada assíncrona com
"Future"
• Melhor.
Akka:
Chamada assíncrona com mensagens
• Melhor ainda!
Akka runtime
Ferramental Scala
necessário
• Partial Function
• Similaridade com “Pattern matching”
• Case classes
• Future
• Implicit
Receita
• Criar aplicação
• sbt, dependências ao Akka
• Criar protocolo
• Criar um ator
• Run it!
Exemplo
Crie um projeto e inclua
Akka
SBT
Akka
Crie um protocolo
Case classes
Crie um ator
Partial function
Bootstrap class
Scala Singleton
App
Bootstrap class
Runtime
Instância o ator
Bootstrap class
Exemplo de chamada
Run
https://github.com/iservport/iservport-akka-sample/tree/master
Using Akka
• Play framework
• Lagom framework (ES/CQRS)
• Akka.js
Leitura recomendada
• https://info.lightbend.com/COLL-20XX-Actor-Based-
Distributed-Systems-Concurrent-Computing-for-
Reactive-Architectures_RES-LP-
TY.html?aliId=18739267
• https://info.lightbend.com/COLL-20XX-Reactive-
Microservices-Architecture-RES-LP.html?lst=WS
• http://akka.io/docs/
mauricio@iservport.com
Maurício Fernandes de Castro

Mais conteúdo relacionado

PPTX
Iservport recipes
PPTX
CQRS/ES com Lagom
PPTX
Estrategia digital, uma visão associativista
PPTX
ScalaCamp Meetup - Coleções em Scala
PPTX
PPTX
iservport - Uma Plataforma de Monitoramento para sua empresa e sua rede de ne...
PPTX
Capital Humano no Setor de TI
PPTX
Zio motivation to create ZIO-native http package
Iservport recipes
CQRS/ES com Lagom
Estrategia digital, uma visão associativista
ScalaCamp Meetup - Coleções em Scala
iservport - Uma Plataforma de Monitoramento para sua empresa e sua rede de ne...
Capital Humano no Setor de TI
Zio motivation to create ZIO-native http package

Mais de Mauricio Fernandes de Castro (8)

PPTX
Apresentação do Aplicativo de Controle de Combustíveis
PPTX
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte II
PPTX
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
PPTX
PPTX
Iservport circle-game
PPT
O efeito chaminé.
Apresentação do Aplicativo de Controle de Combustíveis
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte II
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
Iservport circle-game
O efeito chaminé.
Anúncio

Último (9)

PPT
09_Evolucao de software e_Refatoracao.ppt
PDF
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
PDF
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
PPT
05_slide especificacao de sistemas de software e a uml UML.ppt
PDF
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
PPT
03_slide de Gerenciamento de Projetos .ppt
PDF
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
PDF
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
PPT
06_slide de Arquitetura_de_Software .ppt
09_Evolucao de software e_Refatoracao.ppt
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
05_slide especificacao de sistemas de software e a uml UML.ppt
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
03_slide de Gerenciamento de Projetos .ppt
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
06_slide de Arquitetura_de_Software .ppt
Anúncio

Akka basics