RSS
 

Archive for outubro, 2009

A arte Steampunk

22 out

Você consegue imaginar o que aconteceria com o mundo se a revolução da informação tivesse ocorrido na era vitoriana? Consegue imaginar como seria nossa tecnologia se ela tivesse evoluído com base na energia a vapor? Sabe aquele filme com tecnologias estranhas que parecem ser de um mundo paralelo e que chegam a ser absurdas e paradoxais perto da nossa história ou realidade? Isto é Steampunk!

Como em todos os movimentos artísticos, há controvérsias na definição do que é Steampunk. Há até quem diga que Steampunk pode surgir de invenções reais que não deram certo (muitas vezes por motivos óbvios). Não é a toa que este tipo de arte se destaca entre as invenções reais apresentadas em encontros de nerds que mexem com hardware como a Maker Faire.

Os aparatos tecnológicos criados neste movimento artístico são alguns dos que mais me atraem e eu não sei o motivo exato. Não são as maluquices com vestuário, música, etc. São apenas os objetos e que até poderiam funcionar. Imagine como seria um submarino, uma moto, um carro, se tivessem sido inventados neste mundo paralelo?

Pois bem, criar estes aparatos é uma arte e o resultado chega a ser impressionante. A seguir alguns trechos de filmes e imagens que em minha opinião estão associados com Steampunk:

Steamboy

Wild Wild West

City of the Lost Children

The Time Machine (1960)

Fantastic World of Jules Verne (1958)

20,000 Leagues Under The Sea (1954)

Fallout 3

Fotos de objetos diversos (Infelizmente sem referências)

1-Steampunk-379

1-Steampunk-381

steampunk10-2

steampunk-webcam

Tom_Banwell_Steampunk_Mask-thumb-600x757-36956

radial

steampunk-watch_1_42KfF_3342

Se você também gosta de ver estes objetos feitos de bronze, cobre, aço, couro, muitas engrenagens e que funcionem com vapor veja também os links abaixo e deixe um comentário neste artigo. Fique à vontade para citar outros exemplos de onde encontrar mais referências desta arte.

Dicas

 
 

Escalando ASP clássico

16 out

Antes de tudo eu gostaria de deixar bem claro que não sou nem um pouco à favor do uso de tecnologias velhas e ruins (pois há soluções infinitamente melhores) como o ASP clássico. Estou apenas apresentando uma possível solução para lidar com débito técnico de empresas como a Microsoft e com legado.

Agora vamos ao que interessa. Há algum tempo atrás estávamos com problemas constantes de performance em um dos sistemas da empresa onde trabalho. Nossos clientes utilizam este sistema e este problema estava gerando muita insatisfação em nossos clientes.

Por razões históricas o sistema é todo baseado em soluções Microsoft, sendo que boa parte dele foi desenvolvido em ASP clássico, e algumas pequenas partes mais recentes foram feitas em .NET.

Não só havíamos problemas de performance pelo crescimento agressivo no uso do sistema, como também estávamos no limite do escalonamento vertical. Não adiantava mais colocar mais CPUs, mais RAM, etc, simplesmente porque naturalmente o IIS não escala serviços ASP.

O sistema utilizava o mecanismo de sessão do IIS que é mantido em RAM. Isto obviamente tem uma grande vantagem sobre sistemas que gravam sessão em arquivos ou em banco de dados. No entanto, quando o uso do sistema atinge os limites impostos pela plataforma não havia muito a ser feito.

O modelo de serviço do IIS com o ASP clássico e as sessões em RAM força o administrador do sistema a utilizar apenas um único processo (worker) do IIS para servir todas as requisições de um determinado site.

Poderíamos ter tomado alguns outros rumos, mas, ou eles envolviam alterações drásticas no sistema ou não sabíamos o que esperar de determinadas alterações. Qualquer tipo de teste levaria meses para ser feito e tudo isto há um custo astronômico. Havia a possibilidade de migrar para plataforma 64 bits para permitir o IIS alocar mais do que 4GB de RAM para um único processo, mas mesmo com menos de 2GB de uso o processo já apresentava problemas. Outro problema de migrar para 64 bits seriam as dezenas de componentes nativos (OCX, etc) que eram utilizados. Não era simples testar todos eles e determinar se todos se comportariam como antes na plataforma nova ou até mesmo encontrar versões adequadas para a nova plataforma.

Também era possível quebrar todo o site em vários pequenos outros sites, mas isso envolveria a alteração em dezenas de milhares de linhas de código e pelas características do código legado fazer este tipo de alteração poderia sair mais caro do que refazer o site do zero utilizando outra tecnologia mais recente.

A solução mais simples seria parar de utilizar o mecanismo de sessão nativo do ASP e passar a gravar a sessão em algum outro local onde pudesse ser lido por todos os processos sem problemas de locking. Este local poderia ser um banco de dados relacional ou algo como um memcached. Antes de colocar a mão na massa eu dei uma boa vasculhada na Internet e acabei encontrando o componente ISP Session da holandesa ADC Cure. Sinceramente a aparência do site não me animou muito a confiar no componente, mas como não havia encontrado nada melhor, acabei dando uma oportunidade.

Num primeiro momento baixei a versão trial do componente e testei-o num ambiente de desenvolvimento. Em pouco tempo estava tudo funcionando e com a sessão no banco de dados! Aquilo me impressionou muito e deixou a equipe toda animada. Achamos uma solução rápida para nossa maior dor-de-cabeça dos últimos meses!

O componente não faz nenhuma magia negra. Seu funcionamento é relativamente simples. Seu segredo é desligar a opção “Save session state” do site ou do IIS inteiro (como quiser) e substituir o objeto Session com um novo, que faz 99% do que o objeto original faz, só que gravando todas as informações em um banco de dados SQL Server.

Apesar das perdas na performance do tratamento da sessão – afinal deixamos de gravar em RAM e passamos a gravar em BD – pudemos escalar o pool do site para ter vários processos (workers) e inclusive colocar mais de um servidor para termos redundância do sistema. Sem dúvida o custo/benefício desta solução é muito melhor do que qualquer outra solução que encontramos.

Aproveito para mencionar que o componente não é gratuito. Ele tem um custo, até que pequeno, considerando-se as perdas que a falta dele estavam causando e o custo das outras soluções.

Agora que seu site pode continuar no ar com o volume de acessos crescendo constantemente, coloque a mão na massa e comece a refazê-lo em alguma outra tecnologia como, por exemplo, Ruby on Rails.