arquitetura shared-nothing em 3 camadas

Documentos relacionados
código belo vs. legado e qualidade de software

modelos, bancos de dados e active record

Desenvolvimento de Aplicações Distribuídas

ALUNO: RONI FABIO BANASZEWSKI

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

Introdução a Web. Programação para a Internet. Prof. Vilson Heck Junior

Web Presentation Patterns - Controllers

EA975 - Laboratório de Engenharia de Software

Arquitetura em Camadas

Capítulo 7. A camada de aplicação

Módulo II Arquitetura em Camadas

Ambiente Educacional Interativo Móvel para atividade em sala de aula 1

Ademir Cristiano Gabardo. Novatec

Introdução ao Desenvolvimento de

envolvidos numa comunicação

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

Introdução à Computação

World Wide Web e Aplicações

Desenvolvimento Web. [Versão 5 Maio/2019] Professor Emiliano S. Monteiro

Técnicas de Programação para a Web. Luiz Cláudio Silva. Novembro de Apresentação

DESENVOLVIMENTO DE SISTEMAS WEB. Lista de Exercícios AV2-01. Luiz Leão

Programação para Internet

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator

Desenvolvimento Web. Introdução Geral. Prof. Vicente Paulo de Camargo

Redes de Computadores

software as a service (saas) e service-oriented architecture (soa)

JAVA PARA WEB E EJB APLICAÇÕES WEB, SERVIDORES DE APLICAÇÃO, CONTAINERS WEB

Conceitos Básicos

Nesta disciplina aprenderemos. HTML CSS JavaScript Jquery PHP

>>> RESTful API >>> Com Node.js e Restify. Name: Anderson Pimentel Date: 19 de Março de

Redes de Computadores

Colocando um site na Internet

Frameworks funcionais para JSF que proporciona o desenvolvimento de aplicações computacionais WEB

Desenvolvimento Web III. Prof. Felippe Scheidt

Curso de Aprendizado Industrial Desenvolvedor WEB

Desenvolva passo a passo um Sistema Web seguro com C# e Web Services!

Noções do padrão MVC e DAO

DESVENDANDO O FRAMEWORK ANGULARJS 1. Ricardo Wiesner 2, Gerson Battisti 3.

PHP. Programando com Orientação a Objetos. Pablo Dall Oglio. Novatec

Introdução ao Zend Framework 2

Camada de Aplicação. Redes Industriais Prof. Rone Ilídio

BD e Cloud Gerenciamento de. Dados na Nuvem

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Arquitetura da World Wide Web. WWW: Histórico. WWW: Usos. WWW: Histórico. WWW Tecnologias Fundamentais. Comércio Eletrônico na WWW

Projeto de Sistemas para Internet

Solisc 2010 Gerenciamento de Projetos com dotproject

Aplicações Web com Servlets e JSP

EasyAzure. EasyAzure. Guia do programa. Ingram Micro Brasil. Versão 1.7

Desenvolvimento Web TCC Turma A-1

ach 2147 desenvolvimento de sistemas de informação distribuídos

WebApps em Java com uso de Frameworks

Informática Parte 26 Prof. Márcio Hunecke

Capítulo 7. A camada de aplicação

Ruby on Rails Avançado

Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo

Programação WEB Introdução

SAU Sistema de Automação Universitária Mainframe Unisys. Sistemas proprietários e não integrados. Plataforma cliente/servidor

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

INTRODUÇÃO A PROGRAMAÇÃO AVANÇADA PARA WEB E AO HTML. Prof. Msc. Hélio Esperidião

M V C P R O F. M E. H É L I O E S P E R I D I Ã O

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO WEB E MOBILE

SERVIÇOS WEB. Frankley Gustavo F. Mesquita, Tamiris Souza Fonseca. 27 de junho de 2016

INTRODUÇÃO A PROGRAMAÇÃO PARA WEB

Redes de Computadores I Seminário Novas Tecnologias em Redes HTML5. Jessica da Silva Hahn Letícia Aparecida Coelho

estimativa de custos ágil

Páginas dinâmicas. Eduardo Ferreira dos Santos. Agosto, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 30

Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte

Informática Questões Aulas 08, 09 e 10 Prof. Márcio Hunecke

Facilitando sua vida com

Aula Prática 2 BD PostgreSQL. Profa. Elaine Faria UFU

Apresentação. Descrição de macro atividades

PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS

Tipos de Clusters. Introdução. Introdução 21/03/12

PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS

Model-View-Controller (MVC) Fernando de Freitas Silva

Capítulo 2. Camada de aplicação

O CMS JOOMLA! UM GUIA PARA INICIANTES

Aula 4 Arquitetura de software na Web atual: AJAX e Ajax. Prof: Dra. Renata Pontin de Mattos Fortes

FIGURA 59 Interação entre componentes da plataforma CrystalWalk. Fonte: do autor.

Práticas de Desenvolvimento de Software

Arquitecturas de Software Enunciado de Projecto

PARA QUEM É ESTE CURSO?

Coordenação Geral de Tecnologia da Informação - CGTI. Diretriz de Arquitetura de Sistemas. Versão 1.0. MAPA/SE/SPOA/CGTI, 2012 Página 1

Projeto Disciplinar de Infra-Estrutura de Software WEBZINE MANAGER REVISTA ELETRÔNICA INTERAÇÃO NEWS

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Aprendizagem de algoritmos Numéricos na Web usando PHP

4ª Edição Pablo Dall Oglio

Desenvolvimento Web TCC Turma A-1

IFC PORTARIAS: SISTEMA PARA PUBLICAÇÃO E MONITORAMENTO DE PORTARIAS

PROGRAMAÇÃO PARA SERVIDOR APRESENTAÇÃO EM SISTEMAS WEB DA DISCIPLINA. Prof. Dr. Daniel Caetano

Java para WEB com Struts 2 e Hibernate

GERAÇÃO DE ARQUIVOS DE SCRIPT EM PHP. Acadêmico: Leonardo Sommariva Orientador: Alexander Roberto Valdameri

BANCO DE DADOS. Introdução. Prof. Marcelo Machado Cunha

M V C, J S O N E X M L P R O F. M E. H É L I O E S P E R I D I Ã O

contidos na descrição do serviço para localizar, contactar e chamar o serviço. A figura mostra os componentes e a interação entre eles.

Um Mecanismo de Auto Elasticidade com base no Tempo de Resposta para Ambientes de Computação em Nuvem baseados em Containers

INTRODUÇÃO ÀS APLICAÇÕES PARA WEB

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Transcrição:

arquitetura shared-nothing em 3 camadas engenharia de sistemas de informação Daniel Cordeiro 29 de agosto de 2017 Escola de Artes, Ciências e Humanidades EACH USP

info sobre o projeto

projeto: iterações 1 x O projeto acontecerá em iterações de 2 semanas. No final da iteração, cada membro deve entregar uma avaliação das contribuições de cada um dos membros da equipe. As respostas serão confidenciais e usadas apenas na atribuição de notas individuais dos membros da equipe. Por isso, seja honesto e justo! A entrega, individual, deve conter: 1. link para o projeto no GitHub 2. uma frase que resuma o que você fez nessa iteração 3. para cada outro membro do grupo a resposta da pergunta: De modo geral, o membro excedeu as expectativas, atendeu as expectativas, fez só o mínimo necessário ou ficou aquém das expectativas do grupo durante a última iteração? considere todos os fatores que podem contribuir para o desenvolvimento do projeto: essa pessoa se comunicou com o resto da equipe de forma eficiente? Ela tentou fazer a sua parte no trabalho? Ela estava tecnicamente preparada para realizar o trabalho (ela tinha conhecimento do que foi visto em aula e das ferramentas necessárias)? justifique cada avaliação 1/15

2.1 100.000 pés Cliente-servidor (vs. P2P) 2.2 50.000 pés HTTP e URIs 2.3 10.000 pés XHTML e CSS 2.4 5.000 pés Arquitetura de 3 camadas Escalabilidade horizontal Navegador (Firefox, Chrome...) css html Internet Servidor Web (Apache, Microsoft IIS, WEBrick) Camada de Apresentação Servidor de Aplicação (rack) Site rottenpotatoes. com Camada Lógica Banco de Dados (Postgres, SQLite) Camada de Persistência 2.5 1.000 pés Model-View-Controller (vs. Page Controller, Front Controller) Modelos Controladores Visões 2.6 500 pés: Modelos Active Record (vs. Data Mapper) 2.7 500 pés: Controladores REST (Representational State Transfer para ações auto-contidas) 2.8 500 pés: Template View (vs. Transform View) Active Record REST Template View Data Mapper Transform View 2/15

criação de conteúdo dinâmico Antigamente, a maior parte das páginas Web eram (coleções de) arquivos simples Mas os sites mais interessantes da Web 1.0/e-commerce executam um programa que cria cada página Originalmente: templates com código embutido ( snippets ) Eventualmente o código acabou movido para fora do servidor Web 3/15

sites que na verdade são programas (saas) Como você faz para: mapear a URI para o programa & função corretos passar argumentos? invocar programas no servidor? lidar com armazenamento persistente? lidar com cookies? lidar com erros? empacotar a saída para o usuário? Usar arcabouços facilita essas tarefas mais comuns Sistema de arq. ou BD seu app persistência lógica (app) Common Gateway Interface (CGI) apresentação (servidor Web) cliente (navegador) 4/15

ambiente do desenvolvedor vs. implantação de média escala f le.sqlite3 MySQL PostgreSQL Database cache SQLite adapter Rails library rack Webrick Puma MySQL adapter Rails library rack thin Page cache MySQL adapter Rails library rack thin MySQL adapter Rails library rack thin Apache w/mod_rails + caching mode HTTP servers & static asset caches Dynos rodando apps Desenvolvedor Implantação de média escala Implantação cuidadosa em larga escala (ex: Heroku) 5/15

shared nothing Balanceador de Carga Servidor Web Servidor Web Servidor de recursos Camada de Apresentação Balanceador de Carga Servidor de Aplicação Servidor de Aplicação Servidor de Aplicação Servidor de Aplicação Camada Lógica (de Aplicação) Balanceador de Carga Banco de Dados Mestre Banco de Dados escravo 1 Banco de Dados escravo n Camada de Persistência 6/15

resumo: saas na web 1.0 i Navegador requisita um recurso web (URI) usando HTTP HTTP é um protocolo requisição resposta simples que depende de TCP/IP em SaaS, a maior parte das URIs disparam a execução de um programa HTML é usado para codificar o conteúdo, CSS para estilizá-lo Cookies permitem que o servidor acompanhe o rastro do usuário o navegador automaticamente passa os cookies para o servidor em cada requisição o servidor pode mudar o cookie em cada requisição uso típico: cookie inclui uma forma de acessar a informação do lado do servidor por isso muitos sites não funcionam quando os cookies estão totalmente desabilitados 7/15

resumo: saas na web 1.0 ii Arcabouços fazem com que essas abstrações sejam mais convenientes para o programador usar, sem que ele precise entrar em todos os detalhes... e permitem mapear um app SaaS na arquitetura em 3 camadas shared-nothing 8/15

pergunta Quais afirmações são corretas sobre as duas requisições abaixo: GET /foo/bar POST /foo/bar 1. Eles são indistinguíveis para a app SaaS 2. Eles são distinguíveis e devem ter comportamentos diferentes 3. Eles são distinguíveis e podem ter comportamentos diferentes 4. Um dado app pode ser configurado para lidar com um ou com outro, mas não ambos 9/15

model view controller

até que ponto... há alguma estrutura comum em aplicações...... interativas...... que pode simplificar o desenvolvimento de apps se nós a capturarmos em um arcabouço? 10/15

2.1 100.000 pés Cliente-servidor (vs. P2P) 2.2 50.000 pés HTTP e URIs 2.3 10.000 pés XHTML e CSS 2.4 5.000 pés Arquitetura de 3 camadas Escalabilidade horizontal Navegador (Firefox, Chrome...) css html Internet Servidor Web (Apache, Microsoft IIS, WEBrick) Camada de Apresentação Servidor de Aplicação (rack) Site rottenpotatoes. com Camada Lógica Banco de Dados (Postgres, SQLite) Camada de Persistência 2.5 1.000 pés Model-View-Controller (vs. Page Controller, Front Controller) Modelos Controladores Visões 2.6 500 pés: Modelos Active Record (vs. Data Mapper) 2.7 500 pés: Controladores REST (Representational State Transfer para ações auto-contidas) 2.8 500 pés: Template View (vs. Transform View) Active Record REST Template View Data Mapper Transform View 11/15

o padrão de projeto mvc Objetivo: separar os dados (modelo) da UI & apresentação (visão) com o uso de um controlador intercede as ações dos usuários que pedem acesso aos dados expõe os dados para a renderização (a ser realizada pela visão) Apps Web podem parecer obviamente MVC por definição, mas outras alternativas são possíveis... Ações dos usuários Diretrizes para renderização dos dados View Controller Model Lê os dados Atualiza os dados Dados devolvidos para as visões pelo controlador 12/15

cada entidade tem um modelo, controle & conjunto de visões Movies Controller Movie Moviegoers Controller Reviews Controller Moviegoer Review 13/15

alternativas ao mvc Page Controller (Ruby Sinatra) Front Controller (J2EE servlet) Template View (PHP) page A models A models models page B page C B C app views views Rails Usa por padrão apps estruturados como MVC, mas outras arquiteturas podem ser melhores para certos apps. 14/15

pergunta Qual afirmação não é verdade sobre o padrão arquitetural Model View Controller: Em apps SaaS na Web, o conteúdo relacionado às ações do controlador e visão são transmitidos via HTTP Todos os apps MVC possuem uma parte cliente (ex: navegador) e uma parte na nuvem (ex: app Rails em uma plataforma de computação em nuvem) Model View Controller é só um dentre vários modos possíveis de estruturar uma app SaaS Apps Peer-to-Peer (o contrário de apps cliente servidor) podem ser estruturados com Model View Controller 15/15