O documento discute a evolução da arquitetura de sistemas, desde modelos monolíticos até modelos distribuídos em nuvem. Apresenta diferentes modelos como cliente-servidor, web, n camadas e orientado a serviços. Também discute tecnologias como WebServices, REST e JSON que permitem a integração entre sistemas distribuídos.
1. http://www.takenami.com.br
Introdução a
Arquitetura de Sistemas
Igor Takenami
itakenami@gmail.com
http://twitter.com/itakenami
Versão 1.1
2. 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
3. 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
4. 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
5. 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
8. 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
9. 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
11. 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
13. 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
14. 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
15. 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)
18. 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
19. 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
20. 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
21. 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
22. http://www.takenami.com.br
Significado prático de REST ?
Descreve qualquer interface web que utiliza
XML/JSON e HTTP sem as abstrações dos
protocolos baseados em trocas de
mensagem
24. 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
25. 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)