Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

45
Case CMS Abril Case CMS Abril System of Systems e System of Systems e Arquitetura (quase) Arquitetura (quase) caótica caótica

description

Ao aceitar que organizações são sistemas amplos, orgânicos e complexos, devemos adaptar nossa arquitetura a esta realizade. Como viabilizar um enterprise system que se adapte com a velocidade necessária as mudanças de requisitos, conflitos de necessidades dentro deste paradigma? Para tanto, será explorada a teoria de Sistemas Complexos Adaptáveis e Emergência x BDUF, System of Systems e REST Archtectural Style e como estes conceitos estão ajudando a Abril a construir o parque de aplicações que suporta a publicação de mais de 100 sites e provê mais de 300 milhões de requests/mês. http://www.qconsp.com/palestra/david-lojudice-sobrinho/case-cms-abril-system-of-systems-e-arquitetura-quase-caotica

Transcript of Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Page 1: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Case CMS AbrilCase CMS AbrilSystem of Systems e System of Systems e Arquitetura (quase) caóticaArquitetura (quase) caótica

Page 2: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

CaseCase

RequisitosRequisitos

ContextoContexto

Empresa ComplexaEmpresa Complexa

Arquitetura EmpregadaArquitetura Empregada

DistribuídaDistribuída

System of SystemsSystem of Systems

RESTRESTCase CMS AbrilCase CMS Abril

System of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

AGENDAAGENDA

Page 3: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

CASECASE

CriarCriar um um gerenciadorgerenciador e e

publicadorpublicador de conteúdo de conteúdo

digital para o digital para o Grupo AbrilGrupo Abril

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 4: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

REQUISITOSREQUISITOS

MatériasMatérias

Criar um gerenciador e publicador de Criar um gerenciador e publicador de conteúdo digital conteúdo digital para o Grupo Abrilpara o Grupo Abril

qual?qual?

ChamadasChamadasEstabelecimentEstabeleciment

osos

ImagensImagens

AtraçõesAtrações

CarrosCarrosFamososFamosos

Etc.Etc.Etc.Etc.Etc.Etc.

ReceitasReceitas

JogosJogosInfográficoInfográfico

ss Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 5: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Criar um gerenciador e publicador de Criar um gerenciador e publicador de conteúdo digital conteúdo digital para o Grupo Abrilpara o Grupo Abril

publicar onde?publicar onde?

Web siteWeb site

MobileMobileiPadiPad

Web APIWeb APIIt doesn’t matter...It doesn’t matter...

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

REQUISITOSREQUISITOS

Page 6: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

E o que mais temos que E o que mais temos que

fazer?fazer?

Funcionalidades cross marcasFuncionalidades cross marcas

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Anotação de conteúdo (Ranking, Comentários, etc.)Anotação de conteúdo (Ranking, Comentários, etc.)

Segurança e…Segurança e…DiscoveryDiscoveryMétricasMétricasSearchSearchCategorizaçãoCategorizaçãoAutenticaçãoAutenticação

REQUISITOSREQUISITOS

Page 7: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Escalar!Escalar!

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

REQUISITOSREQUISITOS

Aproximadamente 300 milhões Aproximadamente 300 milhões Pageview/MêsPageview/Mês

Entre os 600 maiores sites do mundoEntre os 600 maiores sites do mundo

Page 8: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.
Page 9: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.
Page 10: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.
Page 11: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.
Page 12: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.
Page 13: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.
Page 14: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

CONTEXTOCONTEXTO

Grupo AbrilGrupo Abril

15 Unidades de Negócio15 Unidades de Negócio85 Marcas85 Marcas113 Sites113 Sites                                                              Muitos requisitos!Muitos requisitos!

Fonte: http://www.grupoabril.com.br / Fonte: http://www.grupoabril.com.br / http://www.google.com/adplanner/static/top1000/http://www.google.com/adplanner/static/top1000/

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 15: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Um sistema complexo?Um sistema complexo?

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

CONTEXTOCONTEXTO

Page 16: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Sistemas Adaptativos Complexos (CAS)Sistemas Adaptativos Complexos (CAS)

DescentralizadoDescentralizadoEmergênciaEmergênciaCo-evoluçãoCo-evoluçãoSub idealSub idealVariedadeVariedadeAuto-organizaçãoAuto-organizaçãoConectividadeConectividadeRegras simplesRegras simplesSistemas AninhadosSistemas AninhadosÀ beira do caosÀ beira do caosFronteirasFronteiras

CONTEXTOCONTEXTO

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 17: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

CAS: WebCAS: Web

htt

p:/

/en

.wik

ipe

dia

.org

/wik

i/In

tern

et

htt

p:/

/en

.wik

ipe

dia

.org

/wik

i/In

tern

et

CONTEXTOCONTEXTO

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 18: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

CAS: RevoadasCAS: RevoadasCONTEXTOCONTEXTO

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 19: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

CAS: EmpresaCAS: Empresa

Complexas no sentido de que Complexas no sentido de que são diversas e feitas de são diversas e feitas de múltiplos elementos múltiplos elementos interconectados;interconectados;

Adaptativos porque têm a Adaptativos porque têm a capacidade de mudar e capacidade de mudar e aprender com experiências aprender com experiências passadaspassadas

CONTEXTOCONTEXTO

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 20: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Forças sobre uma empresaForças sobre uma empresa

CompetiçãoCompetiçãoAquisiçõesAquisiçõesOtimização de Otimização de NegócioNegócio

BusinessBusiness

EconomiaEconomiaÓrgãos RegulatóriosÓrgãos Regulatórios

Desastre NaturalDesastre Natural

ExternaExterna

ProcessosProcessosInfra-estruturaInfra-estruturaPessoasPessoas

InternaInterna

CONTEXTOCONTEXTO

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 21: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

É preciso…É preciso…

Escalar em requisitos de negócioEscalar em requisitos de negócioAbsorver os mais diversos requisitos Absorver os mais diversos requisitos

Escalabilidade e performanceEscalabilidade e performance

Evolutivo, emergente e incrementalEvolutivo, emergente e incremental

CONTEXTOCONTEXTO

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 22: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

CMS:CMS: Linked DataLinked DataCONTEXTOCONTEXTO

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 23: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

  Qual arquitetura que melhor acomoda Qual arquitetura que melhor acomoda

esses requisitos e esse dinamismo?esses requisitos e esse dinamismo?

#comofaz?#comofaz?

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 24: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

  

Sistema Centralizado, MonolíticoSistema Centralizado, Monolítico(Engenharia de Software)(Engenharia de Software)??

  ouou    

Sistema Descentralizado, DistribuídoSistema Descentralizado, Distribuído(Engenharia de Sistemas)(Engenharia de Sistemas)??

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 25: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

  

...organizations which design ...organizations which design systems ... are constrained to produce systems ... are constrained to produce

designs which are copies of the designs which are copies of the communication structures of these communication structures of these

organizations.organizations.Conway's Law Conway's Law

RESPEITE SEMPRE!RESPEITE SEMPRE!

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 26: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Winner is: Winner is: System of Systems (SoS)System of Systems (SoS)(Engenharia de Sistemas)(Engenharia de Sistemas)

… … dividir para dividir para conquistarconquistar

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 27: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

System of SystemsSystem of Systems

Independência operacional e gerencial dos sistemas Independência operacional e gerencial dos sistemas

Desenvolvimento evolutivoDesenvolvimento evolutivo

Comportamento emergenteComportamento emergente

Sistemas heterogêniosSistemas heterogênios

InterconectadosInterconectados

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 28: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

+ REST: Interconectados+ REST: Interconectados

Client–serverClient–server

StatelessStateless

CacheableCacheable

Layered systemLayered system

Uniform interface Uniform interface

A Web é REST!A Web é REST!

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 29: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Não só REST, mas também HTTPNão só REST, mas também HTTP

• HTTP como HTTP como protocolo de aplicaçãoprotocolo de aplicação

• Um dos protocolos mais bem sucedidos da história Um dos protocolos mais bem sucedidos da história 

• Infra amplamente disponível (proxies, caches, libs, Infra amplamente disponível (proxies, caches, libs, etc)etc)

• Suportado por qualquer linguagemSuportado por qualquer linguagem

• Conhecimento disseminadoConhecimento disseminado (mas muitas vezes (mas muitas vezes não tão bem entendido)não tão bem entendido)

O HTTP é rei na Web!O HTTP é rei na Web!

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 30: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Alguns sistemas que já temos...Alguns sistemas que já temos...ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 31: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Independência de um sistema no SoSIndependência de um sistema no SoS

Cada um com suas próprias :Cada um com suas próprias :

FeaturesFeatures

ResponsabilidadesResponsabilidades

TecnologiaTecnologia

EquipeEquipe

Ciclo de releases e deployCiclo de releases e deploy

Ciclo de produto Ciclo de produto

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 32: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Alguns sistemas que já conhecemos...Alguns sistemas que já conhecemos...

CMS CMS DescentralizadoDescentralizado

Distribuído!Distribuído!REST, HTTP...REST, HTTP...

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 33: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Identificação e Localização de um conteúdo Identificação e Localização de um conteúdo (recursos)(recursos)

http://editorial.api.abril.com.brhttp://editorial.api.abril.com.br//materiasmaterias/lula-inaugura-nova-hidroeletrica /lula-inaugura-nova-hidroeletrica 

http://editorial.api.abril.com.brhttp://editorial.api.abril.com.br//listas-editoriaislistas-editoriais/veja-10-mais/veja-10-mais    

http://media.api.abril.com.brhttp://media.api.abril.com.br//imagensimagens/482840AC3242/482840AC3242  

http://anotacoes.api.abril.com.brhttp://anotacoes.api.abril.com.br//comentarioscomentarios/48284719280182/48284719280182  

http://aapg.api.abril.com.brhttp://aapg.api.abril.com.br//usuariosusuarios/jcmlima/jcmlima  

http://search.api.abril.com.brhttp://search.api.abril.com.br//indicesindices/veja/veja

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 34: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Identificação e Localização de um conteúdo Identificação e Localização de um conteúdo (recursos)(recursos)

{{    "id": "    "id": "http://editorial.api.abril.com.br/materias/critico-olhar-http://editorial.api.abril.com.br/materias/critico-olhar-

estrangeiroestrangeiro",",    ...    ...            "link": [    "link": [        {        {            "href": "            "href": "http://editorial.api.abril.com.br/materias/critico-http://editorial.api.abril.com.br/materias/critico-

olhar-estrangeiroolhar-estrangeiro",",            "rel": "self",            "rel": "self",            "type": "application/json"             "type": "application/json"         },        },        ...        ...    ]    ]}}

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 35: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Hypermedia as the engine of application state Hypermedia as the engine of application state (HATEOAS)(HATEOAS)

{{        "link": ["link": [

{{                        "href": "http://anotacoes.api.abril.com.br/comentarios","href": "http://anotacoes.api.abril.com.br/comentarios",                        "rel": ""rel": "selfself",",                        "type": "application/json""type": "application/json"                },},                {{                        "href": "http://anotacoes.api.abril.com.br/comentarios/novo","href": "http://anotacoes.api.abril.com.br/comentarios/novo",                        "rel": ""rel": "novonovo",",                        "type": "application/json""type": "application/json"                },},                {{                        "href":"http://anotacoes.api.abril.com.br/comentarios/busca/des"href":"http://anotacoes.api.abril.com.br/comentarios/busca/des

criptor",criptor",                        "rel": ""rel": "searchsearch",",                        "type": "application/opensearchdescription+xml""type": "application/opensearchdescription+xml"                }}        ]]}}

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 36: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Baixo acoplamentoBaixo acoplamento

entry_point = Restfulie.at(entry_point = Restfulie.at(ANOTACOES_ENTRYPOINTANOTACOES_ENTRYPOINT).get!).get!

if entry_point.links.include?(if entry_point.links.include?(:search:search) )     open_search_descriptor = entry_point.links.search.get!    open_search_descriptor = entry_point.links.search.get!        url_search = open_search_descriptor.replace(url_search = open_search_descriptor.replace(conteudo_anotadoconteudo_anotado => => conteudo).urlconteudo).url        anotacoes = Restfulie.at(url_search).get!.firstanotacoes = Restfulie.at(url_search).get!.first        return anotacoes.return anotacoes.comentarioscomentariosendend

Restfulie tem contribuição da Restfulie tem contribuição da AbrilAbril

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 37: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Liberdade de implementaçãoLiberdade de implementação

... independência!... independência!Times pequenos... Times pequenos...

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 38: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Escalabilidade e tolerância a falhaEscalabilidade e tolerância a falha

HTTP Cache-Control: Max-age=60HTTP Cache-Control: Max-age=60

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 39: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

MonitoramentoMonitoramento

WebaliserWebaliser

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 40: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Pulveriza requisitos, paraleliza Pulveriza requisitos, paraleliza desenvolvimentodesenvolvimento

Imag

ens:

http

://dr

yico

ns.c

omIm

agen

s: h

ttp://

dryi

cons

.com

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Page 41: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

evolução?evolução?

Page 42: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

evolução?evolução?

Page 43: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

O Ecossistema decide quem O Ecossistema decide quem sobrevive...sobrevive...

ARQUITETURAARQUITETURA

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

Evolução!Evolução!

Page 44: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

Arquitetura Emergente: A arquitetura não deve focar num sistema, mas sim no Arquitetura Emergente: A arquitetura não deve focar num sistema, mas sim no ecossistemaecossistema

CAS e Web como inspiraçãoCAS e Web como inspiração

Deixe o ecossistema decidirDeixe o ecossistema decidir

... mas sendo pragmático ... mas sendo pragmático 

  

SoS, REST, HTTP para permitir a evolução do ecosistemaSoS, REST, HTTP para permitir a evolução do ecosistema

           

Nunca substime a "Conway's Law"Nunca substime a "Conway's Law"

No BDUFNo BDUF

but isn't a but isn't a no design up frontno design up front

Usar padrões abertos: Não reinvente a roda!Usar padrões abertos: Não reinvente a roda!

   

Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica

CONCLUSÃOCONCLUSÃO

Page 45: Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.

That's allThat's allQUESTIONS?QUESTIONS?

David Lojudice SobrinhoDavid Lojudice [email protected]@abril.com.br@dalssoft@dalssoft

Julio César LimaJulio César [email protected]@abril.com.br

@jcmlima@jcmlima