peapescarte/pescarte-plataforma

Zoey Pessanha

Software Engineer
Docker
Elixir
GitHub

PEA Pescarte

Setup Ambiente de desenvolvimento

Primeira vez rodando

Este projeto possui três opções para ambientes de desenvolvimento:

Estrutura do projeto

O projeto PEA Pescarte está implementado como uma aplicação umbrella. Isso significa que o projeto pode ser entendido como disposto no padrão monorepo.
Em suma, o projeto é dividido entre algumas aplicações internas, com responsabilidades diferentes e bem definidas. Siga a tabela abaixo para entender cada app interno e suas responsabilidades:

Guias

Por que usar Elixir?

Elixir é uma linguagem funcional, criada em 2011 pelo José Valim. Ela é baseada na BEAM, a máquina virtual do Erlang. O Erlang é conhecido por ser uma linguagem robusta, perfeita para aplicações que necessitam ser tolerantes à falhas, concorrentes - aproveitando todo o potencial da máquina - e escaláveis.
O Elixir surgiu com a proprosta de modernizar a sintaxe do Erlang, que é fortemente herdada de Prolog - uma linguagem do paradigma lógico - e adicionar um gerenciador de depêndencias. Elixir e Erlang não são linguagens funcionais porque querem ser, e sim pois a concorrência e paralelismo num programa POO, mutável e imperativo, torna o gerenciamento das threads algo que beira o impossível.
Vantagens da programação funcional:
Imutabilidade
Melhor testabilidade
Programação declarativa
Sintaxe mais humanamente amigável
Funções puras, sem efeitos colaterais

Diferença entre Concorrência e Paralelismo em Computação

Fazendo a correlação deste cenário onde a máquina de refrigerante representa a CPU do computador e a fila de pessoas representa a fila de processos os quais essa CPU executa.
Agora imagine que temos 2 (duas) máquinas de refrigerante - ou seja, duas CPUs, ou de forma mais realista, dois núcleos dentro da CPU - e agora cada máquina de refrigerante possui sua própria fila de pessoas - processos da CPU. Neste caso, chamamos esse modelo de computação de Paralelismo.
Num último caso, imagine que existe apenas 1 (uma) máquina de refrigerante (CPU) porém essa máquina é capaz de atender múltiplas filas de pessoas (processos), ou seja, mais de uma pessoa pode retirar seu item ao mesmo tempo da máquina. Para esse modelo de computação damos o nome de Concorrência.
A imagem a seguir exemplifica os conceitos de Paralelismo e Concorrência:

BEAM - máquina virtual do Erlang

A BEAM é a máquina virtual do Erlang (assim como a JVM do JAVA). Seu funcionamento básico é: ela divide cada ação do seu programa em pequenas ações, chamados de processos (não confundir com os processos do sistema operacional da máquina local). Esses processos são supervisionados pela própria BEAM, para que quando haja algum erro, o sistema se recupere sozinho e sem atrapalhar os outros processos.
Quando uma aplição Elixir/Erlang é iniciada, a BEAM cria um "Agendador" (Scheduler) para cada núcleo da CPU da máquina. Esses Agendadores também são processos, mas que supervisionam, agendam e gerenciam os outros processos da aplicação. A imagem a seguir exemplifica a crição dos Agendadores:
Partner With Zoey
View Services

More Projects by Zoey