Akka basics

28
Akka basics Why | What | When | How …

Transcript of Akka basics

Page 1: Akka basics

Akka basicsWhy | What | When | How …

Page 2: Akka basics

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.

Page 3: Akka basics

Akka é reativo

Page 4: Akka basics

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?

Page 5: Akka basics

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.

Page 6: Akka basics

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.

Page 7: Akka basics

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.

Page 8: Akka basics
Page 9: 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.

Page 10: Akka basics

Comparando casos

• Devore e Walsh exemplificam chamadas

assíncronas entre duas “threads”:

• com bloqueio

• com callback

• com Future

• com Akka

Page 11: Akka basics

Caso 1:

Chamada assíncrona com bloqueio

• Ruim!

Page 12: Akka basics

Caso 2:

Chamada assíncrona com "callback"

• Razoável.

Page 13: Akka basics

Caso 3:

Chamada assíncrona com

"Future"

• Melhor.

Page 14: Akka basics

Akka:

Chamada assíncrona com mensagens

• Melhor ainda!

Page 15: Akka basics

Akka runtime

Page 16: Akka basics

Ferramental Scala

necessário

• Partial Function

• Similaridade com “Pattern matching”

• Case classes

• Future

• Implicit

Page 17: Akka basics

Receita

• Criar aplicação

• sbt, dependências ao Akka

• Criar protocolo

• Criar um ator

• Run it!

Page 18: Akka basics

Exemplo

Page 19: Akka basics

Crie um projeto e inclua

Akka

SBT

Akka

Page 20: Akka basics

Crie um protocolo

Case classes

Page 21: Akka basics

Crie um ator

Partial function

Page 22: Akka basics

Bootstrap class

Scala Singleton

App

Page 23: Akka basics

Bootstrap class

Runtime

Instância o ator

Page 24: Akka basics

Bootstrap class

Exemplo de chamada

Page 25: Akka basics

Run

https://github.com/iservport/iservport-akka-sample/tree/master

Page 26: Akka basics

Using Akka

• Play framework

• Lagom framework (ES/CQRS)

• Akka.js

Page 27: Akka basics

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/

Page 28: Akka basics

[email protected]

Maurício Fernandes de Castro