Apresentação Sistemas de Apoio À Decisão
Apresentação Sistemas de Apoio À Decisão
Apresentação Sistemas de Apoio À Decisão
[SLIDE 1] SOA
O que é a arquitetura orientada à serviços?
Isso quer dizer que todos os módulos desenvolvidos estarão disponibilizados através de um
barramento de comunicação que permite a interoperabilidade entre diferentes tipos de serviços.
Seu grande diferencial é permitir que serviços distintos trabalhem em conjunto. Isso quer dizer que
programas desenvolvidos por empresas diferentes, usando linguagens de programação distintas,
podem ser conectados dentro de um mesmo produto pelos mesmos protocolos de comunicação
Vantagens
1. Reutilização.
Os serviços são independentes entre si. Assim eles podem ser reaproveitados em outros
programas. O reúso também traz grande produtividade às equipes.
2. Flexibilidade.
O isolamento dos módulos permite uma maior flexibilidade como um todo. Novas regras de
negócio podem ser concebidas alterando os serviços pertencentes ao sistema ou mudando a
comunicação entre eles.
3. Fácil manutenção.
Como os módulos são isolados, a manutenção se torna mais fácil. O problema é resolvido dentro
de um módulo específico sem afetar os demais.
4. Interoperabilidade.
Os serviços são independentes da plataforma ou da tecnologia. Eles podem ser desenvolvidos
usando qualquer linguagem de programação em qualquer sistema operacional, desde que
consigam comunicar entre si. O resultado é a integração com outros sistemas, serviços e
aplicações.
5. Padronização.
Toda a SOA é baseada em padrões de comunicação. Então apesar da interoperabilidade e
diversidade de aplicações e serviços dentro do produto, eles devem utilizar a mesma comunicação.
6. Abstração.
Os serviços são abstraídos da implementação. Isso quer dizer que o desenvolvimento não é
específico para um sistema e pode ser adaptado conforme a sua utilização.
Levando em consideração a história do SOA, os microsserviços não são uma ideia completamente nova.
Porém, eles se tornaram mais viáveis graças aos avanços nas tecnologias de containerização. Com os
containers Linux, é possível executar várias partes de uma aplicação de maneira independente no mesmo
hardware e com um controle muito maior sobre os componentes individuais e ciclos de vida. Juntamente
com as APIs e as equipes de DevOps, os microsserviços em containers são os pilares das aplicações
nativas em nuvem (cloud).
WSDL
WSDL (Web Services Description Language ou Linguagem de Descrição de Serviços Web) é um arquivo
baseado em XML que basicamente informa ao aplicativo cliente o que o serviço da web faz e fornece ao
cliente todas as informações necessárias para se conectar ao serviço web e usar todas as funcionalidades
fornecidas pelo serviço web
SOAP
O SOAP (Simple Object Access Protocol ou Protocolo Simples de Acesso à Objetos) é um protocolo para
troca de informações estruturadas em uma plataforma descentralizada e distribuída. Ele se baseia no XML
para seu formato de mensagem, e normalmente baseia-se em outros protocolos da camada de aplicação,
como as chamadas de procedimento remoto (RPC), para negociação e transmissão de mensagens.
Container
Um container Linux é um conjunto de 1 ou mais processos isolados do resto do sistema. Todos os arquivos
necessários para executá-los são fornecidos a partir de uma imagem distinta, o que significa que os
contêineres do Linux são portáteis e consistentes à medida que passam do desenvolvimento para o teste e,
finalmente, para a produção. Isso os torna muito mais rápidos de usar do que os pipelines de
desenvolvimento que dependem da replicação de ambientes de teste tradicionais.
[SLIDE 4] Docker
O que é o Docker?
Resumidamente, o Docker é uma tecnologia de containerização que permite a criação e utilização de
containers Linux. Com ele, é possível tratar os contêineres como máquinas virtuais modulares
extremamente leves além de obter flexibilidade com esses contêineres. É possível criar, implantar, copiar e
movê-los de um ambiente para outro, o que ajuda a otimizar os aplicativos para a nuvem.
A tecnologia Docker usa o kernel Linux e recursos do kernel, como cgroups e namespaces, para separar
processos para que possam ser executados de forma independente. Essa independência é a intenção dos
contêineres - a capacidade de executar vários processos e aplicativos separadamente para fazer melhor
uso de sua infraestrutura, mantendo a segurança que teríamos com sistemas separados.
Ferramentas de contêiner, como o Docker, fornecem um modelo de implantação baseado em imagem. Isso
facilita o compartilhamento de um aplicativo, ou conjunto de serviços, com todas as suas dependências em
vários ambientes. O Docker também automatiza a implantação do aplicativo (ou conjuntos combinados de
processos que compõem um aplicativo) dentro deste ambiente de container.
Cada container funciona como uma máquina virtual modular, sendo possível implantar, copiar e
migrar ambientes de trabalho de forma fácil e eficiente
Explicação Imagem
Uma VM obriga você a gerenciar todo o ambiente relacionado ao servidor (como configurações do
sistema operacional, Patches de segurança, backups, etc). Já no Docker essa gerência é feita de
forma reduzida pois é necessário gerenciar o ambiente relacionado à um container específico.
[SLIDE 5] Docker
Exeplo de Funcionamento
Vamos agora criar um container com o Docker. Para isso precisamos de um projeto...
Perceba que estamos em uma pasta chamada 'docker' que contém um projeto feito em NodeJS e
express
ls
Este projeto simplesmente cria um servidor que imprime o texto 'Hello World'...
Para que o Docker reconheça o projeto, precisamos criar um arquivo de configuração. Este arquivo
chama-se Dockerfile.
vim Dockerfile
FROM node:12-alpine
WORKDIR .
Queremos copiar o diretório atual para o nosso container, então usaremos o comando COPY
COPY . .
Para que o docker execute o projeto corretamente, ele precisará instalar as dependências
necessárias. Usamos, então, o comando 'npm install', que instala todas as deppendências
necessárias para o nosso projeto
E por último o comando que vai rodar o projeto dentro do container 'node index.js'
Para verificar que o container está efetivamente funcionando, rodamos o comando abaixo, que lista
todos os containers da máquina
docker ps
Beleza! Container criado e rodando... Vamos ver mais status dele. Veja que o nome do nosso
container é 'XXX'
Ctrl+D
[SLIDE 6] Kubernetes
O que é o kubernetes
Os clusters do Kubernetes podem abranger hosts em nuvens locais, públicas, privadas ou híbridas.
Por esse motivo, o Kubernetes é uma plataforma ideal para hospedar aplicativos nativos da nuvem
que exigem escalonamento rápido, como streaming de dados em tempo real por meio do Apache
Kafka.
Funcionalidades do Kubernetes
1. Descoberta de Serviços e Balanceamento da Capacidade.
O Kubernetes pode expor um container usando o nome DNS ou usando seu próprio endereço de
IP. Se o tráfego para um container for alto, a plataforma poderá equilibrar a carga e distribuir o
tráfego da rede para estabilizar toda a implantação.
2. Orquestração de Armazenamento.
Com o Kubernetes é possível montar um sistema de armazenamento de sua escolha, sejam locais,
provedores de nuvens públicas ou privadas.
Exemplo de Microsserviços
(explicar os slides)