Apresentação Sistemas de Apoio À Decisão

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 5

Apresentação

[SLIDE 1] SOA
O que é a arquitetura orientada à serviços?

Service-oriented architecture, ou Arquitetura Orientada à Serviços é uma arquitetura de software


que tem como filosofia a disponibilização de aplicações na forma de 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.

[SLIDE 2] Arquitetura Orientada à Microsserviços


O que é a arquitetura orientada à microsserviços?
Os microsserviços são uma arquitetura e uma abordagem para escrever programas de software. Com eles,
as aplicações são desmembradas em componentes mínimos e independentes. Diferentemente da
abordagem tradicional monolítica em que toda a aplicação é criada como um único bloco, os microsserviços
são componentes separados que trabalham juntos para realizar as mesmas tarefas. Cada um dos
componentes ou processos é um microsserviço. Essa abordagem de desenvolvimento de software valoriza
a granularidade, a leveza e a capacidade de compartilhar processos semelhantes entre várias aplicações.
Trata-se de um componente indispensável para a otimização do desenvolvimento de aplicações para um
modelo nativo em nuvem.

E qual a diferença entre o SoA e os microsserviços?


Os microsserviços podem se comunicar entre si, normalmente de maneira stateless. Portanto, as aplicações
criadas dessa maneira podem ser mais tolerantes a falhas. Além disso, as equipes de desenvolvimento
podem escolher as ferramentas que desejarem, pois os microsserviços podem se comunicar por meio de
interfaces de programação de aplicações (APIs) independentes de linguagem.

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).

[SLIDE 3] Arquitetura Orientada à Microsserviços

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.

Como o Docker funciona?

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.

Docker vs Máquina Virtual

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

Primeiramente informaremos no arquivo de configuração qual a versão do NodeJS utilizar.


Usaremos a versão 12-alpine

FROM node:12-alpine

Depois definimos o diretório padrão como '.', que é o diretório atual

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

RUN npm install --production

E por último o comando que vai rodar o projeto dentro do container 'node index.js'

CMD ["node", "index.js"]

Partimos agora para a criação do container. Chamaremos o nosso aplicativo de 'sample-app'

docker build -t sample-app .

Com o container criado, podemos iniciá-lo.

docker run -dp 3000:3000 sample-app

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'

docker stats XXX

Ok, tudo funcional por aqui!


Se visitarmos agora a página da web no endereço 'localhost:3000', veremos que nosso app
apresenta a frase 'Hello World'
:)

Ctrl+D

[SLIDE 6] Kubernetes

O que é o kubernetes

Kubernets é um sistema de código aberto para automatizar a implantação, escalonamento e


gerenciamento de aplicativos em contêineres. Ele agrupa contêineres que constituem um aplicativo
em unidades lógicas para fácil gerenciamento e descoberta. Em outras palavras, você pode
agrupar grupos de hosts executando contêineres Linux, e o Kubernetes ajuda a gerenciar esses
clusters de maneira fácil e eficiente

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.

3. Rollout e Rollback Automático.


Com o uso da plataforma Kubernetes, é possível determinar o estado desejado para os
contêineres implantados.

4. Bin Packing Automático.


É possível determinar que um cluster de nós execute tarefas em container. Por exemplo, é possível
informar ao Kubernetes quanta CPU e memória RAM cada container precisa.

5. Gerenciamento de contêineres funcionais.


O Kubernetes reinicia/substitui os contêineres que falham e exclui aqueles que não respondem à
verificação de integridade definida pelo usuário. Além disso, só os libera para os clientes quando
eles estão totalmente adequados.

6. Gestão de configuração e segredos dos usuários.


O Kubernetes é capaz de armazenar e gerenciar informações confidenciais, como senhas, tokens
e chaves SSH. Ainda implanta e atualiza segredos e configurações de aplicativos sem reconstruir
suas imagens de container e sem expor segredos em sua configuração de pilha.

Exemplo de Microsserviços

(explicar os slides)

Você também pode gostar