Open source na Globo.com

Post on 15-Jan-2015

958 views 1 download

Tags:

description

Palestra apresentada no dia 19/10/2012, durante a Semana do Profissional de TI, nas FIC (Faculdades Integradas de Caratinga).

Transcript of Open source na Globo.com

Começaremos já...

Friday, October 19, 12

open source na globo.com

Friday, October 19, 12

Francisco Souza@franciscosouza

• desenvolvedor @ globo.com

• #cobrateam member

• open source fanboy

• (temporariamente) procurador senior de apartamentos

Friday, October 19, 12

tsuru.ioFriday, October 19, 12

12 anos de estrada

Friday, October 19, 12

500+ mil assinantes

Friday, October 19, 12

27 times multidisciplinares

Friday, October 19, 12

https://secure.flickr.com/photos/royskeane/413103429/

Friday, October 19, 12

Friday, October 19, 12

Friday, October 19, 12

Friday, October 19, 12

Friday, October 19, 12

Publicação de conteúdo

Friday, October 19, 12

https://secure.flickr.com/photos/peterkaminski/3772015/

Friday, October 19, 12

Nova plataforma de publicação

Friday, October 19, 12

Nova plataforma de publicação

...Friday, October 19, 12

http://www.oracle.com/us/corporate/customers/customersearch/globo-1-mysql-ss-406120.html

Friday, October 19, 12

https://secure.flickr.com/photos/eurritimia/381962013/

Friday, October 19, 12

Software livre na Globo.com

Friday, October 19, 12

https://secure.flickr.com/photos/pleeker/146575856/

Friday, October 19, 12

https://secure.flickr.com/photos/pleeker/146575856/

• Aplicação• Banco de dados• Cache• ...

Friday, October 19, 12

Servidores de aplicação• nginx

• Apache (PHP)

• Tomcat (Java)

• gunicorn (Python)

• mod_wsgi (Python)

• passenger/unicorn (Ruby)

• etc...

Friday, October 19, 12

Cache

• Varnish (CachOS)

• memcached

Friday, October 19, 12

Bancos de dados

• MySQL

• MongoDB

• Redis

• Virtuoso

• Oracle :-(

Friday, October 19, 12

Linguagens e plataformas

• Python

• Ruby/JRuby

• Java

• JavaScript/node.js

• C

• Perl

• Go

• PHP (platb - Wordpress)

Friday, October 19, 12

E mais...• ElasticSearch

• Capistrano

• Fabric

• VirtualBox OSE

• Nagios

• ActiveMQ

• RabbitMQ

• Django

• Tornado

• Ruby on Rails

• Sinatra

• VRaptor

• ...

Friday, October 19, 12

Um exemplo: G1

• Como desenvolvemos e colocamos código do G1 em produção?

• Quem entrega o conteúdo para o usuário?

Friday, October 19, 12

Desenvolvendo

• Quero implementar uma nova feature no G1! Trata-se de um widget que vai obter informações de trânsito e armazená-las no banco de dados;

• Preciso de uma tabela no banco de dados, e um pouco de código pra isso;

• Como isso é feito no G1?

Friday, October 19, 12

Banco de dados

• O G1 utiliza o MySQL como único banco de dados relacional;

• Mudanças no banco de dados são feitas através de migrations. Para as migrations, utilizamos o simple-db-migrate, um projeto open source que nasceu na Globo.com.

Friday, October 19, 12

O código

• O código é feito em Python, linguagem de programação open source;

• Para tornar o desenvolvimento ainda mais simples e produtivo, utilizamos o framework web Django;

• E no lado do cliente, um pouco de jQuery e JavaScript puro :)

Friday, October 19, 12

O deploy• Utilizamos o Capistrano para enviar o

código da máquina do desenvolvedor para o servidor de aplicação;

• Também utilizamos o Capistrano para executar as migrations no servidor de banco de dados;

• Tanto as máquinas de aplicação quanto de banco de dados utilizam Linux como sistema operacional.

Friday, October 19, 12

Quem serve a aplicação?

• Todo conteúdo estático do G1 é servido pelo nginx;

• Em caso de conteúdo dinâmico, o nginx repassa as requisições para o gunicorn, um servidor para aplicações web Python;

• Todo conteúdo editorial da Globo.com é gerado estaticamente em disco, para garantir melhor desempenho. Para geração de conteúdo estático é utilizado o staticgenerator.

Friday, October 19, 12

E muito mais!• Diversas bibliotecas open source para

desenvolvimento e testes;

• Monitoração das máquinas utilizando Nagios;

• Provisionamento e configuração versionada das máquinas com Puppet;

• etc.

Friday, October 19, 12

“Kinda-open source”

Friday, October 19, 12

libby

• Colaboração entre times;

• Reutilização de componentes comuns em diversos produtos.

Friday, October 19, 12

“github” interno

• Todos os desenvolvedores da empresa têm acesso ao código de todos os times;

• Patches são bem vindos :-)

Friday, October 19, 12

Fedex Day

Friday, October 19, 12

Friday, October 19, 12

opensource.globo.com

Friday, October 19, 12

salve a web, por favor!✴ Navegadores velhos e desatualizados não evoluem

junto com os padrões web e são cheios de bugs, afetando a qualidade dos sites e fazendo com que os desenvolvedores gastem mais tempo para adaptar os sites a esses browsers obsoletos.

✴ "Salve a web, por favor" é um esforço para eliminar esses navegadores.

✴ https://github.com/globocom/sawpf

Friday, October 19, 12

thumbor

✴ thumbor is a smart imaging service. It enables on-demand crop, resizing and flipping of images.

✴ https://github.com/globocom/thumbor

Friday, October 19, 12

Globo Bootstrap

• Fork to Twitter Bootstrap;

• Em português;

• Com componentes utilizados em produtos da Globo.com.

Friday, October 19, 12

oauth2u

✴ This project aims to implement the complete OAuth 2.0 Authorization Protocol Specification.

✴ It provides the endpoints specified by OAuth 2.0 specification with possibilities to plug code to customize specific behaviors.

✴ https://github.com/globocom/oauth2u

Friday, October 19, 12

nginx-push-stream-module

✴ A pure stream http push technology for your Nginx setup.

✴ Comet made easy and really scalable.✴ Supports EventSource, WebSocket, Long Polling, and

Forever Iframe.✴ https://github.com/wandenberg/nginx-push-stream-module

Friday, October 19, 12

tsuru

✴ Tsuru is an open platform-as-a-service (PaaS)

✴ https://github.com/globocom/tsuru

Friday, October 19, 12

gandalf

• HTTP API for git projects and users management;

• https://github.com/globocom/gandalf

Friday, October 19, 12

hlsclient

• Python HLS (HTTP Live Streaming) client;

• https://github.com/globocom/hlsclient

Friday, October 19, 12

E tem mais!• Django

• Python

• Go Programming Language

• magic2d

• Django static generator

• Splinter

• Django Brasil

• Pyccuracy

• Lettuce

• wxPython

• InVersalius

• molecular-view

• Sure

• Bolacha

• PhantomJS

• Guake Terminal

• Homebrew

• Freshen

Friday, October 19, 12

Friday, October 19, 12

...Friday, October 19, 12

Friday, October 19, 12

Mais de 40 projetos open source nasceram na globo.com devido às necessidades da empresa

Friday, October 19, 12

Mais de 40 projetos open source nasceram na globo.com devido às necessidades da empresa

Mais de 100 projetos open source já receberam contribuições de

funcionários da globo.com

Friday, October 19, 12

Mais de 40 projetos open source nasceram na globo.com devido às necessidades da empresa

Mais de 100 projetos open source já receberam contribuições de

funcionários da globo.com

Grande parte das tecnologias utilizadas pela Globo.com já recebeu contribuições de desenvolvedores da empresa, incluindo linguagens de programação e frameworks

Friday, October 19, 12

Friday, October 19, 12

... dos nossos desenvolvedoresparticipam ou já participaram do movimento open source

30%Mais de ...

Friday, October 19, 12

Queremos aumentar esse número!

• globo.com/talentos

• fss@corp.globo.com

Friday, October 19, 12

Dúvidas?

Friday, October 19, 12

Muito obrigado!fss@corp.globo.com

@franciscosouza

Friday, October 19, 12