Práticas de Desenvolvimento de Software

Documentos relacionados
Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

Programação para Web

Aula 1 Cleverton Hentz

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

Curso de Aprendizado Industrial Desenvolvedor WEB

Universidade Federal de Mato Grosso

SISTEMAS DISTRIBUÍDOS

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Programação para a Web - I. José Humberto da Silva Soares


TECNOLOGIA WEB Aula 1 Evolução da Internet Profa. Rosemary Melo

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02. Prof. Gabriel Silva

Servidor, Proxy e Firewall. Professor Victor Sotero

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Conceitos Básicos

INFORMÁTICA FUNDAMENTOS DE INTERNET. Prof. Marcondes Ribeiro Lima

Rede de Computadores (REC)

Desenvolvimento Web Protocolos da Internet

CRIAÇÃO DE SITES (AULA 1)

Sistemas Distribuídos

Introdução ao Modelos de Duas Camadas Cliente Servidor

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

Aula 14 Serviços Internet (Servidor Web Apache)

SERVIDOR VIRTUAL BÁSICO - LINUX

Web. Professor: Rodrigo Alves Sarmento

1º Seminário de Software Livre Tchelinux Software Livre: leve adiante esta idéia. Soluções de Web Caching e Web Acceleration

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores

Internet. Internet é uma Rede de Computadores, que opera no Modelo Cliente/Servidor e interliga diversos tipos de dispositivos

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

Programando em PHP. Conceitos Básicos

Desenvolvimento de Aplicações Web

Unidade 1. Conceitos Básicos

/ /

Redes - Internet. Sumário Aula 3,4 e 5 9º C } Estrutura baseada em camadas. } Endereços IP. } DNS -Domain Name System

Desenvolvimento em Ambiente Web. Prof. André Y. Kusumoto

Relatorio do trabalho pratico 2

Sistemas Operacionais

Alexandre Malveira, Wolflan Camilo

Introdução às redes de computadores

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

Tecnologias Web. Lista de Exercícios AV02. Luiz Leão

Desenvolvendo Websites com PHP

DELEGAÇÃO REGIONAL DO ALENTEJO CENTRO DE FORMAÇÃO PROFISSIONAL DE ÉVORA REFLEXÃO 3

Protocolos de Internet (família TCP/IP e WWW) Primeiro Técnico. Prof. Cesar

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico.

DWEB. Design para Web. Fundamentos Web I. Curso Superior de Tecnologia em Design Gráfico

Aplicativos para Internet Aula 01

Minicurso Computação em Nuvem Prática: Openstack

Infraestrutura: devo usar a nuvem? Prof. Artur Clayton Jovanelli

Armazenamento em nuvem é feito em serviços que poderão ser acessados de diferentes lugares, a qualquer momento e utilizando diferentes dispositivos,

Introdução a Computação nas Nuvens

Rotina de Discovery e Inventário

Programação para Internet I. 2. O protocolo HTTP. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Programação e Designer para WEB

-Apresentação pequena -Essencialmente, cobre os aspectos principais de funcionamento da Akamai CDN.

Benefícios e processos relacionados à migração e servidores dedicados para cloud servers. Juliano Simões. Diretor de Tecnologia

Cloud Computing. Edy Hayashida

COORDENAÇÃO DE TECNOLOGIA (COTEC) ABRIL/2011

Oportunidades 30/05/2014

Tópicos de Ambiente Web Conceitos Fundamentais Redes de Dados

PARANÁ GOVERNO DO ESTADO

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

TECNOLOGIA WEB INTERNET PROTOCOLOS

Rede de Computadores

GESTÃO DE SISTEMAS OPERACIONAIS II

Implementar servidores de Web/FTP e DFS. Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc.

CONCEITOS BÁSICOS DE INTERNET. Disciplina: INFORMÁTICA 1º Semestre Prof. AFONSO MADEIRA

Introdução à Tecnologia Web. Tipos de Sites. Profª MSc. Elizabete Munzlinger

A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer

XHTML 1.0 DTDs e Validação

Desempenho de Web Servers

Ferramentas para Desenvolvimento Web

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. Programação WEB

Rede de Computadores II

AULA 01 INTRODUÇÃO. Eduardo Camargo de Siqueira REDES DE COMPUTADORES Engenharia de Computação

INTERNET. Professor: Leandro Crescencio Colégio Politécnico 1

Disciplina: Redes de Comunicação. Curso Profissional Técnico de Gestão e Programação de Sistemas Informáticos. Setembro 2013

SERVIDORES REDES E SR1

Era da Informação exige troca de informações entre pessoas para aperfeiçoar conhecimentos dos mais variados

Computação nas Nuvens

Prof. Samuel Henrique Bucke Brito

Soluções Completas. Fundada em 1991, a.compos é pioneira na área de soluções em tecnologia, atuando nas áreas de:

17/03/ :04 Leite Júnior QUESTÕES FCC 2010 REDES (INTERNET/INTRANET)

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

Treinamento de Provas. Aula 1 Bloco 2 Novas tecnologias e Protocolos. Cespe/UnB Com fundamentação teórica

CONSTRUÇÃO DE PÁGINAS WEB I. Prof. Antonio Miguel Faustini Zarth

UM NOVO CONCEITO EM AUTOMAÇÃO. Série Ponto

Centro Digital Aula 1

TECNOLOGIAS WEB AULA 2 PROF. RAFAEL DIAS

Servidores Virtuais. Um servidor à medida da sua empresa, sem investimento nem custos de manutenção.

1 - Q82232 ( FCC MPE-RS - Agente Administrativo / Noções de Informática / Internet e intranet; )

Transcrição:

Aula 8. 13/04/2015. Práticas de Desenvolvimento de Software Aula 8 - Arquitetura e infraestrutura de aplicações Web. Oferecimento

Modelo cliente-servidor (1) Cliente Rede scheme://domain:port/path?query_string#fragment_id http://example.com/pages?page_id=1

Modelo cliente-servidor (2) 1. A URL é parseada 2. É feito o lookup do IP a partir da URL (DNS) 3. É aberto um pedido de conexão com o servidor 4. O servidor aceita a conexão 5. A solicitação de conteúdo é realizada 6. O conteúdo é preparado 7. O conteúdo é servido para o cliente 8. O conteúdo é apresentado

Modelo cliente-servidor (3) Clientes Rede es

Protocolo HTTP (1) Hypertext É um texto estruturado que possui ligações (hyperlinks) com outros elementos. Protocolo Neste contexto, é uma forma especificada de comunicação entre dispositivos interconectados através de uma rede. WWW A World Wide Web é um sistema de documentos (hipertextos) interligados entre si e que podem ser acessados pela Internet.

Protocolo HTTP (2) Protocolo HTTP O HyperText Transfer Protocol é o protocolo para formatação e troca de hipertexto entre servidores web e clientes conectados através de uma rede. Este protocolo é a base de comunicação de dados da World Wide Web.

Protocolo HTTP (3) Cliente Rede HTTP Request Headers, método, recurso solicitado, conteúdo GET POST HEAD PUT DELETE HTTP Methods HTTP Response Headers, status (200, 404, 500, ), conteúdo,

Protocolo HTTP (4) index.html <html> <body> Hello World! <img src="smile.png"> </body> </html> + Cliente GET index.html index.html smile.png = GET smile.png Hello World! smile.png

Tecnologias web (1) Cliente Rede HTML CSS JavaScript jquery AngularJS Bootstrap Internet HTTP Routing CDN Proxy VPN Rails SQL Caching Web server App server Deployment

Tecnologias web (2) Cliente Rede HTML CSS JavaScript Internet Rails NEXT CLASS! HTTP SQL Routing Caching jquery AngularJS Bootstrap CDN Proxy VPN Web server App server Deployment

Arquitetura de uma aplicação Web

Arquitetura do Clickgram (1) Você é o responsável pela infraestrutura de um novo aplicativo chamado Clickgram. CHALLENGE CONSIDERED O Clickgram permite que qualquer pessoa compartilhe uma foto com seus amigos em apenas um clique! Chegou o momento de você colocar o aplicativo no ar e seu chefe exigiu que não ocorram problemas de escalabilidade ou de disponibilidade.

Arquitetura do Clickgram (2) CHALLENGE ACCEPTED

Arquitetura do Clickgram (3) A primeira versão do Clickgram possui as seguintes características: Possui acesso apenas através da aplicação web Fotos podem ser armazenadas nos formatos JPG, GIF ou PNG A aplicação web foi desenvolvida com Ruby on Rails O banco de dados é o MySQL O cache em memória é implementado com Redis

Arquitetura do Clickgram (4) Requisição Resposta Rails Redis MySQL HD (arquivos)

Arquitetura escalável e redundante (1) Rails MySQL Redis HD Tudo pode ser instalado em único servidor.

Arquitetura escalável e redundante (2) Rails MySQL Redis HD Como você escala para 2x a capacidade atual?

Arquitetura escalável e redundante (3) 1 2 Rails MySQL Rails MySQL Redis HD Redis HD Parece bom? Hum?

Arquitetura escalável e redundante (4) NOOOOOOOO!!!!

Arquitetura escalável e redundante (5) MySQL Redis HD Camadas de dados não são escaladas apenas "clonando" o servidor. E agora?

Arquitetura escalável e redundante (6) Rails MySQL Redis HD Um servidor mais potente parece funcionar Porém, esta abordagem possui um limite físico de componentes do servidor. Em algum momento, não haverá componentes melhores do que os atuais. Além disso, o Rails pode necessitar de mais CPU, enquanto o MySQL pode necessitar de mais memória. O upgrade do servidor pode não atender a necessidades específicas de cada software.

Arquitetura escalável e redundante (7) Dica: isole cada componente da aplicação Rails Redis MySQL HD

Arquitetura escalável e redundante (8)? Problema: o banco de dados está lento. O que fazer?

Arquitetura escalável e redundante (9) Rails Redis MySQL (master) MySQL (slave) HD

Arquitetura escalável e redundante (10)? Problema: a quantidade de escritas e leituras no sistema de arquivos (armazenamento de fotos) precisa aumentar. O que fazer?

Arquitetura escalável e redundante (11) Rails Redis MySQL (master) MySQL (slave) HD (shard 1) HD (shard 2)

Arquitetura escalável e redundante (12)? Problema: o sistema de cache precisa de mais memória. O que fazer?

Arquitetura escalável e redundante (13) Rails Redis (+ memória) MySQL (master) MySQL (slave) HD (shard 1) HD (shard 2)

Arquitetura escalável e redundante (14)? Problema: a aplicação Rails não está atendendo a todas as requisições por conta de limitação de processamento. O que fazer?

Arquitetura escalável e redundante (15) Rails Redis (+ memória) Requisição Load balancer MySQL (master) MySQL (slave) Resposta Rails HD (shard 1) HD (shard 2)

Arquitetura escalável e redundante (16) A aplicação tornou-se escalável Os componentes Rails e MySQL estão com redundância As requisições continuam sendo atendidas mesmo que algum componente redundante falhe

Arquitetura escalável e redundante (17) Requisição Redis (+ memória) Resposta Load balancer Rails MySQL (master) HD (shard 1) HD (shard 2)

Arquitetura escalável e redundante (18) Redundância É um termo que abrange muitos aspectos no contexto de uma aplicação. Nossa sugestão, do ponto de vista de arquitetura física e infraestrutura, é que todos os componentes tenham redundância de servidores, com localizações em múltiplos data centers, preferencialmente com distância superior a 300 km.

Infraestrutura de uma aplicação Web

Modelos de contratação de infraestrutura (1)

Modelos de contratação de infraestrutura (2) SHARED VPS DEDICATED CLOUD

Modelos de contratação de infraestrutura (3) Shared hosting É um dos modelos de hospedagem mais antigos e ainda muito popular Em geral os provedores oferecem construtores de site, facilitando a criação de sites O servidor é compartilhado com aplicações de outros clientes (é comum um servidor hospedar mais de 1 mil aplicações) Baixo controle do ambiente que executa a aplicação "Não é possível" escalar ou oferecer redundância O preço é baixo (~ USD$ 10.00/mês)

Modelos de contratação de infraestrutura (4) VPS VPS é uma abreviação de Virtual Private Server Desde o início da década de 2010, a maioria das empresas de shared hosting e de servidor dedicado estão oferecendo VPS Um VPS é uma máquina virtual rodando em um servidor dedicado, consumindo recursos fracionados deste servidor Alto controle do ambiente que executa a aplicação Não é fácil, mas é possível escalar e oferecer redundância O preço inicial é baixo (~ USD$ 20.00/mês)

Modelos de contratação de infraestrutura (5) Dedicated server É um servidor físico totalmente dedicado a você É um dos modelos de contratação de servidores mais antigos, muito usado por empresas que buscam alto desempenho e nível de controle Alto controle do ambiente que executa a aplicação Não existe virtualização de recursos, ou seja, todos os recursos do servidor físico estão disponíveis Não é fácil, mas é possível escalar e oferecer redundância O preço inicial é alto (~USD$ 100.00/mês)

Modelos de contratação de infraestrutura (6) Cloud server Não estamos falando de Platform As A Service (Heroku, Google App Engine, Engine Yard, etc.) Consiste em servidores e serviços virtualizados É uma das inovações em computação que revolucionaram a Internet, pois permite que qualquer desenvolvedor (pequeno ou grande) tenha acesso a um poder computacional capaz de executar qualquer trabalho a um preço acessível É fácil escalar e oferecer redundância O preço inicial é baixo (~ USD$ 10.00/mês) Em geral, apresenta o melhor custo vs. benefício e você "paga pelo que usa"

Modelos de contratação de infraestrutura (7) Escalabilidade com cloud server 3.400 servidores De 50 a 3.400 servidores em 3 dias Modificação de uma integração com o Facebook ~ 1 semana (8 dias)

Modelos de contratação de infraestrutura (8) Shared VPS Dedicated Cloud Recursos Compartilhados Fracionados (virtualização) Dedicados Fracionados (virtualização) Ambiente Baixo controle Alto controle Alto controle Alto controle Escalar recursos "Impossível" Difícil Difícil Fácil Redundância "Impossível" Difícil Difícil Fácil Preço Baixo Baixo Alto Baixo Contrato Mensal Mensal Mensal Por hora ou minuto

Fonte: https://xkcd.com/908/