case cms abril - system of systems e arquitetura (quase) 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-caoticaTRANSCRIPT
Case CMS AbrilCase CMS AbrilSystem of Systems e System of Systems e Arquitetura (quase) caóticaArquitetura (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
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
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
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
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
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
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
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
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
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
CAS: RevoadasCAS: RevoadasCONTEXTOCONTEXTO
Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem 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
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
É 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
CMS:CMS: Linked DataLinked DataCONTEXTOCONTEXTO
Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem 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
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
...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
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
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
+ 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
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
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
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
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
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
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
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
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
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
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
MonitoramentoMonitoramento
WebaliserWebaliser
ARQUITETURAARQUITETURA
Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem 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
ARQUITETURAARQUITETURA
Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica
evolução?evolução?
ARQUITETURAARQUITETURA
Case CMS AbrilCase CMS AbrilSystem of Systems e Arquitetura (quase) CaóticaSystem of Systems e Arquitetura (quase) Caótica
evolução?evolução?
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!
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
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