DAVID LOJUDICE SOBRINHO

Tamanho: px
Começar a partir da página:

Download "DAVID LOJUDICE SOBRINHO"

Transcrição

1 DAVID LOJUDICE SOBRINHO AVALIAÇÃO DE MODELOS DE ARQUITETURA DE WEB SITES DE ALTA ESCALABILIDADE FACULDADE DE TECNOLOGIA DE SÃO PAULO Pós-graduação em Tecnologia em Análise e Projeto de Sistemas São Paulo 2009

2 DAVID LOJUDICE SOBRINHO AVALIAÇÃO DE MODELOS DE ARQUITETURA DE WEB SITES DE ALTA ESCALABILIDADE Monografia apresentada à Fatec SP, como requisito para obtenção do título de especialista em Tecnologia de Análise e Projeto de Sistemas. Orientador: prof. Eduardo Endo FACULDADE DE TECNOLOGIA DE SÃO PAULO Pós-graduação em Tecnologia em Análise e Projeto de Sistemas São Paulo 2009

3 i DEDICATÓRIA Aos meus pais que sempre me apoiaram incondicionalmente...

4 ii AGRADECIMENTO Agradeço ao meu orientador, prof. Eduardo Endo, a profa. dra. Marcia Ito, e meus professores do curso de pós-graduação da FATEC, pelo conhecimento que eles transmitiram e direcionamento neste trabalho. Ao meu grande amigo prof. Fernando Paes Campos pelo apoio neste trabalho. À minha família e meus amigos que me apóiam agora e sempre.

5 iii BANCA EXAMINADORA Prof. Eduardo Endo - Orientador FATEC Faculdade de Tecnologia de São Paulo Prof a. Dr a. Marcia Ito FATEC Faculdade de Tecnologia de São Paulo Prof. Dr. Kazuo Watanabe FATEC Faculdade de Tecnologia de São Paulo

6 iv SUMÁRIO 1. INTRODUÇÃO FONTE DE INFORMAÇÃO SITES ESTUDADOS APLICAÇÃO WEB ARQUITETURA DE SOFTWARE ESCALABILIDADE ESTRATÉGIAS CAMADAS REUTILIZAÇÃO COMPUTACIONAL PARTICIONAMENTO DE DADOS COMPARATIVO DAS ESTRATÉGIAS EVOLUÇÃO DA ARQUITETURA CONCLUSÃO REFERÊNCIA APÊNDICE... ix

7 v LISTAS EXPRESSÕES Exp.1 - Escalabilidade Linear FIGURAS Fig.1 Shared Nothing Fig.2 - Shared Nothing com Banco de Dados separado Fig.3 - Por Camada Fig.4 - SOA Fig.5 - Arquitetura Mista Fig.6 - Processo Síncrono Fig.7 - Mensagem Assíncrona Fig.8 - Nuvem de Tags do Flickr Fig.9 - Modelo com valor desnormalizado Fig.10 - Cache Local Fig.11 - Cache distribuído Fig.12 - Cache menor que o repositório final Fig.13 - CDN Fig.14 - Modelo ER Lógico Fig.15 - Modelo ER distribuído usando Sharding Vertical Fig.16 - Modelo ER distribuído usando Sharding Horizontal GRÁFICOS Graf.1 Escalabilidade Vertical x Escalabilidade Horizontal... 11

8 vi TABELAS Tab.1 - Sites Estudados... 3 Tab.2 Referências às estratégias de Camadas Tab.3 - Referências às estratégias de Reutilização Computacional Tab.4 - Referências às estratégias de Particionamento de Dados... 46

9 vii GLOSSÁRIO ACID - Atomicity, Consistency, Isolation, Durability API - Application Programming Interface BASE - Basically Available, Soft State, Eventually Consistent CAP - Consistent, Available E Partition-Tolerant CDN - Content Delivery Network CPU - Central Processing Unit CTO - Chief Technology Officer FK - Foreign Key HTML - Hypertext Mark-Up Language HTTP - Hypertext Transfer Protocol I/O - Input/Output Joins - Uma cláusula SQL Join combina registros de duas ou mais tabelas em um banco de dados. JSon - Javascript Object Notation LRU - Least Recently Used MVC - Model View Controller ORDBMS - Object-Relational Database Management System PK - Primary Key RAM - Random Access Memory RDBMS - Relational Database Management System RPC - Remote Procedure Call SOA - Service-Oriented Architecture SOAP - Simple Object Access Protocol SQL - Structured Query Language SSI - Server Side Includes XML - Extensible Markup LanguageServer Side Includes

10 viii RESUMO Com o número cada vez maior de usuários conectados a internet, alguns web sites tem a desafiadora tarefa de atender milhões de usuários simultâneos, e ainda estar sempre disponível, sem comprometer a performance. Esses usuários podem chegar ao web site sem previsão e em grande número, sendo que atender todos eles é fator crucial para o sucesso do site. Os web sites mais visitados no mundo foram bem sucedido e alguns deles disponibilizaram informações sobre como foi possível escalar para atender este volume de trafego. Este trabalho identifica e estuda quais estratégias e métodos de arquitetura de software que foram empregados em alguns dos maiores web sites da internet para escalar, assim atendendo o crescente número de acessos e usuários. Alguns aspectos se mostraram relevantes para a escalabilidade de uma aplicação web, como a comunicação e distribuição das camadas, as formas de reutilização computacional e o impacto do particionamento dos dados. Ainda foi examinado a evolução da arquitetura dos web sites estudados. Palavras chaves: Escalabilidade, Aplicação Web, Arquitetura de Software

11 ix ABSTRACT With the increasing number of users connected to the Internet, some web sites have the challenging task of answering millions of simultaneous users, and be always available, without compromising performance. These users can reach the web site without forecasting and in a large number, which meet all factor is crucial to the success of the site. The most visited websites in the world have been successful in this scenario and provided some information about how it was possible to scale to meet the volume of traffic. This work identifies and examines which strategies and methods of software architecture that were employed in some of the major internet web sites to scale, so acting in response to the increasing number of hits and users. Some aspects were relevant to the scalability of a web application, such as layers communication and distribution, forms of computing reuse and the impact of partitioning the data. Was examined the evolution of the architecture of web sites studied. Keywords: Scalability, Web Application, Software Architecture

12 1 1. INTRODUÇÃO Com o número cada vez maior de usuários conectados a internet, alguns web sites tem a desafiadora tarefa de atender milhões de usuários simultâneos, e ainda estar sempre disponível, sem comprometer a performance. Esses usuários podem chegar ao web site sem previsão e em grande número, sendo que atender todos eles é fator crucial para o sucesso do site. O web site deve lançar mão de várias estratégias na sua arquitetura de software e infra-estrutura para atender todos esses requisitos e ainda continuar a crescer e, em alguns casos, ser flexível o bastante para poder encolher, dependendo do tráfego. Os web sites mais visitados no mundo foram bem sucedidos nesta tarefa, atendendo até bilhões de pageviews por dia e, alguns deles, disponibilizaram informações sobre como foi possível escalar para atender este volume de trafego. Porém, parte das informações disponibilizadas pelos web sites sobre suas arquiteturas foram feitas de forma informal, através de páginas na web ou blogs de funcionários. OBJETIVO O objetivo deste trabalho é investigar quais estratégias e evoluções nas arquiteturas de software foram empregadas em alguns dos maiores web sites da internet para escalar, e assim, atender o crescente número de acessos e usuários. Ficam fora do escopo deste trabalho outras partes importantes para a escalabilidade de uma aplicação web, como arquitetura de infra-estrutura e técnicas empregadas no software Client-side (Navegador Web). Também ficam fora outros requisitos não funcionais, como a alta-disponibilidade e performance, mesmo que em alguns casos esses requisitos possam ser satisfeitos ao se satisfazer o requisito de escalabilidade.

13 2 HIPÓSTESE Algumas hipóteses são levantadas neste trabalho. A primeira é de que exista um conjunto de propriedades das arquiteturas de softwares que são comuns entre os sites dos sites estudados. Isto permitiria uma classificação conforme estas propriedades. Dado essas propriedades comuns, a segunda hipótese é que o estudo transversal (não individual) entre os sites, permita um melhor entendimento dos métodos empregados e como esses métodos podem ser reutilizados em outros projetos. JUSTIFICATIVA O número de usuários que podem chegar a um web site impõe alguns desafios as tradicionais arquiteturas utilizadas para a construção de uma aplicação web. O intuito deste trabalho é auxiliar arquitetos de software na tomada de decisão sobre qual caminho devem escolher no momento de escalar uma aplicação web FONTE DE INFORMAÇÃO Como este trabalho tem a intenção de mostrar técnicas e modelos empregados por web sites comerciais, é importante ressaltar que algumas das fontes não são oficiais ou mesmo de pessoas ou empresas relacionadas ao web site. Na tentativa de garantir a precisão da informação, este trabalho segue as seguintes regras: Evidências: Algumas técnicas podem ser verificadas por evidencias e não é necessário que a empresa proprietária do web site divulgue sua utilização. Funcionários: Algumas empresas permitem que seus funcionários ou exfuncionários escrevam sobre seus trabalhos em blogs ou sites especializados. Ainda assim, muita dessas informações não é dada como oficial pela empresa proprietária do web site. Porém o blog ou web site é reconhecido por pertencer ao funcionário ou ex-funcionário da empresa e, logo, considerado uma fonte confiável para este trabalho.

14 3 No entanto, algumas empresas divulgam em seus blogs oficiais, sites especializados ou livros, informações sobre sua arquitetura e sua evolução. Essa informação será usada aqui neste trabalho com maior prioridade. Outra fonte importante utilizado neste trabalho é o site highscalability.com (Highscalability, 2009), especializado em compilar e divulgar informações sobre técnicas de escalabilidade e arquiteturas de web sites de alta escalabilidade SITES ESTUDADOS A maioria dos sites estudados são sites com um alto tráfego, sendo que a maioria está entre os principais sites da internet (Tab.1), com milhões de visualizações de páginas por dia. Outros são sites menos conhecidos, sites de nicho, mas com grande volume de acesso. Nessa lista ainda encontra-se sites menores, com médio volume de acesso, porém enfrentaram problemas de escalabilidade e disponibilizaram a documentação de sua arquitetura. Atuação Alexa Ranking Page Views per User (via Alexa) Amazon ecommerce Digg Social News ebay Social ecommerce FaceStats Fotos - - Flickr Fotos Google Busca LinkedIn Social Network LiveJournal Blog MySpace Social Network PlentyOfFish Relacionamento Slashdot Notícia 11, Twitter Micro Blog Wikipedia Conteúdo Social Tab.1 - Sites Estudados

15 4 A Tab.1 apresenta a lista dos sites estudados e seu respectivo ranking no Alexa (Alexa, 2009). O site Alexa é um serviço especializado em medir a audiência dos 100 mil principais sites da internet.

16 5 2. APLICAÇÃO WEB Segundo Henderson(2006), uma aplicação web é a junção da idéia de um web site (estático) e uma aplicação desktop, porém não é nenhum dos dois. Ou seja, tem características de web site e funcionalidades de uma aplicação desktop mas não pode ser enquadrado em nenhuma dessas características, pois um web site estático é formado por páginas estáticas, com nenhuma ou pouca interação com o usuário. As informações ali mostradas não são processadas, mas simplesmente entregues do servidor web no formato original ao cliente, geralmente um navegador web. Uma aplicação web tem a mesma idéia de entregar uma página ao cliente, porém essa página passa por um processamento para cada requisição feita ao servidor web. Já uma aplicação desktop tem a possibilidade de interação ampla com o usuário. Para isso utiliza do poder computacional (CPU, memória, etc.) local, do computador do usuário, para processar o que o usuário deseja fazer. Já a aplicação web tenta oferecer a mesma flexibilidade usando um misto de processamento local e processamento remoto, onde o processamento remoto é geralmente responsável por gravar e manipular os dados. O resumo feito por Henderson (2006) é que aplicações web são sistemas com um conjunto de dados central que pode ser acessado e modificado usando-se páginas web, com a possibilidade de outras interfaces (p.2). Tanto web sites estáticos e aplicações desktop ainda tem sua importância em diversos cenários, porém a utilização de aplicações web tem crescido muito como opção para cenários que antes eram exclusivos dessas outras tecnologias, principalmente porque amplia os limites que as duas tecnologias tem: iteratividade, personalização de um lado e poder de processamento e quantidade de informação do outro. Isso é importante ao sites que dependem de audiência ou empresas que querem vender seus produtos, pois segundo Arlitt(2001), personalization is desirable to boost repeat visits and increase revenue.

17 6 PADRÃO DE UTILIZAÇÃO Um dos fatores mais importantes para entender onde escalar uma aplicação web é entender como ela é utilizada pelos seus usuários e sistemas clientes. Conhecendo qual ação (leitura, gravação, etc.) e o conteúdo (página, web API, etc.) recebe mais requisições ou consome mais recursos do lado do servidor é possível tomar uma ação de escalonamento adequada. Normalmente, as aplicações web tem 80% de leitura e 20% de gravação, sendo que esse número varia dependendo principalmente do tipo da aplicação web. Os acessos também se concentram em poucas páginas, normalmente seguindo a distribuição parecida com a distribuição Zipf (Breslau, 1999, Padmanabhan 2000). Um exemplo de como o entendimento desse padrão é importante é o web site Digg.com (DiggA, 2009), onde a grande maioria dos usuário apenas acessam a página principal, lêem o conteúdo e deixam o site logo após. Assim, seu cache tem um "cache hit" (probabilidade de um item estar no cache) muito alto. Além disso, em seu banco de dados, 98% das ações são de leitura, fazendo o trabalho de escalabilidade muito mais fácil. Porém, o padrão de utilização de uma aplicação web pode variar drasticamente. Um desses motivos de variação são os robôs de busca, que varrem todo o site em busca de texto e outros links. Como a intenção desses robôs é varrer o maior número de página possível, isso invalida qualquer estratégia de escalabilidade baseada no padrão de utilização. Mas como não são freqüentes, é possível criar uma estratégia especifica para os robôs de busca. Um exemplo é desabilitar os caches e ler diretamente do banco de dados, deixando o cache válido para o padrão de utilização dos usuários e não do robô. Outro motivo que pode fazer uma aplicação web ter seu padrão de acesso alterado é quando um link do site é colocado em um web site que recebe muito acesso, geralmente um portal, fazendo com que parte desses usuários naveguem para aquela página especifica em um curto espaço de tempo. Esse efeito é conhecido na internet como "Slashdot effect" (Pilgrim, 2005). Isso se dá pois o site Slashdot.com costuma colocar links em sua página principal de sites menores.

18 7 Esses por sua vez recebem uma quantidade de usuários que não estavam acostumados e muitos não consegue escalar a tempo de atender a essa quantidade de usuários. Um exemplo do "Slashdot effect" aconteceu com o site FaceStat.com (FaceStat, 2009), que recebeu quase 650 mil visualizações de páginas simultâneas. O link de sua página principal foi para a página principal do portal Yahoo.com, com um volume de acesso muitas vezes maior do que o seu, o que levou ao site ficar fora do ar por um tempo considerável. Outros fatores podem alterar o padrão de uso da aplicação, como uma promoção de um produto ou personalizações de uma página para o usuário (Arlitt, 2001). Entender o padrão de utilização da aplicação web é extremamente importante para planejar o melhor modelo de escalabilidade.

19 8 3. ARQUITETURA DE SOFTWARE A arquitetura de software é extremamente importante para a escalabilidade de uma aplicação web, primeiro porque pode alterar o modo como a aplicação escala (Ebay, 2009), tornando mais eficaz o uso de recursos e porque pode ser o limitador da capacidade da aplicação escalar (DiggA, 2009). Segundo Fowler(2002), arquitetura de software é definido por dois aspectos: Arquitetura de software é a quebra de um sistema em partes menores, porém ainda com uma visão abstrata. A segunda definição é que arquitetura de software é onde mora as "decisões difíceis de serem alteradas". Quando se trata de escalabilidade de aplicações web esses dois pontos são muito importantes. Um sinal de que a arquitetura de uma aplicação tem qualidade, é quando as pequenas abstrações, as pequenas partes, têm responsabilidades bem definidas. Esse aspecto é importante pois quando chega o momento de refatorar a aplicação web para que ela se torne mais escalável (por ser um limitador ou melhorar o uso dos recursos), conhecer essas responsabilidades é fundamental, pois isso ajuda a atacar apenas aquelas partes que estão impedindo a escalabilidade. O segundo ponto, o da tomada de decisões difíceis de alteração, também é importante, pois as decisões de escalabilidade geralmente estão na base da arquitetura da aplicação. Escolher qual vai ser a arquitetura ou alterá-la implica em tomar decisões que levam em conta muitos fatores (técnicos, organizacionais e de negócios, por exemplo) e que se espera que seja robusta o suficiente de forma que não precise ser alterada. Assim, quando escalabilidade é um pré requisito para uma aplicação, é desejável que essas decisões levem a uma arquitetura que tenham o menor impacto possível nas futuras modificações do sistema. Este trabalho tenta focar exclusivamente em software. Porém algumas vezes, a plataforma de hardware pode influenciar na arquitetura de software (Henderson, 2006, p.16) e será abordado, mas apenas os pontos relevantes à arquitetura de software.

20 9 4. ESCALABILIDADE Existem algumas definições para escalabilidade. Segundo Hill(1990), um sistema é escalável quando sua performance melhora depois da adição de hardware, sendo essa melhora proporcional ao poder computacional do hardware adicionado. Uma definição parecida é dada em Amazon(2009). Porém, segundo (Henderson, 2006, p.204), escalabilidade não tem relação com performance e sim com a capacidade de acomodar o aumento do uso do sistema e da quantidade de dados adicionando hardware, sem perder a manutenibilidade. Uma definição mais ampla é dada por (Schlossnagle, 2006, p.5): Escalar significa quão bem uma solução particular se encaixa em um problema enquanto o escopo do problema aumenta. Neste trabalho, o problema estudado é o aumento de utilização de recursos computacionais causado pelo aumento de acessos e/ou aumento de personalização da aplicação web. Por isso, para este trabalho, escalar não implica necessariamente adição de mais hardware, pois a melhor utilização dos recursos computacionais existentes através da arquitetura de software pode também ser uma possível solução ao problema proposto. Isso vai de encontro com o problema enfrentando pelos web sites (Schlossnagle, 2006, p.9), que tendem a manter o custo baixo no começo de suas operações, minimizando os riscos. Sejam esses custos vindos da necessidade de mais hardware e por isso precisam maximizar a utilização dos recursos existentes, ou da complexidade em manutenção e por isso precisam manter as soluções arquiteturais simples. Assim, uma arquitetura escalável tem que ser também flexível para mudar conforme a necessidade do web site. O fato de um sistema ser escalável é uma característica momentânea. Ou seja, um sistema pode suportar cada vez mais acessos apenas adicionando mais hardware ou melhorando os algoritmos de cache, por exemplo. Mas a partir de um determinado número de acessos, a solução começa a não ter mais ganhos. Seja por

21 10 um problema de hardware ou software, o sistema encontra seu limite de escalabilidade e deixa de ser escalável para aquele novo cenário. Para continuar escalando, é necessário encontrar o limitador e substituí-lo por uma nova solução. ESCALABILIDADE VERTICAL Chama-se de escalabilidade vertical quando um sistema aumenta sua capacidade trocando o servidor que o hospeda por um servidor mais potente (mais memória RAM, harddisk ou CPU). Uma vantagem deste modelo de escalabilidade é que normalmente se ganha maior capacidade sem alteração no sistema. Ou seja, quanto maior a capacidade do hardware, maior será a capacidade do sistema. Para algumas partes do sistema, essa abordagem pode ser a mais apropriada como, por exemplo, o banco de dados (Plentyoffish, 2009), onde é possível escalar apenas colocando mais memória RAM. Porém, essa estratégia tem seus limites. Primeiro, o custo deste modelo não escala linearmente (Henderson, 2006, p.204): um servidor com 4 CPUs custa aproximadamente o mesmo que 4 servidores com apenas uma CPU, porém um servidor com 72 CPUs custa aproximadamente 3.5 vezes mais do que o 72 servidores com apenas uma CPU (Graf.1).

22 Custo 11 Múltiplos Servidores Único Servidor CPUs Graf.1 Escalabilidade Vertical x Escalabilidade Horizontal Fonte: Henderson, 2006 E mesmo que o custo não seja um limitador (o que é raro para um web site), se alcançaria o limite imposto pelo fabricante, seja no número de CPUs ou quantidade de memória, que um único servidor pode suportar. Um limite, este mais comum, é que nem todos os recursos deste novo hardware podem estar sendo usados se a arquitetura de software deste sistema não for eficiente. Um exemplo comum é o uso de CPU. Isso acontece quando o novo hardware cresce em número de CPUs, porém o sistema tem poucos processos paralelos (Threads), o que geralmente leva a baixa utilização das múltiplas CPUs. Sem alteração do sistema, alterar o hardware tem pouco impacto na escalabilidade do mesmo. ESCALABILIDADE HORIZONTAL A escalabilidade horizontal se difere da escalabilidade vertical, pois ao invés de substituir os hardwares atuais utilizado pela aplicação, apenas adiciona-se mais servidores, sem substituição.

23 12 O principal motivador para escalar horizontalmente é custo. Como apresentado anteriormente, quando é necessário muito poder computacional, adição de novos servidores comuns é muitas vezes mais barato que a substituição por servidores mais potentes. Além disso, não se perde o investimento feito no hardware atual quando se escala horizontalmente. Porém, fazer o escalonamento horizontal pode ser bem desafiador e até mais caro que o escalonamento vertical. O primeiro desafio começa na administração, que deve gerenciar muitos servidores (alguns casos chega-se até milhares) (Michael, 2007). Administrar a rede, configuração e deploy desses servidores não escalam nas mesmas proporções que os servidores (Henderson, 2006, p.206). A escolha do hardware também deve ser estudado com cuidado para não desperdiçar recursos. Por exemplo, pode-se comprar maquinas com uma boa quantidade de memória RAM, e com CPU e disco mais baratos, pois o servidor vai ser usado apenas para cache, intensivo em uso de memória, mas utiliza pouco processamento ou persiste quase nada em disco. É importante também escolher um hardware onde o custo de manutenção seja balanceado com o custo de troca (Henderson, 2006, p.206). Outro ponto que dificulta e pode custar mais caro para este tipo de escalonamento é a arquitetura de software, o ponto que é objeto de estudo deste trabalho. Se a arquitetura de software não estiver preparada para escalar de forma horizontal, adicionar mais servidores será em vão. ESCALABILIDADE, ALTA DISPONIBILIDADE E PERFORMANCE Alta disponibilidade e performance são algumas das características não funcionais que podem acompanhar um sistema quando este é escalável. Porém é importante ressaltar que são características distintas e podem não aparecer simultaneamente. A alta disponibilidade é dada quando uma requisição feita a um sistema sempre retorne um resultado. Para a alta disponibilidade é necessário que o sistema

24 13 tenha algum tipo de redundância, seja para processar informações ou armazenar dados. Para isso, adicionam-se hardwares e mecanismos para distribuir o trabalho entre os servidores. Para acomodar esse requisito, pode ser que o sistema venha também a ficar escalável, ou ao contrário, sendo que para escalar o sistema ganhe alta disponibilidade. Adicionando hardware ou alterando a arquitetura de um sistema para que este fique escalável, pode trazer também mais performance, mas novamente são características distintas, pois ao mesmo tempo que adicionar hardware acarreta em mais poder computacional, também traz maior número de conexões entre eles, o que pode prejudicar a performance. Assim, mesmo que escalabilidade, alta disponibilidade e performance sejam características de um sistema que podem proposital ou acidentalmente virem juntas, tem propriedades e atendem a requisitos distintos.

25 14 5. ESTRATÉGIAS Durante a construção e evolução de suas aplicações web, os web sites aqui estudados encontraram, de alguma forma, problemas de escalabilidade. Quando isto aconteceu, a primeira coisa a fazer foi encontrar o problema e, uma vez identificado, trazer uma estratégia para atacá-lo. Este trabalho propões evidenciar os problemas de escalabilidade enfrentados pelos web sites e as estratégias escolhidas para tentar solucionar estes problemas. Os tópicos estão divididos em três grandes grupos: Camadas: Como a divisão das camadas, seja lógica ou fisicamente, influencia na escalabilidade e na arquitetura de uma aplicação web. Reutilização Computacional: Quais formas de reutilização computacional foram empregadas pelos web sites estudados e como isso possibilitou receber maior tráfego. Particionamento de Dados: Quais as formas de particionamento de dado empregadas pelos web sites estudados e porque particionar é importante para escalar uma aplicação.

26 CAMADAS Quando se trata de arquitetura de software, a separação das responsabilidades é peça chave (talvez a mais importante) no processo de pensar um sistema. A intenção é sempre quebrar um problema maior em partes menores (Fowler, 2002), com responsabilidades bem definidas. Uma maneira de quebrar esses problemas e distribuir a responsabilidade entre elas é usando o que chama-se de camadas. Segundo Fowler(2002):... the hardest part of a layered architecture is deciding what layers to have and what the responsibility of each layer should be. Inicialmente estudada para sistemas operacionais (Dijkstra, 1968) e depois estudada de forma mais ampla (Parnas, 1972, Parnas, 1974, Parnas, 1976, Parnas, 1979), a idéia de camadas e suas responsabilidades é fundamental para a qualidade de um sistema, influenciando em vários de seus aspectos, principalmente a manutenibilidade e flexibilidade. No caso de uma aplicação web, a distribuição das responsabilidades das camadas e como elas se comunicam influencia também na sua escalabilidade Flexibilidade, Manutenibilidade e Escalabilidade Encontrar o balanceamento entre manutenibilidade e flexibilidade, e ainda assim manter o sistema escalável, é o motivo pelo qual o estudo das camadas e sua arquitetura é importante para uma aplicação web. Quanto mais camadas uma aplicação tem, maior será a sua manutenibilidade, porém com menor flexibilidade (Henderson, 2006, p.13). Ou seja, uma aplicação pode ter poucas camadas e assim terá maior flexibilidade ao se comunicar diretamente com as abstrações das camadas abaixo, sem precisar passar por abstrações intermediárias. Porém terá pouca manutenibilidade, pois provavelmente terá dificuldade em substituir essas camadas inferiores, caso necessário.

27 16 No entanto, uma aplicação com muitas camadas tem maior facilidade de manutenção, mas terá pouca flexibilidade em utilizar funcionalidades que as camadas abaixo não expõem. Uma distribuição de camadas bastante difundida e usada, principalmente por aplicações web, é a chamada "Arquitetura de Três Camadas" (Fowler, 2002), que contêm as camadas de apresentação, domínio (ou aplicação) e dados (ou persistência). O web site Flickr (Henderson, 2006, p.13), por exemplo, utiliza apenas uma arquitetura MVC na sua camada de apresentação e poucos frameworks, mas tende a criação de novas camadas conforme sua complexidade aumenta. Já o ebay (Ebay, 2009) tem suas camadas muito bem definidas: dados, aplicação, busca, operações, etc. É importante notar aqui que essa arquitetura vai além das três camadas mais conhecidas. A camada de persistência de dados é um ponto onde os web sites dão grande atenção. Por ser de difícil escalabilidade (ver outros tópicos: CAP, Sharding, Desnormalização), os bancos de dados tendem a ser o principal gargalo para estas aplicações (DiggA, 2009). Para evitar este gargalo, o ebay (Ebay, 2009) faz em algumas partes do sistema apenas operações simples na camada de persistência (no banco de dados) e deixa a responsabilidade de integridade referencial, joins e ordenações na camada de aplicação (ou de domínio). Apesar dessas operações serem normalmente feitas pelo banco de dados, neste caso é melhor ter menos utilização de CPU e I/O nos servidores de banco de dados e assim liberá-los para mais acessos. A razão para isto é que, segundo ebay, os servidores para a camada de aplicação são mais baratos, enquanto os de bancos de dados são o gargalo, difíceis de escalar. Outras formas de eliminar acesso ao banco de dados é vista no tópico Reutilização Computacional e Particionamento. O importante aqui é enfatizar a responsabilidade de cada camada, que dependendo da necessidade de escalabilidade, pode tomar responsabilidades que normalmente não lhe seriam atribuídas. Além disso, no caso do ebay, a manutenibilidade teve menos prioridade comparado com a capacidade que a aplicação tem de escalar.

28 Distribuição entre os servidores Outro ponto importante é a distribuição dessas camadas entre os servidores. O importante aqui não é, novamente, discutir a arquitetura de hardware, mas sim verificar como a distribuição física das camadas pode influenciar a arquitetura de software. Basicamente tem-se dois tipos de distribuição: servidores com todas as camadas em cada um deles (conhecido como Shared Nothing) ou servidores dedicados a uma camada ou responsabilidade (por exemplo, Applicantion Servers e SOA) Shared Nothing Uma maneira de se transformar uma solução de um problema em uma solução escalável é através da remoção dos recursos compartilhados. Assim, cada elemento da solução é autônomo e não interfere no trabalho do elemento ao seu lado, já que nada compartilham. Logo, podem-se acrescentar quantos elementos se quer, escalando linearmente. Isso se aplica para uma aplicação web (Flickr, 2009), uma CPU (Stonebraker, 1986) ou qualquer outra solução escalável. Aplicando essa lógica ao extremo às camadas de uma aplicação web, cada servidor teria tudo o que é preciso para rodar a aplicação web, da camada de apresentação a camada de persistência, incluindo o banco de dados. Assim, quando uma requisição fosse feita, ela iria ser executada do começo ao fim por um dos servidores. Se houverem 100 usuários simultâneos e cada servidor suportar 20 usuários cada, tem-se que ter 5 servidores para atende-los (Exp.1). Máximo Usuários Simultâneos Desejado Quantidade Usuários por Servidor = Servidores Exp.1 - Escalabilidade Linear Além disso, se obtém confiabilidade e performance. Confiabilidade pois, caso um dos servidores deixe de responder, isso não irá penalizar o trabalho de nenhum dos outros servidores, a não ser pela maior quantidade de requisições que eles tem

29 18 que atender. Todos os outros continuam a responder, pois não dependem um do outro. E performance, pois operações de I/O feitas em uma mesma máquina são normalmente mais rápidas do que se feitos através de um I/O de rede. A Fig.1 ilustra uma distribuição Shared Nothing. Cluster Load Balance ServerN Web Aplication Cache Server1 Server2 Server3 ServerN Database Fig.1 Shared Nothing Do ponto de vista da arquitetura de software e objetos distribuídos, a complexidade de ter camadas no mesmo servidor tende a ser muitas vezes menor do que camadas distribuídas. Fowler(2002) discute os benefícios de ter uma arquitetura não distribuída e chega a proclamar: First Law of Distributed Object Design: Don't distribute your objects. Porém, as aplicações web nem sempre tem o privilégio de poderem ter todas as camadas e suas dependências em apenas um servidor. Alguns dos motivos mais comuns são bancos de dados compartilhados, comunicação com sistemas ou serviços externos e dificuldade de deploy em múltiplos servidores, conforme ilustra a Fig.2. Ainda assim, quanto menor a dependência entre os servidores, maior a possibilidade de escalabilidade.

30 19 Cluster Load Balance ServerN Web Aplication Cache Server1 Server2 Server3 ServerN Cluster Load Balance ServerN Database Server1 Server2 Server3 ServerN Fig.2 - Shared Nothing com Banco de Dados separado Por Camada Uma forma bastante usada para escalar uma aplicação foi a distribuição das três camadas em servidores distintos, um para cada camada, conforme mostra a Fig.3. Web Aplicação Cache Database Fig.3 - Por Camada

31 20 Assim, cada camada (apresentação, aplicação e persistência) tem seu conjunto de servidores dedicados. Quando há a necessidade de atender um número maior de usuários, escalase apenas a camada que se tornou o gargalo de escalabilidade. Normalmente essa distribuição é prejudicada em sua escalabilidade por tentar compartilhar estado, ou seja, os servidores de uma determinada camada compartilham, por exemplo, dados de um usuário, sessão ou uma determinada transação. Manter o gerenciamento de estado do lado do servidor e transações distribuídas, estudados nos tópicos CAP e Sharding, são um problema para escalabilidade. Mas é possível construir aplicações onde algumas camadas utilizam o princípio discutido acima, Shared Nothing, para evitar esses problemas (Ebay, 2009). Ou seja, os servidores de uma mesma camada não têm conhecimento sobre seus pares. Como descrito antes, outro problema deste tipo de distribuição é que a complexidade do software aumenta, pois é necessário criar uma camada para abstrair as chamadas remotas (RPC, SOAP, etc.). Além disso, qualquer chamada feita através da rede é mais custosa em termos de I/O que uma chamada local, no mesmo servidor. Foi observado entre os sites estudados que este tipo de distribuição não é a mais usada, porém algumas camadas ainda hoje são mais fáceis de escalar se isoladas, como é o caso de banco de dados. Como o SQL já é uma linguagem pensada de modo distribuído (Fowler, 2002), ter o banco de dados em servidores separados não aumenta a complexidade da arquitetura da aplicação SOA - Service-oriented architecture Outra forma de escalar uma aplicação é usando SOA (Service Oriented Architecture). A idéia de utilizar SOA para escalabilidade de uma aplicação web é separar responsabilidades, e não camadas, da aplicação e escalar individualmente essas partes. Cada uma dessas responsabilidades teria sua própria arquitetura interna, com suas camadas, e diferentes problemas de escalabilidade.

32 21 SOA tem algumas definições distintas, mas usaremos a seguinte: segundo (Barry, 2003, p.19), duas ideais básicas estão por trás dessa arquitetura: Serviço e Conexão. Um serviço é uma função bem definida, autônoma e não depende do contexto e do estado de outros serviços. Para fazer a conexão, utiliza-se o protocolo de transferência HTTP para fazer a comunicação entre os sistemas. Para a formatação dos dados, apesar de não ser um padrão, é normalmente feito via XML ou, mais recentemente, JSon. Por exemplo, imaginando uma aplicação web que tivesse um módulo de autenticação, publicação de conteúdo e publicação de comentários, poderia-se ter um serviço para cada uma dessas responsabilidades, conforme ilustrado na Fig.4. Serviços Internos Serviços Externos Publicador Search Comentários Produtos Fig.4 - SOA A Amazon (Amazon, 2009), por exemplo, tinha inicialmente uma arquitetura monolítica e, para poder escalar, mudou para uma arquitetura totalmente descentralizada, voltada a serviço. Hoje, tanto seus sistemas internos como suas APIs publicas usam serviço. Segundo o seu CTO, Werner Vogels, para construir uma página da Amazon, pode se necessário chamar mais de cem serviços. Outro

33 22 exemplo é o Digg (DiggA, 2009), que utiliza extensivamente serviços, tanto internamente como para suas APIs. Comparada com a distribuição de servidores por camada, SOA tem algumas vantagens para a escalabilidade de uma aplicação. A primeira é o fato de ser independente de estado (stateless), logo, não existe transações distribuídas ou gerenciamento de estado entre os serviços. Outra vantagem é a comunicação padronizada, utilizando HTTP e XML, ou seja, independente de uma tecnologia ou fornecedor. Ainda assim, os dois tipos de arquitetura compartilham o custo das chamadas remotas. Independente de qual seja a distribuição de camadas entre os servidores, todos eles provavelmente acabam com uma arquitetura mista, onde Shared Nothing, distribuição por camada e SOA se misturam (Fig.5). Publicador Cluster1 Cluster DB Web Aplication Database Cache Search Fig.5 - Arquitetura Mista

34 Mensagens Assíncronas Normalmente, quando uma funcionalidade de uma das camadas é chamada, espera-se um resultado o mais rápido possível. Por exemplo, uma pesquisa no banco de dados (Fig.6). User Interface Aplicação Repositório Obter Comentários Obter Lista Comentários Lista Comentários Lista Comentários Fig.6 - Processo Síncrono Porém, em alguns cenários, nem sempre é preciso ter um retorno rápido ou mesmo ter um retorno em si. Um exemplo é o envio de um recado aos amigos em uma rede social. Ao mesmo tempo em que é importante que essa mensagem apareça o mais rápido possível aos amigos, não é mandatório que seja em tempo real (Twitter, 2009). São nesses cenários que, ao invés de chamar uma funcionalidade de uma camada de forma síncrona, simplesmente envia-se uma mensagem e a camada é responsável por ler essa mensagem, de forma assíncrona (Fig.7).

35 24 Usuário 2 Usuário 1 UI Aplicação Repositório Mandar Recado Mandar Recado Recado Enviado Gravar Recado Mensagem Assíncrona Recado Enviado Obter Recados Obter Recado Obter Lista Recado Efetivação da Operação Lista Vazia (Repositório ainda não processou) Lista Recados Vazia Lista Recados Vazia Gravar Recado Obter Recados Obter Recado Obter Lista Recado Lista com recados do Usuário 1 Lista Recados Lista Recados Fig.7 - Mensagem Assíncrona Quando falamos de um ambiente extremamente distribuído, mensagens assíncronas tem um papel importante. Segundo Hohpe(2003), asynchronous messaging is fundamentally a pragmatic reaction to the problems of distributed systems. Ainda segundo Hohpe(2003), mensagens assíncronas tem algumas vantagens. A primeira é que a camada consumidora da mensagem tem flexibilidade para consumir essas mensagens conforme sua capacidade e não corre o risco de sofre uma parada por excesso de requisições. Para a escalabilidade de uma aplicação web isto é importante, pois o que vai determinar se é necessário ou não escalar esta camada consumidora é o tempo ao qual a mensagem deve ser consumida. Assim, a necessidade de escalabilidade é proporcional ao tempo de consumo das mensagens. Em outras palavras: para cenários onde o consumo da mensagem deve ser rápido, talvez seja necessário muito poder computacional. Já para cenários onde a velocidade não é importante, estes ganham menos peso no momento de escalar.

36 25 Além disso, como o produtor da mensagem não espera a finalização da requisição, liberam-se recursos para atender novas requisições do lado do produtor. Por exemplo: um pedido de uma página que deve salvar um comentário, que será persistido em um banco de dados. Caso a requisição ao banco de dados demore a finalizar, o recurso computacional que poderia atender outro usuário está agora preso até que a requisição termine. A melhor forma de liberar este recurso é fazê-lo de forma assíncrona. Dessa forma o comentário é salvo quando a camada de banco de dados estiver livre e o processo que recebe requisições de páginas está livre para atender novos pedidos. Outra vantagem na utilização de mensagens assíncronas é que as mensagens podem ser gravadas assim que enviadas e, se caso um dos sistemas não estiver disponível no momento, as mensagens podem ser consumidas posteriormente, melhorando assim outro aspecto do sistema: a confiabilidade. Ao mesmo tempo em que esta técnica resolve alguns problemas de escalabilidade, traz consigo complexidades que não existiam na forma síncrona. As principais são: ordenação das mensagens, quando é necessário manter a ordem das mensagens para se ter consistência da operação; padronização do formato e do protocolo da mensagem, para que a camada consumidora entenda a camada produtora da mensagem; repositório de mensagem, que é o local onde as mensagens vão ser gravadas e lidas; e dificuldade para obter o resultado da operação efetuada pela mensagem, já que uma vez envidada, a mensagem perde o contato com a camada produtora. Porém, quando se tem um ambiente distribuído, com alto volume de tráfego, a complexidade é um preço a ser pago, não restando outra opção. Tanto é assim que esta técnica é empregada em vários cenários pelos web sites: - Atualizar e manter consistência de dados particionados (DiggB, 2009, Linkedin, 2009): Ao invés de se fazer várias chamadas síncronas entre os bancos de dados, é possível enviar uma mensagem para cada camada responsável por aquele dado e deixar a responsabilidade atualizá-los para esta camada. O problema aqui é a consistência dos dados. Mais sobre as vantagens e desvantagens dessa solução serão vistas nos tópicos CAP e Sharding.

37 26 - Invalidar caches (Twitter, 2009): Mesmo quando os dados já estão salvos no repositório, invalidar as várias camadas de cache ou lugares onde aquele dado está no cache, pode ser uma tarefa custosa se feita de forma síncrona. Uma estratégia é enviar uma mensagem de forma assíncrona para que um sistema invalide o dado nos caches. - Realizar trabalhos paralelo em geral (DiggB, 2009, Livejournal, 2009): Para montar uma página com várias informações, pode-se fazer uma requisição para cada recurso de forma assíncrona, paralela, e no final esperar até que todas as requisições terminem. Assim, o máximo de tempo que se espera para construir uma página é o tempo da requisição que mais tempo levou para retornar e não a soma de todos os tempos das requisições, caso fosse feito de forma serial. Quanto menos tempo para construir a página, mais recursos são liberados para atender novas requisições.

38 REUTILIZAÇÃO COMPUTACIONAL Um dos pontos mais críticos na escalabilidade de uma aplicação web é o banco de dados. Seja qual for a tecnologia usada ou o tipo de banco de dados (RDBMS, ORDBMS, Document-oriented, etc.), o banco de dados tem que persistir e ler os dados da aplicação web da forma mais consistente possível e ainda assim atender e processar o máximo de requisições possíveis. Manter a consistência dos dados é uma tarefa árdua em um ambiente distribuído, pois para isso é necessário, em algum momento, um ponto de sincronização (detalhes no tópico CAP). Compartilhar um estado, como constatado no tópico Shared Nothing, neste caso o ponto de sincronização, é um característica que dificulta (e pode impedir) a escalabilidade dessa camada. Não é tarefa complicada sincronizar os dados entre dois ou três servidores de banco de dados. Porém a complexidade de manter a consistência entre os servidores cresce exponencialmente conforme a quantidade de servidores aumenta. Por sua dificuldade de escalabilidade, tenta-se evitar o acesso a esta camada (Plentyoffish, 2009), usando-a apenas quando estritamente necessário. Um dos modos de fazer isso é através de reutilização computacional (Schlossnagle, 2006, p.109), ou seja, guarda-se um valor que foi previamente calculado para futuro reuso. Porém, a reutilização computacional pode ir além do banco de dados. É possível guardas os dados vindos da camada de aplicação ou mesmo da camada de apresentação, poupando essas camadas, evitando reprocessamento e, assim, atendendo mais usuários. A seguir serão apresentados como as estratégias de desnormalização dos dados, utilização de cache e criação de conteúdo estático foram usadas pelos web sites e ajudaram a atender mais requisições, evitando escalar as camadas com recursos compartilhados.

39 Desnormalização Manter dados em um único lugar, sem duplicá-los, tem seus benefícios. Entre os principais está o ganho de integridade e a facilidade de manipulação desses dados. Essas são as idéias centrais por trás dos bancos de dados relacionais e a normalização de dados (Codd, 1970). Porém, para agrupar esses dados é necessário gastar processamento e I/O. Dependendo da complexidade do agrupamento ("Join" ou "Group By", por exemplo), processá-lo pode ser bem custoso. Agrupar muitas tabelas ou tabelas com muitos dados em um banco de dados relacional exige muito uso de CPU, memória e disco. Para evitar o custo de agrupar esses dados, e assim não gastar recursos do banco de dados, é possível manter uma cópia desnormalizada dos dados. Ao invés de pedir ao banco de dados para agrupar esses dados a cada requisição, com consultas (SQL) complexas, acessa-se a tabela que contém os dados já agrupados (PlentyoffIsh, 2009, Twitter, 2009) com simples consultas. A desnormalização é uma estratégia comum (Henderson, 2006, p.200) e muito usada entre os sites estudados. Um exemplo para ilustrar este problema é a nuvem de tags. Uma nuvem de tags é a representação gráfica da utilização das tags em um determinado objeto. O web site Flickr (Flickr, 2009), por exemplo, permite que os usuários coloquem tags nas fotos enviadas e mostra em uma de suas páginas as tags mais utilizadas (Fig.8).

40 29 Fig.8 - Nuvem de Tags do Flickr Este problema envolve agrupar os dados únicos, as tags de cada foto dos usuários, em um único lugar, a página de nuvem de tags. Obviamente, não faz sentido calcular a nuvem de tags para cada requisição da página que contém a nuvem, pois o custo para processá-la é muito alto. Uma das soluções é manter as tabelas normalizadas com os dados de cada foto e suas tags e manter uma tabela desnormalizada, já com os valores agregados (Fig.9). PK Foto FotoID Campo que mantém o valor desnormalizado SELECT COUNT(*) FROM FotoTag WHERE TagID = [Tag.TagID] FotoTag Tag PK,FK1 PK,FK2 FotoID TagID PK TagID Count Fig.9 - Modelo com valor desnormalizado O problema em desnormalizar os dados é justamente manter a consistência entre eles. Neste exemplo de nuvem de tags, por exemplo, agora temos a mesma informação em dois lugares (as tabelas normalizadas e a tabela desnormalizada).

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Cluster, Grid e computação em nuvem Slide 8 Nielsen C. Damasceno Introdução Inicialmente, os ambientes distribuídos eram formados através de um cluster. Com o avanço das tecnologias

Leia mais

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS Quando falamos em arquitetura, normalmente utilizamos esse termo para referenciar a forma como os aplicativos computacionais são estruturados e os hardwares

Leia mais

Introdução ao Modelos de Duas Camadas Cliente Servidor

Introdução ao Modelos de Duas Camadas Cliente Servidor Introdução ao Modelos de Duas Camadas Cliente Servidor Desenvolvimento de Sistemas Cliente Servidor Prof. Esp. MBA Heuber G. F. Lima Aula 1 Ciclo de Vida Clássico Aonde estamos? Page 2 Análise O que fizemos

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -ARQUITETURAS DE APLICAÇÃO MÓVEL. Prof. Angelo Augusto Frozza, M.Sc. http://about.

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -ARQUITETURAS DE APLICAÇÃO MÓVEL. Prof. Angelo Augusto Frozza, M.Sc. http://about. PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -ARQUITETURAS DE APLICAÇÃO MÓVEL Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO Introdução Cliente-Servidor Cliente Servidor Tipos de conexão

Leia mais

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO 10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE

Leia mais

Arquitetura dos Sistemas de Informação Distribuídos

Arquitetura dos Sistemas de Informação Distribuídos Arquitetura dos Sistemas de Informação Distribuídos Quando se projeta um sistema cuja utilização é destinada a ser feita em ambientes do mundo real, projeções devem ser feitas para que o sistema possa

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Desenvolvendo para WEB

Desenvolvendo para WEB Nível - Básico Desenvolvendo para WEB Por: Evandro Silva Neste nosso primeiro artigo vamos revisar alguns conceitos que envolvem a programação de aplicativos WEB. A ideia aqui é explicarmos a arquitetura

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

Profs. Deja e Andrei

Profs. Deja e Andrei Disciplina Sistemas Distribuídos e de Tempo Real Profs. Deja e Andrei Sistemas Distribuídos 1 Conceitos e Projetos de Sistemas Distribuídos Objetivos: Apresentar uma visão geral de processamento distribuído,

Leia mais

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Período letivo: 4 Semestre. Quinzena: 5ª. Faculdades Santa Cruz - Inove Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Unidade Curricular Sistemas Distribuídos Processos

Leia mais

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação Multiplexadores Permitem que vários equipamentos compartilhem um único canal de comunicação Transmissor 1 Receptor 1 Transmissor 2 Multiplexador Multiplexador Receptor 2 Transmissor 3 Receptor 3 Economia

Leia mais

TRABALHO COM GRANDES MONTAGENS

TRABALHO COM GRANDES MONTAGENS Texto Técnico 005/2013 TRABALHO COM GRANDES MONTAGENS Parte 05 0 Vamos finalizar o tema Trabalho com Grandes Montagens apresentando os melhores recursos e configurações de hardware para otimizar a abertura

Leia mais

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho vi http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Administração de Redes de Computadores Resumo de Serviços em Rede Linux Controlador de Domínio Servidor DNS

Leia mais

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial 1 of 14 27/01/2014 17:33 Sistema de Paginação de Esportes Universitários Documento de Arquitetura de Software Versão 1.0 Histórico da Revisão Data 30 de novembro de 1999 Versão Descrição Autor 1.0 Versão

Leia mais

Roteamento e Comutação

Roteamento e Comutação Roteamento e Comutação Design de Rede Local Design Hierárquico Este design envolve a divisão da rede em camadas discretas. Cada camada fornece funções específicas que definem sua função dentro da rede

Leia mais

Unidade 13: Paralelismo:

Unidade 13: Paralelismo: Arquitetura e Organização de Computadores 1 Unidade 13: Paralelismo: SMP e Processamento Vetorial Prof. Daniel Caetano Objetivo: Apresentar os conceitos fundamentais da arquitetura SMP e alguns detalhes

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

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

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 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 lugar e independente da plataforma, bastando para isso

Leia mais

Eduardo Bezerra. Editora Campus/Elsevier

Eduardo Bezerra. Editora Campus/Elsevier Princípios de Análise e Projeto de Sistemas com UML 2ª edição Eduardo Bezerra Editora Campus/Elsevier Capítulo 11 Arquitetura do sistema Nada que é visto, é visto de uma vez e por completo. --EUCLIDES

Leia mais

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

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web; CONCEITOS INICIAIS Agenda A diferença entre páginas Web, Home Page e apresentação Web; O que é necessário para se criar páginas para a Web; Navegadores; O que é site, Host, Provedor e Servidor Web; Protocolos.

Leia mais

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

1º Seminário de Software Livre Tchelinux Software Livre: leve adiante esta idéia. Soluções de Web Caching e Web Acceleration 1º Seminário de Software Livre Tchelinux Software Livre: leve adiante esta idéia Soluções de Web Caching e Web Acceleration Domingos Parra Novo domingosnovo@terra.com.br Tópicos Introdução O que são web

Leia mais

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores Conceitos Básicos de Rede Um manual para empresas com até 75 computadores 1 Conceitos Básicos de Rede Conceitos Básicos de Rede... 1 A Função de Uma Rede... 1 Introdução às Redes... 2 Mais Conceitos Básicos

Leia mais

SQL APOSTILA INTRODUÇÃO A LINGUAGEM SQL

SQL APOSTILA INTRODUÇÃO A LINGUAGEM SQL SQL APOSTILA INTRODUÇÃO Uma linguagem de consulta é a linguagem por meio da qual os usuários obtêm informações do banco de dados. Essas linguagens são, tipicamente, de nível mais alto que as linguagens

Leia mais

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

Leia mais

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos

Leia mais

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Perola André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Prevayler é a implementação em Java do conceito de Prevalência. É um framework que prega uma JVM invulnerável

Leia mais

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

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 1 Conceitos da Computação em Nuvem A computação em nuvem ou cloud computing

Leia mais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2

Leia mais

CAPÍTULO 2. Este capítulo tratará :

CAPÍTULO 2. Este capítulo tratará : 1ª PARTE CAPÍTULO 2 Este capítulo tratará : 1. O que é necessário para se criar páginas para a Web. 2. A diferença entre páginas Web, Home Page e apresentação Web 3. Navegadores 4. O que é site, Host,

Leia mais

Gerenciamento de software como ativo de automação industrial

Gerenciamento de software como ativo de automação industrial Gerenciamento de software como ativo de automação industrial INTRODUÇÃO Quando falamos em gerenciamento de ativos na área de automação industrial, fica evidente a intenção de cuidar e manter bens materiais

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING http://www.uniriotec.br/~tanaka/tin0036 tanaka@uniriotec.br Bancos de Dados Distribuídos Conceitos e Arquitetura Vantagens das Arquiteturas C/S (em relação

Leia mais

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO Santa Maria, 01 de Novembro de 2013. Revisão aula passada Projeto de Arquitetura Decisões de projeto de Arquitetura

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

IW10. Rev.: 02. Especificações Técnicas

IW10. Rev.: 02. Especificações Técnicas IW10 Rev.: 02 Especificações Técnicas Sumário 1. INTRODUÇÃO... 1 2. COMPOSIÇÃO DO IW10... 2 2.1 Placa Principal... 2 2.2 Módulos de Sensores... 5 3. APLICAÇÕES... 6 3.1 Monitoramento Local... 7 3.2 Monitoramento

Leia mais

ESTUDO DE CASO WINDOWS VISTA

ESTUDO DE CASO WINDOWS VISTA ESTUDO DE CASO WINDOWS VISTA História Os sistemas operacionais da Microsoft para PCs desktop e portáteis e para servidores podem ser divididos em 3 famílias: MS-DOS Windows baseado em MS-DOS Windows baseado

Leia mais

INTRODUÇÃO A PORTAIS CORPORATIVOS

INTRODUÇÃO A PORTAIS CORPORATIVOS INTRODUÇÃO A PORTAIS CORPORATIVOS Conectt i3 Portais Corporativos Há cinco anos, as empresas vêm apostando em Intranet. Hoje estão na terceira geração, a mais interativa de todas. Souvenir Zalla Revista

Leia mais

PARANÁ GOVERNO DO ESTADO

PARANÁ GOVERNO DO ESTADO A COMUNICAÇÃO NA INTERNET PROTOCOLO TCP/IP Para tentar facilitar o entendimento de como se dá a comunicação na Internet, vamos começar contando uma história para fazer uma analogia. Era uma vez, um estrangeiro

Leia mais

Soluções em. Cloud Computing. Midia Indoor. para

Soluções em. Cloud Computing. Midia Indoor. para Soluções em Cloud Computing para Midia Indoor Resumo executivo A Midia Indoor chegou até a Under buscando uma hospedagem para seu site e evoluiu posteriormente para uma solução cloud ampliada. A empresa

Leia mais

SISTEMAS DISTRIBUIDOS

SISTEMAS DISTRIBUIDOS 1 2 Caracterização de Sistemas Distribuídos: Os sistemas distribuídos estão em toda parte. A Internet permite que usuários de todo o mundo acessem seus serviços onde quer que possam estar. Cada organização

Leia mais

Arquitetura de Banco de Dados

Arquitetura de Banco de Dados Arquitetura de Banco de Dados Daniela Barreiro Claro MAT A60 DCC/IM/UFBA Arquitetura de Banco de dados Final de 1972, ANSI/X3/SPARC estabeleceram o relatório final do STUDY GROUP Objetivos do Study Group

Leia mais

www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00

www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00 www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00 Controle de Revisões Micropagamento F2b Web Services/Web 18/04/2006 Revisão Data Descrição 00 17/04/2006 Emissão inicial. www.f2b.com.br

Leia mais

Aplicação Prática de Lua para Web

Aplicação Prática de Lua para Web Aplicação Prática de Lua para Web Aluno: Diego Malone Orientador: Sérgio Lifschitz Introdução A linguagem Lua vem sendo desenvolvida desde 1993 por pesquisadores do Departamento de Informática da PUC-Rio

Leia mais

RESUMO DA SOLUÇÃO CA ERwin Modeling. Como eu posso gerenciar a complexidade dos dados e aumentar a agilidade dos negócios?

RESUMO DA SOLUÇÃO CA ERwin Modeling. Como eu posso gerenciar a complexidade dos dados e aumentar a agilidade dos negócios? RESUMO DA SOLUÇÃO CA ERwin Modeling Como eu posso gerenciar a complexidade dos dados e aumentar a agilidade dos negócios? O CA ERwin Modeling fornece uma visão centralizada das principais definições de

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 Índice 1. A Organização do Computador - Continuação...3 1.1. Memória Primária - II... 3 1.1.1. Memória cache... 3 1.2. Memória Secundária... 3 1.2.1. Hierarquias de

Leia mais

UM NOVO CONCEITO EM HOSPEDAGEM DE DOMÍNIO

UM NOVO CONCEITO EM HOSPEDAGEM DE DOMÍNIO www.origy.com.br UM NOVO CONCEITO EM HOSPEDAGEM DE DOMÍNIO CARACTERÍSTICAS: E-MAIL IMAP * Acesso simultâneo e centralizado, via aplicativo, webmail e celular/smartphone * Alta capacidade de armazenamento

Leia mais

Como medir a velocidade da Internet?

Como medir a velocidade da Internet? Link Original: http://www.techtudo.com.br/artigos/noticia/2012/05/como-medir-velocidade-da-suainternet.html Como medir a velocidade da Internet? Pedro Pisa Para o TechTudo O Velocímetro TechTudo é uma

Leia mais

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!!

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!! TUTORIAL DO ALUNO Olá, bem vindo à plataforma de cursos a distância da Uniapae!!! O Moodle é a plataforma de ensino a distância utilizada pela Uniapae sendo a unidade de ensino para rápida capacitação

Leia mais

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

Introdução à Tecnologia Web. Tipos de Sites. Profª MSc. Elizabete Munzlinger www.elizabete.com.br IntroduçãoàTecnologiaWeb TiposdeSites ProfªMSc.ElizabeteMunzlinger www.elizabete.com.br ProfªMSc.ElizabeteMunzlinger www.elizabete.com.br TiposdeSites Índice 1 Sites... 2 2 Tipos de Sites... 2 a) Site

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 13 Web Services Web Services

Leia mais

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento Professor Rene - UNIP 1 Roteamento Dinâmico Perspectiva e histórico Os protocolos de roteamento dinâmico são usados

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE Renan Leme Nazário, Ricardo Rufino Universidade Paranaense (Unipar) Paranavaí PR - Brasil renazariorln@gmail.com, ricardo@unipar.br Resumo. Este artigo

Leia mais

Documento de Análise e Projeto VideoSystem

Documento de Análise e Projeto VideoSystem Documento de Análise e Projeto VideoSystem Versão Data Versão Descrição Autor 20/10/2009 1.0 21/10/2009 1.0 05/11/2009 1.1 Definição inicial do documento de análise e projeto Revisão do documento

Leia mais

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento HOME O QUE É TOUR MÓDULOS POR QUE SOMOS DIFERENTES METODOLOGIA CLIENTES DÚVIDAS PREÇOS FALE CONOSCO Suporte Sou Cliente Onde sua empresa quer chegar? Sistemas de gestão precisam ajudar sua empresa a atingir

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

Solitaire Interglobal

Solitaire Interglobal Solitaire Interglobal POWERLINUX OU WINDOWS PARA IMPLANTAÇÃO SAP Escolher entre as plataformas concorrentes de sistema operacional Linux e Windows para SAP pode ser uma tarefa confusa para as organizações.

Leia mais

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

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Basedos na Web Capítulo 12 Agenda Arquitetura Processos Comunicação Nomeação Sincronização Consistência e Replicação Introdução

Leia mais

Tecnologia PCI express. Introdução. Tecnologia PCI Express

Tecnologia PCI express. Introdução. Tecnologia PCI Express Tecnologia PCI express Introdução O desenvolvimento de computadores cada vez mais rápidos e eficientes é uma necessidade constante. No que se refere ao segmento de computadores pessoais, essa necessidade

Leia mais

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança 3 SERVIÇOS IP 3.1 Serviços IP e alguns aspectos de segurança Os serviços IP's são suscetíveis a uma variedade de possíveis ataques, desde ataques passivos (como espionagem) até ataques ativos (como a impossibilidade

Leia mais

Manual do Painel Administrativo

Manual do Painel Administrativo Manual do Painel Administrativo versão 1.0 Autores César A Miggiolaro Marcos J Lazarin Índice Índice... 2 Figuras... 3 Inicio... 5 Funcionalidades... 7 Analytics... 9 Cidades... 9 Conteúdo... 10 Referência...

Leia mais

CLOUD. tendências CLOUD. entendendo e contratando assertivamente. Agosto/2012 INFORMATIVO TECNOLÓGICO DA PRODESP EDIÇÃO 02

CLOUD. tendências CLOUD. entendendo e contratando assertivamente. Agosto/2012 INFORMATIVO TECNOLÓGICO DA PRODESP EDIÇÃO 02 tendências CLOUD EDIÇÃO 02 Agosto/2012 CLOUD O conceito de nuvem é nebuloso Como uma organização pode contratar assertivamente Serviços em Cloud? Quais são os principais riscos de um contrato de Cloud

Leia mais

Sistemas Distribuídos Arquitetura de Sistemas Distribuídos Aula II Prof. Rosemary Silveira F. Melo Arquitetura de Sistemas Distribuídos Conceito de Arquitetura de Software Principais elementos arquiteturais

Leia mais

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. jef@ime.usp.br DCC-IME-USP

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. jef@ime.usp.br DCC-IME-USP Banco de Dados Introdução João Eduardo Ferreira Osvaldo Kotaro Takai jef@ime.usp.br DCC-IME-USP Importância dos Bancos de Dados A competitividade das empresas depende de dados precisos e atualizados. Conforme

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

Simple Storage. Storage Orientado ao objeto: Armazenamento de arquivos com a segurança e a economia que sua empresa precisa

Simple Storage. Storage Orientado ao objeto: Armazenamento de arquivos com a segurança e a economia que sua empresa precisa Simple Storage Storage Orientado ao objeto: Armazenamento de arquivos com a segurança e a economia que sua empresa precisa Simple Storage Storage Orientado ao objeto: Armazenamento de arquivos com a segurança

Leia mais

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo Introdução O que é Protocolo? - Para que os pacotes de dados trafeguem de uma origem até um destino, através de uma rede, é importante

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR Novell Teaming - Guia de início rápido Novell Teaming 1.0 Julho de 2007 INTRODUÇÃO RÁPIDA www.novell.com Novell Teaming O termo Novell Teaming neste documento se aplica a todas as versões do Novell Teaming,

Leia mais

Registro e Acompanhamento de Chamados

Registro e Acompanhamento de Chamados Registro e Acompanhamento de Chamados Contatos da Central de Serviços de TI do TJPE Por telefone: (81) 2123-9500 Pela intranet: no link Central de Serviços de TI Web (www.tjpe.jus.br/intranet) APRESENTAÇÃO

Leia mais

Comparativo de desempenho do Pervasive PSQL v11

Comparativo de desempenho do Pervasive PSQL v11 Comparativo de desempenho do Pervasive PSQL v11 Um artigo Pervasive PSQL Setembro de 2010 Conteúdo Resumo executivo... 3 O impacto das novas arquiteturas de hardware nos aplicativos... 3 O projeto do Pervasive

Leia mais

Manual de implantação

Manual de implantação Manual de implantação O BioPass ID é um serviço online baseado em nuvem que fornece uma poderosa tecnologia multibiométrica (reconhecimento de impressões digitais e face) para os desenvolvedores de qualquer

Leia mais

ADMINISTRAÇÃO DOS RECURSOS DE DADOS

ADMINISTRAÇÃO DOS RECURSOS DE DADOS Capítulo 7 ADMINISTRAÇÃO DOS RECURSOS DE DADOS 7.1 2003 by Prentice Hall OBJETIVOS Por que as empresas sentem dificuldades para descobrir que tipo de informação precisam ter em seus sistemas de informação?

Leia mais

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE A proposta para o ambiente apresentada neste trabalho é baseada no conjunto de requisitos levantados no capítulo anterior. Este levantamento, sugere uma

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Web Design Aula 11: Site na Web

Web Design Aula 11: Site na Web Web Design Aula 11: Site na Web Professora: Priscilla Suene priscilla.silverio@ifrn.edu.br Motivação Criar o site em HTML é interessante Do que adianta se até agora só eu posso vê-lo? Hora de publicar

Leia mais

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd. Apresentação Este curso tem como objetivo, oferecer uma noção geral sobre a construção de sistemas de banco de dados. Para isto, é necessário estudar modelos para a construção de projetos lógicos de bancos

Leia mais

Figura 01 Kernel de um Sistema Operacional

Figura 01 Kernel de um Sistema Operacional 01 INTRODUÇÃO 1.5 ESTRUTURA DOS SISTEMAS OPERACIONAIS O Sistema Operacional é formado por um Conjunto de rotinas (denominado de núcleo do sistema ou kernel) que oferece serviços aos usuários e suas aplicações

Leia mais

Contil Informática. Curso Técnico em Informática Processadores Core

Contil Informática. Curso Técnico em Informática Processadores Core Contil Informática Curso Técnico em Informática Processadores Core Quais as diferenças entre os processadores Intel Core i3, i5 e i7? A tecnologia avançada na área de hardware possibilita um avanço desenfreado

Leia mais

Conceitos de Banco de Dados

Conceitos de Banco de Dados Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Modelo cliente e servidor Slide 2 Nielsen C. Damasceno Modelos Cliente - Servidor A principal diferença entre um sistema centralizado e um sistema distribuído está na comunicação

Leia mais

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido Arquitetura Roteiro Arquitetura Tipos de Arquitetura Centralizado Descentralizado Hibrido Questionário 2 Arquitetura Figura 1: Planta baixa de uma casa 3 Arquitetura Engenharia de Software A arquitetura

Leia mais

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado 5 Avaliação Decidimos avaliar a arquitetura de componentes para o OiL proposta neste trabalho em duas dimensões diferentes. Na primeira, demonstramos a capacidade de configuração do middleware com alguns

Leia mais

Sistema de Chamados Protega

Sistema de Chamados Protega SUMÁRIO 1. INTRODUÇÃO... 3 2. REALIZANDO ACESSO AO SISTEMA DE CHAMADOS... 4 2.1 DETALHES DA PÁGINA INICIAL... 5 3. ABERTURA DE CHAMADO... 6 3.1 DESTACANDO CAMPOS DO FORMULÁRIO... 6 3.2 CAMPOS OBRIGATÓRIOS:...

Leia mais

Figura 1 - Arquitetura multi-camadas do SIE

Figura 1 - Arquitetura multi-camadas do SIE Um estudo sobre os aspectos de desenvolvimento e distribuição do SIE Fernando Pires Barbosa¹, Equipe Técnica do SIE¹ ¹Centro de Processamento de Dados, Universidade Federal de Santa Maria fernando.barbosa@cpd.ufsm.br

Leia mais

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios FATEC Cruzeiro José da Silva Ferramenta CRM como estratégia de negócios Cruzeiro SP 2008 FATEC Cruzeiro José da Silva Ferramenta CRM como estratégia de negócios Projeto de trabalho de formatura como requisito

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas Operacionais Prof. Marcelo Sabaris Carballo Pinto Gerenciamento de Dispositivos Gerenciamento de Dispositivos de E/S Introdução Gerenciador de Dispositivos Todos os dispositivos

Leia mais