qcon rio 2015 - microservices

280
Abrindo a caixa Microserviços globo.tv e globosat play Emerson Macedo globo.com @emerleite

Upload: emerson-macedo

Post on 12-Apr-2017

833 views

Category:

Technology


0 download

TRANSCRIPT

  • Abrindoa caixaMicroserviosglobo.tv e globosat play

    Emerson Macedoglobo.com@emerleite

  • Oferta Rede Globo

  • Oferta Rede Globo

    categorias

  • Oferta Rede Globo

    categorias

    busca

  • Vdeos abertos em trechos

  • Assinantes globo.com

  • Assinantes globo.com

    ntegras tv globo

  • Assinantes de tv a cabo/satlite

  • Assinantes de tv a cabo/satlite

    operadora

  • Canais Ao Vivo

  • Canais Ao Vivo

    Filmes

  • Canais Ao Vivo

    FilmesSries

  • Canais Ao Vivo

    FilmesSries

    Programas

  • COMO MANTER OSPRODUTOS DE VDEOSSEM DUPLICARMUITO CDIGO?

  • RIGHT TOOL FOR THE JOB

  • IDENTIFICAMOSA ORGANIZAODO NEGCIO

    #1

  • globo.tv

  • Ao Vivo Auth XPLogada

    WidgetsBuscaAPI

  • globosatplay.com

  • Filmes ProgramasSriesCombate

    Ao Vivo Auth XPLogada

    OfertaEditorial WidgetsBusca

  • globosatplay.com globo.tv

    Ao Vivo Auth XPLogada

    WidgetsBuscaProductAPI

  • IDENTIFICAMOSOS COMPONENTESQUE SE REPETEM

    2

  • PERFIL DO USURIO

  • PERFIL DO USURIO

  • PERFIL DO USURIO

  • PERFIL DO USURIO

  • PERFIL DO USURIO

  • EXPERINCIA LOGADA

  • EXPERINCIA LOGADA

  • EXPERINCIA LOGADA

  • LOGIN

  • LOGIN

  • LISTA EDITORIAL

  • LISTA EDITORIAL

    TRILHO EDITORIAL

  • LISTA EDITORIAL

    TRILHO EDITORIALOferta Editorial

  • TOOLTIP DE FILMES

  • TOOLTIP DE FILMES

  • TOOLTIP DE VDEOS

  • TOOLTIP DE VDEOS

  • TOOLTIP DE PROGRAMA

  • TOOLTIP DE PROGRAMA

  • TOOLTIP REMOTO

    FILME VDEOPROGRAMA

  • IDENTIFICAMOSO QUE NICONO ECOSISTEMA

    #

  • Categorizado

  • Categorizado

    Somente trechos

  • Categorizado

    Somente trechos

    ntegras para assinantes

  • Lutadores

  • Lutadores

    Competies

  • Lutadores

    Competies

    Eventos

  • Linguagem de filmes

  • Linguagem de filmes

    Identidade para filmes

  • Linguagem de filmes

    Identidade para filmes

    Consumo para filmes

  • Programa/Srie o mais relevante

  • Programa/Srie o mais relevante

    Linguagem para episdios

  • Programa/Srie o mais relevante

    Linguagem para episdios

    Consumo para episdios

  • Agregador Globosat

  • Agregador Globosat

    Consumo cross canal

  • Agregador Globosat

    Consumo cross canal

    Ao Vivo e On Demand

  • globosatplay.com

    Filmes ProgramasSriesCombate

  • QUEBRAMOS O SISTEMAEM PARTES QUEFAAM SENTIDO

    #

  • QUEBRAMOS O SISTEMAEM PARTES QUEFAAM SENTIDO

    #

    COM APIs

  • globo.tv

    Database

  • globo.tv ProductAPI

    Database

  • globo.tv ProductAPI

    Database

  • globo.tv ProductAPI

    Database

  • globo.tv ProductAPI

    Database

  • globo.tv ProductAPI

    Ao Vivo

    DatabaseDatabase

  • globo.tv ProductAPI

    Ao Vivo

    DatabaseDatabase

  • Combate

    Database

    globosatplay.com/combate

  • ProductAPI

    Combate

    Database

    globosatplay.com/combate

  • ProductAPI

    Combate

    Database

    globosatplay.com/combate

  • ProductAPI

    Combate

    Database

    EsportesAPI

    globosatplay.com/combate

  • ProductAPI

    Combate

    Database

    EsportesAPI

    Lutas

    globosatplay.com/combate

  • ProductAPI

    Combate

    DatabaseAo Vivo

    API

    EsportesAPI

    Lutas

    globosatplay.com/combate

  • ProductAPI

    Combate

    DatabaseAo Vivo

    API

    Transmisses

    EsportesAPI

    Lutas

    globosatplay.com/combate

  • ProductAPI

    Combate

    DatabaseAo Vivo

    API

    Transmisses

    EsportesAPI

    Lutas

    globosatplay.com/combate

  • ProductAPI

    Combate

    DatabaseAo Vivo

    API

    Transmisses

    EsportesAPI

    Lutas

    globosatplay.com/combate

    Subscribe

  • ProductAPI

    Combate

    DatabaseAo Vivo

    API

    Transmisses

    EsportesAPI

    Lutas

    globosatplay.com/combate

    PublishSubscribe

  • Ao Vivo

    Database

    globosatplay.com/premierefc

  • ProductAPI

    Ao Vivo

    Database

    globosatplay.com/premierefc

  • ProductAPI

    Ao Vivo

    Database

    globosatplay.com/premierefc

  • ProductAPI

    Ao Vivo

    Database

    EsportesAPI

    globosatplay.com/premierefc

  • ProductAPI

    Ao Vivo

    Database

    EsportesAPI

    Jogos

    globosatplay.com/premierefc

  • ProductAPI

    Ao Vivo

    Database

    FootstatsAPI

    EsportesAPI

    Jogos

    globosatplay.com/premierefc

  • ProductAPI

    Ao Vivo

    Database

    FootstatsAPI

    Placar Real time

    EsportesAPI

    Jogos

    globosatplay.com/premierefc

  • Filmes

    Database

    globosatplay.com/megapix

  • ProductAPI

    Filmes

    Database

    globosatplay.com/megapix

  • ProductAPI

    Filmes

    Database

    globosatplay.com/megapix

  • ProductAPI

    Filmes

    Database

    OfertasAPI

    globosatplay.com/megapix

  • ProductAPI

    Filmes

    Database

    OfertasAPI

    Trilhos Editoriais

    globosatplay.com/megapix

  • ProductAPI

    Filmes

    Database

    OfertasAPI

    Trilhos Editoriais

    RecomendaoAPI

    globosatplay.com/megapix

  • ProductAPI

    Filmes

    Database

    OfertasAPI

    Trilhos Editoriais

    RecomendaoAPI

    Recomend

    ao

    globosatplay.com/megapix

  • ProductAPI

    Programas

    Database

    globosatplay.com/sportv

  • ProductAPI

    Programas

    Database

    RecomendaoAPI

    globosatplay.com/sportv

  • ProductAPI

    Programas

    Database

    RecomendaoAPI

    Recomend

    ao

    globosatplay.com/sportv

  • Home

    Database

    globosatplay.com

  • ProductAPI

    Home

    Database

    globosatplay.com

  • ProductAPI

    Home

    Database

    globosatplay.com

  • ProductAPI

    Home

    Database

    OfertasAPI

    globosatplay.com

  • ProductAPI

    Home

    Database

    OfertasAPI

    Trilhos Editoriais

    globosatplay.com

  • ProductAPI

    Home

    Database

    OfertasAPI

    Trilhos Editoriais

    globosatplay.com

    Ao VivoAPI

  • ProductAPI

    Home

    Database

    OfertasAPI

    Trilhos Editoriais

    globosatplay.com

    Ao VivoAPI

    Transmisses

  • ProductAPI

    Home

    Database

    OfertasAPI

    Trilhos Editoriais

    RecomendaoAPI

    globosatplay.com

    Ao VivoAPI

    Transmisses

  • ProductAPI

    Home

    Database

    OfertasAPI

    Trilhos Editoriais

    RecomendaoAPI

    Recomend

    ao

    globosatplay.com

    Ao VivoAPI

    Transmisses

  • CRIAMOS UMTOOLKIT DEINTERFACE

    #

  • ~40 componentes visuais

  • Ttulo de seo

  • Ttulo de seo Pauta de seo

  • Ttulo de seo

    Thumb

    Pauta de seo

  • Ttulo de seo

    Thumb

    Pauta de seo

    Paginao

  • Thumb

  • Thumb

    Markup manual

  • Thumb

  • Thumb Markup manual

  • Thumb Markup manual

  • Rails Helper

  • Rails Helper

    SASS/SCSS

  • Rails Helper

    SASS/SCSS

  • RIGHT TOOL FOR THE JOB

  • UNIVERSAL JAVASCRIPT

  • REACT COMPONENT

  • REACT COMPONENT

    Thumb

  • REACT COMPONENT

    Thumb

    Program

  • MODIFICAMOS OPROCESSO DEDEPLOYMENT

    #

  • PROCESSO DO TIME

  • CODE

    PROCESSO DO TIME

  • CODE

    PROCESSO DO TIME

  • GITCODE

    PROCESSO DO TIME

  • GITCODE

    PROCESSO DO TIME

  • GITCODE CI

    PROCESSO DO TIME

  • GITCODE CI

    PROCESSO DO TIME

  • GITCODE CI QA

    PROCESSO DO TIME

  • GITCODE CI QA

    PROCESSO DO TIME

    Auto

  • GITCODE CI QA

    PROCESSO DO TIME

    Auto Auto

  • GITCODE CI QA

    PROCESSO DO TIME

    Auto Auto Auto

  • GITCODE CI QA

    PROCESSO DO TIME

    SUBIDA PRA PRODUO

    Auto Auto Auto

  • GITCODE CI QA

    PROCESSO DO TIME

    SUBIDA PRA PRODUO

    Auto Auto Auto

    CGH

  • GITCODE CI QA

    PROCESSO DO TIME

    SUBIDA PRA PRODUO

    Auto Auto Auto

    CGH

  • GITCODE CI QA

    PROCESSO DO TIME

    SUBIDA PRA PRODUO

    Auto Auto Auto

    GMUDCGH

  • GITCODE CI QA

    PROCESSO DO TIME

    SUBIDA PRA PRODUO

    Auto Auto Auto

    GMUDCGH

  • GITCODE CI QA

    PROCESSO DO TIME

    SUBIDA PRA PRODUO

    Auto Auto Auto

    GMUDCGH OP

  • GITCODE CI QA

    PROCESSO DO TIME

    SUBIDA PRA PRODUO

    Auto Auto Auto

    GMUDCGH OP

  • GITCODE CI QA

    PROCESSO DO TIME

    SUBIDA PRA PRODUO

    Auto Auto Auto

    GMUDCGH OP PROD

  • GITCODE CI QA

    PROCESSO DO TIME

    SUBIDA PRA PRODUO

    Auto Auto Auto

    GMUDCGH OP PROD

    Manual

  • GITCODE CI QA

    PROCESSO DO TIME

    SUBIDA PRA PRODUO

    Auto Auto Auto

    GMUDCGH OP PROD

    Manual Manual

  • GITCODE CI QA

    PROCESSO DO TIME

    SUBIDA PRA PRODUO

    Auto Auto Auto

    GMUDCGH OP PROD

    Manual Manual Manual

  • DEPLOY AT QA

  • DEPLOY AT QA

    GITCODE CI QA

    Auto Auto Auto

  • DEPLOY AT QA

    DEPLOY PARA PRODUO

    GITCODE CI QA

    Auto Auto Auto

  • DEPLOY AT QA

    DEPLOY PARA PRODUO

    GITCODE CI QA

    Auto Auto Auto

    DEV

  • DEPLOY AT QA

    DEPLOY PARA PRODUO

    GITCODE CI QA

    Auto Auto Auto

    DEV

    PRODblue

    PRODgreen

  • DEPLOY AT QA

    DEPLOY PARA PRODUO

    GITCODE CI QA

    Auto Auto Auto

    DEV

    PRODblue

    PRODgreen

  • DEPLOY AT QA

    DEPLOY PARA PRODUO

    GITCODE CI QA

    Auto Auto Auto

    DEV

    PRODblue

    PRODgreen

  • DEPLOY AT QA

    DEPLOY PARA PRODUO

    GITCODE CI QA

    Auto Auto Auto

    DEV

    Manual

    PRODblue

    PRODgreen

  • CAP BLUE-GREEN DEPLOY

  • https://goo.gl/cNs23C

  • MODIFICAMOS OPROCESSO DE CRIAODE NOVAS APLICAES

    #

  • AMBIENTE DE QA

  • AMBIENTE DE QA

    PEDIDO

  • AMBIENTE DE QAEQUIPEINFRAPEDIDO

  • AMBIENTE DE QAEQUIPEINFRAPEDIDO

  • AMBIENTE DE QAEQUIPEINFRAPEDIDO

    AMBIENTEQA

  • AMBIENTE DE QAEQUIPEINFRAPEDIDO

    AMBIENTEQA

  • AMBIENTE DE QAEQUIPEINFRAPEDIDO

    Manual

    AMBIENTEQA

  • AMBIENTE DE QAEQUIPEINFRAPEDIDO

    Manual Manual/Auto

    AMBIENTEQA

  • AMBIENTE DE QAEQUIPEINFRAPEDIDO

    Manual Manual/Auto

    AMBIENTEQA

    ~2 dias

  • AMBIENTE DE QA

    AMBIENTE DE PRODUO

    EQUIPEINFRAPEDIDO

    Manual Manual/Auto

    AMBIENTEQA

    ~2 dias

  • AMBIENTE DE QA

    AMBIENTE DE PRODUO

    EQUIPEINFRAPEDIDO

    Manual Manual/Auto

    AMBIENTEQA

    ~2 dias

    PEDIDO

  • AMBIENTE DE QA

    AMBIENTE DE PRODUO

    EQUIPEINFRAPEDIDO

    Manual Manual/Auto

    AMBIENTEQA

    ~2 dias

    EQUIPEINFRAPEDIDO

  • AMBIENTE DE QA

    AMBIENTE DE PRODUO

    EQUIPEINFRAPEDIDO

    Manual Manual/Auto

    AMBIENTEQA

    ~2 dias

    EQUIPEINFRAPEDIDO

  • AMBIENTE DE QA

    AMBIENTE DE PRODUO

    EQUIPEINFRAPEDIDO

    Manual Manual/Auto

    AMBIENTEQA

    ~2 dias

    EQUIPEINFRAPEDIDO

    AMBIENTEPROD

  • AMBIENTE DE QA

    AMBIENTE DE PRODUO

    EQUIPEINFRAPEDIDO

    Manual Manual/Auto

    AMBIENTEQA

    ~2 dias

    EQUIPEINFRAPEDIDO

    AMBIENTEPROD

  • AMBIENTE DE QA

    AMBIENTE DE PRODUO

    EQUIPEINFRAPEDIDO

    Manual Manual/Auto

    AMBIENTEQA

    ~2 dias

    EQUIPEINFRAPEDIDO

    Manual

    AMBIENTEPROD

  • AMBIENTE DE QA

    AMBIENTE DE PRODUO

    EQUIPEINFRAPEDIDO

    Manual Manual/Auto

    AMBIENTEQA

    ~2 dias

    EQUIPEINFRAPEDIDO

    Manual Manual

    AMBIENTEPROD

  • AMBIENTE DE QA

    AMBIENTE DE PRODUO

    EQUIPEINFRAPEDIDO

    Manual Manual/Auto

    AMBIENTEQA

    ~2 dias

    EQUIPEINFRAPEDIDO

    Manual Manual

    AMBIENTEPROD

    ~2 semanas

  • http://tsuru.io

  • AMBIENTE DE QA

  • AMBIENTE DE QA

    COMANDO

  • AMBIENTE DE QATSURUSERVERCOMANDO

  • AMBIENTE DE QATSURUSERVERCOMANDO

  • AMBIENTE DE QATSURUSERVERCOMANDO

    AMBIENTEQA

  • AMBIENTE DE QATSURUSERVERCOMANDO

    AMBIENTEQA

  • AMBIENTE DE QATSURUSERVERCOMANDO

    Manual

    AMBIENTEQA

  • AMBIENTE DE QATSURUSERVERCOMANDO

    Manual Auto

    AMBIENTEQA

  • AMBIENTE DE QATSURUSERVERCOMANDO

    Manual Auto

    AMBIENTEQA

    Alguns segundos

  • AMBIENTE DE QA

    AMBIENTE DE PRODUO

    TSURUSERVERCOMANDO

    Manual Auto

    AMBIENTEQA

    Alguns segundos

  • AMBIENTE DE QA

    AMBIENTE DE PRODUO

    TSURUSERVERCOMANDO

    Manual Auto

    AMBIENTEQA

    Alguns segundos

    TSURUSERVERCOMANDO

    Manual Manual

    AMBIENTEPROD

    Alguns segundos

  • DEPLOY AT QA

  • DEPLOY AT QA

    GITCODE CI QA

    Auto Auto Auto

  • DEPLOY AT QA

    DEPLOY PARA PRODUO

    GITCODE CI QA

    Auto Auto Auto

  • DEPLOY AT QA

    DEPLOY PARA PRODUO

    GITCODE CI QA

    Auto Auto Auto

    DEV

  • DEPLOY AT QA

    DEPLOY PARA PRODUO

    GITCODE CI QA

    Auto Auto Auto

    DEV

    PRODblue

    PRODgreen

  • DEPLOY AT QA

    DEPLOY PARA PRODUO

    GITCODE CI QA

    Auto Auto Auto

    DEV

    PRODblue

    PRODgreen

  • DEPLOY AT QA

    DEPLOY PARA PRODUO

    GITCODE CI QA

    Auto Auto Auto

    DEV

    PRODblue

    PRODgreen

  • DEPLOY AT QA

    DEPLOY PARA PRODUO

    GITCODE CI QA

    Auto Auto Auto

    DEV

    Manual

    PRODblue

    PRODgreen

  • TSURU BLUE-GREEN DEPLOY

    domain.globoi.com

    APPblue

    APPgreen

  • TSURU BLUE-GREEN DEPLOY

    domain.globoi.com

    APPblue

    APPgreen

  • TSURU BLUE-GREEN DEPLOY

    domain.globoi.com

    APPblue

    APPgreen

  • TSURU BLUE-GREEN DEPLOY

    domain.globoi.com

    APPblue

    APPgreen

  • TSURU BLUE-GREEN DEPLOY

    domain.globoi.com

    APPblue

    APPgreen

  • https://goo.gl/YsWVQR

  • CRIAMOS RESILINCIACOM O USODE SERVIOS EXTERNOS

    #

  • App

    Redis

    ServioExterno

    Content Gateway

  • App

    Redis

    ServioExterno

    Content Gateway

    Cache read (service URI) - NOT FOUND

  • App

    Redis

    ServioExterno

    Request

    Content Gateway

    Cache read (service URI) - NOT FOUND

  • App

    Redis

    ServioExterno

    Request

    Content Gateway

    200 OK

    Cache read (service URI) - NOT FOUND

  • App

    Redis

    ServioExterno

    Request

    Content Gateway

    200 OK

    Update cache (service URI) - TTLUpdate cache stale (service URI) - TTL

    Cache read (service URI) - NOT FOUND

  • App

    Redis

    ServioExterno

    Content Gateway

  • App

    Redis

    ServioExterno

    Content Gateway

    Cache read (service URI) - FOUND

  • App

    Redis

    ServioExterno

    Content Gateway

  • App

    Redis

    ServioExterno

    Content Gateway

    Cache read (service URI) - NOT FOUND

  • App

    Redis

    ServioExterno

    Request

    Content Gateway

    Cache read (service URI) - NOT FOUND

  • App

    Redis

    ServioExterno

    Request

    Content Gateway

    TIMEOUT / ERROR

    Cache read (service URI) - NOT FOUND

  • App

    Redis

    ServioExterno

    Request

    Content Gateway

    TIMEOUT / ERROR

    Cache read stale (service URI) - FOUNDCache read (service URI) - NOT FOUND

  • App

    Redis

    ServioExterno

    Content Gateway

  • App

    Redis

    ServioExterno

    Content Gateway

    Cache read (service URI) - NOT FOUND

  • App

    Redis

    ServioExterno

    Request

    Content Gateway

    Cache read (service URI) - NOT FOUND

  • App

    Redis

    ServioExterno

    Request

    Content Gateway

    TIMEOUT / ERROR

    Cache read (service URI) - NOT FOUND

  • App

    Redis

    ServioExterno

    Request

    Content Gateway

    TIMEOUT / ERROR

    Cache read stale (service URI) - NOT FOUNDCache read (service URI) - NOT FOUND

  • Content Gateway

  • Content GatewayConfig

  • Content GatewayConfig

    Invoke

  • Content GatewayConfig

    Invoke

    SSL

  • Content GatewayConfig

    Invoke

    SSL

    Invoke

  • https://goo.gl/fg5Nzf

  • Nginx Proxy ExternalCaller

    Nginx Cache Stale

    App

  • Nginx Proxy ExternalCallerRequest

    Nginx Cache Stale

    App

  • Nginx Proxy ExternalCallerRequest

    Nginx Cache Stale

    App

  • Nginx Proxy ExternalCallerRequest

    Nginx Cache Stale

    Backend OK

    App

  • Nginx Proxy ExternalCallerRequest

    Nginx Cache Stale

    Backend Response

    Backend OK

    App

  • Nginx Proxy ExternalCaller

    Nginx Cache Stale

    App

  • Nginx Proxy ExternalCallerRequest

    Nginx Cache Stale

    App

  • Nginx Proxy ExternalCallerRequest

    Nginx Cache Stale

    App

  • Nginx Proxy ExternalCallerRequest

    Nginx Cache Stale

    Upstream Timeout / Error

    App

  • Nginx Proxy ExternalCallerRequest

    Nginx Cache Stale

    Return stale

    Upstream Timeout / Error

    App

  • Nginx Cache Stale

  • ESTAMOS AVALIANDOCONSTANTEMENTE O QUE NO EST FUNCIONANDO

    #

  • At 7 deploments para mudanas simples

  • App

    Redis

    ServioExterno

    Request

    Content Gateway

    TIMEOUT / ERROR

    Cache read stale (service URI) - NOT FOUNDCache read (service URI) - NOT FOUND

  • App 1 Web

    App 1 APIDatabase

    ServioExterno

  • App 1 Web

    App 1 APIDatabase

    ServioExterno

  • App 1 Web

    App 1 APIDatabase

    ServioExterno

  • App 1 Web

    App 1 APIDatabase

    ServioExterno

    App 2 Web

  • App 1 Web

    App 1 APIDatabase

    ServioExterno

    App 2 WebXHR

  • gem "globotv-ui"

  • COMPLEXIDADE

  • COMPLEXIDADE~50 repositrios git

  • COMPLEXIDADE~50 repositrios git

    Difcil explicar

  • COMPLEXIDADE~50 repositrios git

    Gerenciar integraes

    Difcil explicar

  • COMPLEXIDADE~50 repositrios git

    Gerenciar integraesNem tudo

    o que parece :)

    Difcil explicar

  • LIESAPRENDIDAS

  • Estamos contratando

    Emerson Macedo@emerleite

    http://emerleite.com