• Nenhum resultado encontrado

O case da Plataformatec com o Elixir. como uma empresa brasileira criou uma linguagem que é usada no mundo inteiro

N/A
N/A
Protected

Academic year: 2021

Share "O case da Plataformatec com o Elixir. como uma empresa brasileira criou uma linguagem que é usada no mundo inteiro"

Copied!
153
0
0

Texto

(1)

O case da Plataformatec

com o Elixir

(2)
(3)

2010

Thread-safe hell

2018

Elixir no mundo inteiro

(4)

Por que fazer uma

linguagem nova?

2010

2018

Thread-safe hell

(5)

Como tomamos essa

decisão?

2010

2018

Thread-safe hell

(6)

Como open source

ajudou?

2010

2018

Thread-safe hell

(7)

“ Personagens”

dessa história

(8)
(9)

RODA NA ERLANG VM

OPEN SOURCE

FUNCIONAL

(10)
(11)

Desenvolvimento, consultoria e treinamento

para empresas digitais

Elixir

Especializada em

(12)

José Valim

Co-fundador da Plataformatec

Criador do Elixir

(13)
(14)

Hugo Baraúna

Co-fundador da Plataformatec

Engenheiro de computação

(15)
(16)

POR QUE CRIAR UMA

LINGUAGEM NOVA?

(17)

2010

Thread-safe hell

(18)

Por que thread-safe?

Algo maior

por trás

(19)

The free lunch is over

(20)
(21)

Lei de Moore

“O número de transistors

em um chip dobra

(22)

E daí?

Performance free lunch

Por muitos anos, o avanço nas CPUs fazia

nosso software ficar mais rápido sem

(23)

Free lunch is over

A partir de ~2003, o clock speed parou

de crescer como antes. Se não fosse assim,

hoje seria normal termos CPUs de 10 GHz.

(24)
(25)

Agora, as CPUs evoluem

de um modo diferente

Passado

Presente e futuro

Clock speed

Hyperthreading

Execution

optimization

Multicore

(26)

Agora, as CPUs evoluem

de um modo diferente

Passado

Presente e futuro

Clock speed

Hyperthreading

Execution

optimization

Multicore

(27)

If you want your application to benefit from the

continued exponential throughput advances in new

processors, it will need to be a well-written

concurrent (usually multithreaded) application

- Herb Sutter

(28)

Concurrency is the next major revolution in how we

write software

- Herb Sutter

(29)

Lei de Amdahl

Quanto menos concorrente for seu

código, menos velocidade ele

(30)

Tirar mais benefício

da evolução de

multicore usando

mais concorrência?

Tirar menos benefício

da evolução de

multicore usando

(31)

Tirar mais benefício

da evolução de

multicore usando

mais concorrência!

Tirar menos benefício

da evolução de

multicore usando

(32)

2010

Thread-safe hell

(33)

Probably, the greatest cost of concurrency is that

concurrency really is hard

- Herb Sutter

(34)

E se concorrência fosse

fácil?

(35)

A BUSCA POR OUTRAS

TECNOLOGIAS

(36)

Todo mundo fala

Todo mundo faz

Concorrência

(37)

The vast majority of programmers today don’t grok

concurrency, just as the vast majority of

programmers 15 years ago didn’t yet grok objects

- Herb Sutter

(38)

https://news.ycombinator.com/item?id=10096100

2015: 3 anos atrás

(39)

https://news.ycombinator.com/item?id=10096100

2015: 3 anos atrás

(40)

Quanto do código que você escreve hoje

é concorrente?

(41)

O problema é o modelo de

threads e locks?

(42)

Seu código

Runtime da

linguagem

Sistema

operacional

CPU

Thread

Thread é uma

abstração de baixo

nível

(43)

Seu código

Runtime da

linguagem

Sistema

operacional

CPU

Abstração nova

de concorrência

Precisamos de uma

nova abstração

(44)
(45)
(46)

Tecnologias que chamaram atenção

(47)

Funcional

Imutabilidade: quando o estado não muda, pode ser acessado por várias threads sem a necessidade de locks (concorrência)

Clojure Haskell

Por que chamaram

atenção?

Abordagem moderna

Funcionalidades como polimorfismo e meta-programação

Distribuição e tolerância

a falha

Suporte nativo a software rodando em

(48)

Funcional

Imutabilidade: quando o estado não muda, pode ser acessado por várias threads sem a necessidade de locks (concorrência)

Clojure Haskell

Por que chamaram

atenção?

Abordagem moderna

Funcionalidades como polimorfismo e meta-programação

Distribuição e tolerância

a falha

Suporte nativo a software rodando em

(49)

Funcional

Imutabilidade: quando o estado não muda, pode ser acessado por várias threads sem a necessidade de locks (concorrência)

Clojure Haskell

Por que chamaram

atenção?

Abordagem moderna

Funcionalidades como polimorfismo e meta-programação

Distribuição e tolerância

a falha

Suporte nativo a software rodando em

(50)

Funcional

Imutabilidade: quando o estado não muda, pode ser acessado por várias threads sem a necessidade de locks (concorrência)

Abordagem moderna

Funcionalidades como polimorfismo e meta-programação

Distribuição e tolerância

a falha

Suporte nativo a software rodando em múltiplas falhas e alta disponibilidade

(51)

Funcional

Imutabilidade: quando o estado não muda, pode ser acessado por várias threads sem a necessidade de locks (concorrência)

Abordagem moderna

Funcionalidades como polimorfismo e meta-programação

Distribuição e tolerância

a falha

Suporte nativo a software rodando em múltiplas falhas e alta disponibilidade

(52)
(53)

CONCORRÊNCIA

DISTRIBUIÇÃO

TOLERÂNCIA A FALHA

A Erlang VM foi

construída pensando em:

Concorrência, distribuição e tolerância a

falhas são nativas, baseados em primitivas da

(54)

30+ anos de desenvolvimento

(55)

O DESENVOLVIMENTO

DO ELIXIR

(56)

2011

(57)

2011

Explorando o desenvolvimento de uma nova linguagem

(58)

2011

“Elixir” em abril de 2011

Modelo de “objetos”

Tinha um modelo de objetos baseado em protypes

Lento

Muito lento. Eval em todo lugar

Quebrando compatibilidade com a VM

(59)

2011

Explorando o desenvolvimento de uma nova linguagem

Vale da

desilusão

(60)

2011

Explorando o desenvolvimento de uma nova linguagem

(61)

2011

Explorando o desenvolvimento de uma nova linguagem

(62)
(63)

Direcionadores

do Elixir

Repensando para onde o design da

linguagem deveria ir

Produtividade

Extensibilidade

(64)

2011

Estudando…

(65)

2011

Eureka!

(66)

2012

A decisão de investimento

e o lançamento do Elixir

(67)

2011

2012

Estou brincando em fazer

uma nova linguagem

(68)

Hum… conte-me mais

sobre isso…

2011

(69)

Estava bem difícil ficar

corrigindo problemas de

concorrência no Rails

2011

(70)

E existe esse negócio, o

“free lunch is over”

2011

(71)

O futuro é programação

concorrente!

2011

(72)

Então decidir tentar fazer

uma nova linguagem

2011

(73)

Da hora! E aí?

2011

(74)

E daí que acho que a

gente deveria investir meu

tempo full time nisso

2011

(75)

Oh really? 🤔

2011

(76)

E não tem outra

linguagem que faz o que tu

queres?

2011

(77)

A que chega mais perto

do que pensei é Clojure. Ela

roda na JVM.

2011

(78)

Acho que seria

bom ter uma opção de

linguagem em uma VM

diferente

2011

(79)

E a VM do Erlang é

perfeita pro que imagino

para o futuro

2011

(80)

Beleza, vamos nessa!

2011

(81)

Fevereiro/2012

(82)

2012 - 2013

A incerteza e

(83)

2012

Lançamento do Elixir

(84)

2012

Lançamento do Elixir

Maio

2013

Dave Thomas anuncia seu livro

sobre Elixir

(85)

Ponto de inflexão

(86)

Signatário do manifesto

ágil

Fundador da Pragmatic

Programmers

Escreveu o primeiro livro

em inglês sobre Ruby

(87)

Jan/12 Feb/12 Mar/12 Apr/12 May/12 Jun/12 Jul/12 Aug/12 Sep/12 Oct/12 Nov/12 Dec/12 Jan/13 Feb/13 Mar/13 Apr/13 May/13 Jun/13 Jul/13 Aug/13

(88)

2013 - 2018

(89)

2012

Lançamento do Elixir

Maio

2013

Criador do Erlang publica que

ficou animado com Elixir

Dave Thomas anuncia seu livro

sobre Elixir

Maio

2013

(90)

It didn’t take long, but

pretty soon my gut feeling

kicked in. This is good shit.

-

Joe Armstrong, creator of Erlang

A week with Elixir

(91)

2013

Dave Thomas anuncia seu livro

sobre Elixir

Junho

2013

O’Reilly anuncia criação de livro

sobre Elixir

Criador do Erlang publica que

ficou animado com Elixir

(92)

2013

Criador do Erlang publica que

ficou animado com Elixir

Primeira ElixirConf

O’Reilly anuncia criação de livro

sobre Elixir

2013

(93)

2013

O’Reilly anuncia criação de livro

sobre Elixir

2014

Phoenix

Primeira ElixirConf

2014

Phoenix,

web framework

for the new web

(94)

Primeira ElixirConf

~2015

Nerves

Phoenix

2014

Software embarcado

com Elixir

2014

(95)

Phoenix

2016

GenStage e Flow

Nerves

2014

Data ingestion and

data processing with:

2015

Streaming

Concurrency

(96)

Nerves

2016

Nosso primeiro cliente de Elixir!

GenStage e Flow

2015

1º retorno financeiro

para Plataformatec

2016

t 2012 2013 2014 2015 2016 $$ $$ $$ $$ $$ $

(97)

GenStage e Flow

2016

Elixir sai na Gartner

Nosso primeiro cliente de Elixir!

2016

Elixir sai no mapa de

linguagens da Gartner

2016

IT Market Clock for

(98)

GenStage e Flow

2018

Hoje

Nosso primeiro cliente de Elixir!

Como está o

ecossistema de Elixir

hoje?

2016

2016

(99)

6.400+ bibliotecas

(100)

25+ livros

(101)

15+ conferências, 190+ meetups

https://www.meetup.com/topics/elixir-programming/ https://elixirforum.com/t/elixir-events-conferences-in-2018/11245

ElixirConf USA

ElixirConf Europe

Elixir Brasil

Etc …

Conferências

Meetups

(102)

Vagas de trabalho no mundo inteiro

(103)

Empresas usando no mundo inteiro

(104)

O poder do open source

Bibliotecas

Meetups

Livros

6400+

190+

25+

15+

Conferências

(105)

O Elixir é maior

que a Plataformatec

Começamos a comunidade.

Não somos donos dela.

(106)

POR QUE O ELIXIR

TEM CRESCIDO?

Parte 4

(107)

Por que o Elixir

tem crescido?

O que tem feito os desenvolvedores e

empresas adotarem Elixir

O futuro é concorrente

Te permite pensar diferente

Ferramental para diferentes

domínios

(108)

Concurrency is the next

major revolution in how

we write software

- Herb Sutter

The Free lunch is over, 2005

O “futuro de 2005” é hoje

A VM do Erlang foi projetada

para concorrência

(109)

Switch

Switch

(110)

Doing concurrency in Erlang or Elixir versus other

languages is a bit like doing branches

in Git vs Subversion. In subversion it was very

complicated to do - and I never did it. In Git it is a lot

easier and I do it all the time.

- Elixir, The next big language for the web

(111)

Concurrency is about a

great deal more than just

exploiting parallelism

(112)

RESPONSIVO

DISTRIBUÍDO

RESILIENTE

Usada de modo correto,

concorrência te ajuda a

fazer software:

Concorrência vai além de

(113)

Responsive

Elastic

Message Driven Resilient

Elastic

The system stays responsive under varying workload

Message Driven

Reactive Systems rely on asynchronous message-passing to establish a boundary between components that ensures loose coupling, isolation and location

transparency

Responsive

The system responds in a timely manner if at all possible

Resilient

The system stays responsive in the face of failure

Reactive manifesto

(114)

O Elixir/OTP suporta

o “reactive manifesto” de

forma nativa

Elastic

Message Driven

Resilient

(115)

Elastic

Message Driven

Resilient

Responsive

Responsive systems focus on

providing rapid and consistent

response times

“ This is microseconds, a fraction of a

milisecond, which is crazy fast.”

(116)

Elastic

Message Driven

Resilient

Responsive

Responsive systems focus on

providing rapid and consistent

response times

O preemptive multitasking e o

garbage collection por processo do

Elixir/OTP permitem a entrega de um

response time previsível

(117)

Elastic

Message Driven

Resilient

Responsive

The system stays responsive in the

face of failure. (…). Failures are

contained within each component,

(…) Recovery of each component is

delegated to another (external)

component (…)

Web

Stats

Supervisor

Em Elixir, todo código roda dentro de processos

Processos são isolados um dos outros

Processos rodam de modo concorrente

Supervisor é um processo que supervisiona

(118)

Elastic

Message Driven

Resilient

Responsive

The system stays responsive

under varying workload. 

Phoenix out of the box

2 milhões de conexões websocket simultâneas

0 timeouts

1 segundo para fazer brodcast

(119)

Elastic

Message Driven

Resilient

Responsive

Reactive Systems rely

on asynchronous message-passing to establish a boundary

between components that ensures

loose coupling, isolation

and location transparency

No Elixir, message-passing é o modelo

padrão de comunicação entre

processos. É o “actor model”.

(120)

Elastic

Message Driven

Resilient

Responsive

Reactive Systems rely

on asynchronous message-passing to establish a boundary

between components that ensures

loose coupling, isolation

and location transparency

“When sending a message, it doesn’t

matter if the recipient process is on

the same node or on another node,

the VM will be able to deliver the

message in both cases”

(121)

Concorrência ajuda em development

não apenas em production

(122)

Tudo que você faz na sua máquina deveria usar

todos os cores. Bootar sua aplicação, compilar

código, resolver dependências, rodar os testes etc.

Até o seu relógio tem 2 cores. Concorrência não é

mais a exceção.

(123)

Por que o Elixir

tem crescido?

O que tem feito os desenvolvedores e

empresas adotarem Elixir

O futuro é concorrente

Te permite pensar diferente

Ferramental para diferentes

domínios

(124)
(125)

Aplicações com UI rica e

real-time estão aumentando

a expectativa dos usuários

(126)

IoT

traz a necessidade

de monitoramento

real-time de múltiplos

(127)

Channels

(128)
(129)

“Nanoservices” architecture

(130)

Sequential

code

(131)
(132)
(133)

Web

DB

Stats

Mailer

(134)

Web

DB

Stats

Mailer

Sup

(135)

Web

DB

Stats

Mailer

Sup

(136)

app2@local

app1@local

(137)

app2@10.0.1.2

app1@10.0.1.1

(138)
(139)
(140)

Por que o Elixir

tem crescido?

O que tem feito os desenvolvedores e

empresas adotarem Elixir

O futuro é concorrente

Te permite pensar diferente

Ferramental para diferentes

domínios

(141)

O Elixir tem ferramental

para diferentes

domínios técnicos

Web apps/Services, backend

for mobile and IoT devices

Embedded software

Data ingestion and data

processing (“medium data”)

GenStage Flow

(142)
(143)

Concurrency is the next major revolution in how we

write software

- Herb Sutter

(144)

Entendi, concorrência é bom para fazer software

reativo, com alta performance, escalável, distribuído,

que não cai etc.

- Alguém

(145)

Mas minha app é muito simples. Não preciso de tudo

isso. Não preciso de concorrência.

- Alguém

(146)

Sua app de hoje é muito

(147)

Quais serão os requisitos da

app de amanhã?

(148)

The free lunch is over

O futuro é concorrente

Quero estar pronto para

construir o software do

futuro

Eu não sei, mas sei que:

{

{

Quais serão os requisitos do software

de amanhã?

(149)

Pontos-chave

Como uma empresa decide criar uma

nova linguagem?

Como sair do nada para uma comunidade

mundial?

Você não precisa ser grande para causar

um grande impacto

(150)

O FUTURO É CONCORRENTE

“The free lunch is over”. Para se beneficiar da

evolução das CPUs, você precisa escrever software concorrente.

CONCORRÊNCIA DEVERIA SER

USUAL

Criar uma ferramenta que permita que fazer

concorrência seja simples. Que nem o Git fez para branches comparado com SVN.

Como uma empresa

decide criar uma

nova linguagem

ALAVANCAR UMA VM FEITA PARA

CONCORRÊNCIA

A VM do Erlang foi projetada para concorrência e é uma tecnologia madura. Mais pessoas deveriam usá-la.

(151)

VISÃO

Construir uma ferramenta que esteja alinhada com uma tendência mundial: “the free lunch is over”

EXECUÇÃO E PERSISTÊNCIA

Demorou 5 anos até termos algum retorno financeiro

Como sair do nada

para uma

comunidade

mundial?

COMUNIDADE OPEN SOURCE

Não seria possível para Plataformatec sozinha desenvolver o ecossistema inteiro

(152)

Você não precisa ser

grande para causar

um grande impacto

na indústria de

software

134k

180k

10k

55

(153)

Referências

Documentos relacionados

É o nome usado para descrever empresas que prestam serviços financeiros, tendo na tecnologia seu grande diferencial — muitas delas, inclusive, não têm agências para atender

A contratação dos serviços contidos no presente material é de responsabilidade exclusiva dos participantes, não sendo a B3 responsável, sob qualquer pretexto, por perdas decorrentes

thread corrente em estado de espera até que outra thread chame os métodos notify ou notifyAll liberando o

A implementação da pesquisa como prática de formação é difícil, mais pela concepção restrita dada à pesquisa pelas “comunidades científicas” do que pela

que a população tem direito, como Transportes da Secretaria de Saúde o Ambulâncias Novas, UTI Móvel, Veículos senhor Francisco Belinho de Almeida, o para o Transporte de

Você pode se encontrar perdida em meio à essas dúvidas, sem saber qual é o melhor para o seu tipo de pele, que irá garantir a proteção tanto nos dias em que estiver fora de

Antes de mostrarmos a rela¸ c˜ ao entre regularidade de uma curva e existˆ encia de reparametriza¸c˜ oes por comprimento de arco dessa curva, notemos uma propriedade sim- ples

Fica claro que o romance é cheio de significados objetivos e universais e que muitos fatores da vida de Gadda, como a família (começou a escrever este livro logo depois da morte