SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
Os desafios de crescer:
um estudo de caso da plataforma de
educação a distância redu
Guilherme Cavalcanti
Líder Técnico da plafaforma de aplicativos
Apresentações
• Guilherme Cavalcanti
• Desenvolvedor Web desde 2007
• Granduando, CIn-UFPE
• Co-fundador do Redu
• Líder técnico do time da
plataforma de aplicativos @ Redu
• Twitter/Delicious/Github:
• /guiocavalcanti
Histórico do Redu
• Plataforma de educação a
distância construída numa
estrtura de rede social
2010 @ Porto Digital
2009 @ CIn
Equipe
• 15 pessoas
• Designers
• Desenvolvedores
• Pesquisadores
• Negócio
Estamos contratando!
jobs@redu.com.br
Redu-labs
• CCTE
• 11 pesquisadores
associados
Principais
funcionalidades
Principais
funcionalidades
Principais
funcionalidades
Principais
funcionalidades
E muito mais
• M-learning
• Visualizações semânticas
• Construção de conteúdo de muitos
para muitos
Introdução
Overview da arquitetura
Main server
Database
Job queue management system
Asynchronous e-mail delivering
system
Analytics server
Database
Analytics aplication
Private REST API
Models
Main application
Web front-end
Public REST API
Models
Controllers
Resource conversion
server
Document engine
Video engine
Static files server
Static files
Websocket server
PubSub
Engine
Technology stack
Main server
Database
Analytics server
Analytics aplication
Main application
Resource conversion
server
Document engine
Static files server
Websocket server
Estratégia
• Plataforma de aplicativos
• Visualizações semânticas
• Velocidade na entrega de
funcionalidades
Contexto e
Problemas
The mythical man-month
• Equipe de desenvolvimento
• Dezembro de 2011: 4 pessoas
• Janeiro de 2012: 12 pessoas
x3
Problema 1: Velocidade
• Afetou seriamente a velocidade
• Acentuou problemas que já existiam
Problema 1: Velocidade
Main application
Web front-end
Public REST API
Models
Controllers
• Excessivamente
acoplado
• Problemas de deploy
• Complexo de
modificar
• Reuso pobre
Problema 2:
Plataforma de aplicativos
• Tudo deve ser uma plataforma para
novos aplicativos
• Disponibilizar API pública
Service oriented
architecture
Composição de serviços
• Isolamento de funcionalidades em
termos de serviços
• Comunicação através da rede
Serviço
For us service orientation means
encapsulating the data with the business
logic that operates on the data, with the
only access through a published service
interaface.
Werner Vogels, Amazon
Resultados esperados
• Times podem ser menores
• Usar as tecnologias que mais se adequam ao
problema
• Zero downtime deployment
• Complexidade dividida entre serviços
• Redução dos caminhos de comunicação
• Todas as funcionalidades já seriam plataform-
enabled
Premissas
Premissas
• Justificam o particionamento de uma
funcionalide para um serviço
Velocidade
• Irá acarretar um aumento da velocidade
na entrega de valor?
Transversalidade
• Será utilizado em vários serviços?
• Ferramentas de infraestrutura (ex.: e-
mail delivery, document conversion)
Requisitos bem definidos
• Ciclo construção-feedback estável?
Frequência de leitura e
escrita
• Muito acessado ou atualizado?
• Ponto único de otimização
Proposta
0.0.1-alpha
Arquitetura proposta
Server
Main application
Service
Server
Service Service Service
Relational
databases
Graph
database
Document
database
Messge bus
• Aplicação principal
se comunica via
HTTP
• Serviços se
comunicam através
de um message bus
Exemplo:
activity stream
• Aplicação
• Logica de UI
• Chama o serviço
propriamente dito
• Serviço
• Regras de negócio e
comunicação
Server
Activity Stream application
Server
Activity Stream service
Databases server
Document
database
Authorization service
Message bus
Base de código isolada
• Times pequenos e
isolados
• Liberdade de escolha de
SGBD
• Decisões de projeto mais
descentralizadas
• Menos caminhos de
comunicação
Obrigado :)
Referências
• http://confreaks.com/videos/675-rubyconf2011-rails-services-in-the-walled-garden
http://www.slideshare.net/kaiwren/rails-services-in-the-walled-garden
• http://www.amazon.com/Service-Oriented-Design-Addison-Wesley-Professional-Series/dp/0321659368 (redu-
dev/architecture/)
• http://www.eventials.com/rubyconfbr/recorded/
M2UzZTJkMzY2MzdiNTg2NTUxNWM1MzI3NWY1YjRhMzYjIzQwMQ_3D_3D?lang=en
http://www.eventials.com/presentation/download/
M2UzZTJkMzY2MzdiNTg2NTUxNWM1MzI3NWY1YjRhMzYjIzQwMQ_3D_3D
• http://lanyrd.com/2011/mwrc/sdcgz/ (We need to found this video), presentation: http://www.slideshare.net/
ChrisWyckoff/refactor-your-monolithic-rails-app-to-a-soa
• http://lanyrd.com/2011/mwrc/sdchb/ (We need to found this video)
• http://rubysource.com/soa-for-the-little-guys/
• http://blog.8thlight.com/uncle-bob/2012/02/01/Service-Oriented-Agony.html
• About thrift (infrastructure to enable cross language communication)
http://thrift.apache.org/static/files/thrift-20070401.pdf
http://thrift.apache.org/

Weitere ähnliche Inhalte

Was ist angesagt?

Workshop - nivelamento tech
Workshop - nivelamento techWorkshop - nivelamento tech
Workshop - nivelamento tech
21212com
 

Was ist angesagt? (13)

O que é OpenShift ?
O que é OpenShift ?O que é OpenShift ?
O que é OpenShift ?
 
Atlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer TecnologiaAtlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer Tecnologia
 
IaaS, PaaS e SaaS para Developers
IaaS, PaaS e SaaS para DevelopersIaaS, PaaS e SaaS para Developers
IaaS, PaaS e SaaS para Developers
 
Azure api apps – entendendo o que é azure app service
Azure api apps – entendendo o que é azure app serviceAzure api apps – entendendo o que é azure app service
Azure api apps – entendendo o que é azure app service
 
Apprenda 12.2015
Apprenda 12.2015Apprenda 12.2015
Apprenda 12.2015
 
Workshop - nivelamento tech
Workshop - nivelamento techWorkshop - nivelamento tech
Workshop - nivelamento tech
 
Bpm Automacao De Processos
Bpm   Automacao De ProcessosBpm   Automacao De Processos
Bpm Automacao De Processos
 
Aumentando a produtividade e Automatizando Processos com Jira
Aumentando a produtividade e Automatizando Processos com JiraAumentando a produtividade e Automatizando Processos com Jira
Aumentando a produtividade e Automatizando Processos com Jira
 
Cloud ALM - Gestão moderna de aplicações
Cloud ALM - Gestão moderna de aplicaçõesCloud ALM - Gestão moderna de aplicações
Cloud ALM - Gestão moderna de aplicações
 
Azure Bootcamp - Azure App Service e Function com Linux e NodeJS
Azure Bootcamp - Azure App Service e Function com Linux e NodeJSAzure Bootcamp - Azure App Service e Function com Linux e NodeJS
Azure Bootcamp - Azure App Service e Function com Linux e NodeJS
 
Firebase - Introdução à plataforma
Firebase - Introdução à plataformaFirebase - Introdução à plataforma
Firebase - Introdução à plataforma
 
ALM Summit Brasil - Case BTG Pactual e Lambda3
ALM Summit Brasil - Case BTG Pactual e Lambda3ALM Summit Brasil - Case BTG Pactual e Lambda3
ALM Summit Brasil - Case BTG Pactual e Lambda3
 
Iac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deploymentsIac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deployments
 

Ähnlich wie Desafio de crescer

Integração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integraçãoIntegração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integração
Joao Johanes
 
Saa s software como serviço (slides)
Saa s   software como serviço (slides)Saa s   software como serviço (slides)
Saa s software como serviço (slides)
Daniela Nunes
 

Ähnlich wie Desafio de crescer (20)

Introdução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a ServiçosIntrodução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a Serviços
 
Microservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e DesafiosMicroservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e Desafios
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devops
 
Integração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integraçãoIntegração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integração
 
SharePoint Framework - Uma plataforma aberta e conectada
SharePoint Framework - Uma plataforma aberta e conectadaSharePoint Framework - Uma plataforma aberta e conectada
SharePoint Framework - Uma plataforma aberta e conectada
 
Introdução a Microservices com Node.JS
Introdução  a Microservices com Node.JSIntrodução  a Microservices com Node.JS
Introdução a Microservices com Node.JS
 
To SOA or not to SOA
To SOA or not to SOATo SOA or not to SOA
To SOA or not to SOA
 
Arquitetura monolítica à orientação a serviços
Arquitetura monolítica à orientação a serviçosArquitetura monolítica à orientação a serviços
Arquitetura monolítica à orientação a serviços
 
Integração de software solucao e estilo
Integração de software   solucao e estiloIntegração de software   solucao e estilo
Integração de software solucao e estilo
 
Integração de software 2
Integração de software 2Integração de software 2
Integração de software 2
 
Nuvens com Ênfase em Azure - Locatech + Locaneers - Abril-2019
Nuvens com Ênfase em Azure - Locatech + Locaneers - Abril-2019Nuvens com Ênfase em Azure - Locatech + Locaneers - Abril-2019
Nuvens com Ênfase em Azure - Locatech + Locaneers - Abril-2019
 
DevOps - Entrega Contínua de Software
DevOps - Entrega Contínua de SoftwareDevOps - Entrega Contínua de Software
DevOps - Entrega Contínua de Software
 
A framework for collaborative applications en
A framework for collaborative applications enA framework for collaborative applications en
A framework for collaborative applications en
 
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
 
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
 
TDC 2011 - SharePoint 2010 para Desenvolvedores
TDC 2011 - SharePoint 2010 para DesenvolvedoresTDC 2011 - SharePoint 2010 para Desenvolvedores
TDC 2011 - SharePoint 2010 para Desenvolvedores
 
Computação em Nuvem: conceitos básicos
Computação em Nuvem: conceitos básicosComputação em Nuvem: conceitos básicos
Computação em Nuvem: conceitos básicos
 
Hcl domino volt v1.0.1
Hcl domino volt v1.0.1Hcl domino volt v1.0.1
Hcl domino volt v1.0.1
 
Saa s software como serviço (slides)
Saa s   software como serviço (slides)Saa s   software como serviço (slides)
Saa s software como serviço (slides)
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack Microsoft
 

Mehr von Guilherme

Consumindo APIs REST com Ruby
Consumindo APIs REST com RubyConsumindo APIs REST com Ruby
Consumindo APIs REST com Ruby
Guilherme
 
Aplicações tipo Canvas no Redu com Rails
Aplicações tipo Canvas no Redu com RailsAplicações tipo Canvas no Redu com Rails
Aplicações tipo Canvas no Redu com Rails
Guilherme
 
Aplicações sociais usando a plataforma Redu
Aplicações sociais usando a plataforma ReduAplicações sociais usando a plataforma Redu
Aplicações sociais usando a plataforma Redu
Guilherme
 
Introdução aos aplicativos tipo canvas
Introdução aos aplicativos tipo canvasIntrodução aos aplicativos tipo canvas
Introdução aos aplicativos tipo canvas
Guilherme
 
FLOSS and Startups
FLOSS and StartupsFLOSS and Startups
FLOSS and Startups
Guilherme
 
CSS first steps
CSS first stepsCSS first steps
CSS first steps
Guilherme
 
How does the Web work?
How does the Web work?How does the Web work?
How does the Web work?
Guilherme
 
0 introducao padroes_web
0 introducao padroes_web0 introducao padroes_web
0 introducao padroes_web
Guilherme
 
Plano de Pesquisa - Redu Respostas
Plano de Pesquisa - Redu RespostasPlano de Pesquisa - Redu Respostas
Plano de Pesquisa - Redu Respostas
Guilherme
 
Desevolvimento Web Client-side - AJAX
Desevolvimento Web Client-side - AJAX Desevolvimento Web Client-side - AJAX
Desevolvimento Web Client-side - AJAX
Guilherme
 
Desevolvimento Web Client-side - jQuery
Desevolvimento Web Client-side - jQueryDesevolvimento Web Client-side - jQuery
Desevolvimento Web Client-side - jQuery
Guilherme
 
3 padroes-web-intro-javascript
3 padroes-web-intro-javascript3 padroes-web-intro-javascript
3 padroes-web-intro-javascript
Guilherme
 
Desevolvimento Web Client-side - CSS
Desevolvimento Web Client-side - CSSDesevolvimento Web Client-side - CSS
Desevolvimento Web Client-side - CSS
Guilherme
 

Mehr von Guilherme (20)

Where Does the Fat Goes? Utilizando Form Objects Para Simplificar seu Código
Where Does the Fat Goes? Utilizando Form Objects Para Simplificar seu CódigoWhere Does the Fat Goes? Utilizando Form Objects Para Simplificar seu Código
Where Does the Fat Goes? Utilizando Form Objects Para Simplificar seu Código
 
Descobrindo APIs REST
Descobrindo APIs RESTDescobrindo APIs REST
Descobrindo APIs REST
 
Redu walled garden
Redu walled gardenRedu walled garden
Redu walled garden
 
Consumindo APIs REST com Ruby
Consumindo APIs REST com RubyConsumindo APIs REST com Ruby
Consumindo APIs REST com Ruby
 
Aplicações tipo Canvas no Redu com Rails
Aplicações tipo Canvas no Redu com RailsAplicações tipo Canvas no Redu com Rails
Aplicações tipo Canvas no Redu com Rails
 
Aplicações sociais usando a plataforma Redu
Aplicações sociais usando a plataforma ReduAplicações sociais usando a plataforma Redu
Aplicações sociais usando a plataforma Redu
 
Introdução aos aplicativos tipo canvas
Introdução aos aplicativos tipo canvasIntrodução aos aplicativos tipo canvas
Introdução aos aplicativos tipo canvas
 
Introdução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos ReduIntrodução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos Redu
 
FLOSS and Startups
FLOSS and StartupsFLOSS and Startups
FLOSS and Startups
 
Ruby 101 && Coding Dojo
Ruby 101 && Coding DojoRuby 101 && Coding Dojo
Ruby 101 && Coding Dojo
 
Dojo: Sass - Syntactically Awesome Stylesheets
Dojo: Sass - Syntactically Awesome StylesheetsDojo: Sass - Syntactically Awesome Stylesheets
Dojo: Sass - Syntactically Awesome Stylesheets
 
Sass
SassSass
Sass
 
CSS first steps
CSS first stepsCSS first steps
CSS first steps
 
How does the Web work?
How does the Web work?How does the Web work?
How does the Web work?
 
0 introducao padroes_web
0 introducao padroes_web0 introducao padroes_web
0 introducao padroes_web
 
Plano de Pesquisa - Redu Respostas
Plano de Pesquisa - Redu RespostasPlano de Pesquisa - Redu Respostas
Plano de Pesquisa - Redu Respostas
 
Desevolvimento Web Client-side - AJAX
Desevolvimento Web Client-side - AJAX Desevolvimento Web Client-side - AJAX
Desevolvimento Web Client-side - AJAX
 
Desevolvimento Web Client-side - jQuery
Desevolvimento Web Client-side - jQueryDesevolvimento Web Client-side - jQuery
Desevolvimento Web Client-side - jQuery
 
3 padroes-web-intro-javascript
3 padroes-web-intro-javascript3 padroes-web-intro-javascript
3 padroes-web-intro-javascript
 
Desevolvimento Web Client-side - CSS
Desevolvimento Web Client-side - CSSDesevolvimento Web Client-side - CSS
Desevolvimento Web Client-side - CSS
 

Kürzlich hochgeladen

Kürzlich hochgeladen (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Desafio de crescer