When your product grows, one of the biggest challenges is how is your architecture going to evolve in a sustainable way. In this talk, I'm going to show how the platform created for Globo.tv grown and evolved with the rise of a new product: Globosat Play. Among the challenges, how to allow several teams to work on the same platform, how to share components and how to update a project without breaking another. I'll also detail the main benefits and drawbacks of a microservices architecture compared to a monolithic one.
17. DESAFIOS
manter a consistência entre os projetos
compartilhar APIs e componentes
evoluir a plataforma para manter o Globo.TV e receber o Globosat Play
20. EVOLUÇÃO DA ARQUITETURA
código de projetos antigos extraído para novos projetos
documentação de APIs internas
código comum compartilhado (gems internas)
versionamento de APIs
21. EVOLUÇÃO DA ARQUITETURA
ARQUITETURA RESILIENTE
Fazer o máximo para manter o site no ar
Foco nas principais features ("graceful degradation")
32. Setup do ambiente local muito mais simples
Garante um ambiente igual para qualquer máquina
Isolamento de containers
docker run --name redis -d redis
docker run --name mongodb -d mongo:2.4 mongod
docker run --name globosatplay -p 3010:3010 -v "$(pwd)":/app
--link mongodb:mongodb --link redis:redis globosatplay
33. https://tsuru.io/
PaaS open source da Globo.com
Mais liberdade para os desenvolvedores
Deploys mais rápidos e frequentes
Escalabilidade de forma simples
tsuru app-create myapp
git remote add tsuru git@example.com:myapp.git
git push tsuru master
34. DATABASE AS A SERVICE
https://github.com/globocom/database-as-a-service
36. ARQUITETURA MONOLÍTICA
Arquitetura mais simples
Setup local mais fácil
Atualizações mais rápidas (gems, bugfixes)
Mais fácil de testar
Ambiente homogêneo
Menos pontos de falha
37. MICRO SERVIÇOS
Projetos menores e mais fáceis de gerenciar
Build mais rápido
Deploys menores e menos arriscados
Infra mais flexível
Permite mudanças incrementais