O documento discute a arquitetura de um sistema de gerenciamento e publicação de conteúdo digital para o Grupo Abril. Devido aos muitos requisitos e contexto complexo da empresa, uma arquitetura baseada em System of Systems (SoS) e REST foi adotada para permitir escalabilidade, evolução e independência dos subsistemas.
Case CMS Abril - System of Systems e Arquitetura (quase) Caótica.
1.
2. Case Requisitos Contexto Empresa Complexa Arquitetura Empregada Distribuída System of Systems REST Case CMS Abril System of Systems e Arquitetura (quase) Caótica AGENDA
3. CASE Criar um gerenciador e publicador de conteúdo digital para o Grupo Abril Case CMS Abril System of Systems e Arquitetura (quase) Caótica
4. REQUISITOS Matérias Criar um gerenciador e publicador de conteúdo digital para o Grupo Abril qual? Chamadas Estabelecimentos Imagens Atrações Carros Famosos Etc. Etc. Etc. Receitas Jogos Infográficos Case CMS Abril System of Systems e Arquitetura (quase) Caótica
5. Criar um gerenciador e publicador de conteúdo digital para o Grupo Abril publicar onde? Web site Mobile iPad Web API It doesn’t matter... Case CMS Abril System of Systems e Arquitetura (quase) Caótica REQUISITOS
6. E o que mais temos que fazer? Funcionalidades cross marcas Case CMS Abril System of Systems e Arquitetura (quase) Caótica Anotação de conteúdo (Ranking, Comentários, etc.) Segurança e… Discovery Métricas Search Categorização Autenticação REQUISITOS
7. Escalar! Case CMS Abril System of Systems e Arquitetura (quase) Caótica REQUISITOS Aproximadamente 300 milhões Pageview/Mês Entre os 600 maiores sites do mundo
8.
9.
10.
11.
12.
13.
14. CONTEXTO Grupo Abril 15 Unidades de Negócio 85 Marcas 113 Sites Muitos requisitos! Fonte: http://www.grupoabril.com.br / http://www.google.com/adplanner/static/top1000/ Case CMS Abril System of Systems e Arquitetura (quase) Caótica
15. Um sistema complexo? Case CMS Abril System of Systems e Arquitetura (quase) Caótica CONTEXTO
16. Sistemas Adaptativos Complexos (CAS) Descentralizado Emergência Co-evolução Sub ideal Variedade Auto-organização Conectividade Regras simples Sistemas Aninhados À beira do caos Fronteiras CONTEXTO Case CMS Abril System of Systems e Arquitetura (quase) Caótica
20. Forças sobre uma empresa Competição Aquisições Otimização de Negócio Business Economia Órgãos Regulatórios Desastre Natural Externa Processos Infra-estrutura Pessoas Interna CONTEXTO Case CMS Abril System of Systems e Arquitetura (quase) Caótica
21. É preciso… Escalar em requisitos de negócio Absorver os mais diversos requisitos Escalabilidade e performance Evolutivo, emergente e incremental CONTEXTO Case CMS Abril System of Systems e Arquitetura (quase) Caótica
22. CMS: Linked Data CONTEXTO Case CMS Abril System of Systems e Arquitetura (quase) Caótica
23. Qual arquitetura que melhor acomoda esses requisitos e esse dinamismo? #comofaz? ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica
24.
25.
26. Winner is: System of Systems (SoS) (Engenharia de Sistemas) … dividir para conquistar ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica
27.
28. + REST: Interconectados Client–server Stateless Cacheable Layered system Uniform interface A Web é REST! ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica
29.
30. Alguns sistemas que já temos... ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica
31.
32. Alguns sistemas que já conhecemos... CMS Descentralizado Distribuído! REST, HTTP... ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica
33. Identificação e Localização de um conteúdo (recursos) http://editorial.api.abril.com.br / materias /lula-inaugura-nova-hidroeletrica http://editorial.api.abril.com.br / listas-editoriais /veja-10-mais http://media.api.abril.com.br / imagens /482840AC3242 http://anotacoes.api.abril.com.br / comentarios /48284719280182 http://aapg.api.abril.com.br / usuarios /jcmlima http://search.api.abril.com.br / indices /veja ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica
34.
35. Hypermedia as the engine of application state (HATEOAS) { "link": [ { "href": "http://anotacoes.api.abril.com.br/comentarios", "rel": " self ", "type": "application/json" }, { "href": "http://anotacoes.api.abril.com.br/comentarios/novo", "rel": " novo ", "type": "application/json" }, { "href":"http://anotacoes.api.abril.com.br/comentarios/busca/des criptor", "rel": " search ", "type": "application/opensearchdescription+xml" } ] } ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica
36.
37. Liberdade de implementação ... independência! Times pequenos... ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica
38. Escalabilidade e tolerância a falha HTTP Cache-Control: Max-age=60 ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica
40. Pulveriza requisitos, paraleliza desenvolvimento Imagens: http://dryicons.com ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica
41. ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica evolução?
42. ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica evolução?
43. O Ecossistema decide quem sobrevive... ARQUITETURA Case CMS Abril System of Systems e Arquitetura (quase) Caótica Evolução!
44.
45.
Notas do Editor
Grandes topicos: - Arquitetura Emergente tentar mostrar que Arquitetura também pode ser evolutiva e Arq != BDUF - Arquitetura de Sistemas Distribuidos O que nos levou a usar essa abordagem - Reforcar: Conhecer RESTFUL
Requisitos e contexto: tentar explicar a bucha... :) ... vamos viajar um pouco na maionese pra entender nossa empresa.
Pq não utilizar soluções de mercado? Necessidades especificas de requisitos, escalabilidade e principalmente extensibilidade .alem de ser estratégico
Conteúdo na Abril é o nosso maior asset. Centenas de jornalistas, blogueiros, colunistas, etc - Maior grupo de mídia impressa do país e um dos maiores do mundo Grande variedade de conteúdo, desde fichas de carros, fotos de modelos, notícias políticas, resenhas de atrações, infantil, saude, adulto, etc, etc, etc, etc - Conteúdo de nicho ! Calda Longa !
O conteudo deve ser apresentado em varias formas Explorar o melhor de cada media
A Abril é uma corporcao formada por diversas empresas, que cuidam de 1 ou mais marcas, Sinergia existe mas nao é tao explorada no paper & ink Muitas Culturas Nichos Requisitos
A Abril é uma corporcao formada por diversas empresas, que cuidam de 1 ou mais marcas, Sinergia existe mas nao é tao explorada no paper & ink Muitas Culturas Nichos Requisitos
Empresa decentralizada! As unidades de negócios + Marcas + Pessoas: formam um sistema É facil ver que a quantidade de requisito é : - Gigante - Evolutivos - Dinamicos (e mutaveis!) - CONFLITANTES!
Não é um sistema computacional... mas sistema na definicao: é um conjunto de elementos interconectados para formar algo : CORPORACAO ABRIL
Assim como a revoada, temos forcas agindo na abril - BUSINESS : Inerentes ao Negocio - EXTERNAS : Inerentes a Sociedade onde a empresa atua - INTERNAS
Requisitos conflitantes, requisitos não incrementais. Equipe grande -> necessidade de um esforço grande de orquestração e gerenciamento
Os dados precisam estar relacionados para: - Descoberta + organica - Search Recomendacao Retenção ! Cross pollination
- A WEB é ASSIM !!!
QUE É SoS ?? Dividir para conquistar ! Varios sistemas em que CADA UM tem as caracteristicas acima
- Cada sistema pode ser um client e/ou um server. - HTTP é um protocolo Stateless = Escalabilidade horizontal ( REQUISITO ATENDIDO : ESCALABILIDADE) - Cacheable pois os recursos podem ser cacheados em camadas intermediarias = varnishd (REQUISITO : ESCALABILIDADE + TOLERANCIA FALHA) - Layerd System = Dominios , Camada de Cache, Sites, Caches, CDN Web so escala por causa disto! Code on demand = not yet Uniform Interface = Utilizamos HTTP como protocolo de aplicacao e nao como protocolo de transporte.
HTTP é o nosso portugues... nossa uniform interface Latencia pode ser alta, porém infra adequada ajuda….. Nao deve ser transparente aos desenvolvedores…. Rede importa!
Um CMS distribuido! O conteudo esta em varios sistemas. Não exite centralizador. Não entrar em detalhe de cada sistema... só para entender o tamanho do SoS
Sistemas do SoS: um elemento do sistema É autonomo, mas pode ter dependencias
Os sistemas emergem das necessidades de negócio. Separation of concern, porém duplicidade podem existir, assim como conflito.
PQ? Porque não ter um ID e um Localizador? Porque não existe um repositório central para fazer o de-para (sistema descentralizado). Tambem garante um unico ID em todo o sistemas (se localiza, identifica).
Lembrar que é um Json
- Linkagem de dados - Navegacao entre dados é semantica (via rel)
Codigo ruim! Sem maquina de estado! Apenas demostracao. - FACIL DE LER - FACIL DE MANTER Conhece: - Entry point - Navegacao possivel - Um pouco do conteudo (hash) - HTTP verbs Nao conhece: - Estrutura do objeto predefinida - Estrutura dos metodos - Content-type - URLs - Estruturas intermediarias
Equipe grande -> necessidade de um esforço grande de orquestração e gerenciamento Aqui tem Eng. De Software!
É premissa que sistemas falham, logo uma aplicacao que utilize-se de outra deve estar pronta para trabalhar com a provavel falha ou indiponibilidade de outra aplicacao (como indisponiblidade)
Faz décadas que monitoramos HTTP!!!!!! Monitoramento interno do SoS === Monitoramento Externo! Ferramentas + Know how disponivel!
SoS permite PARALELIZAR requisitos 1 MACRO FEATURE = DIVERSAR features pequenos em diversos sistemas…. LEMBRA SEMPRE DE SEPARATION OF CONCERNS! ALGUEM TEM QUE TER VISAO DO TODO Porem implica em mais cuidado no gerenciamento de dependencias!
Falar da idéia de sistemas intercontectados…
Existem muitas variaveis no ecosistema: Politica, cultura, novas tecnologias, moda, etc.