RUBY ON RAILS ESCALÁVEL: ESTUDO E SOLUÇÕES

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

Download "RUBY ON RAILS ESCALÁVEL: ESTUDO E SOLUÇÕES"

Transcrição

1 UNIVERSIDADE FEDERAL DE SANTA CATARINA SISTEMAS DE INFORMAÇÃO RUBY ON RAILS ESCALÁVEL: ESTUDO E SOLUÇÕES GABRIEL GONÇALVES NUNES MAZETTO TRABALHO DE CONCLUSÃO DO CURSO Orientador: Prof. Leandro José Komosinski Florianópolis, 2011

2 GABRIEL GONÇALVES NUNES MAZETTO RUBY ON RAILS ESCALÁVEL: ESTUDO E SOLUÇÕES Trabalho de conclusão de curso apresentado como parte das atividades para obtenção do grau de Bacharel em Sistemas de Informação pela Universidade Federal de Santa Catarina a Gabriel Gonçalves Nunes Mazetto. Orientador: Prof. Leandro José Komosinsk Banca Examinadora: Renato Fileto Mario Dantas Florianópolis, 2011

3 Dedico este trabalho a todas as pessoas que de alguma forma contribuíram com a realização deste, em especial aos amigos da área de tecnologia que participaram de inúmeras discussões e trocas de informação sobre o tema, a minha namorada, pela paciência e compreensão e a minha família pela educação e oportunidade que me deram.

4 AGRADECIMENTOS Agradecimentos aos amigo Nassor Paulino da Silva, por toda ajuda e troca de conhecimentos que foram fundamentais a conclusão deste trabalho, Guilherme Arthur Gerônimo, pela oportunidade de trabalhar durante meu estágio com diversas questões relacionadas ao assunto deste TCC, ao meu orientador, pelas várias horas de atendimento durante a elaboração deste trabalho, e as diversas pessoas dentro da SeTIC/UFSC que foram fundamentais para tornar este trabalho realidade.

5 640kB devem ser bastantes para qualquer um. Bill Gates, 1981

6 RESUMO Este trabalho contém um estudo sobre as técnicas de escalabilidade aplicado ao contexto de aplicações Web, focado no framework de desenvolvimento Ruby on Rails. É realizado um levantamento das diversas opções de servidores, bases de dados relacionais e não relacionais (NoSQL) que podem ser utilizados com o framework, juntamente com um mapeamento dos problemas de escalabilidade que podem afetar uma aplicação web em geral, e quais desses problemas se manifestam em uma aplicação construída utilizando Ruby on Rails. Este trabalhado traz além de simulações para avaliar soluções de escalabilidade horizontal e vertical, uma proposta para construção de aplicações Multi-Site, tratando a questão de escalabilidade de aplicações como serviço (SaaS). Palavras-chave: Ruby on Rails, escalabilidade, Ruby, web, SGBD, NoSQL, Benchmark.

7 ABSTRACT This document contains a study of scalability techniques applied to the context of Web Applications, with focus to the web development framework, Ruby on Rails. It contains a list of many different sorts of web servers, relational databases, non-relational databases, that can be used with the framework, also contains a list of the chief scalability problems that can affect a web application, and which of this can affect one built using Ruby on Rails. This document brings, in addition to simulations to help analyze scalability solutions, a proposal on how to build Multi-Site web applications, dealing with Software as a Service scalability problem. Keywords: Ruby on Rails, scalability, Ruby, web, DBMS, NoSQL, Benchmark.

8 LISTA DE ILUSTRAÇÕES Gráfico 1: Benchmark entre principais servidores web para Ruby...27 Gráfico 2: Tempo de execução do benchmark realizado pelo "Programming Zen"...36 Gráfico 3: Consumo de memória do benchmark realizado pelo "Programming Zen"...40 Gráfico 4: Valor médio de requisições por segundo do Apache e Nginx pela carga de conexões concorrentes Gráfico 5: Tempo médio de resposta das requisições pelo Nginx em baixa concorrência...62 Gráfico 6: Tempo médio de resposta das requisições pelo Apache em baixa concorrência...63 Gráfico 7: Tempo médio de resposta das requisições pelo Nginx em alta concorrência...64 Gráfico 8: Tempo médio de resposta das requisições pelo Apache em alta concorrência...65 Gráfico 9: Valor médio de requisições por segundo do Apache+Passenger e Nginx+Passenger pela carga de conexões concorrentes Gráfico 10: Comparativo de performance entre o resultado do Teste 1 e Teste Gráfico 11: Benchmark simulando escalabilidade vertical...70 Gráfico 12: Benchmark para 1 e 2 nodos em ambiente com distribuição de cargas...72

9 SUMÁRIO Lista de ilustrações... 6 Introdução Motivação Metodologia Escalabilidade Definição Tipos de escalabilidade Verticalmente Escalável (scale up) Horizontalmente Escalável (scale out) Maneiras de medir escalabilidade Escalabilidade de Carga Escalabilidade Geográfica Escalabilidade administrativa Lei de Amdahl Soluções comuns para problemas de escalabilidade Balanceamento de Carga Balanceamento de Armazenamento Balanceamento de Rede Balanceamento de CPU Escalabilidade em aplicações para web Introdução Arquitetura Web Problemas de escalabilidade Aplicações com processamento intenso Aplicações com enormes necessidades de armazenamentos Aplicações que precisem atender um grande número de usuários Aplicações Multi-Site Conclusão... 24

10 8 4 Escalabilidade em Ruby on Rails Introdução Servidores Web para Ruby Webrick Mongrel Thin Possibilidades Futuras Servidores Web de múltiplo propósito Apache Nginx Lighttpd Cherokee Servidores de Banco de Dados Relacional SQL Lite MySQL PostgreSQL Servidores de Banco de Dados NoSQL Introdução MongoDB CouchDB Cassandra Hadoop database Redis Implementações da linguagem Ruby Comparativos de performance Problemas Número crescente de acessos Necessidade crescente de processamento de informações Aplicações com necessidade crescente de armazenamento de dados ou arquivos Aplicações Multi-Site Soluções Arquitetura escalável para aplicações com muitos acessos Aplicações que necessitem processar muitas informações Aplicações com necessidade de armazenar muitos dados/arquivos Aplicações Multi-Site Como identificar gargalos (bottlenecks) Monitoramento e Análise de performance... 52

11 9 5 SIMULAÇÕES Configuração Ambiente de Virtualização Instalação do Passenger + Ruby Máquina Virtual Apache2 + Passenger Máquina Virtual Nginx + Passenger Metodologia Ferramentas Apache Benchmark Gnuplot Cenários Comparativo entre soluções de servidor multi-propósito Comparativo de escalabilidade horizontal vs. vertical com Ruby on Rails Conclusão...73

12 INTRODUÇÃO Este trabalho tem por finalidade apresentar uma série de estratégias e soluções, para problemas de escalabilidade, relacionados a aplicações Web desenvolvidas utilizando o framework Ruby on Rails, em sua ultima versão, atualmente 3.0. Por questões ideológicas do autor, o foco deste trabalho será em soluções que se adequem ao conceito de software livre ou free software 1 pela Free Software Fundation. Pelas mesmas razões, não farão parte do universo de pesquisa sistemas operacionais, aplicações e componentes considerados proprietários ou não livres. No entanto, a existência deles poderá ser comentada. O sistema operacional de referência para esse trabalho é o Ubuntu Linux, de forma que todos os exemplo, configurações, aplicativos e trechos de código foram testados e executados nele. O fato da escolha não limita este trabalho e suas soluções a esta distribuição em específico, sendo que qualquer outra distribuição que atinja os requisitos mínimos dos softwares e versões compatíveis, serão capazes de reproduzir resultados semelhantes, atentando as especificidades de cada uma. Ainda o fato da escolha do sistema operacional, não inviabiliza por completo que algumas soluções possam funcionar de forma completa ou parcial também em outros sistemas que sejam capazes de rodar o framework Ruby On Rails, porém a essas, o autor deixa o leitor a tarefa de experimentar e adaptar. 1 A definição conceitual e filosófica pode ser encontrada no endereço: [EN]

13 Motivação Existem diversos tipos de tecnologias para desenvolvimento de aplicações web, algumas se baseiam em linguagens e trabalhos acadêmicos, outras, estritamente nas necessidades do mercado. Ruby on Rails é um caso de tecnologia que surgiu atendendo estritamente necessidades do mercado. Sua concepção se deu a partir da extração de parte do código-fonte da ferramenta Basecamp da 37 signals, na época em fase ainda embrionária, teve sua primeira release em julho de 2004, com licença de código livre. De lá pra cá, conquistou espaço mundialmente na industria de desenvolvimento de software, concentrando o conhecimento a seu respeito e a direção do seus desenvolvimento no ecossistema criado em torno da mesma, composta por desenvolvedores entusiastas e algumas empresas. Devido suas características e sua origem essencialmente no mercado, muito pouco conhecimento acadêmico foi gerado a respeito desta tecnologia. Além deste fato, com a adoção crescente da mesma, para projetos de médio e grande porte, criou-se um vazio de conhecimento separando as empresas e desenvolvedores que passaram pela necessidade de escalar suas aplicações e adquiriram o conhecimento de como fazê-las, daquelas que ainda não o fizeram. Com isso, fica claro a necessidade colaborar com a geração de conhecimento acadêmico a respeito do assunto, procurando oferecer informações e ferramentas para aqueles que desejam desenvolver aplicações que possam escalabilidade utilizando o framework Ruby on Rails. 1.2 Metodologia Para entender o problema é necessário primeiramente compreender os conceitos fundamentais de escalabilidade e o que influencia uma aplicação a ser ou não escalável.

14 12 Portanto, será apresentado no capítulo 2 o embasamento teórico relacionado a escalabilidade, seus tipos, e os problemas mais comuns que sistemas de maneira em geral apresentam, relacionados a ela. No capítulo 3, o foco passará para aplicações Web, e portanto será visto de que forma o problema de escalabilidade se apresenta neste contexto e quais as soluções que geralmente são feitas. Essas informações ampliam a utilidade deste trabalho, tornando parte dele utilizável para outras tecnologias que não a foco deste. No capítulo 4 o problema de escalabilidade será abordado no contexto específico de aplicações Ruby on Rails, listando os casos comuns, soluções, e um levamtamento dos diversos componentes de infra-estrutura que poderão ser utilizados ao desenvolver uma aplicação, em conjunto com seus pontos positivos e negativos. No capítulo 5, serão feitas a execução de algumas simulações em conjunto com medições, para auxiliar a avaliação das estraégias de escalabilidade, que poderão ser repetidas em conjunto com uma aplicação real, para avaliar a melhor estratégia a ser adotada. Pretende-se fornecer informações que sejam úteis a auxiliar na implementação de código para tornar as aplicações escaláveis, em conjunto com a sugestão de algumas ferramentas, plugins, servidores, etc disponíveis atualmente.

15 2 ESCALABILIDADE 2.1 Definição Em telecomunicações e na engenharia de software, escalabilidade é uma característica desejável em todo o sistema, em uma rede ou em um processo, que indica sua habilidade de manipular uma porção crescente de trabalho de forma uniforme, ou estar preparado para crescer. (André B. Bondi, p ) De maneira mais geral, pode-se afirmar que um sistema é escalável quando o mesmo tem a capacidade de crescer, seja em numero de utilizadores, em quantidade de requisições, em quantidade de dados armazenados, processados etc, sem necessidade de reescrita ou alteração considerável no código. Um sistema capaz de escalar (escalável) é um sistema que continua eficaz quando há um aumento significativo do número de recursos e utilizadores, em que não é necessário alterar a implementação dos componentes e da forma de interação das mesmas. Num sistema escalável, as seguintes propriedades devem ser verdadeiras: Os recursos envolvidos devem aumentar linearmente com a dimensão do sistema O aumento na dimensão dos dados/recursos não deve levar a uma diminuição significativa do desempenho a redução não deve ser superior a O(log n). 2.2 Tipos de escalabilidade A escalabilidade pode ser analisada por diversos ângulos.

16 Verticalmente Escalável (scale up) Significa adicionar recursos em um único nó do sistema (mais memória ou um disco rígido mais rápido) Horizontalmente Escalável (scale out) Significa adicionar mais nós ao sistema, tais como adicionar um novo computador com uma aplicação para clusterizar o software. 2.3 Maneiras de medir escalabilidade Existem algumas maneiras de medir ou determinar que um sistema é escalável Escalabilidade de Carga Quando um sistema distribuído deve ser fácil para ser expandido e usar sua gama de recursos para acomodar tanto exigências do mesmo sendo elas pouca ou excessiva Escalabilidade Geográfica Um sistema é geograficamente escalável quando ele mantém sua performance, utilidade e usabilidade, independente da maneira como ele está distribuído, isto é, ele consegue ir de uma arquitetura mais concentrada para uma mais distribuída Escalabilidade administrativa Não importa a variação de informação que diferentes organizações necessitam compartilhar em um único sistema distribuído, ele deve permanecer fácil de ser usado e gerenciado Escalabilidade Funcional Um sistema é funcionalmente escalável quando é possível adicionar recursos ou melhorias ao sistema com esforços mínimos.

17 Lei de Amdahl A Lei de Amdahl é a lei que governa o speedup (ganho) na utilização de processadores paralelos em relação ao uso de apenas um processador. Seu nome deriva do arquiteto de computadores Gene Amdahl. O ganho de desempenho que pode ser obtido melhorando uma determinada parte do sistema é limitado pela fração de tempo que essa parte é utilizada pelo sistema durante a sua operação. O ganho depende de dois fatores: 1. Fração de melhoria (Fm): fração de tempo da computação que pode tirar proveito da melhoria feita. Esta fração é sempre menor ou igual a Ganho de execução (Ge): ganho obtido com a melhoria na parte específica modificada do sistema. Este ganho é sempre maior que 1. 1 ganho= 1 Fm Fm Ge Speedup pode ser definido como a relação entre o tempo gasto para executar uma tarefa com um único processador e o tempo gasto com N processadores, ou seja, Speedup é a Medida do ganho em tempo. S = T 1 T N Onde S é o speedup e T(N) é o tempo gasto para N processadores Wikipédia (2010a) 2.4 Soluções comuns para problemas de escalabilidade Podemos dividir os tipos mais comuns de soluções para problemas de escalabilidade em: balanceamento de carga, balanceamento de armazenamento, balanceamento de rede e balanceamento de CPU. Wikipédia (2010b)

18 Balanceamento de Carga Um serviço conforme comece a crescer, pode esbarrar nos limites do hardware ao qual ele está atrelado, independente do quão caro e moderno seja. Nesse caso, é o momento em que o serviço precisa ser distribuído por várias máquinas. Os casos mais genéricos de problemas com limitação de hardware são relacionados a processamento, memória ram, espaço de armazenamento limitações de rede. Wikipédia (2010c) Balanceamento de Armazenamento O balanceamento do suporte de armazenamento permite distribuir o acesso a sistemas de arquivos por vários discos (software/hardware RAID 2 ), garantindo ganhos em tempos de acesso. Estas soluções podem ser dedicadas ou existir em cada um dos servidores do cluster. A distribuição dos dados quando objetivada para melhorar o tempo de acesso, tem como desafios principais questões como replicação dos dados, garantia de integridade (garantir que ao alterar o arquivo em uma copia principal, as cópias adicionais receberão também aquela alteração), transação (um arquivo precisa ser alterado, mas o mesmo está sendo acessado por outros usuários, como garantir que seja feita a alteração e ao mesmo tempo que todos usuários consigam ter o acesso ao conteúdo do arquivo naquele momento sem receber uma versão corrompida?). Quando esse tipo de replicação é feita utilizando-se de uma solução RAID, a complexidade de implementação é reduzida, já que tudo acontece na máquina do servidor ou no storage. Nesses casos, o próprio software ou hardware é quem cuida de todas as questões que envolvam a replicação e a garantia de integridade. No caso da utilização de soluções com RAID, pode-se ganhar também em confiabilidade, podendo ter redundância de disco em caso de falha. Existe a possibilidade de se trabalhar com replicação através de algum serviço no sistema operacional, replicando esses dados para outras máquinas da rede, utilizando por exemplo 2 Conjunto Redundante de Discos Independentes (Redundant Array of Independent Drives)

19 17 rsync do Linux. Um exemplo de utilização dessa abordagem é a criação de mirrors (espelhamento de dados) de um repositório Linux, ou de um serviço de downloads. Quando a necessidade de balancear o armazenamento se dá para conseguir ampliar sua capacidade, os problemas passam a ser diferentes do primeiro caso. Novamente a solução pode ser feita diretamente na própria máquina, através da adição de mais hardwares de discos, utilizar uma solução dedicada de storage, ou uma solução codificada na própria aplicação que seja capaz de distribuir e recuperar esses arquivos em diversos servidores diferentes. No primeiro caso, dependendo das características do sistema operacional, no qual o serviço está sendo disponibilizado, pode ser necessário que a aplicação seja adaptada, juntamente com configurações específicas, para realizar o mapeamento desses discos Balanceamento de Rede O balanceamento da utilização da rede resume-se em reencaminhar o tráfego destinado a um destino específico que esteja sendo muito requisitado, para outros destinos alternativos que também ofereçam o mesmo serviço/aplicação, a fim distribuir os acessos aos servidores. Este balanceamento pode ocorrer a qualquer nível da camada OSI Wikipédia (2010c). Um dos tipos mais comuns de solução para balanceamento em rede, na camada de aplicação, é realizado utilizando o serviço de DNS 3, responsável por prover a resolução de nomes dos servidores. Através da utilização de um escalonador usando algorítimo de Round-robin, distribui uniformemente entre os clientes, endereços distintos de máquinas. Esta solução não é ideal, já que não baseia essa distribuição em nenhuma informação dos servidores e nem garante que a carga de fato será distribuída uniformemente, pois os clientes podem ter comportamentos diferentes uns dos outros. Enquanto a solução utilizando DNS é uma das mais simples, a mesma não é considerada confiável, já que pode repassar o tráfego para um servidor que não esteja disponível naquele momento por algum motivo qualquer. 3 Do inglês Domain Name Server, refere-se a um dos serviços básicos de resolução de nomes da internet.

20 18 Um balanceamento um pouco mais elaborado, pode ser feito, por exemplo, por uma aplicação servidora que receba a requisição e através de algum algoritmo próprio, repasse a mesma para uma outra máquina em um cluster, agindo como se fosse um proxy. Este caso é comumente utilizado quando o cluster de servidores provê algum serviço que seja muito acessado ou que execute um processamento mais pesado. Para implementar isso, utiliza-se uma aplicação servidora altamente paralelizável e de baixa latência, para receber as requisições iniciais, fazendo a ponte entre as diversas outras máquinas e os clientes. Nessa solução é possível também que a aplicação servidora colete dados de carga e performance das demais máquinas para conseguir distribuir de fato as cargas uniformemente, bem como, realizar verificações para, caso algum dos servidores caia, não repasse o tráfego para ele. O problema da segunda solução é que ela se torna também um ponto de falha, não sendo assim considerada 100% confiável se utilizada sozinha. Uma alternativa para contornar esses problemas está na utilização de hardware específico, conhecido como load balancer, que pode trabalhar na camada de rede ou até mesmo na camada de aplicação. Este procura sanar tanto a questão de roteamento do tráfego, quando a questão de garantir que o tráfego esteja sendo repassado para algum servidor que seja capaz de responder. Dependendo do harware ou solução escolhida, pode utilizar outras variáveis para levar em conta para qual máquina ele deve direcionar tais quais carga atual, uptime, etc Balanceamento de CPU Este tipo de balanceamento é efetuado pelos sistemas de processamento distribuído e consiste, basicamente, em dividir a carga total de processamento pelos vários processadores no sistema (sejam eles locais ou remotos) Wikipédia (2010c).

21 3 ESCALABILIDADE EM APLICAÇÕES PARA WEB Aplicação Web é o termo utilizado para designar, de forma geral, sistemas de informática projetados para utilização através de um navegador, na internet ou em redes privadas ( Intranet ). Trata-se de um conjunto de programas que é executado em um servidor de HTTP (Web Host). O desenvolvimento da tecnologia web está relacionado, entre outros fatores, a necessidade de simplificar a atualização e manutenção mantendo o código-fonte em um mesmo local, de onde ele é acessado pelos diferentes usuários. Pode-se definir uma aplicação web como uma aplicação de software que utiliza a web, através de um browser como ambiente de execução. Wikipédia (2010d) 3.1 Introdução Neste capítulo será abordado de maneira comparativa e com alguns exemplos teóricos, quais as questões de escalabilidade que estão envolvidas em aplicações para Web e como as soluções mais tradicionais procuram sanar esse problema. 3.2 Arquitetura Web Não é objetivo deste trabalho detalhar o funcionamento da Web, mas de maneira simplificada podemos entender a arquitetura como composta por dois atores principais, um sendo o cliente (geralmente acessando por um programa chamado navegador), e outro, servidor (podendo este não necessariamente ser uma única máquina, se considerarmos sistemas distribuídos). Toda comunicação é feita através de protocolo HTTP 4 que por sua vez é implementado utilizando TCP e IP. Este protocolo é responsável pela requisição de recursos remotos (textos, imagens, etc), envio de informações de formulários, etc. Wikipédia (2010e) 4 Hipertext Transfer Protocol Protocolo de comunicação responsável pelo acesso a páginas web

22 20 Uma aplicação Web, dependendo de como foi projetada e programada, pode rodar em um simples servidor Web, ou rodar no chamado servidor de aplicação. Segundo a Wikipédia (2010f) podemos definir um servidor Web como sendo: um programa de computador responsável por aceitar pedidos HTTP de clientes, geralmente os navegadores, e servi-los com respostas HTTP, incluindo opcionalmente dados, que geralmente são páginas web, tais como documentos HTML com objetos embutidos (imagens, etc.). Já sobre um servidor de aplicação, é definido como: um servidor de aplicação ou em inglês, application server, é um software que disponibiliza um ambiente para a instalação e execução de certas aplicações. Os servidores de aplicação também são conhecidos como software de middleware. O objetivo do servidor de aplicações é disponibilizar uma plataforma que abstraia do desenvolvedor de software algumas das complexidades de um sistema computacional. No desenvolvimento de aplicações comerciais, por exemplo, o foco dos desenvolvedores deve ser a resolução de problemas relacionados ao negócio da empresa, e não de questões de infraestrutura da aplicação. O servidor de aplicações responde a algumas questões comuns à todas as aplicações, como segurança, garantia de disponibilidade, balanceamento de carga e tratamento de exceções. Wikipédia (2010g) 3.3 Problemas de escalabilidade No contexto de aplicações Web, os problemas fundamentais de escalabilidade se manifestam de diversas maneiras diferentes e atingem principalmente, aplicações, conforme classificaremos a seguir Aplicações com processamento intenso Considerando o cenário de uma aplicação Web que realize diversas tarefas que exijam processamento mais intenso, existem dois caminhos tradicionais a serem seguidos: Escalar verticalmente adicionando mais recursos de hardware a máquina servidora, para suprir as necessidades computacionais crescentes, até atingir o limite que a arquitetura de

23 21 harware permitir. Essa primeira abordagem é considerada mais limitada e pode resolver o problema até determinado ponto. Escalar horizontalmente, adicionando mais máquinas servidoras e distribuindo a carga de acesso e processamento entre essas diversas máquinas. Essa abordagem é mais interessante pois permite um crescimento muito maior do que a primeira. Qualquer que seja o problema, não é necessário escolher apenas um caminho, podendo combinar ambos procurando atingir melhores resultados Aplicações com enormes necessidades de armazenamentos Algumas aplicações podem necessitar armazenar grandes volumes de dados, sejam eles dados relacionais, que comumente são armazenados em bancos de dados realacionais, ou arquivos de mídia tais como fotos, vídeos, planilhas, etc. Quando falamos em dados relacionais, levamos o problema para o domínio dos bancos de dados e neste caso, podem existir inúmeras maneiras de se tratar este problema. Alguns bancos de dados são capazes de lidar com esse tipo de problema sozinhos e de maneira transparente para a aplicação. Um banco de dados pouco conhecido do grande público, mas bastante explorado pela comunidade de desenvolvedores de Ruby on Rails é o MongoDB 5. Ele difere dos bancos de dados relacionais e se auto-classifica na categoria de banco de dados orientado a documento. 10gen (2010) Quanto ao volume de dados, novamente pode ser escalado de maneira vertical, utilizando unidades de armazenamento realmente grandes, ou de maneira horizontal, dividindo o armazenamento dessas informações em vários nodos (servidores). Ao se utilizar a primeira opção o impacto mais claro é a performance das consultas, que, por estarem trabalhando com enormes volumes de dados de maneira concentrada, tendem a serem mais lentas. Por esse motivo, não é mais comum sua utilização. 5 Disponível em:

24 22 Ao trabalhar com a segunda alternativa, essa carga de processamento é dividida entre os nodos da mesma forma que a responsabilidade pelo armazenamento. Essa distribuição recebe o nome de Sharding e no caso do MongoDB é feita de maneira transparente para a aplicação. Algumas das técnicas implementadas por esse banco de dados, podem ser simuladas pela própria aplicação Web e gerenciada por algum algorítimo, especificamente criado para isso, quando o próprio banco de dados não der suporte a elas. Quando analisamos o caso de aplicações que precisem trabalhar com um grande volume de dados de mídia, os quais não estão armazenados em um banco de dados, podemos aplicar a técnica de Sharding ou investir em unidades de armazenamentos grandes o suficiente Aplicações que precisem atender um grande número de usuários Quando uma aplicação possui um grande número de usuários (e consequentemente de acessos), e principalmente, se é um número crescente conforme o tempo, ela precisa ter sido pensada desde o princípio para isso. Neste cenário, podemos incluir as questões de armazenamento citadas anteriormente bem como de processamento. Além dessas questões temos que levar em conta que parte da responsabilidade está no servidor Web que deve ser capaz de atender as necessidades intensas de acesso. A outra parte está na própria aplicação que deve ter seu código otimizado, sem gargalos de performance e preparado para funcionar com um ambiente distribuído. Nestes casos, a solução mais comum está em dividir os acessos em diversas máquinas, quantas forem necessárias a demanda dos clientes. Essa abordagem pode trazer diversos desafios, dependendo do suporte disponível pela arquitetura utilizada Aplicações Multi-Site Existe um tipo específico de aplicação Web, que é feitos pensando em oferecer um serviço para um grande número de pessoas, que se assemelha, em questão de funcionalidade e cus-

25 23 tomização a noção de que cada um possui uma própria instalação da aplicação, mesmo não sendo esse o caso. Um exemplo clássico desse tipo de aplicação é o caso de blogs. Qualquer pessoa pode instalar uma aplicação para disponibilizar um blog online, ou utilizar um serviço que cria e hospeda seu próprio blog. Na primeira situação em que existe de fato uma instalação para cada pessoa, se pensarmos em um serviço que trabalhe dessa maneira, conseguimos concluir rapidamente que existe um certo desperdício de espaço em disco e replicação de código. Pensando em aplicações Rails, o problema é ainda maior, já que isso implica também em desperdício de memória RAM (já que cada aplicação deve ser iniciada por completo para responder as requisições, e após responder, continua ativa). Existe também o problema de gerenciamento dessas diversas instalações, e o deploy de novas versões. Contudo, a abordagem tradicional fornece algum nível de escalabilidade horizontal out of the box, já que a carga acaba podendo ser dividida entre várias máquinas (e as várias instalações da aplicação). Como esse tipo de serviço, existe uma grande quantidade de outros serviços que se se encaixam nesse mesmo modelo. Dessa forma, é necessário pensar em uma estratégia para eliminar esse disperdício e ao mesmo tempo oferecer uma escalabilidade maior e melhor que a solução tradicional. A maneira com que o maior serviço de blogs, o Wordpress.com encontrou, foi utilizar uma mesma instalação física, para atender um número maior de endereços/proprietários de blog, a qual está preparada para essa finalidade. A solução utilizada por eles, pode ser estudada e aplicada para qualquer tipo de aplicação Web, tornando elas também Multi-site. Esse modelo de construção de aplicação web, será abordado em capítulo futuro, contextualizados para o framework Ruby on Rails.

26 3.4 Conclusão 24 Pelo fato de aplicações Web serem diferentes de conteúdos estáticos HTML, existem uma série de dificuldades que precisam ser tratadas quando pretende-se tornar o sistema escalável. Alguns desses problemas precisam ser resolvidos no domínio de banco de dados, outros em nível de hardware e parque de máquinas, mas acaba se tornando necessário na maioria dos casos que a aplicação seja pensada inicialmente para enfrentar esse tipo de situação, seja por ela mesma, ou por algum framework que implemente as técnicas necessárias.

27 4 ESCALABILIDADE EM RUBY ON RAILS 4.1 Introdução Neste capítulo será abordado as questões de escalabilidade que envolvem o framework Ruby on Rails, as soluções já existentes e problemas ainda em aberto. Pode-se inicialmente considerar que os problemas que afetam de uma forma geral aplicações Web também impactam nas aplicações que são feitas utilizando o framework Ruby on Rails. Dessa forma, devemos começar a análise pela camada de interação mais baixa de uma aplicação Rails, que é composta pelo servidor Web. Em seguida passaremos pelos servidores de bancos de dados e sua integração ao framework, as diversas implementações da linguagem Ruby para então analisar os problemas e propor soluções. Atualmente existem diversas opções de servidores que podem ser utilizados para rodar aplicações Ruby on Rails. Neste trabalho estão sendo citados os principais, mais conhecidos e relevantes ao problema que está sendo abordado. 4.2 Servidores Web para Ruby Uma primeira categoria de servidores que podem ser mencionados são aqueles que foram escritos especificamente para rodarem aplicações em Ruby. Estes podem ser considerados servidores especialistas no sentido que eles foram desenvolvidos para rodar códigos Ruby (consequentemente Ruby on Rails) e não se esforçam em fazer muito mais que isso.

28 Em ambiente de produção, dificilmente algum deles será utilizado sozinho, geralmente em conjunto com um servidor web de propósito multiplo que será comentado a seguir Webrick Talvez o servidor mais conhecido para aplicações Ruby on Rails, já que vem disponível em todas aplicações construídas com o framework, por padrão. Ele geralmente é utilizado nas fases iniciais de desenvolvimento. Criado por Masayoshi Takahashi e Yuuzou Gotou juntamente com contribuições de outros desenvolvedores, ele é totalmente escrito em Ruby e funciona como um servidor HTTP simplificado. Pela sua característica de ser uma implementação simplista, sem recursos para atender grandes demandas, não é indicado para ambientes de produção. Wikipédia (2011a) Mongrel É uma biblioteca HTTP de código aberto e um servidor web para aplicações escritas em Ruby, criado por Zed Shaw. Considerado o primeiro servidor web em Ruby que possui recursos de escalabilidade. O servidor em sí não é utilizado sozinho em ambiente de produção, por sua arquitetura single thread não suportar uma carga grande de acessos. Configurações mais comuns são feitas com várias instâncias do Mongrel em conjunto com Apache ou Nginx, estes fazendo papel de balanceadores de carga. Nessa arquitetura, o Apache ou Nginx, se encarregam de disponibilizar o conteúdo estático, e através de algum módulo de balanceamento de carga, distribui as requisições dinâmicas entre os processos do Mongrel, de certa forma, contornando os efeitos da limitação de thread única. Além desses servidores mais comuns, outras soluções também são utilizadas como o Lighthttpd ou ainda um hardware específico para balanceamento de carga entre as requisições das instâncias do Mongrel. Wikipédia (2011b)

29 Thin O mais rápido dos três, desenvolvido utilizando o componente de parser do Mongrel, a biblioteca EventMachine, uma biblioteca para lidar com operações de I/O da rede, que proporciona alta performance, estabilidade e alta escalabilidade, e a biblioteca Rack, responsável pela interface entre o servidor e a aplicação. O Gráfico 1 a seguir demonstra testes feito 6 com os principais servidores web para Ruby e a relação de ganho de performance que o Thin consegue em relação aos demais: Gráfico 1: Benchmark entre principais servidores web para Ruby Possibilidades Futuras No dia 11 de junho de 2010 teve início o desenvolvimento de uma nova e versão do Mongrel (chamada Mongrel2), que promete aproveitar a biblioteca de parser HTTP da versão anterior, já bastante consolidada, porém com o restante da aplicação totalmente reescrito, tendo escalabilidade como objetivo principal. Além do código ter sido repensado, houve mudanças estruturais que tornaram a aplicação algo totalmente diferente da primeira versão. Algumas das novas características são, segundo o próprio autor: Mongrel2 is an application, language, and network architecture agnostic web server that focuses on web applications using modern browser technologies. SHAW (2011) 6 Disponível em:

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

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

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

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

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

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

XDOC. Solução otimizada para armazenamento e recuperação de documentos

XDOC. Solução otimizada para armazenamento e recuperação de documentos XDOC Solução otimizada para armazenamento e recuperação de documentos ObJetivo Principal O Que você ACHA De ter Disponível Online todos OS Documentos emitidos por SUA empresa em UMA intranet OU Mesmo NA

Leia mais

MINICURSO WINDOWS SERVER 2008 UTILIZANDO O VMWARE PLAYER

MINICURSO WINDOWS SERVER 2008 UTILIZANDO O VMWARE PLAYER MINICURSO WINDOWS SERVER 2008 UTILIZANDO O VMWARE PLAYER TÁSSIO JOSÉ GONÇALVES GOMES tassiogoncalvesg@gmail.com MINICURSO WINDOWS SERVER 2008 TÁSSIO GONÇALVES - TASSIOGONCALVESG@GMAIL.COM 1 CONTEÚDO Arquitetura

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

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013 QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013 Prezados Senhores da comissão de licitação da UENF, seguem alguns questionamentos acerca do edital de concorrência 01/2013 para esclarecimentos: 1. ANEXO

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

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

Anexo I Formulário para Proposta

Anexo I Formulário para Proposta PLATAFORMA CGI.br Solicitação de Propostas SP Anexo I Formulário para Proposta Data: 05/07/2013 Versão: 1.1 Plataforma CGI.br Solicitação de Propostas - SP Anexo I Formulário para Proposta 1. Estrutura

Leia mais

LINGUAGEM DE BANCO DE DADOS

LINGUAGEM DE BANCO DE DADOS LINGUAGEM DE BANCO DE DADOS Gabriela Trevisan Bacharel em Sistemas de Informação Universidade Federal do Rio Grande Pós-Graduanda Formação Pedagógica de Professores (FAQI) Conceito de BD Um banco de dados

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 5 Servidores de Aplicação

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

Administração de Sistemas de Informação Gerenciais

Administração de Sistemas de Informação Gerenciais Administração de Sistemas de Informação Gerenciais UNIDADE III: Infraestrutura de Tecnologia da Informação Atualmente, a infraestrutura de TI é composta por cinco elementos principais: hardware, software,

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

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

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

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

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO Intranets FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO As intranets são redes internas às organizações que usam as tecnologias utilizadas na rede mundial

Leia mais

Governança de TI. ITIL v.2&3. parte 1

Governança de TI. ITIL v.2&3. parte 1 Governança de TI ITIL v.2&3 parte 1 Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR ITIL 1 1 ITIL Gerenciamento de Serviços 2 2 Gerenciamento de Serviços Gerenciamento de Serviços 3 3 Gerenciamento de Serviços

Leia mais

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia mais

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação. ANEXO 11 O MATRIZ Para o desenvolvimento de sites, objeto deste edital, a empresa contratada obrigatoriamente utilizará o framework MATRIZ desenvolvido pela PROCERGS e disponibilizado no início do trabalho.

Leia mais

Programação Web Prof. Wladimir

Programação Web Prof. Wladimir Programação Web Prof. Wladimir Linguagem de Script e PHP @wre2008 1 Sumário Introdução; PHP: Introdução. Enviando dados para o servidor HTTP; PHP: Instalação; Formato básico de um programa PHP; Manipulação

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

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

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

Leia mais

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert: BRAlarmExpert Software para Gerenciamento de Alarmes A TriSolutions conta com um produto diferenciado para gerenciamento de alarmes que é totalmente flexível e amigável. O software BRAlarmExpert é uma

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

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

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

Projeto Disciplinar de Infra-Estrutura de Software SISPA FACULDADE SENAC

Projeto Disciplinar de Infra-Estrutura de Software SISPA FACULDADE SENAC 1 Projeto Disciplinar de Infra-Estrutura de Software SISPA FACULDADE SENAC Edilberto Silva 1, André Luiz (1012545), Andreia Pereira da Silva (1012547) Carlos Alberto (1012206), Humberto César de Carvalho

Leia mais

UFF-Fundamentos de Sistemas Multimídia. Redes de Distribuição de Conteúdo (CDN)

UFF-Fundamentos de Sistemas Multimídia. Redes de Distribuição de Conteúdo (CDN) Redes de Distribuição de Conteúdo (CDN) Objetivos da Apresentação Apresentar as arquiteturas de Redes de Distribuição de Conteúdo (CDN) com a ilustração de aplicações em ambientes corporativos e residenciais.

Leia mais

Admistração de Redes de Computadores (ARC)

Admistração de Redes de Computadores (ARC) Admistração de Redes de Computadores (ARC) Instituto Federal de Educação, Ciência e Tecnologia de Santa Catarina - Campus São José Prof. Glauco Cardozo glauco.cardozo@ifsc.edu.br RAID é a sigla para Redundant

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

Leia mais

Conteúdo Programático de PHP

Conteúdo Programático de PHP Conteúdo Programático de PHP 1 Por que PHP? No mercado atual existem diversas tecnologias especializadas na integração de banco de dados com a WEB, sendo o PHP a linguagem que mais se desenvolve, tendo

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

Taxa de Gravação da Memória RAM (MegaBytes / segundo) G5 2.7 Ghz (Mac) Linux Kernel 2.6 2799 1575

Taxa de Gravação da Memória RAM (MegaBytes / segundo) G5 2.7 Ghz (Mac) Linux Kernel 2.6 2799 1575 21 4 Análise É necessária uma análise criteriosa, que busque retornar as questões primordiais sobre o que é realmente preciso para a aquisição de uma plataforma de produção gráfica digital profissional.

Leia mais

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso de Aprendizado Industrial Desenvolvedor WEB Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Modelo Cliente- Servidor Modelo de Aplicação Cliente-servidor Os

Leia mais

INTERNET HOST CONNECTOR

INTERNET HOST CONNECTOR INTERNET HOST CONNECTOR INTERNET HOST CONNECTOR IHC: INTEGRAÇÃO TOTAL COM PRESERVAÇÃO DE INVESTIMENTOS Ao longo das últimas décadas, as organizações investiram milhões de reais em sistemas e aplicativos

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

PROPOSTA COMERCIAL. Caro cliente,

PROPOSTA COMERCIAL. Caro cliente, PROPOSTA COMERCIAL Caro cliente, O MakerPlanet.COM é uma empresa que oferece serviçso de hospedagem especializado em publicação de aplicações Maker na internet. Todos os nossos planos são totalmente compatíveis

Leia mais

FileMaker Pro 13. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 13

FileMaker Pro 13. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 13 FileMaker Pro 13 Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 13 2007-2013 FileMaker Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara,

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

Sistema Gerador de Anúncios para Compra e Venda On-line. Leandro de Oliveira ol.leandro@gmail.com

Sistema Gerador de Anúncios para Compra e Venda On-line. Leandro de Oliveira ol.leandro@gmail.com Sistema Gerador de Anúncios para Compra e Venda On-line Leandro de Oliveira ol.leandro@gmail.com Roteiro da Apresentação Motivação Conceitos e Tecnologias Objetivos do trabalho Sistema SideCart Conclusões

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

ADMINISTRAÇÃO DE ATIVOS DE TI GERENCIAMENTO DE LIBERAÇÃO

ADMINISTRAÇÃO DE ATIVOS DE TI GERENCIAMENTO DE LIBERAÇÃO 1 ADMINISTRAÇÃO DE ATIVOS DE TI GERENCIAMENTO DE LIBERAÇÃO 2 INTRODUÇÃO A cada dia que passa, cresce a pressão pela liberação para uso de novas tecnologias disponibilizadas pela área de TI, sob o argumento

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

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados. BANCO DE DADOS Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos alexandre.matos@udesc.br INTRODUÇÃO Hoje é

Leia mais

UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO.

UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO. UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO Xen Hypervisor Glauco Neves 07132022 Guilherme Pacheco 07232063 INE 5412-0432

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

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 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

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

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Programação com acesso a BD Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br 1 Introdução BD desempenha papel crítico em todas as áreas em que computadores são utilizados: Banco: Depositar ou retirar

Leia mais

Roteiro 2 Conceitos Gerais

Roteiro 2 Conceitos Gerais Roteiro 2 Conceitos Gerais Objetivos: UC Projeto de Banco de Dados Explorar conceitos gerais de bancos de dados; o Arquitetura de bancos de dados: esquemas, categorias de modelos de dados, linguagens e

Leia mais

FileMaker Pro 14. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 14

FileMaker Pro 14. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 14 FileMaker Pro 14 Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 14 2007-2015 FileMaker, Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara,

Leia mais

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

COORDENAÇÃO DE TECNOLOGIA (COTEC) ABRIL/2011 SERVIÇOS ESPECIALIZADOS DE TECNOLOGIA DA INFORMAÇÃO E COMUNICAÇÃO COORDENAÇÃO DE TECNOLOGIA (COTEC) ABRIL/2011 Rua do Rouxinol, N 115 / Salvador Bahia CEP: 41.720-052 Telefone: (71) 3186-0001. Email: cotec@ifbaiano.edu.br

Leia mais

Proposta de Avaliação de Empresas para o uso do SAAS

Proposta de Avaliação de Empresas para o uso do SAAS 1 INSTITUTO DE EDUCAÇÃO TECNOLÓGICA PÓS-GRADUAÇÃO Gestão e Tecnologia da Informação/ IFTI 1402 Turma 25 09 de abril de 2015 Proposta de Avaliação de Empresas para o uso do SAAS Raphael Henrique Duarte

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

O que é RAID? Tipos de RAID:

O que é RAID? Tipos de RAID: O que é RAID? RAID é a sigla para Redundant Array of Independent Disks. É um conjunto de HD's que funcionam como se fosse um só, isso quer dizer que permite uma tolerância alta contra falhas, pois se um

Leia mais

Guia de Conectividade Worldspan Go Res! A V A N Ç A D O

Guia de Conectividade Worldspan Go Res! A V A N Ç A D O Guia de Conectividade Worldspan Go Res! A V A N Ç A D O Í n d i c e Considerações Iniciais...2 Rede TCP/IP...3 Produtos para conectividade...5 Diagnosticando problemas na Rede...8 Firewall...10 Proxy...12

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

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

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

Começando com Ruby on Rails @gibsongabriel

Começando com Ruby on Rails @gibsongabriel Começando com Ruby on Rails @gibsongabriel Yukiriho 'Matz' Matsumoto http://ruby-lang.org/pt/ Ruby é uma linguagem de programação interpretada, com tipagem forte e dinâmica, que tem como foco a simplicidade

Leia mais

MANUAL DE IMPLANTAÇÃO SISTEMA DE INVENTÁRIO CACIC GOVERNO FEDERAL SOFTWARE PÚBLICO

MANUAL DE IMPLANTAÇÃO SISTEMA DE INVENTÁRIO CACIC GOVERNO FEDERAL SOFTWARE PÚBLICO MANUAL DE IMPLANTAÇÃO SISTEMA DE INVENTÁRIO CACIC Configurador Automático e Coletor de Informações Computacionais GOVERNO FEDERAL SOFTWARE PÚBLICO software livre desenvolvido pela Dataprev Sistema de Administração

Leia mais

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET 1 IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET Daniel da Silva Carla E. de Castro Franco Diogo Florenzano Avelino daniel.silva1@ext.mpsa.com

Leia mais

EAGLE TECNOLOGIA E DESIGN CRIAÇÃO DE SERVIDOR CLONE APCEF/RS

EAGLE TECNOLOGIA E DESIGN CRIAÇÃO DE SERVIDOR CLONE APCEF/RS EAGLE TECNOLOGIA E DESIGN CRIAÇÃO DE SERVIDOR CLONE APCEF/RS Relatório Nº 03/2013 Porto Alegre, 22 de Agosto de 2013. ANÁLISE DE SOLUÇÕES: # RAID 1: O que é: RAID-1 é o nível de RAID que implementa o espelhamento

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

Escolha seu serviço Cloud O melhor do Cloud

Escolha seu serviço Cloud O melhor do Cloud Escolha seu serviço Cloud O melhor do Cloud CAPA Comparamos os melhores serviços de Cloud Computing do Brasil em três categorias de ofertas. Leia e descubra qual é o mais adequado para suas necessidades.

Leia mais

Configurando o IIS no Server 2003

Configurando o IIS no Server 2003 2003 Ser ver Enterprise Objetivo Ao término, você será capaz de: 1. Instalar e configurar um site usando o IIS 6.0 Configurando o IIS no Server 2003 Instalando e configurando o IIS 6.0 O IIS 6 é o aplicativo

Leia mais

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ALEXANDRE PRADO BARBOSA RELATÓRIO DE ESTÁGIO Ponta Grossa 2012 ALEXANDRE PRADO BARBOSA Relatório

Leia mais

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados 1. Conceitos Básicos No contexto de sistemas de banco de dados as palavras dado e informação possuem o mesmo significado, representando uma

Leia mais

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

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc. Endereços IP Endereços IP IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.) precisam ter endereços. Graças

Leia mais

Uma poderosa ferramenta de monitoramento. Madson Santos - madson@pop-pi.rnp.br Técnico de Operação e Manutenção do PoP-PI/RNP

Uma poderosa ferramenta de monitoramento. Madson Santos - madson@pop-pi.rnp.br Técnico de Operação e Manutenção do PoP-PI/RNP Uma poderosa ferramenta de monitoramento Madson Santos - madson@pop-pi.rnp.br Técnico de Operação e Manutenção do PoP-PI/RNP Abril de 2008 O que é? Características Requisitos Componentes Visual O que é?

Leia mais

Varnish-Cache: Velocidade e disponibilidade para aplicações WEB

Varnish-Cache: Velocidade e disponibilidade para aplicações WEB CESUMAR Centro Universitário de Maringá Curso Superior de Tecnologia em Sistemas para Internet PROJETO INTEGRADOR Varnish-Cache: Velocidade e disponibilidade para aplicações WEB Rafael Vaz Pinto Toledo

Leia mais

CENTRAL DE SERVIÇOS APOIADA EM SOFTWARE LIVRE

CENTRAL DE SERVIÇOS APOIADA EM SOFTWARE LIVRE CENTRAL DE SERVIÇOS APOIADA EM SOFTWARE LIVRE Juliano Flores Prof. Wagner Walter Lehmann Centro Universitário Leonardo da Vinci - UNIASSELVI Gestão de Tecnologia da Informação (GTI0034) Prática do Módulo

Leia mais

COMPUTADORES NAS EMPRESAS Cloud Computing Prof. Reginaldo Brito

COMPUTADORES NAS EMPRESAS Cloud Computing Prof. Reginaldo Brito COMPUTADORES NAS EMPRESAS Prof. Reginaldo Brito Os computadores são essenciais para enfrentar o desafio da concorrência global, na qual as empresas precisam ser eficientes e ágeis e tem de produzir produtos

Leia mais

Parte I. Demoiselle Mail

Parte I. Demoiselle Mail Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework

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

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

1.1 Porque um nível de aplicação proxy?

1.1 Porque um nível de aplicação proxy? 1.0 Introdução Os proxies são principalmente usados para permitir acesso à Web através de um firewall (fig. 1). Um proxy é um servidor HTTP especial que tipicamente roda em uma máquina firewall. O proxy

Leia mais

DELL POWERVAULT SÉRIE MD ARMAZENAMENTO DE DADOS MODULAR ARMAZENAMENTO DE DADOS DELL POWERVAULT SÉRIE MD

DELL POWERVAULT SÉRIE MD ARMAZENAMENTO DE DADOS MODULAR ARMAZENAMENTO DE DADOS DELL POWERVAULT SÉRIE MD ARMAZENAMENTO DE DADOS MODULAR ARMAZENAMENTO DE DADOS DELL POWERVAULT SÉRIE MD Simplificação da TI O Dell série MD pode simplificar a TI, otimizando sua arquitetura de armazenamento de dados e garantindo

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

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

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores Disciplina - Sistemas Distribuídos Prof. Andrey Halysson Lima Barbosa Aula 12 Computação em Nuvem Sumário Introdução Arquitetura Provedores

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

Planejando o aplicativo

Planejando o aplicativo Um aplicativo do Visual FoxPro geralmente inclui um ou mais bancos de dados, um programa principal que configura o ambiente de sistema do aplicativo, além de uma interface com os usuários composta por

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

DIMENSIONANDO PROJETOS DE WEB-ENABLING. Uma aplicação da Análise de Pontos de Função. Dimensionando projetos de Web- Enabling

DIMENSIONANDO PROJETOS DE WEB-ENABLING. Uma aplicação da Análise de Pontos de Função. Dimensionando projetos de Web- Enabling DIMENSIONANDO PROJETOS DE WEB-ENABLING Uma aplicação da Análise de Pontos de Função Dimensionando projetos de Web- Enabling Índice INTRODUÇÃO...3 FRONTEIRA DA APLICAÇÃO E TIPO DE CONTAGEM...3 ESCOPO DA

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

Apresentação do Artigo

Apresentação do Artigo Apresentação do Artigo Web Search for a Planet: The Google Cluster Architecture Publicado em IEEE Micro Março 2003, pg.22-28 Luiz A.Barroso, Jeffrey Dean, Urs Hölze Frank Juergen Knaesel fknaesel@inf.ufsc.br

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

ServerAdmin servermaster@projetointegrador.com - Se o sistema detectar algo de anômalo, um mail será enviado a bazar@projeointegador.

ServerAdmin servermaster@projetointegrador.com - Se o sistema detectar algo de anômalo, um mail será enviado a bazar@projeointegador. Fundamentos de Serviços IP Gestão da Tecnologia da Informação Módulo III - Noturno Alunos: Douglas Ferreira João Victor Alves Erik Souza Raphael Beghelli Introdução Neste trabalho acadêmico será apresentando

Leia mais