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

Upload: david-lojudice-sobrinho

Post on 19-May-2015

6.680 views

Category:

Technology


0 download

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

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