Scaling MySQL - Up or Out?

April 22nd, 2008 by admin

Sem dúvida nenhuma o melhor Keynote no MySQL Conf, foi o keynote com os representantes de alguns big players da internet, que responderam a várias perguntas relacionadas aos seus ambientes com que diz respeito ao MySQL, entre eles Facebook e Youtube. Só não publiquei antes esse material, pois tive que garimpar essa info por ai até achar o blog do cara que estava digitando em real time todo o debate.

Segue abaixo o resumo dos números, que por sinal são MUITO interessantes:

Moderador do painel: Kaj Arno
Lista dos participantes ordenada pelo Alexa ranking:
1317. Monty Taylor (MySQL)
905. Matt Ingerenthron (Sun)
39. John Allspaw (Flickr)
13. Farhan Mashraqi (Fotolog)
9. Domas Mituzas (Wkipedia)
6. Jeff Rotheschild (Facebook)
2. Paul Tuckfield (YouTube)
p.s.: 3 entre os top 10 do Alexa.

Tabelão com as perguntas e respostas dos participantes:

  How many servers Number of DBAs How many web servers Number of caching servers Version of MySQL Language, platform Operating System
MySQL 1 M, 3 S 1/10 2 2 5.1.23 Perl,php and bash Linux fedora
Sun 2 clustered, 2 individual 1.5 160+ 8 5.0.21 Lots of stuff (java mostly) Open Solaris
Flickr 166 At present 0 244 14 5.0.51 Php and some Java Linux
Fotolog 140 databases on 37 instances 10 instances a DBA 70 40 ( 2 on each, 80 total) 4.11 and 4.4 Php, 90% Java Solaris 10
Wikipedia 20 None, but everybody is kind of a DBA 70+200 40 ( 2 on each, 80 total) Â Php, c++, python Fedora / Ubuntu
Facebook 30000 databases, 1800 db servers 2 1200 805 5.0.44 with relay log corruption patch Php, python, c++ and erlang Fedora / RHEL
Youtube I can not say 3 I can not say I can not say 5.0.24 Python SuSE 9

Mais algumas perguntas extras interessantes:

Number of times re-architected ?

  • MySQL: 2 - 1 time slave, 1 time memcached
  • Sun: site depend (many times over the year)
  • Flickr: Ummm…2.5 (various clusters federated)
  • Fotolog: many cached replacements (about to do one change now)
  • Wiped: Never (Spaghetti)
  • Facebook: Every Tuesday, continual
  • Youtube: Pretty continual, 2-3 times (replication, sharding, federation)

What happens if server fails ? what actions you will generally take ..

  • Flickr: All of our 7 are federated, pairs of servers, we can loose any one side of shard, we can loose boxes.. traffic goes to either side of shard, now it goes to one, and we will get another one (very transparent to user) .. for offline, sites are affected
  • Wikipedia: Users shout at them on IRC then they moderate fixed in seconds
  • Facebook: one of 1800-1900 will always fail, just operate well, minor impact, with data going away for a while…we restore from binlog and start the server quickly, promote slave to master and number of ways
  • Fotolog: we simply mount the snapshots to different servers and get
  • Youtube: SAN etc, very important data.. recover the server, mirrored disk …mirrored hard drive is crucial

Any recommendation of scaling technology that you wanted to bring

  • Fotolog: UltraSPARC-T1 (excellent master, multi threaded) and UltraSPARC-T2 for slave (single threaded)
  • Wikipedia: good n/w switch
  • Facebook: cheap switch, we dont use SAN, neatly partitioned, they scale independently and fail independently
  • MySQL: cluster very sad

Server virtualization ?

  • nobody uses at this time
  • ETL cluster, we may run more than one in the future (facebook)

Anything to worry at present ?

  • Facebook: app design is the key to use resources, data center power supply and consumption
  • Fotolog: Google has to approve it for our power (cut app servers by 1/2 by moving from php to java)
  • Youtube: not at all

Any reco, lessons to DBA

  • better you know what the systems are, then you can
  • performance, scaling taking it serious
  • nothing more permanent than temp solutions (if u don’t know when u will fail, then u will )
  • architect properly in start, schema, cost of serving data
  • 10 mts biggest architectural change
  • memory, resource

Essa foi a integra completa do painel, as respostas estão escritas como foram faladas pelos participantes.

Posso dizer que esse foi um belo resumo prático do que pudemos ver na conferência. Isso também nos dá uma visão muito mais real do uso do MySQL em outras empresas ao redor do mundo.

MySQL Conference - Primeiro dia

April 15th, 2008 by admin

No primeiro do MySQL Conf assisti duas palestras muito interessantes, uma falando sobre o DRDB e outra do Ask Bjørn Hansen falando sobre performance e escalabilidade em sistemas web.

A palestra sobre o DRDB(Distributed Replicated Block Device) foi interessante pois rolou um hands-on do palestrante ao-vivo e tudo funcionou perfeitamente(os caras enssaiaram bem). Brincadeiras a parte ficou bem claro que o DRDB tem um papel importante no mundo do MySQL e é uma solução altamente viável de alta disponibilidade(HA) para o MySQL. No link(http://www.mysql.com/products/enterprise/drbd.html) tem alguns documentos e outras informações mais detalhadas sobre o uso do DRDB com o MySQL e no site do DRBD você pode encontrar mais informações sobre o uso desse software para outros diferentes tipos de sistemas.

Na segunda parte do dia assisti a palestra do Bjørn Hansen(além de ser uma figura a parte do cara distrói como palestrante!). Ele falou muita coisa ligada a escalabilidade e performance de aplicações web e por ser um evento de MySQL citou bastante coisa relacionada também. Estou montando uma apresentação pro techtalk para discutirmos mais detalhadamente o que foi falado de mais revelante, pois tem muita coisa que TEMOS que olhar mais a fundo e começar a seguir, pois está sob nosso alcance e vai ajudar todo mundo e com certeza vamos evoluir muito com isso.

Quero encerrar esse primeiro post do MySQL Conf com uma afirmação:

“O MySQL não vai fazer tudo por você se você não fizer algo por ele.” pensem a respeito…

Estudos sobre qual o público que acessa vídeos online

February 22nd, 2008 by admin

A Nielsen Online, divulgou recentemente um estudo interessante que mostra um pouco do demografics do público que utiliza sites de vídeo online. YouTube é Marte e Streaming Video é Vênus
Resumidamente a pesquisa mostra:

  • Mulheres preferem mais assistir vídeos em sites de Redes de TV  e Homens preferem mais vídeos gerados pelos usuários
  • Os maiores acessos aos sites de conteúdo do usuários acontecem durante a noite e madrugada e nos finais de semana e os maiores acessos em sites de vídeo de redes de TV acontece na hora do almoço

Estes dados foram gerados através do produto da Nielsen chamado de VideoCensus que foi lançado em meados de 2007, e tem como principal target os advertisers e empresas que possuem iniciativas de distribuição de vídeo online e que agora possuem uma empresa de respeito em analises de audiência para poder distribuir melhor suas campanhas de marketing e adaptar suas programações.

Este produto ainda não esta disponível no Brasil (aqui a Nielsen fez uma parceria com o IBO{E) mas esperamos que deva acontecer em breve, já que acessos à vídeo online está crescendo em todas as partes do mundo.

Um outro estudo feito pela ComScore, mostra outros dados interessantes, como por exemplo, heavy users de video online assistem em torno de 250 vídeos  por mês, enquanto usuários mais light assistem apenas 8 vídeos.

A comScore também classificou o público que acessa vídeos online em quatro grupos distintos: On demanders, Sight & Sounders, Television Devotees e Content Explorers.

E por fim um outro artigo interessante, feito em meados do ano passado e divulgado pela Broadcasting and Cable, uma renomada revista da área de Televisão mostra que 63% dos usuários banda larga nos Estados Unidos acessam algum tipo de conteúdo em vídeo na Internet, um crescimento de 16% em 6 meses. Este estudo conclui ainda que, esta audiência online não “canibaliza” a audiência da TV, ou seja, as pessoas não deixam de assistir TV para acessar vídeos online, os usuários estão cada vez mais fazendo as duas coisas ao mesmo tempo.

Mais uma vitória ao mundo open source com ‘gol’ marcado pela Microsoft!

February 21st, 2008 by admin

Quem trabalha com informática, sabe que existem duas grandes fronteiras quanto a licenciamento, desenvolvimento e uso de software: O Software Proprietário e o Software Livre. Acho que dispenso em explicar o que é cada conceito. Como estamos num processo de usar tecnologias abertas e gratuitas, sabemos quão importante ter a liberdade de criar e recriar algo, para que possamos moldar um produto final da forma como desejamos. Coisa que, com produtos proprietários, nos deixa a desejar em alguns pontos.

É natural que critiquemos a Microsoft. Afinal, é a maior empresa de software do mundo, com diversos segmentos nos quais ela ou ela é líder ou então está quase líder. Isso é perfeitamente natural, mas nós defensores de software livre nos decepcionamos quando a Microsoft quer impor tecnologias e não deixar nós escolhermos a forma como aplicar.

Por exemplo, antigamente a Microsoft criava padrões que só ela entendia e só com os produtos delas é que era possível criar algo que só funcionava em seus produtos. Exemplo: DirectX. O SDK do DirectX, até aonde entendo, só pode ser desenvolvida em cima do Visual Studio e apenas usada no Windows, não tendo suporte algum a outros sistemas operacionais. Diferente de, por exemplo ao SDL, que é similar ao DirectX, mas está disponível a dezenas de sistemas operacionais.

No início do século 21, a Microsoft adotou outra postura, com o crescimento do mercado de software livre: ela passou criar padrões certificados e mostrava como interconectar aos seus produtos, mas já criava métodos que só eles poderiam mexer a 100%. Exemplo disso seria o OpenXML, do pacote Office. O OpenXML foi uma tentativa da Microsoft de padronizar a criação de documentos, planilhas e apresentações; deixando livre a escolha do usuário se queria manipular este documento no Microsoft Office ou através do Open Office. A principal falha da Microsoft, em não ter conseguidos homologar este padrão, é ter criado diretivas que tornavam este padrão fechado, com o emprego de tags como “Parágrafo formatado como no Word 97 formatava”.

Agora, você se pergunta: “Ok, muito legal em ter me contado esses assuntos passados, mas qual a novidade”? Bem, eis a novidade: Hoje,  A Microsoft estará liberando API’s para que desenvolvedores e usuários de software livre possam criar interfaces de conexões ao seus produtos. E a melhor das notícias: Ela não mais processará quem realizar tais operações, como o caça às bruxas que ela fez ao dizer que Linux inflige patentes da Microsoft, sem revelar quais.

Pessoalmente eu vejo a notícia de maneira positiva. Afinal, não sou contra a Microsoft de criar e vender produtos. Afinal, cada um pratica a forma como faz seus programas e como deve ser seu licenciamento. Eu acredito que o produto é que não deva criar restrições à seus usuários. Por exemplo, uma corporação que use rede Microsoft de interconexão de desktops e servidores não poder usar o serviço Samba para conectar a um ‘file server’ e pegar aquele documento de Office e não poder editá-lo usando OpenOffice porque a Microsoft dizia que isso era uma violação dos produtos por ela oferecidos. Tornar essa prática licenciada e, principalmente, documentada e aberta ao público, trará benefícios mútuos a todos. Poderemos escolher qual a forma que desejamos utilizar nossos computadores e como podemos interagir com os programas para manipular algum arquivo.

Hoje é um dia histórico. Para tornar as coisas ainda mais interessantes, só faltava o Windows ser gratuito. )

BBC migra para Linux sua produção de TV

February 21st, 2008 by admin

Devido a lentidão da gravação em fitas, a BBC resolveu migrar todo processo de geração do conteúdo que era gravado nestas fitas.

Para tal migrou para Linux, codificando seus arquivos digitais de vídeo usando ffmpeg e gravando os dados num NAS ou drive USB.

O time da BBC configurou 2 sistemas Intel dual quad-core com 4GB de RAM e 4TB de disco com sistema de arquivos XFS rodando OpenSUSE Linux.

O sistema de arquivos XFS foi o que obteve melhor performance na gravação de vídeo de alto bit-rate para o disco e inclusive um desenvolvedor open source foi contratado para desenvolver um codec DVCPRO50 para o ffmpeg que resultou em um melhor decoder do que muitos decoders baseados em hardware, de acordo com o pesquisador Stuart Cunningham, da BBC, durante palestra na linux.conf.au <http://linux.conf.au>.

JBoss World 2008

February 21st, 2008 by admin

Na última semana estive na JBoss World 2008, um evento da Red Hat que discute várias ferramentas e soluções baseadas em produtos JBoss. Fiz uma série de posts no meu blog sobre as apresentações que achei mais interessantes, sugiro que dêem uma olhada. Além disso, todas as apresentações estão disponíveis para download no site do evento.

IE8 - Version Targeting

February 20th, 2008 by admin

Esse post é sobre um assunto que tem gerado bastante controvérsia na web durante as últimas semanas: a decisão da Microsoft em fazer com que o IE8 se comporte exatamente igual ao IE7.

Vou tentar resumir: em função da estratégia da Microsoft de aumentar o suporte aos web standards na migração do IE6 para o IE7, inúmeros sites que foram desenvolvidos em cima dos bugs do IE6 ficaram quebrados quando foram visualizados no IE7 (como ocorreu com os nossos CMAs). Para evitar que isso aconteça novamente na migração do IE7 para o IE8, a Microsoft incluiu um recurso para que os autores de páginas web declarem explicitamente qual a rendering engine que eles desejam usar. Para isso é necessário usar uma simples declaração na tag META, como por exemplo:

<meta http-equiv=”X-UA-Compatible” content=”IE=8″ />

É possível estender as informações sobre compatibilidade para outros browsers, definindo a sua prioridade:

<meta http-equiv=”X-UA-Compatible”

content=”IE=8;FF=3;OtherUA=4″ />

Ou seja, por padrão, o IE8 vai usar a engine do IE7 (caso o autor do documento não indique explicitamente que deseja usar uma engine de outra versão do IE ou mesmo de outros browsers). Como a tag META é do tipo HTTP-equivalent, o cabeçalho HTTP também pode ser configurado para se obter o mesmo resultado:

X-UA-Compatible: IE=8;FF=3;OtherUA=4

Para funcionar, é necessário que a tag META seja posicionada no HEAD do documento, o mais perto possível do topo. Ela pode ser precedida por outras tags meta e pelo elemento TITLE, mas deve ser colocada antes de todos os outros elementos — e não pode ser adicionada ao DOM via JavaScript.

Para a felicidade dos defensores do uso de web standards, a Microsoft prometeu que o IE8 vai passar no Acid Test, que é um teste desenvolvido pelo Web Standards Project para que os fabricantes de browsers possam testar o grau de compatibilidade dos seus produtos com os padrões da web. Portanto, se você deseja escrever um código que respeita os web standards, como fazem em grande parte o Firefox, o Safari e o Opera, você pode escolher usar a engine do IE8. Você pode escolher usar sempre a última versão do IE, basta usar a palavra-chave “edge” (isso evita que o autor do documento tenha que usar um valor como, por exemplo, ”IE=1000″):

<meta http-equiv=”X-UA-Compatible” content=”IE=edge” />

É necessário dizer que a Microsoft desencoraja veementemente o uso dessa alternativa, porque ela não pode predizer os bugs de layout e scripting que podem ser introduzidos em uma nova versão do IE!! As atualizações na engine do IE8 não se limitam a questões de CSS e layout, mas são também relativas ao uso de scripts, o que pode tornar milhões de sites inúteis.

Na ausência de qualquer informação sobre ”version-targeting”, o DOCTYPE será usado como proxy para decidir qual engine usar, da mesma forma que os browsers atuais usam DOCTYPE switching para decidir se entram em “Standard” ou “Quirks mode”. Agora, todos os DOCTYPEs do HTML4 e do XHTML1 ativarão o modo do IE7 por padrão. No futuro, dependendo do andamento dos fatos, os DOCTYPEs do HTML5 devem ativar os modos de renderização do IE9 ou IE10.

Apesar do benefício óbvio em oferecer uma garantia para que os desenvolvedores nunca mais sejam surpreendidos com o comportamento inesperado das novas versões de browser, essa iniciativa (chamada pela Microsoft de “don´t break the web”) tem sido alvo de críticas por parte de profissionais renomados. Eis alguns pontos negativos levantados por eles:

  •  essa abordagem fere os princípios do progressive enhancement, segundo o qual, os sites devem ser desenvolvidos para ser forward-compatible. Isto é, os sites devem ser desenvolvidos em uma única versão e de um jeito que, independentemente do comportamento que as novas versões de browser possam ter, as páginas são construídas para possibilitar que cada usuário tenha uma experiência tão rica quanto permitir o seu ambiente de trabalho. Isso é exatamente o contrário do que a Microsoft propõe com o “version targeting”. Por exemplo: um site foi desenvolvido para funcionar no IE8. Quando o IE9 for lançado com novos recursos, o site não vai poder tirar proveito deles, porque as páginas estarão bloqueadas para funcionar no IE8
  • se os os autores continuarem a escrever seu código em cima dos bugs do IE7, um número ainda maior de documentos na web estará incompatível com os padrões seguidos por outros browsers. E na versão, digamos, 49 do IE, o comportamento padrão do browser ainda terá que ser o mesmo do IE7. Em seu artigo entitulado “They Shoot Browsers, Don’t They?” no “A List Apart”, Jeremy Keith diz que

    o “version targeting” resolve o problema de quebrar a web da mesma forma que a decapitação resolve a dor de cabeça

Eu recomendo a leitura dos seguintes artigos de profissionais consagrados, todos publicados no último mês, para que vocês tenham uma visão mais ampla da questão:

PARC (Palo Alto Research Center, Inc.)

February 20th, 2008 by admin

Para quem não sabe o que é a PARC, segue um pequeno texto do site:

“PARC (Palo Alto Research Center, Inc.) works closely with varied enterprises and new ventures to discover breakthrough business and technology concepts that solve real needs, and transform how enterprises deliver value to customers. PARC takes an agile, multidisciplinary approach to open innovation – by bringing together physical, computer, biological, and social scientists who have the vision, expertise, and instinct to convert groundbreaking scientific findings into industrial-strength prototypes.

Incorporated in 2002 as an independent research business, PARC is celebrated for such innovations as laser printing, distributed computing and Ethernet, the graphical user interface (GUI), object-oriented programming, and ubiquitous computing. PARC is a wholly owned subsidiary of Xerox Corporation.”

Bom o motivo deste post é na verdade compartilhar o acervo da PARC de palestras, não deixa de dar uma olhada aqui

Por enquanto apenas assisti uma chamada By the Numbers: How I built a Web 2.0, User-Generated Content, Citizen Journalism, Long-Tail, Social Media Site for $12,107.09que é muito interessante. Pelo título das demais me pareceu bastante interessante o arquivo como um todo também.

[JBossWorld 2008] - HandsOn JON

February 20th, 2008 by admin

Hoje de manhã assisti um hands on alucinante sobre o JON, também conhecido como JBoss Operation Network. No hands on foi uma prática sobre os procedimetos básicos para a instalação e operação do JON. Recebemos um DVD com os arquivos a serem instalados durante o laboratório.

Já havia falado do JON, porém não sabia muito bem o que ele podia fazer e se ele realmente iria agregar algum valor na área de Produção. Vamos lá, com o JON podemos…

  • Inventário
  • Automatically discover
  • Cria grupos lógicos de JBoss instalados para facilitar a administração. Ex.: um grupo para o aplicativo A, outro grupo para o aplicativo B e por aí vai
  • Monitoração (Utilizacao de CPU, FileSystem, utilizacao da rede, metricas especificas para o Jboss AS, tomcat, hibernate, apache, postresql)
  • Operação (Start/stop/restart e etc)
  • Configuration (cria/atualiza servicos, i.e, datasources)
  • Deploy de application archives
  • Aplica patchs quando necessário
  • Fica claro na lista que o JON é uma ferramenta de monitoração e adminstração de Jboss, facilitando e muito a vida de quem precisa lida com o JBoss no dia a dia. Além disso, ele pode ser utilizado para relatórios, plano de capacidade/ocupação, uma vez que os dados coletados pelo JON são guardados num banco de dados (Oracle, Mysql ou Postgresql), havendo portanto um histórico. Basicamente o JON é composto de 2 componentes: o jon server que deve ser instalado em um servidor central qualquer e os agentes que ficam espalhados pelo parque de servidores que rodam JBoss. Como já mencionei antes, só é necessário um agente, mesmo que tivemos mais de uma instância de JBoss instalado. Outra feature interessante, é o que o JON permite a geração de alertas baseadas em thresholds pre-definidos, enviado a notificação por email.

    Ele também pode exportar traps SNMP para serem coletados por algum outro serviço, o que em tese permitiria uma integração com o cacti apesar de no fim das contas termos 2 ferramentas para fazer a mesma coisa.

    Vamos ao HandsOn!!!

    Para instalar o JON precisamos instalar o JON (óbvio!!), o agente do JON, ter o jdk 5 (que eu felizmente já tinha no meu macbook) e um banco de dados. No laboratório acabamos usando o postgresql. O postgresql acabou fazendo com que que eu perdesse um pouco tempo, pois tive que instalá-lo (felizmente o macports me ajudou aí ) ) e configurá-lo. Tive que chamar um dos monitores para dar uma mão, pois eu nao tenho muita experiência com ele e tive que criar um usuário e database para o jon usar na munheca.

    Os passos feitos estão na foto acima. Por fim, foi preciso carregar a liçenca fornecida, a qual é válida por 1 mês. Ahhh sim! O JON não é free, e apesar de ser pago, me parece que vale o investimento.

    Instalando agente

    Na versão 2.0, que ainda é beta, mas que será liberada ainda este ano, não é preciso passar o parâmetro de start. No fim, basta acessar o endereço no qual foi instalado para entrar no JON novamente. Infelizmente, fui nao pude avançar muito no laboratório pois havia perdido um certo tempo no início e quando eu ia começar a brincar com o JON instalado o tempo acabaou! (

    Minha opinião é que o JON é uma ferramenta que iria agregar muito valor na administração e operação dos Jboss, principalemente quando se fala de dezenas de instâncias rodando. )

    Pidgin Toaster

    February 20th, 2008 by admin

    Bacana, todo mundo com linux, todo mundo vendo e-mails, usando internet, usando pidgin… Mas a falta que faz para alguns ter aquele popup dizendo que alguém entrou ou saiu… é chato né?

    Bem, o fato é que ninguém sabe porque o Pidgin não tem isso… mas não se afliga! Para instalar é super-simples:

    No shell, escreva:

    $ sudo apt-get install pidgin-guifications

    Após atualizar os pacotes, entre no pidgin, botão direito em cima do ícone dele no Tray e selecione “Plugins”. Procure pelo plugin “guifications”, ative-o e configure à vontade.