SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
Primeiros Passos com
Nerves
Craft and Deploy Bullet-proof embedded
software in Elixir
Tópicos
● Quem sou eu
● Linux embarcado
● Prazer, Nerves
● Demo ao vivo
E quem quiser conversar mais:
● Outras coisas embarcadas
● Podcasts, videos, etc
● Melhores tipos de queijo e os vários significados de "Trem"
Disclaimer
Quem sou eu?
@donatoaz
in/donato-vianna
Linux Embarcado
Linux Distro (rootfs + kernel)
Customizado para dispositivos embarcados
Aspectos importantes:
Recursos limitados (sort of…)
Overhead de desenvolvimento - cross compiling, flashing, etc
Atualizações em campo
Nerves,
meu nome é Nerves
Plataforma &
Framework &
Tooling &
Toolchains
Por que Elixir Embarcado?
Na verdade, por que não?
Foi pra isso que a BEAM foi criada (telecom, 9x9s, soft RT)
Pattern Matching é perfeito para wire-protocols (0b1101001)
O mundo real é inerentemente concorrente (coisas acontecem
ao mesmo tempo ou em algum tempo não previsível)
Deixe falhar, mas não deixe explodir -- se o usuário não
percebeu tá topzêra demais.
Como tudo se relaciona?
Seu App
---------------
Feito em elixir,
usando o
framework nerves
Toolchain
--------------------
Pre-built pela
comunidade nerves
para arquiteturas
mais populares
Platform
--------------------------
Imagens e rootfs pre-built
pela comunidade. Você pode
customizar se quiser
App
+
Platform
SD card
Firmware
Tooling Tooling
Fluxo de dev ágil, resumido:
Coda coda coda
Compila e empacota firmware
Transfere firmware
Corrige bug(s)
Repete repete
Skynet pronta
Pontos fortes
Boot rápido, em poucos segundos
Tamanho reduzido, rootfs + fw < 100MB
Estratégia de update com imagem inteira
Estratégia de fallback com partições A/B
Robustez ante perda de energia (rootfs é somente leitura)
Atualizações OTA ( )
Revolução
Elixir em dispositivos embarcados
● Quase Hard Real Time
● BEAM bem perto do bare metal
● Use GRiSP https://www.grisp.org/
● HW customizado
● $$$
● Ecossistema mais difícil de
navegar
● Se você estiver fazendo um drone
militar, talvez essa seja a escolha.
● Soft real-time bom, talvez até
us jitter se hackear a BEAM
● BEAM em cima de um linux
bem lean
● Robusto, resiliente, lindo, etc
● Ecossistema fantástico
● HW de prateleira, mas permite
customizado
● Soft-real time ruim se você
usar a stock image
● Você instala elixir e OTP
normalmente, como o faz no
seu desktop
● Não muito robusto para
sistemas "in the wild"
● IoT criado pela vó...
Bonus: Making of
FIM

Mais conteúdo relacionado

Mais procurados

TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....
TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....
TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....tdc-globalcode
 
Monitoramento Colaborativo - Apresentação
Monitoramento Colaborativo - ApresentaçãoMonitoramento Colaborativo - Apresentação
Monitoramento Colaborativo - ApresentaçãoIbs Web
 
Douglasesteves meetupzabbix
Douglasesteves meetupzabbixDouglasesteves meetupzabbix
Douglasesteves meetupzabbixDouglas Esteves
 
Análise estática de código Python
Análise estática de código PythonAnálise estática de código Python
Análise estática de código PythonGuilherme Vierno
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
JVM Performance Monitoring with the Nashorn Javascript engine
JVM Performance Monitoring with the Nashorn Javascript engineJVM Performance Monitoring with the Nashorn Javascript engine
JVM Performance Monitoring with the Nashorn Javascript engineMarcelo Rodrigues
 
Fotografia e Vídeo Digital com Software Livre - Rafael Jeffman
Fotografia e Vídeo Digital com Software Livre - Rafael JeffmanFotografia e Vídeo Digital com Software Livre - Rafael Jeffman
Fotografia e Vídeo Digital com Software Livre - Rafael JeffmanTchelinux
 
Portando Aplicações Para a Plataforma Maemo
Portando Aplicações Para a Plataforma MaemoPortando Aplicações Para a Plataforma Maemo
Portando Aplicações Para a Plataforma MaemoEduardo Lima
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosCaio Cutrim
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceTiago Peczenyj
 
Faça seu próprio servidor pirata com OpenVZ
Faça seu próprio servidor pirata com OpenVZFaça seu próprio servidor pirata com OpenVZ
Faça seu próprio servidor pirata com OpenVZRicardo Bánffy
 

Mais procurados (12)

TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....
TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....
TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....
 
Lab so-abertos-unidade9
Lab so-abertos-unidade9Lab so-abertos-unidade9
Lab so-abertos-unidade9
 
Monitoramento Colaborativo - Apresentação
Monitoramento Colaborativo - ApresentaçãoMonitoramento Colaborativo - Apresentação
Monitoramento Colaborativo - Apresentação
 
Douglasesteves meetupzabbix
Douglasesteves meetupzabbixDouglasesteves meetupzabbix
Douglasesteves meetupzabbix
 
Análise estática de código Python
Análise estática de código PythonAnálise estática de código Python
Análise estática de código Python
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
JVM Performance Monitoring with the Nashorn Javascript engine
JVM Performance Monitoring with the Nashorn Javascript engineJVM Performance Monitoring with the Nashorn Javascript engine
JVM Performance Monitoring with the Nashorn Javascript engine
 
Fotografia e Vídeo Digital com Software Livre - Rafael Jeffman
Fotografia e Vídeo Digital com Software Livre - Rafael JeffmanFotografia e Vídeo Digital com Software Livre - Rafael Jeffman
Fotografia e Vídeo Digital com Software Livre - Rafael Jeffman
 
Portando Aplicações Para a Plataforma Maemo
Portando Aplicações Para a Plataforma MaemoPortando Aplicações Para a Plataforma Maemo
Portando Aplicações Para a Plataforma Maemo
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem Segredos
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open source
 
Faça seu próprio servidor pirata com OpenVZ
Faça seu próprio servidor pirata com OpenVZFaça seu próprio servidor pirata com OpenVZ
Faça seu próprio servidor pirata com OpenVZ
 

Semelhante a Primeiros passos com Nerves (Elixir para dispositivos embarcados)

GDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosGDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosCaio Cutrim
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoRegis Magalhães
 
Arduino - TDC 2011
Arduino - TDC 2011Arduino - TDC 2011
Arduino - TDC 2011mfcastellani
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!Intel Software Brasil
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!Luciano Palma
 
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé LeiteComo ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé LeiteTchelinux
 
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)Bruno Camara
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Video Distribution in the Internet (pt_BR)
Video Distribution in the Internet (pt_BR)Video Distribution in the Internet (pt_BR)
Video Distribution in the Internet (pt_BR)Marcello Azambuja
 
PostgreSQL: Performance Tuning
PostgreSQL: Performance TuningPostgreSQL: Performance Tuning
PostgreSQL: Performance TuningFernando Ike
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?tdc-globalcode
 
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoEmerson Macedo
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Emerson Macedo
 
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTV
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTVDesenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTV
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTVmulder3
 

Semelhante a Primeiros passos com Nerves (Elixir para dispositivos embarcados) (20)

GDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosGDG Conf Node JS sem segredos
GDG Conf Node JS sem segredos
 
Java 01 Java Visao Geral
Java 01 Java Visao GeralJava 01 Java Visao Geral
Java 01 Java Visao Geral
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral Detalhado
 
Arduino - TDC 2011
Arduino - TDC 2011Arduino - TDC 2011
Arduino - TDC 2011
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
 
Apostila metasploit
Apostila metasploitApostila metasploit
Apostila metasploit
 
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé LeiteComo ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
 
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Node.js para embarcados
Node.js para embarcadosNode.js para embarcados
Node.js para embarcados
 
Video Distribution in the Internet (pt_BR)
Video Distribution in the Internet (pt_BR)Video Distribution in the Internet (pt_BR)
Video Distribution in the Internet (pt_BR)
 
PostgreSQL: Performance Tuning
PostgreSQL: Performance TuningPostgreSQL: Performance Tuning
PostgreSQL: Performance Tuning
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?
 
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - Introdução
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTV
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTVDesenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTV
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTV
 
sistema operacional Slackware
sistema operacional Slackwaresistema operacional Slackware
sistema operacional Slackware
 
Cygwin
CygwinCygwin
Cygwin
 
Virtualização
VirtualizaçãoVirtualização
Virtualização
 

Primeiros passos com Nerves (Elixir para dispositivos embarcados)

  • 1. Primeiros Passos com Nerves Craft and Deploy Bullet-proof embedded software in Elixir
  • 2. Tópicos ● Quem sou eu ● Linux embarcado ● Prazer, Nerves ● Demo ao vivo E quem quiser conversar mais: ● Outras coisas embarcadas ● Podcasts, videos, etc ● Melhores tipos de queijo e os vários significados de "Trem"
  • 5. Linux Embarcado Linux Distro (rootfs + kernel) Customizado para dispositivos embarcados Aspectos importantes: Recursos limitados (sort of…) Overhead de desenvolvimento - cross compiling, flashing, etc Atualizações em campo
  • 6. Nerves, meu nome é Nerves Plataforma & Framework & Tooling & Toolchains
  • 7. Por que Elixir Embarcado? Na verdade, por que não? Foi pra isso que a BEAM foi criada (telecom, 9x9s, soft RT) Pattern Matching é perfeito para wire-protocols (0b1101001) O mundo real é inerentemente concorrente (coisas acontecem ao mesmo tempo ou em algum tempo não previsível) Deixe falhar, mas não deixe explodir -- se o usuário não percebeu tá topzêra demais.
  • 8. Como tudo se relaciona? Seu App --------------- Feito em elixir, usando o framework nerves Toolchain -------------------- Pre-built pela comunidade nerves para arquiteturas mais populares Platform -------------------------- Imagens e rootfs pre-built pela comunidade. Você pode customizar se quiser App + Platform SD card Firmware Tooling Tooling
  • 9. Fluxo de dev ágil, resumido: Coda coda coda Compila e empacota firmware Transfere firmware Corrige bug(s) Repete repete Skynet pronta
  • 10. Pontos fortes Boot rápido, em poucos segundos Tamanho reduzido, rootfs + fw < 100MB Estratégia de update com imagem inteira Estratégia de fallback com partições A/B Robustez ante perda de energia (rootfs é somente leitura) Atualizações OTA ( )
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17. Elixir em dispositivos embarcados ● Quase Hard Real Time ● BEAM bem perto do bare metal ● Use GRiSP https://www.grisp.org/ ● HW customizado ● $$$ ● Ecossistema mais difícil de navegar ● Se você estiver fazendo um drone militar, talvez essa seja a escolha. ● Soft real-time bom, talvez até us jitter se hackear a BEAM ● BEAM em cima de um linux bem lean ● Robusto, resiliente, lindo, etc ● Ecossistema fantástico ● HW de prateleira, mas permite customizado ● Soft-real time ruim se você usar a stock image ● Você instala elixir e OTP normalmente, como o faz no seu desktop ● Não muito robusto para sistemas "in the wild" ● IoT criado pela vó...