Post on 25-Jun-2015
description
http://www.takenami.com.br
Introdução a Arquitetura de Sistemas
Igor Takenami
Versão 1.1
itakenami@gmail.comhttp://twitter.com/itakenami
http://www.takenami.com.br
Evolução na Arquitetura de Sistemas• Necessidades do Usuário
- Aplicações Modulares
- Capacidade de Expansão
- Fácil Manutenção
• Descentralização
- Fornecedores diferentes fornecendo produtos para uma mesma solução
- Viabilidade de Custo
- Concorrência
• Dinâmica modificação na infra-estrutura e avanços da tecnologia disponível no mercado
http://www.takenami.com.br
Arquitetura Monolítica• Terminal burro
• Não possui capacidade de processamento
• Conexão a um servidor central
• Compartilhamento de recursos
• Altamente acoplada e centralizada
• Dependência de um único fornecedor de hardware e software
• Custo muito elevado
http://www.takenami.com.br
Cliente/Servidor (2-Tier)• Conhecida como 2 camadas
• Muito utilizado até hoje
• Resultado de evoluções tecnológicas
- Surgimento do PC
• Dividir o processamento em 2 estações: a estação cliente e o servidor
http://www.takenami.com.br
Cliente/Servidor (2-Tier)• Fat Client
- Problemas na atualização das regras de negócio e interface com o usuário
• Thin Client
- Dependente do Banco de Dados
- Problemas na atualização da interface com o usuário
• Problemas na atualização de versões no cliente
http://www.takenami.com.br
Fat Client
http://www.takenami.com.br
Thin Client
http://www.takenami.com.br
Modelo WEB (3-Tier)• Surgimento da Internet
• Modelo cliente/servidor passou a ser implementado em 3 camadas
• Arquitetura mantém 2 camadas lógicas
• Regras de negócio da aplicação estão acopladas a interface
• Acessado de um mesmo programa navegador
http://www.takenami.com.br
Modelo WEB• Servidor possui as telas e regras de negócio da
aplicação
• Uma atualização (na interface ou nas regras de negócio) implica em atualizar somente o respectivo servidor
• Clientes deixam de processar a informação e passam a solicitar e receber respostas do servidor
http://www.takenami.com.br
Modelo WEB
http://www.takenami.com.br
Modelo n Camadas (n-Tier)• Evolução das tecnologias para implementação de
sistemas distribuídos
• Necessidade de uma maior descentralização das camadas
• Desacopla fisicamente a interface da aplicação das regras de negócio
• Processamento pode ser distribuído para diversos servidores (hosts)
• Regras de negócio são independentes da interface
- serviços para diversos tipos de aplicação
http://www.takenami.com.br
Modelo n Camadas
http://www.takenami.com.br
Dispositivos, com exceção do navegador, precisavam acessar os
componentes de negócio diretamente e para isto teriam que ser compatíveis
com a tecnologia em que foi construído
http://www.takenami.com.br
WebServices• Integração entre sistemas independente da tecnologia que foi
desenvolvido
• Componentes passam a disponibilizar seus métodos através de serviços
• Utiliza a infra-estrutura da internet (TCP/IP) através de HTTP (como meio de transporte) assim como os navegadores
• Requisições HTTP com conteúdo dos pacotes em XML/SOAP
• Implementação no servidor WEB para receber o pacote XML/SOAP e interpretar a informação
• Implementação para transformar a resposta em XML/SOAP e devolver ao solicitante
http://www.takenami.com.br
XML é utilizado para descrever um conjunto de dados especificado através
de um padrão aberto e conhecido como SOAP (Simple Object Access
Protocol)
http://www.takenami.com.br
SOAP Request
<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Header/> <S:Body> <ns2:adicionar xmlns:ns2="http://eai.pos.unijorge/"> <nome>Igor</nome> <cpf>123</cpf> <endereco>Av. X</endereco> <email>itakenami@gmail.com</email> <salario>1000.0</salario> </ns2:adicionar> </S:Body></S:Envelope>
http://www.takenami.com.br
SOAP Response
<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:adicionarResponse xmlns:ns2="http://eai.pos.unijorge/"> <return>1</return> </ns2:adicionarResponse> </S:Body></S:Envelope>
http://www.takenami.com.br
SOA - Arquitetura Orientada a Serviços
• Reuso de componentes (serviços)
• Centralização dos processos de negócio disponibilizados através de serviços
• Composição: Novos serviços são criados a partir de um determinado fluxo de serviços existentes
• Foco em reúso e negócio
• Facilita a integração de sistemas
http://www.takenami.com.br
Aplicação WEB• Projetada para navegação por documentos no formato
HTML
• Código de formatação de páginas (HTML) amarrado a código do sistema
• Modelo síncrono (Cliente/Servidor/Cliente)
• Perda de contexto
• Web 1.0
- Super valorização das empresas que não existiam fisicamente
- Bolha
http://www.takenami.com.br
Web 2.0• Plataforma para utilização de serviços WEB com foco no
usuário e usabilidade
• Navegação (em diversos formatos) e utilizando diversas tecnologias
• Ajax - Asynchronous Javascript And XML
- Requisição sob demanda
- Modelo assíncrono
- Parte do processamento no cliente (Javascript)
• Novos formatos de integração entre sistemas: REST e JSON
http://www.takenami.com.br
REST• Transferência de Estado Representacional
(Representational State Transfer)
• Tese de doutorado escrita por Roy Fielding em 2000
- um dos principais autores da especificação do HTTP
• Utilizado para fazer integração entre sistemas, assim como os Web Services
http://www.takenami.com.br
Descreve qualquer interface web que utiliza XML/JSON e HTTP sem as abstrações dos
protocolos baseados em trocas de mensagem
Significado prático de REST ?
http://www.takenami.com.br
Exemplo de REST
http://www.takenami.com.br
Arquitetura REST• Utiliza o protocolo HTTP não só como
transporte, mas como parte de sua especificação
• Arquitetura baseado em requisições HTTP sem estado (stateless)
• Cada mensagem HTTP contém toda a informação necessária para o pedido
• Define um pequeno conjunto de operações como POST, GET, PUT e DELETE
• Sintaxe universal para identificação dos recursos
http://www.takenami.com.br
JSON• JavaScript Object Notation. Formato leve para
descrição de dados
• Subconjunto da notação de objeto de JavaScript
- seu uso não requer Javascript exclusivamente
• Alternativa ao XML para descrição de dados
• Parse nativo em Javascript (eval)
http://www.takenami.com.br
{ "id":1, "autor":"Jorge Amado", "livros":[ {"titulo":"Tieta do Agreste","ano":1977}, {"titulo":"Tocaia Grande","ano":1984} ] }
http://www.takenami.com.br
Formato JSON
{ "id":1, "autor":"Jorge Amado", "livros":[ {"titulo":"Tieta do Agreste","ano":1977}, {"titulo":"Tocaia Grande","ano":1984} ] }
http://www.takenami.com.br
Dúvidas ?