2015-06-06

11) Big Data e estratégia

#bigdata #hadoop #spark

A palavra “estratégia” pode ser em muitos casos substituída por “com ênfase nos objetivos de longo prazo”. Por exemplo: “plano estratégico” deve ser entendido como “plano com ênfase nos objetivos de longo prazo”. Nações, povos, indivíduos e empresas fazem bem em cultivar seus próprios planos estratégicos, pois muitos planos (os bons) fazem sentido apenas se praticados em prazos longos. O oposto de ter e cultivar um plano estratégico é seguir os conselhos do Zeca Pagodinho com a música “deixe a vida me levar, vida leva eu ...”. Quem não tem plano estratégico não está indo a lugar nenhum. O mundo não costuma ser benevolente com quem pensa e age assim.

Pensemos na origem da palavra “crise” em chinês. A imagem representa as 2 letras chinesas que combinadas significam “crise”, sendo a letra da esquerda a representação de “perigo” e a da direita “oportunidade”. Pronuncia-se “wéijī”. O Brasil encontra-se claramente em situação de grave crise. Nesse Post abordo os aspectos de perigo e de oportunidade da nossa crise corrente. Apresento também um argumento que Big Data é um bom componente para um plano estratégico coletivo e individual.

O Perigo: O programa Globo News Painel, exibido no dia 30/05/2015, conduzido por Renata Lo Prete, tem título “Especialistas avaliam a polêmica sobre o ajuste fiscal”. A pauta foi de “tentar esboçar uma agenda de desenvolvimento para o Brasil, pós ajuste fiscal”. Consta que quase todo mundo concorda que “a retomada do controle das contas públicas não basta para produzir crescimento”. Para piorar “como se pode falar num pós ajuste, se o próprio ajuste não está assegurado?”. Os convidados para discutir o tema foram Marcos Lisboa, Fernando Sampaio, Cesar Benjamin. Vou fazer uma seleção de citações desse programa. Numa passagem do programa, Cesar Benjamin comentou que “nós (brasileiros) vivemos numa região muito periférica do mundo; a minha impressão é que o mundo quer do Brasil alimentos (soja e outros alimentos), minérios, petróleo, e de preferência temperado com uma cerejinha de juros altos (…); se o Brasil oferecer ao mundo alimentos, minério, petróleo e juros altos, o mundo está (sic) satisfeitíssimo (…); se nós (brasileiros) quisermos não ficar nessa posição (…) nós temos que ter uma enorme capacidade de fazer um esforço endógeno; nós dizermos 'não é essa a posição que eu quero, eu quero construir uma outra' como os Estados Unidos fizeram no século 19, em que eram país periférico como o Brasil e terminaram o século como a grande potência industrial, como a China vem fazendo na segunda metade do século 20 para cá; quer dizer, são grandes países periféricos que num certo momento da sua história disseram: 'eu não quero esse lugar que vocês estão me designando, e eu vou construir o lugar que eu quero, e vou pagar o preço, porque isso tem preço'. Eu acho que o Brasil perdeu essa capacidade. Isso não tem a ver exclusivamente com o governo Dilma. É uma coisa muito mais ampla. Envolve o nosso sistema político e envolve o nosso Estado Nacional, que foi completamente depauperado. Nós há muitos anos construímos governabilidades de curto prazo a custa do loteamento do Estado, gerando uma ingovernabilidade de longo prazo. E o longo prazo chegou. Essa soma de governabilidades de curto prazo gera um Estado que não cumpre suas grandes funções estruturantes.(...) Nós temos um problema que está fora da macroeconomia. Nós não temos hoje um estado nacional e um sistema político capaz de liderar um projeto nacional que diga para o mundo (...): 'Não podemos ser uma economia exportadora de soja, minério de ferro e petróleo. Esses juros que vocês querem, nós não vamos dar.' Para fazer isso você tem que ter custo. Tem que ter um projeto e pagar o custo, como todos os que tiveram projeto nacional pagaram. Nosso sistema político não tem capacidade nem de formular esse projeto nem de bancar nenhum custo associado a ele. Acho que está aí o X do problema.

Antes de prosseguir, faço uma reflexão. É muito citado o fato de o Brasil ser um país com desigualdades sociais. É adequado ressaltar que as desigualdades brasileiras são também educacionais e intelectuais. E existe forte correlação entre deficiência de educação e de nível social. A boa notícia é que todos os humanos possuem quantidade aproximadamente igual do recurso essencial para o desenvolvimento educacional e intelectual: neurônios. Em toda história da humanidade, nunca nasceu um indivíduo com muito mais neurônios que os demais integrantes da nossa espécie. Não se sabe o motivo de eventualmente nascer uma pessoa genial. Aparentemente a capacidade mental elevada é um fenômeno que pode ocorrer em qualquer lugar e tempo. Se estimulado adequadamente, e se houver oportunidade, qualquer um de nós pode fazer alguma coisa sensacional. Na era da Internet, embora a parte estrutural ainda precise melhorar muito, já há acesso a informação e oportunidade para muitas pessoas.

A Oportunidade: Pensemos. O mundo está construindo uma nova sociedade digital. O mobile é o controle remoto do mundo, que está sempre ligado e conectado a Internet (cloud). Há uma quantidade enorme de procedimentos da vida humana que podem e devem ser repensados diante da possibilidade de uso de sistemas digitais, com ênfase em cloud e mobile. O uso intensivo de tecnologia de informação cria enormes quantidades de dados, para os quais a tecnologia de Big Data pode auxiliar para que sejam tratados. As oportunidades que o mundo observa nesse setor são gigantescas. O que nos limita para fazermos no Brasil o melhor software do mundo? O que nos limita para jogarmos o jogo que eventualmente nos tornará autores e proprietários de novas empresas de referência como Facebook? Claro que há alguns fatores que atrapalham especificamente o Brasil. Há quem chame esses fatores de “custo Brasil”. Mas no setor de software, estamos proporcionalmente muito pouco afetados por esses fatores. Não é difícil ter acesso aqui a todo o necessário para desenvolver software e implantá-lo na cloud, da mesma forma que nossos concorrentes.

Estou obviamente pregando que o Brasil tenha pelo menos um plano estratégico: ser um país forte em software. Se quisermos isso para nós, deveremos nos empenhar em criar as condições para favorecer o florescimento dessa atividade. Devemos em primeiro lugar, reforçar a educação básica, e também a educação e treinamento específico para a atividade de software. Tenho procurado conduzir a UFRJ, onde atuo, para que lá se cumpra o papel de formar pessoas que possam de fato atuar em software. Em 2010, criei e sigo ministrando a disciplina de “software para smartphones e cloud computer” na UFRJ. Em 2015 criei e estou ministrando com a primeira turma de “Big Data Developer” da UFRJ. Nos meus cursos, falo muito de tecnologia, mas também falo de estatísticas de mercado e modelo de negócios. Espero formar gente que possa ao mesmo tempo entender de tecnologia e de negócios, pois esse é o perfil mais adequado para favorecer o empreendedorismo.

A melhor notícia que podemos ter é saber que empreendedores digitais brasileiros estão tendo sucesso. Essas histórias servem de inspiração para que mais gente se interesse pela atividade, e com isso se aumente o volume de gente e de conhecimento sobre esse assunto. O eventual vigor da atividade de software deverá também servir de pressão para que outros segmentos da sociedade funcionem melhor. Felizmente há bons exemplos sucesso a reportar. Falo sobre isso em outro Post.

Independentemente de o Brasil efetivamente implementar como política de Estado um plano de longo prazo para ser forte em software, pode-se tomar individualmente a decisão de se preparar para atuar nessa atividade. Software bem feito pode tornar-se meio de vida para muita gente no Brasil. É cada vez mais comum ver gente boa de software trabalhando no Brasil, em favor de projetos de empresas estrangeiras que nos contratam. Eu acho isso excelente. É um sintoma de que software pode de fato uma excelente alternativa de carreira, com muitas oportunidades. Mas é claro que quem atua tem que ser realmente bom, e estudar muito. Big Data está particularmente no foco agora. É um momento excelente para se investir em estudar essa tecnologia, e se preparar para oportunidades que com certeza vão surgir.


--------------------------------------------------------------------------------
Sergio Barbosa Villas-Boas (sbVB), Ph.D.
software development, Big Data, cloud, mobile, IoT, HPC, optimization
sbvillasboas@gmail.com, sbvb@poli.ufrj.br
Skype: sbvbsbvb
http://www.sbVB.com.br
https://www.linkedin.com/in/sbvbsbvb
+55-21-97699-1337


 

2015-05-31

10) Quão urgente é aprender Big Data ?

#bigdata #hadoop #spark

Estou montando um curso de Big Data. O público-alvo inclui empreendedores, engenheiros de software, desenvolvedores, analistas e gerentes de projeto de tecnologia. O curso será divulgado em breve. Enquanto conversava com um consultor amigo, para refletir sobre aspectos do curso, meu amigo fez umas ponderações interessantes, que merecem ser comentadas aqui no Blog. Nesse post, vou comentar duas dessas ponderações: “1) Big Data não está no horizonte de urgências das pequenas empresas” e “2) De que maneira Big Data pode trazer mais clientes para as pequenas empresas?”.

A primeira ponderação pode ser re-escrita de forma mais geral como o título desse post: “Quão urgente é aprender Big Data?”. Minha resposta para essa pergunta é que o nível de urgência para aprender Big Data depende do que se considera "urgência". É necessário lembrar que nosso país vive um momento com características especiais. Há um conjunto de várias crises simultâneas, todas graves. Diante desse momento, é realmente de se ponderar se o investimento de tempo e dinheiro para se aprender Big Data é ou não uma "urgência". Acontece que a parte dinâmica do mundo não está nada parada. Muita gente está exatamente agora investindo pesadamente em modernizar-se e incorporar novas formas de se viver e empreender - com lauto uso de tecnologias digitais, em especial Big Data (a tecnologia inovadora atualmente no foco). O mundo vai seguir modernizando-se. Quem tiver qualquer motivo para não conseguir ou não querer investir para modernizar-se, com certeza vai ficar para trás.

Há algo melhor que aprender com os próprios erros: é aprender com os erros dos outros. Pode-se estudar história com foco em refletir sobre erros e acertos do passado, e dessa forma destilar de grandes lições. Abaixo listo alguns exemplos históricos.

  • Na década de 1980, a IBM era líder em tecnologia de informação, e ganhava muito dinheiro vendendo mainframes. A Apple provou que havia mercado para computadores pessoais, e a IBM reagiu criando uma divisão nova para vender seu próprio computador pessoal IBM-PC. Mas não entendeu que a grande oportunidade estava no software e não no hardware. O resultado foi perder para a Microsoft a oportunidade de ganhar dinheiro com software (em particular com sistema operacional). Com o jogo já muito avançado, tentou recuperar o terreno lançando seu próprio sistema operacional, mas demasiado já tinha acontecido, e o mercado ficou mesmo com a Microsoft. A IBM perdeu tempo, e perdeu oportunidade.
  • Na primeira década do século 21, a Microsoft era dominante absoluta do mercado de software para computador pessoal. Após alguns casos impactantes de briga agressiva e vitória sobre concorrentes (o mais notável foi a guerra dos browsers, de 1994 a 1998, que derrotou a Netscape), parecia impossível alguém vencer o colosso Microsoft. A Google cresceu sem concorrer diretamente com a Microsoft, atuando no mercado de busca (então dominado pela Yahoo e Altavista), com a inovação de usar tecnologias automáticas para a busca. Essas tecnologias mais tarde se transformariam em tecnologia de Big Data. Aos poucos o mundo foi mudando, e a Google amadureceu vários produtos que hoje competem e em muitos casos ganham da Microsoft. Ainda se poderia falar na tecnologia de mobile, na qual a Google chegou atrasada com o Android, conseguiu crescer e hoje é dominante. No longo prazo, a Google está melhor que a Microsoft. A Microsoft perdeu tempo, e perdeu oportunidade.
  • As gravadoras de música (EMI e outras) tem lembranças doces do gigantesco lucro que um dia conseguiram obter. Somente com os Beatles, as vendas foram um colosso. Muito se vendeu no formato LP (Long Play). Na década 1980, iniciou-se a venda de CD, com o mesmo modelo (controlar a venda da media permitia o controle da venda do conteúdo). Inovações modificaram completamente o cenário. O uso de mp3, Internet e software de compartilhamento (napster e depois outros), fez a venda de CD praticamente desaparecer. O mercado de música mudou completamente. Dentre as empresas de destaque atualmente no cenário de música incluem-se a a Apple com o iTunes, a Amazon, que vende vários tipos de media, e a Google com o youtube. As gravadoras perderam tempo tentando manter vivo um modelo de negócios marcado para morrer, e perderam a oportunidade que hoje está com as empresas dominantes do setor.

Numa tentativa de resumir o que se pode aprender com esses exemplos, digo que é imperativo adaptar-se aos novos tempos. Muita empresa grande apegou-se demais ao sucesso do passado, demorou a reagir e perdeu. Muitas empresas que existem hoje vão  acabar por tornarem-se incapazes de competir com os métodos e expedientes que se exige na atualidade. É sábio investir em modernização enquanto ainda é tempo. 

A segunda ponderação do meu amigo também tem resposta. Empresas que vendem pela Internet podem colocar um painel com sugestões de produtos que outros clientes compraram depois de comprar o que está no carrinho de compras. Um painel desses é tipicamente produzido com tecnologia de Big Data. O marketing pode ficar muito mais eficaz pela incorporação de informações de Business Inteligence vindas de processamento de com Big Data sobre log de vendas, ou sobre redes sociais. Big Data pode ser aplicado hoje para resolver problemas já existentes, e também para criar serviço inovador e valioso. O mesmo instinto de oportunidade que fez a empresa ser criada no primeiro momento, deve ser usado para prospectar usos para Big Data hoje, para potencializar as possibilidades da empresa.

O Spark (Big Data Geração 2) está crescendo exatamente agora. O artigo que mostrou o enorme ganho de desempenho que Spark tem sobre a geração anterior é de outubro de 2014 (Veja esse post). Apesar de dificuldades que o Brasil passa especificamente agora, é imperativo conseguir investir para se criar cultura de uso de Big Data. O momento de se investir é agora. Em relativamente pouco tempo, as melhores oportunidades terão ido para quem está investindo agora. Precisamos construir um futuro que tenha alta criação de valor nas atividades que são feitas por brasileiros, ou os demais países alegremente nos conduzirão para uma posição subalterna de fornecedor de produtos básicos. 

A única forma de se obter prosperidade coletiva é construir uma sociedade eficiente, com alta produtividade. O uso intensivo e sábio de tecnologia de informação é fator essencial de eficiência e produtividade. Há inúmeros setores no Brasil esperando para tornarem-se mais eficientes com o uso de TI. Big Data é a tecnologia no foco. Os principais projetos atualmente vão usar essa tecnologia. Empresas que investirem agora vão pegar as melhores oportunidades. Profissionais de TI que investirem agora vão valorizar seus currículos. 

--------------------------------------------------------------------------------
Sergio Barbosa Villas-Boas (sbVB), Ph.D.
software development, Big Data, cloud, mobile, IoT, HPC, optimization 
sbvillasboas@gmail.com, sbvb@poli.ufrj.br
Skype: sbvbsbvb
http://www.sbVB.com.br
https://www.linkedin.com/in/sbvbsbvb
+55-21-97699-1337

2015-05-21

9) Spark lazy execution

#bigdata #hadoop #spark

Uma característica pouco compreendida no processamento de Big Data em Spark é a “execução preguiçosa” (lazy execution). A princípio é de se desconfiar que uma característica com nome de “preguiçosa” possa ser de alguma forma útil e adequada no caso de computação, mas como se verá, trata-se de algo muito bom para o desempenho de execução.

Um engenheiro de software, quando escreve código que chama uma determinada função, imagina que o programa vai executar a tal função no momento em que chegar na linha que a chama. É assim na execução tradicional (não preguiçosa). Mas em Spark não é assim que funciona. Dentre os componentes da API do Spark está o “Spark Core”, que implementa as funcionalidades mais básicas, incluindo o agendar, distribuir e monitorar as tarefas sobre os workers do cluster, cuidar da recuperação no caso de falha de um worker, gerência de memória e outros. A classe mais usada para código em Spark é a RDD (resilient distributed datasets), que logicamente representa uma coleção de itens de tipo genérico. Como o nome diz, um RDD é distribuído (tira proveito da distribuição de tarefas pelos workers do cluster), e resiliente (resiste a eventual falha de um worker).

Os programas para Spark são baseados em SparkContext (sc), que reconhece as características do cluster onde os workers estão. Um RDD é criado levando em conta o sc, o que garante que conseguirá interagir com o cluster. Em Spark, o software representa os dados em RDDs, e transforma RDDs em outros RDDs usando os métodos existentes na API do Spark, eventualmente passando funções como argumentos dos métodos. Sem trabalho explícito do programador, o Spark Core distribui os RDDs pelo cluster. Cada RDD é imutável (isso é, de apenas leitura). A criação de um RDD é feita ou a partir de se carregar um dataset externo, ou de forma programática. Uma vez criados, os RDD podem ser alvo de 2 tipos de operações: transformações e ações. Um exemplo de transformação de RDD é filtrar os dados para que cumpram um critério. Um caso seria filtrar as linhas que contém a palavra “ERROR”. Outro caso seria filtrar os campos cujo valor numérico é maior que um argumento dado. Lembre-se que um RDD é uma coleção de um tipo genérico, isso é, pode ser uma coleção de strings ou uma coleção de pares chave-valor.

Muitas vezes, escreve-se um algoritmo a partir de criar-se um RDD carregando um dataset externo, e sobre esse RDD aplica-se um conjunto de transformações. Esse conjunto de transformações é registrado pelo Spark, mas não é executado imediatamente, devido ao conceito sofisticado de execução preguiçosa. Apesar de soar bizarro, o fato de a execução ser preguiçosa faz muito sentido no caso de dados volumosos. Por exemplo: quando se cria um RDD a partir de um dataset muito volumoso, e sobre esse RDD se faz um conjunto de filtragens que faz diminuir muito o tamanho resultante, é possível diminuir o consumo de recursos computacionais (tarefas executadas, dados em memória, etc) por se otimizar o conjunto de transformações de RDD. É menos custoso executar o conjunto otimizado de transformações de RDD que executar cada transformação tomada isoladamente. Essa otimização é transparente para o programador.

Quando o código encontra uma ação aplicada sobre um RDD, então o Spark é forçado a efetivamente executar todo o conjunto de transformações e produzir a saída. Em outras palavras, apenas apenas quando uma ação ocorre é que o Spark deixa de ser “preguiçoso”. Dentre os exemplos de ações incluem-se a produção de saídas em console ou em disco.

Aplicações Spark simples, tal como word count, consistem em apenas criar um RDD a partir de dataset externo, transformá-lo algumas vezes e produzir a saída. Aplicações mais sofisticadas tem várias fontes de dados, e produzem várias saídas. Nesses casos mais sofisticados, pode-se melhorar o desempenho de execução acrescentando códigos para cacheamento de RDDs intermediários. O sistema Spark sem interferência de código de cacheamento cria um registro de transformações de RDD para cada ação que se deseja. Caso existam duas ações que tem uma parte do processamento comum, o Spark sem cache fará o processamento idêntico mais de uma vez. Nesses casos pode-se melhorar o desempenho escrevendo código que faça cache da parte comum.


--------------------------------------------------------------------------------
Sergio Barbosa Villas-Boas (sbVB), Ph.D.
software development, Big Data, cloud, mobile, IoT, HPC, optimization
sbvillasboas@gmail.com, sbvb@poli.ufrj.br
Skype: sbvbsbvb
http://www.sbVB.com.br
https://www.linkedin.com/in/sbvbsbvb
+55-21-97699-1337

2015-05-20

8) História do Big Data, Geração 1 e Geração 2

#bigdata #hadoop #spark

Entenda-se “Big Data” como a tecnologia de computação que baseia-se em sistema de arquivos distribuído, e que usa arquitetura de software baseado em Map Reduce. O resumo da história do Big Data assim definido é descrito a seguir. Em junho de 2003 houve uma demonstração do nutch (http://nutch.apache.org/), que é um software open source para busca na web, escrito por Doug Cutting e Mike Cafarella. Em 2004 a Google publicou um white paper a respeito do sistema de arquivos distribuído Google File System (GFS) e da arquitetura software Map Reduce (http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf). Em 2005, Yahoo patrocinou um projeto spin off do nutch – open source e hospedado pela Apache – baseado no paper da Google. Para isso contratou Doug Cutting e Mike Cafarella. O software foi chamado de Hadoop. Uma curiosidade é que o nome “Hadoop” é o som que o filho pequeno do Doug Cutting fazia para referir-se a um boneco de elefante, que é um dos símbolos de Big Data. O Hadoop, assim como o nutch é escrito em Java originalmente, mas admite ser usado com outras linguagens também. O site http://hadoop.apache.org/ disponibiliza todas as versões de Hadoop. A mais antiga é a versão 0.14.1 de setembro de 2007. O site mostra diversas versões de Hadoop, que segue em contínua evolução. Pode-se considerar Hadoop como a primeira geração de Big Data. Em 2009 Matei Zaharia iniciou o projeto Spark na universidade UC Berkeley, que pode ser considerado como a segunda geração de Big Data. No site http://spark.apache.org/ são disponibilizadas versões de Spark desde 2013. Em 2014 foi publicada uma demonstração em que o Spark bateu de longe o desempenho do Hadoop (http://www.datanami.com/2014/10/10/spark-smashes-mapreduce-big-data-benchmark/).

Spark é escrito na linguagem Scala, que foi desenvolvida inicialmente por Martin Odersky, na École Polytechnique Fédérale de Lausanne (EPFL), Suiça, em 2001. A linguagem Scala foi projetada para ser compatível em código compilado com a máquina virtual java. O código fonte *.scala é compilado com scalac, e gera bytecodes, da mesma forma que código fonte *.java compilado com javac. Todo código compilado com scalac pode ser usado numa máquina virtual java sem nem mesmo requerer que se avise ao administrador do computador que se está fazendo isso. Em outras palavras, Scala é o eterno “amigo” compatível perfeitamente com Java. Scala pode usar classes Java dentro do seu código, assim como bibliotecas Java compiladas *.jar. Com essa compatibilidade total e eterna, o Spark (compilado de Scala) pode conviver lado a lado com Hadoop (compilado de Java). Ou seja, para as empresas que instalaram algum sistema com Hadoop no passado, e que desejam expandir as funcionalidades, é possível instalar Spark na mesma máquina e ir acrescentando novas funcionalidades aos poucos, sem precisar parar com o Hadoop. Isso é muito conveniente.

Para as empresas e profissionais que estão entrando no desenvolvimento Big Data agora, recomendo que usem Spark, sem “perder tempo” com Hadoop. Spark é melhor em tudo que Hadoop. É melhor em desempenho de execução, o que é uma vantagem evidente. Mas é também melhor em desempenho de manutenção de código. O código Java do Hadoop, com base em orientação a objetos, torna-se muito “burocrático” ou “verborrágico”. Há quem diga que com Java “há muito código para encanamento, e pouco código para o algoritmo”. Em comparação, a linguagem Scala é funcional, e adapta-se muito bem para a finalidade de escrever algoritmos para Big Data. Para quem tem base em Java e orientação a objetos, o uso de linguagem funcional pode parecer um pouco complexa ao início, mas nas aulas tenho observado que os alunos aprendem rápido e em pouco tempo conseguem entender e escrever código muito bom com Scala/Spark.

Há grandes usuários de processamento digital, incluindo grandes empresas, setores governamentais e outros. Essas entidades são especialmente interessadas na existência de um saudável e vigoroso mercado a lhes suprir hardware e software, para que os sistemas digitais efetivamente possam entrar em produção. Desde 1983, Richard Stallman iniciou o projeto GNU, e ajudou muito a expandir o conceito de software open source. Muitos desconfiaram de que esse modelo pudesse prosperar. Hoje em dia, inclusive em função do uso massivo de cloud computing, o uso de software open source já ganhou enorme aceitação. Um cliente que adote uma solução de software closed source privado precisa aceitar o risco de que a empresa proprietária do software eventualmente no futuro imponha seu produto de forma desvantajosa (e.g. aumente o preço), ou que corte o suporte. O software open source não tem esse problema. Muitas empresas adotam software open source, e pagam por profissionais de suporte, o que resulta em muitas situações em soluções mais econômicas e melhores que as alternativas closed source privadas. Sendo a tecnologia de Big Data toda ela open source, todas as vantagens desse modelo de software são presentes. Para as empresas, é excelente implantar sistemas baseado em tecnologia open source, e poder contratar profissionais que sejam treinados nessa tecnologia. Quanto mais vigoroso o mercado, tanto melhor para todos.

A economia do Brasil ganha muito por uso massivo de open source em geral. Isso porque quanto mais se usa open source, mais se moderniza a sociedade sem que essa modernização implique em transferência maciça de recursos para o exterior. Big Data, pelo seu enorme potencial de processamento e implantação de sistemas modernos e eficientes, sendo open source como é, será um fator de modernização da sociedade ao mesmo tempo em que se reduz o fluxo de capitais para o exterior. As pessoas que desenvolvem software ou prestam suporte são em geral profissionais que moram no Brasil, e. portanto, reforçam a economia local. Com o dinheiro sendo mantido dentro do Brasil, cria-se um fator adicional de prosperidade para toda a nação.

Outro dinheiro que pode ser mantido dentro do Brasil é o de treinamento. Eu fiz o curso da Cloudera University de Spark Developer. O curso é excelente. Mas ressalte-se que o material é licenciado, e que cada aluno deve pagar pelo material, transferindo dinheiro para o exterior. Mas a licença não impede que o material de curso seja reinventado com um novo formato, novos exemplos e aplicações, e com isso se criar um novo curso. Quanto mais se criam cursos sobre um assunto, mais conhecimento se tem sobre o tal assunto. É sinal claro de vigor intelectual a multiplicação de numerosos cursos. Educação é o melhor investimento.


--------------------------------------------------------------------------------
Sergio Barbosa Villas-Boas (sbVB), Ph.D.
software development, Big Data, cloud, mobile, IoT, HPC, optimization
sbvillasboas@gmail.com, sbvb@poli.ufrj.br
Skype: sbvbsbvb
http://www.sbVB.com.br
https://www.linkedin.com/in/sbvbsbvb
+55-21-97699-1337



2015-05-15

7) Big Data, empregabilidade e destruição criativa

#bigdata #hadoop #spark

A história mostra numerosos exemplos de tecnologias inovadoras em seu tempo que transformaram profundamente o ambiente econômico. Lembremos de alguns: a mecanização no setor rural, a automatização e robotização em fábricas, os super cargueiros que transportam mais matéria em menos tempo e por menos custo, o uso de software para aumento de eficiência de serviço burocrático e de secretaria. A humanidade já acumulou muito conhecimento tecnológico, e seguimos acumulando cada vez mais. Já vimos muitos processos produtivos serem transformados por tecnologias, e muito mais ainda está por vir. Joseph Schumpeter cunhou o termo “destruição criativa” que pode resumir o processo como uma tecnologia suplanta a anterior. Big Data é uma tecnologia de informação que está no foco dos tempos atuais, com alto potencial de criar novos valores e processos. É característica fundamental do século 21 o uso massivo de computação, e muitas vezes a tecnologia por trás disso é Big Data. Alguns exemplos do uso quotidiano de Big Data é buscar algo no Google, postar no facebook ou comprar na Amazon. No Brasil temos exemplos também, tal como o painel de notícias recomendadas do globo.com, ou o relacionamento com clientes do Hotel Urbano. Mas tudo que se fez até agora é pouco. A maior parte das transformações ainda está por vir. Governos, empresas e profissionais de TI prudentes e antenados com seu tempo devem investir tempo para buscar adaptar seu modo de viver, criar e trocar valor. Quem apega-se a modelos de vida com pacto com o passado pode ter sérias dificuldades de viver com prosperidade.



Os profissionais de TI, que vivem de prestar serviços profissionais no mercado de trabalho, já estão acostumados a verem tecnologias novas tornarem-se valorizadas pelo mercado. O vigoroso dinamismo é a característica mais marcante do mercado de TI. Para esses profissionais, o recado agora é claro: a tecnologia da vez é Big Data. Os melhores salários, as melhores oportunidades, os melhores projetos, tendem a ser vinculadas a Big Data, e por isso o profissional faz muito bem para sua empregabilidade por estudar essa tecnologia.


Muitas empresas têm relação forte com TI, e podem beneficiar-se do uso de Big Data para criar mais valor. De fato, quanto mais nos damos conta de o que se pode fazer com a tecnologia digital, mais nos parece primitivo trabalhar sem observar os resultados por essa tecnologia produzidos. A concorrência – sempre muito grande, e crescente mais e mais – serve de estímulo para que empresas invistam em tecnologias inovadoras com o objetivo de ganhar produtividade. A empresa pode investir para melhorar processos que já tem, e também para explorar novos valores inovadores a partir do uso de Big Data. Repita-se: ainda há muito a ser feito. Se a empresa não investir, pode acontecer de em pouco tempo tornar-se sem competitividade para se sustentar no mercado.

Os integrantes do governo que efetivamente desejam construir estruturas do Estado eficientes, têm muito a ganhar pelo uso de tecnologia de informação em geral, em particular Big Data. O uso de tecnologia de informação já mostrou enorme valor por exemplo no caso do sistema de imposto de renda no Brasil. Quem já declarou imposto de renda com sistema pré tecnologia de informação não tem nenhuma saudade daquela forma ineficiente de se trabalhar. É tecnicamente possível melhorar muitíssimo a eficiência da sociedade a partir do uso com sabedoria de tecnologia de informação em sistemas relacionados ao governo, incluindo a área de impostos, criação/fechamento de empresas, processamentos jurídicos e policiais, sistema carcerário, transparência fiscal, saúde pública, educação, transportes e muito mais. Registre-se que há iniciativas governamentais de se explorar o potencial de novas tecnologias para inovações que poderão trazer benefícios a população. Uma delas é a disponibilização de dados feito por algumas cidades, entre elas o Rio de Janeiro (http://data.rio.rj.gov.br/). No meu curso de tecnologia de Big Data da UFRJ, alguns dos trabalhos são feitos em que os alunos escrevem código Big Data em Spark para tratar esses dados.

Há que se comentar sobre o processo de implantação de tecnologias inovadoras. Um software novo e muito bem concebido é muitas vezes o centro de muitas inovações importantes. Mas é igualmente importante que se trabalhe a mente das pessoas que vão usar e interagir com o software em questão. Por exemplo: seja uma empresa que deseja incorporar o uso de um novo sistema baseado em Big Data para aprender como os usuários e clientes percebem o produto da empresa. O que realmente se espera fazer é tornar a empresa como um todo mais eficiente e, portanto,z mais lucrativa. Para esse objetivo ser atingido, é preciso que o time que usa o software compreenda como a empresa cria valor e lucra, para que se conduza os conhecimentos produzidos pelo processamento massivo de dados em ações e decisões que melhorem o desempenho e o lucro da empresa. O profissional de TI deve, portanto, ter também um bom conhecimento do modelo de negócios da empresa em que trabalha, para tornar-se um efetivo colaborador com a missão da empresa, hora pensando em detalhes sórdidos de tecnologia, hora pensando em processos e modelos de negócios. Os usuários e clientes muitas vezes interagem diretamente sobre o os dados, e para esses há que se pensar em interfaces intuitivas e modelos de negócio atrativos e com lógica simples.

A construção de uma sociedade estruturalmente eficiente é a única forma de se obter prosperidade coletiva. O uso intenso e sábio de tecnologia de informação, inclusive Big Data, é peça fundamental na transformação de aumento de eficiência da sociedade.

--------------------------------------------------------------------------------
Sergio Barbosa Villas-Boas (sbVB), Ph.D.
software development, Big Data, cloud, mobile, IoT, HPC, optimization
sbvillasboas@gmail.com, sbvb@poli.ufrj.br
Skype: sbvbsbvb
http://www.sbVB.com.br
https://www.linkedin.com/in/sbvbsbvb
+55-21-97699-1337


2015-05-06

6) Big Data, Cloud e SaaS versus IaaS

#bigdata #hadoop #spark

Para que se implante um novo serviço baseado em Big Data, é preciso que um cluster com n computadores (workers) exista em algum lugar. Quem deseja entregar um serviço de processamento, deve controlar o data-center que contém o cluster para a produção desse serviço. Essa é a situação por exemplo de quem faz funcionar uma empresa com modelo de negócios “Software como Serviço (SaaS)”, em que um cliente paga para usar um processamento que lhe é entregue pela rede. No ano de 2015 se está observando numerosa criação de startups que prestam serviços relacionados a Big Data, com modelo de negócios SaaS. Como já comentei nesse Blog, em serviços de tecnologia de informação, o foco correto deve ser na eficácia. Ganha o jogo quem entrega o serviço feito, nas condições que o ambiente requer. O que qualquer empreendedor precisa fazer é descobrir como oferecer seu produto ou serviço de forma que consiga atrair clientes, sendo que o cliente comprará o produto ou serviço pensando basicamente na sua própria perspectiva. Isso quer dizer que o produto ou serviço deve apresentar um conjunto de preço, valor, qualidade, suporte e outros que seja capaz de atrair clientes.

No caso de empresas relacionadas a Big Data, é particularmente provável e adequado atuar num modelo de negócios SaaS, onde o serviço é vendido no contexto de “Business to Business (B2B)”. Por exemplo: uma empresa de media (setor cultural) deseja obter um relatório sintetizado que mostra como o seu produto cultural está sendo comentado por redes sociais. Isso pode ser feito a partir dos dados, que são vendidos pelas empresas de rede social, e processados para que se obtenha a síntese desejada. A tecnologia de Big Data é muito adequada para dar conta desse requisito, mas sobre a tecnologia básica de Big Data é preciso que se desenvolvam algoritmos configuráveis para que se atinja o resultado na forma que o cliente realmente entenda e veja valor para si (e, portanto, anime-se a pagar pelo serviço). O empreendedor no modelo SaaS tem a responsabilidade de desenvolver o software sobre a tecnologia de Big Data, de colocar o software em produção, de vender o serviço, e de entender o que os clientes querem para seguir aperfeiçoando o software.

Uma empresa startup que se proponha a fazer algo como descrito acima opera no risco, como toda empresa privada com fins lucrativos. A proposta de negócio pode dar errado. Para que dê certo, o dinheiro que os clientes pagam deve ser suficiente para pagar salários, impostos e outros custos, e ainda dar lucro. Um aspecto interessante a considerar são as opções que um empreendedor como esse tem para viabilizar o data-center para seu negócio. É quase uma certeza que o empreendedor vai escolher alugar um data-center na nuvem. Isso porque um data-center na cloud é muitíssimo menos custoso e mais simples de se implantar que uma alternativa local.

Alguns clientes têm motivos – muito compreensíveis – para não permitir que os dados sejam processados fora de seu data-center local. Exemplos desses clientes incluem empresas financeiras e empresas com alta tecnologia (no setor de petróleo, farmacêutico, militar e outras). Mesmo para atender clientes assim, a cloud é muito útil para um empreendedor prestador de serviço. Isso porque antes de se fechar um contrato de maior valor, em geral são feitos vários testes ou provas de conceito. Isso pode ser feito na cloud a custos baixos, usando dados falsos (mas no formato dos dados verdadeiros). Em se ficando satisfeito com o desempenho experimental feito na cloud, com todos os envolvidos convencidos de que o serviço será de fato feito a contento, então passa-se para a fase de se implantar o serviço dentro do data-center do cliente, com a exata mesma tecnologia que se testou na cloud.

As empresas fornecedoras de data-center na cloud operam um modelo de negócios conhecido como “infraestrutura como serviço (IaaS)”. O custo do serviço prestado por essas empresas é um fator da maior importância para sua competitividade. Como consequência, as empresas nessa categoria têm altas vantagens por tornarem-se grandes e com abrangência mundial, e o preço do serviço torna-se cada vez menor. Uma lista das atuais empresas importantes nessa categoria inclui Amazon (produto AWS), Google (produto Cloud Platform), Microsoft (produto azure), Digital Ocean e muitas outras. O crescimento da atividade de IaaS tem sido explosivo. O leitor interessado pode procurar por exemplo por “amazon IaaS growth 2014”, e ler sobre isso.

O uso massivo e crescente de data-center remoto na cloud é um fenômeno mundial, e faz surgir questões de interesse estratégico. Esse uso massivo leva a que muito processamento seja feito fisicamente em local e infraestrutura não controlada pelo governo de um país. Tal situação permite prever teoricamente um novo tipo de pressão política entre nações, que poderia ser negativo para países como o Brasil. Uma política que eventualmente prevenisse essa situação seria a de se incentivar uma indústria local de cloud a partir de se onerar com impostos a compra de serviços IaaS feitos por empresas estrangeiras. Mas não há almoço grátis, ou seja, a eventual implantação de uma política para proteger a atividade local de IaaS é ao mesmo tempo um forte estímulo negativo para a atividade de se empreender e inovar no modelo SaaS. A sociedade deve estar preparada para discutir qual política deseja para regular a atividade de processamento digital de informações.

Eu trabalho na UFRJ desde 1991, e atuo ensinando e orientando alunos em temas como desenvolvimento de software para Big Data, cloud, mobile, otimização e outros. É com orgulho que observo que alguns dos nossos melhores alunos abrem empresas startups em atividades como SaaS. Entendo que é muitíssimo mais produtivo e promissor para toda a sociedade Brasileira apostar no crescimento das empresas no modelo SaaS (não necessariamente Big Data) do que proteger a atividade IaaS. Uma das poucas coisas que ainda se consegue fazer no Brasil com chance de ser competitivo mundialmente é uma empresa de software no modelo SaaS, pois nossas severas deficiências (que compõe o chamado “custo Brasil”) são menos relevantes no caso da atividade de software. A eventual política em favor de se proteger a atividade de IaaS vai encarecer o uso de data-center remoto, e retirar competitividade do SaaS, um promissor segmento para o Brasil.

Para o leitor que imagina que uma política para proteger IaaS onerando o SaaS seria boa, sugiro que pense como seria nossa vida se tivéssemos uma política análoga para proteger a produção de chip de CPU, que é uma atividade ainda mais competitiva e concentrada que IaaS. Digamos que seja possível produzir no Brasil CPU's no Brasil por um custo 100 vezes maior. Seria sensato onerar toda a sociedade Brasileira forçando todos nós a usar CPU's produzidas aqui, ao invés de comprar essa mercadoria por quem a produz de forma eficiente? Se eventualmente fizéssemos isso e de fato onerássemos toda a sociedade, haveria chance real de um dia termos uma indústria nacional de CPU que atingisse competitividade mundial? O que a história econômica recente nos ensina? O que fazem outros países?

--------------------------------------------------------------------------------
Sergio Barbosa Villas-Boas (sbVB), Ph.D.
software development, Big Data, cloud, mobile, IoT, HPC, optimization
sbvillasboas@gmail.com, sbvb@poli.ufrj.br
Skype: sbvbsbvb
http://www.sbVB.com.br
https://www.linkedin.com/in/sbvbsbvb
+55-21-97699-1337


2015-04-29

5) O Futuro do MainFrame

As tecnologias de informação (TI) competem por existir num mercado bravo, implacável e extremamente dinâmico. A história está repleta de casos de tecnologias que foram muito importantes em uma certa época, mas que foram perdendo força até a extinção ou próximo disso. O profissional de TI prudente deve viver especulando o ambiente futuro, cuidando sempre de sua empregabilidade, de forma a decidir da melhor forma possível a prioridade do que se vai estudar, e consequentemente o que se vai ignorar. Conheço vários casos de pessoas que tornaram-se especialistas numa tecnologia que não interessa mais, e passaram de uma situação em que eram valorizados profissionalmente e salarialmente para outra bem diferente. Essas coisas acontecem com o mesmo dinamismo do mercado de TI, ou seja, num tempo comparável ao que a CPU do seu computador leva para somar números em ponto flutuante.

Um assunto de interesse especial é especular sobre o futuro do Mainframe (também chamado de computador de grande porte). Num resumo brevíssimo da história de TI, pode-se dizer que a humanidade não tinha computadores minimamente decentes até meados da segunda guerra mundial. Com o fim dessa e o início do período de guerra fria, houve vários avanços na computação digital. As primeiras gerações de computação usavam linguagem de máquina e assembler, o que é extremamente complexo. A primeira linguagem de programação de terceira geração foi FORTRAN, em 1957, com ênfase em computação científica, e usada até hoje. A segunda linguagem de computação inventada foi o COBOL, em 1959, com ênfase em computação comercial, e também usada até hoje.
Um nicho em que se encontra facilmente hoje em dia o uso de COBOL e Mainframe é no setor bancário. Claro que todas as tecnologias evoluíram desde sua criação. A versão atual dos Mainframes e do COBOL é baseada na sua própria história, mas adaptou-se para servir a quem lhe contrata. Uma qualidade que o Mainframe provê para seus clientes é uma excelente robustez (“robustez 5 noves”, isso é, 99,999% de tempo no ar, o que permite a no máximo 5 minutos fora do ar por ano). Outra qualidade do Mainframe é sua excelente capacidade de processamento, que permite dar conta de um número gigantesco de transações por segundo. Mas essas qualidades são entregues com alguns problemas. Um deles é o preço, que é bem expressivo, e transforma-se num custo operacional para o cliente, que compreensivelmente está sempre pensando em formas de reduzi-los. Outro problema mais sutil é a confiança que um cliente de Mainframe tem de que permanecerá conseguindo contratar profissionais para manter seu processamento funcionando. Esse segundo problema decorre do fato de que com o surgimento da microinformática no final da década de 1970, e o crescimento explosivo de sua utilização, a nova geração quase sempre confunde computação com microinformática e ignora o Mainframe. O uso generalizado de cloud computing, que é em geral feito com servidores Linux instanciados na quantidade que se deseja para atender necessidade de processamento que se tem, fez mais uma vez a nova geração distanciar-se do Mainframe, pois a resolução de grandes problemas de TI é feita com uso massivo de microinformática.

Fazem alguns anos, eu fui chamado para conversar com o setor de RH da Stefanini (uma grande empresa de serviço de software, com atuação no Rio de Janeiro e clientes em vários países). A chefe do RH reconhecia que nós da UFRJ formávamos bons profissionais, e nos chamou para ajudar a resolver um problema específico: eles precisavam urgentemente de gente com conhecimento de COBOL e Mainframe. Queriam que montássemos um curso extra desse assunto. Eu retruquei que reconhecia o problema deles, mas que não é muito simples convencer a nova geração a estudar isso (e nem a nós professores a montar cursos desse assunto). Argumentei que a verdadeira necessidade da Stefanini é o que o mercado inteiro precisa: uma solução para o grave problema de o que fazer com os Mainframes. Esse problema é muito sério, pois não se consegue mudar a cultura rapidamente. Mas o tempo segue indo para frente, com os profissionais de COBOL aumentando de idade e sem haver quase ninguém da nova geração para repô-los. Eu propus trabalhar junto com a Stefanini num projeto que ajudasse a se produzir uma solução geral e decente para a substituição dos Mainframes por outra coisa. Mas como eles apenas queriam um curso de COBOL, nossa conversa acabou sem nenhuma consequência. E o problema de o que fazer com os Mainframes segue aumentando sua agudez e gritando por uma solução.

Com o surgimento da tecnologia de Big Data, facilitou-se ainda mais a transformação de um conjunto de computadores (em geral Linux) em um cluster. Agrupando os computadores com software de Big Data (e.g. Spark), consegue-se 2 qualidades muito desejáveis: robustez (pois no caso de um computador falhar o cluster segue trabalhando), e desempenho (pois o paralelismo do Big Data faz aumentar muito a capacidade de processamento do cluster). Essas duas qualidades são justamente o diferencial que os Mainframes sustentam na hora de serem vendidos. Considerando que com o Big Data se consegue finalmente produzir com microinformática as qualidades do Mainframe, surge então a pergunta: será que finalmente conseguimos encontrar uma forma de fazer a microinformática substituir o Mainframe? Antes de ficar animado em demasia é bom lembrar que já se tentou antes substituir o uso de Mainframe, e há casos antológicos de fracasso. Um dos mais citados é a falência do Banco Bamerindus. O leitor interessado pode procurar no Google por “bamerindus Mainframe fracasso” e verá várias histórias. Além disso, deve-se sempre registrar o fato de que Big Data não é uma tecnologia de aceleração computacional de aplicação genérica. Os problemas de TI que permitem tirar proveito das qualidades especiais da arquitetura Big Data devem permitir que os dados fiquem armazenados em HDFS, por exemplo.

Uma empresa ou entidade que hoje está usando Mainframe, muito compreensivelmente, deve olhar com suspeição para um projeto de se implantar Big Data para substituir o Mainframe. Um roteiro prudente para o gestor de TI é o de definir experiências e provas de conceito para serem feitas com tecnologia de Big Data, e verificar na prática o tempo que leva uma aplicação para ser desenvolvida e mantida, e o desempenho e a robustez do serviço quando colocado em produção. É por provar-se viável com experiências práticas que o Big Data poderá abocanhar o mercado. Há um valor adicional no uso de Big Data: trata-se de uma tecnologia open-source, em oposição à tecnologia dos Mainframes, que são tecnologias proprietárias. O cliente pode avaliar por suas próprias perspectivas qual a qualidade e preço do serviço de TI quando é baseado em tecnologias proprietárias, em comparação o que é baseado em tecnologias open-source e padrões abertos. Muita gente tem verificado que essa última abordagem entrega serviço melhor e mais barato. Além da perspectiva do cliente, há também a perspectiva da nação Brasileira. Um projeto de TI baseado em solução proprietária produz um fluxo de dinheiro do Brasil para o local onde moram os proprietários das empresas donas das licenças (muitos moram nos EUA). Essa drenagem de recursos empobrece nossa sociedade. Alternativamente, um projeto de TI baseado em qualquer alternativa open-source (inclusive Big Data) faz o cliente pagar salários e impostos dentro do Brasil, o que irriga e faz aumentar nossa economia local.


Em resumo: A análise do ambiente permite especular que veremos cada vez mais casos de Big Data substituindo usos tradicionais de Mainframe. Nesse jogo, vão ganhar os que souberem de fato desenvolver aplicações Big Data, pois esses são os que vão ganhar os novos contratos. Os usuários e consumidores de serviços de TI vão ganhar também, pois vão livrar-se de hardware e software proprietário, e passar a resolver seus problemas com hardware de prateleira e software básico open-source, o que gerará mais flexibilidade e menor custo. As universidades, escolas de TI e estudantes também vão ganhar, pois poderão usar a melhor tecnologia do mundo sem maiores dificuldades, para seus testes e pesquisas. Pelo mesmo motivo, ganharão também os empreendedores inovadores. Vai ganhar a sociedade brasileira como um todo, pois se deixará de fazer fluir nosso dinheiro para o exterior, em licenças de software. Vão perder os que vendem soluções proprietárias baseadas em Mainframe, que verão esse mercado diminuir (a menos que evoluam seu produto, e entreguem alguma qualidade exclusiva e útil).

--------------------------------------------------------------------------------
Sergio Barbosa Villas-Boas (sbVB), Ph.D.
software development, Big Data, cloud, mobile, IoT, HPC, optimization
sbvillasboas@gmail.com, sbvb@poli.ufrj.br
Skype: sbvbsbvb
http://www.sbVB.com.br
https://www.linkedin.com/in/sbvbsbvb
+55-21-97699-1337