Segunda-Feira, 26 de Julho de 2010

Escalabilidade vs Performance

Em algumas aulas ao questionar alunos e em conversas com amigos e conhecidos, reaparei os conceitos de escalabilidade e performance são confundidos ou desconhecidos. Antes de frisar as diferenças, ai va as definiçõe:

Escalabilidade é a que característica de um sistema que indica sua habilidade de manipular uma porção crescente de trabalho de forma uniforme, ou estar preparado para crescer.” Otimizar os recursos de infra estrutura, extrair o máximo possível das máquinas e fazer isso com alta performance, isso é escalabilidade.”

Performance é caracterizada pela quantidade de trabalho útil realizada por um sistema computacional comparado com o tempo e recursos utilizados

Pode-se, concluir então que performance é o tempo que você leva pra executar uma tarefa num determinado tempo com um determinado recurso. Por exemplo um sistema pode levar um milésimo de segundo para realizar uma busca na base de dados ou uma semana para descobrir a previsão do tempo de um país.

Diferentemente da performance que não necessariamente apresenta quantas operações simultâneas podem ser realizada em um determinado tempo com uma determinada quantidade de recursos. Na verdade não é a performance que estabelece se a operação pode ser realizada. Pois pode existir um sistema com alta performance para um certo tipo de operação, que seja monotarefa.

É nesse contexto o conceito de escalabilidade é fundamental, pois enquanto a performance se preocupa com recursos e tempo, a escalabilidade se preocupa com quantidade e crescimento do trabalho.

Em artigo da InfoQ, Wille Faler propõe 8 boas práticas para melhorar desempenho e escalabilidade como diminuir a carga no banco de dados, usar cache, minimizar tráfego na rede, entre outros.

1. Diminua a carga do banco de dados – fique longe do banco de dados o máximo que puder. Isso significa não abrir conexões ou iniciar transações a menos que seja realmente necessário.

2. A diferença que o uso de cache faz – cache diminui significativamente a carga em banco de dados, especialmente em aplicações que somente lêem desse banco. Cache em memória é melhor que cache em disco, que é melhor que um banco de dados relacional ou remoto.

3. Use cache em objetos de baixa granularidade – usar cache em objetos pouco granulares “economiza ciclos de CPU e tempo necessário para consultar n zonas de cache, ao invés de uma somente. Além disso, retornando o grafo do objeto completo economiza tempo ao montar o grafo do objeto.

4. Não armazene estado temporário em memória permanente – evite armazenar dados temporários como dados de sessão para um login em um banco de dados.

O “monstro do estado temporário” é uma besta perigosa. Como regra geral, somente dados de negócio reais, necessários, críticos e prontos para processamento devem ser armazenados de forma permanente (banco de dados, disco); nada mais.

5. Localização, Localização – deixe as coisas perto de onde elas devem ser fornecidas. Em vez de utilizar um balanceador de carga, um servidor web, um servidor de aplicação e um banco de dados, lembre-se que é melhor utilizar um balanceador de carga e um servidor web; e obter parte do conteúdo de uma Rede de Fornecimento de Conteúdo (CDN).

6. Restrinja acesso simultâneo a recursos – se mais de uma requisição acessa o mesmo recurso e executa o mesmo cálculo, é melhor que somente a primeira requisição faça o cálculo até o fim, e as demais requisições somente utilizem o resultado final. Permitir que todas as threads acessem o recurso somente tornará o processo mais lento.

7. Processamento assíncrono e em etapas

Algo que costuma fazer maravilhas para escalabilidade e desempenho é separar um processo de forma que seja assíncrono, dividido em etapas separadas por filas e executadas por um número limitado de threads em cada etapa.

8. Diminua a comunicação na rede – tente fazer com que sua aplicação se comunique o mínimo possível através da rede, pois é um processo muito mais lento do que comunicação em memória.

Steve M. Ciske, comentando sobre o artigo do Faler, é cauteloso em relação a reduzir a carga do banco de dados:

Eu tomaria cuidado ao diminuir a carga do banco de dados. Já vi pessoas no outro extremo que colocam tudo na camada de aplicação.

Pawel Stradomski considera cache remoto em memória mais rápido do que cache local em disco e Faler concorda com ele:

O uso de cache em um host remoto (via rede) pode ser mais rápido que o uso de cache em um disco local. A leitura dados sequenciais em um disco é por volta de três vezes mais lenta que a leitura na memória de hosts remotos; isso desconsiderando o tempo de busca

 

Terça-Feira, 06 de Abril de 2010

Desenvolvimento de Software sem Engenharia

A figura abaixo demonstra a importância do desenvolvimento de software ser feito como uma engenharia e seguir um processo e métricas de desenvolvimento. Temos hoje projetos muito caros, que não atendem as necessidades dos clientes e que se transformam em grandes catástrofes, por falta de comunicação entre cliente e equipe de desenvolvimento e também entre os próprios envolvidos no desenvolvimento.

Temos um arcabouço de ferramentas e tecnologias que às vezes por “modismo” são empregadas em projetos sem necessidade ou por simples conveniência de alguns envolvidos.

Enquanto a área não for levada a sério pelos clientes, usuários e pelos próprios profissionais, continuaremos tendo uma área muito amadora. Engenharias já estão maduras a muito tempo pois são antigas, nossa área é nova cerca de 50 anos apenas, mas devemos tirar de experiência de outras áreas o que se deve e não fazer.

Costumo dizer para os alunos que o problema do desenvolvimento de software é que linhas de código, diagramas e outros artefatos não são palpáveis como uma parede, uma ponte ou uma estrada, isso faz com que clientes mudem de requisitos durante todo o desenvolvimento, pois para eles não é como mandar quebrar quatro paredes e construir outras para mudar um cômodo de lugar, pois não haverá sujeira não serão visíveis os problemas, é simplesmente excluir algumas linhas digitadas.

Sexta-Feira, 05 de Março de 2010

Axiomatização da Aritmética dos Números Cardiais

O Matemático Italiano Giuseppe Peano em 1899 axiomatizou a aritmética dos números cardiais. Definindo cinco axiomas, sendo que estes são formulados por meio de três termos indefinidos, sendo presumida a familiaridade com estes. São os termos "número", "zero" e "sucessor imediato de". Abaixo o enunciados dos axiomas de Peano:

1 - Zero é um número.

2 - O sucessor imediato de um número é um número.

3 - Zero não é o sucessor imediato de um número.

4 - Não há dois números que tenham o mesmo sucessor imediato.

5 - Qualquer propriedade pertecente a zero e também ao sucessor imediato de cada número que tenha a propriedade, pertence, a todos os números.

O último axioma formula o que muitas vezes se chama "princípio da indução matemática".

Sexta-Feira, 20 de Novembro de 2009

IBM Lança um Novo Simulador do Cérebro

Um Grande Avanço para o Pensamento Através de Chips

Cientistas e engenheiros do Centro de Pesquisas Almaden da IBM, que fica na cidade de San José, na Califórnia, anunciaram no último dia 18 na conferência Supercomputing (SC09), em Portland, Oregon, que criaram a maior simulação de um cérebro, vista até hoje, em um supercomputador.

Chegou-se nessa simulação a um número de neurônios e sinapses maiores do que encontra-se no cérebro de um gato; em simulações anteriores havia-se atingido apenas o nível de um cérebro de um rato.

Especialistas prevêem que a simulação, traz novas possibilidades, já que será possível uma melhor compreensão de como a arquitetura do cérebro funciona chegando à cognição. Isso deve gerar inspirações para novos produtos eletrônicos baseados nesta arquitetura, que através de uma complexa computação terá a habilidade de aprender através de um pequeno volume de hardware e um baixo consumo de energia.

Leia mais...

Quinta-Feira, 03 de Setembro de 2009

Fluxograma vs Diagrama de Atividades

Fluxogramas normalmente limitam-se a processos seqüenciais, já os diagramas de atividades podem lidar com paralelismo.

Diagrama de atividades permite definir a ordem em que as coisas serão feitas. Determinando regras essenciais de seqüências a serem seguidas.

Os diagramas de atividades também são úteis para programas concorrentes, uma vez que se pode projetar graficamente quais caminhos (threads) temos e quando eles precisam ser sincronizados.

Devemos utilizar diagramas de atividades nas seguintes situações:

  1. Analisando um caso de uso.
  2. Compreendendo workflow
  3. Descrevendo um algoritmo seqüencial complicado
  4. Lidando com aplicações de processamento paralelo.

Não devemos usar diagramas de atividades nas seguintes situações:

  1. Tentando ver como os objetos colaboram.
  2. Tentando ver como um objeto se comporta durante o seu ciclo de vida.
  3. Representando lógica condicional existente.

Sábado, 11 de Julho de 2009

Detex: Nova arma do Inpe contra o desmatamento

As Áreas florestais concedidas para exploração seletiva de madeira na Amazônia, serão monitoradas pelo novo sistema de monitoramento por satélite chamado de Detex(Detecção de Exploração Seletiva). Este irá verificar se os planos de manejo aprovados pelo governo estão sendo respeitados pelos madeireiros. A partir de dados coletados entre 2007 e 2008 mais os dados que estão sendo coletados de 2009, pretende-se retroceder até 2000 para assim ter todo o mapeamento da área da floresta desmatada para o corte seletivo de madeira.

O Detex foi apresentado durante a 61ª Reunião Anual da Sociedade Brasileira para o Progresso da Ciência (SBPC). O novo sistema permite uma monitoração mais detalhada de extensões menores da Amazônia, pois este tem uma resolução espacial de 20 metros tornando assim factível a visualização locais de armazenamento de toras na floresta.

Segunda-Feira, 06 de Julho de 2009

Astronomia: próxima atração do Sesc de São José dos Campos

Através de uma pareceria junto ao Instituto Nacional de Pesquisas Espaciais (INPE), o Sesc de São José dos Campos, no Vale do Paraíba, a partir de terça-feira (07/07/2009), inicia a programação “Céu Aberto – O Universo Exposto”, comemorando o Ano Internacional da Astronomia, a atividades estão programadas para ocorrerem até outubro.

Com a intenção de aumentar o interesse pela cultura científica na sociedade, difundindo a importância do trabalho científico, serão realizadas palestras, oficinas, vivências, passeios e sessões de observação do céu, remotas e presenciais, tais atividades marcam também o Ano Internacional da Astronomia.

O pesquisador Oswaldo Duarte Miranda, às 19:00hrs inaugura as atividades fazendo uma palestra no auditório do Sesc. Hugo Vicente Capelato também pesquisador falará sobre “O Universo das Galáxias”, às 19:30hrs.

Está programado para às 21:00hrs, a participação para o público presente de um sessão de Observação Remota do Miniobservatório do Inpe, utilizando os microcomputadores do Sesc. Caso o tempo n ão esteja propicio para esta observação, ser aacute; realizada uma oficina “Internet Livre - Astr ônomos Amadores”.

Os interessados poderão participar gratuitamente necessitando apenas realizar uma inscrição antecipada no Sesc (Avenida Adhemar deBarros, 999, Vila Adyana) ou pelo fone (12) 3904-2000.

Em 2009, é comemorado os quatro séculos desde as primeiras observações telescópicas do céu feitas por Galileu Galilei. Celebra-se as contribuições da astronomia para o conhecimento humano. Tal celebração têm forte têm forte ênfase na educação, no envolvimento do público e no engajamento dos jovens na ciência, através de atividades locais, nacionais e globais.

Mais informações sobre a programa ção “Céu Aberto – O Universo Exposto”, na página do Sesc. A programação completa do Inpe para o Ano Internacional da Astronomia pode ser conferida no site http://www.inpe.br/astronomia2009/inpe_no_aia.php .

Sexta-Feira, 03 de Julho de 2009

Programa Espacial Indonésio

Ontem a Indonésia lançou com sucesso ao espaço um foguete de fabricação própria dentro de seu programa aeroespacial.

O foguete apelidado de RX-420, foi lançado da província de Java Ocidental, esse feito é o primeiro passo para o desejado ingresso a Indonésia dentro da corrida espacial. É previsto deixar a disposição entre 2012 e 2014 a plataforma de lançamento espacial RPS-420 que possibilitará colocar em órbita os próximos satélites do país.

Como pode? A Indonésia começou a pouco tempo o desenvolvimento de projetos na área espacial e provalmente terá antes do Brasil a plataforma de lançamento espacial. Quando o CTA e o INPE vão realmente levar isso a sério e fazer o Brasil ter sua independência espacial.

Quinta-Feira, 02 de Julho de 2009

Conceituação sobre Meta-Modelo

Em "Os investigadores", Boorstin cita que "Einsten via o pequeno e o grande, o atômico e o cósmico, como um enigma", a fim de descobrir o todo, explicado por leis e pela razão, inspirado pelo que ele chamava de seu sentimento religioso o cósmico. O indíviduo percebe a futilidade dos desejos e anseios humanos e a maravilha e perfeita ordem que se revelam tanto na natureza como no mundo do pensamento. 

Está citação descreve a mesma concepção de um meta-modelo,  da busca pelo todo,  SANZ  descrevem Meta-modelos para el desarrollo de sistemas multi-agente um meta-modelo como uma representação dos tipos de entidades que podem existir em um modelo, suas relações e restrições de aplicações.

Sábado, 29 de Agosto de 2008

Utility Computing

Ou computação "on-demand", tem por finalidade oferecer uma nova infra-estrutura de computação, para que os recursos de TI possam ser acessados - e pagos - conforme sejam necessários, como outros serviços já utilizados como: gás, água ou eletricidade. Sendo que o objetivo principal é permitir aos sistemas atuarem somente quando são necessários, e modelos de custos serem otimizados subindo e caindo de acordo com o uso também.

Os grandes players(Grandes empresas de seviços e produtos) de TI estão sofisticando os modelos de utility computing. Apesar das iniciativas serem recentes, a utility computing possui implicações potenciais na maneira como organizações consomem recursos computacionais. Sendo assim haverá um grande impacto no software, com web service e SOA tendo um papel crucial na sua adoção.

Feeds rss Sobre mim


Consultor de Sistemas
Profº UMC e VERIS - IBTA
Mestre em Computação Aplicada pelo INPE e Doutorando pelo ITA.
rrochas@gmail.com

Aulas

Vagas

Link´s de referência