A ARQUITETURA DO STACK OVERFLOW



Documentos relacionados
Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração

Noções de. Microsoft SQL Server. Microsoft SQL Server

Ensino Superior Completo em Sistemas da Informação, Ciência da Computação, Análise de Sistemas e/ou correlatas.

Utilizando o Web-Proxy e regra do cachefull com o Mikrotik V3. Por Francisco Nobre ParadaNET.com N & J TELECOM LTDA

Práticas de Desenvolvimento de Software

Suporte ao Desenvolvedor:

MÓDULO MULTIMÉDIA. Text PROFESSOR: RICARDO RODRIGUES. MAIL: URL:

Programação para Web

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Redes de Computadores

Universidade Federal de Goiás Ciências da Computação Sistemas Operacionais 2

SERVIDORES REDES E SR1

ZS Rest. Manual Profissional. Instalação do Software. v2011

Processamento de Dados

Lucas Nascimento Santos

Projeto Pé na Dança. Bruno Barros Comunicador Visual /

RODC. Read-Only Domain Controller

Principais novidades do Entity Framework 5.0

Módulo 3936 ASP.NET. Financiado pelo FSE

TUTORIAL DE INSTALAÇÃO DA MÁQUINA VIRTUAL VIRTUALBOX COM INSTALAÇÃO DA VERSÃO DO SISTEMA OPERACIONAL UBUNTU

As Seis Idéias Mais Burras em

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

Turbine seu Software com Apps do Autodesk Exchange! Novos comandos, novas idéias, mais produtividade!

Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes

UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO.

MANUAL DO USUÁRIO. Projeto/Software/Programa. CDAeM Cadastro de Artistas e Modelos JunioNet. Objetivo desse manual

Estudo Dirigido Programação de Banco de Dados

Conexão rápida entre dois computadores em uma plataforma Linux

Enviado dados para o PHP através de formulário

T-SQL Mitos. Vamos criar uma tabela para os nossos exemplos e, em seguida, comparar planos de execução. Mãos à obra.

A EXPERIÊNCIA PIONEIRA DO LABORATÓRIO/NÚCLEO DE ARTE ELETRÔNICA

Manual Replicação Manual VPN

PRODUTOS B2B SAMSUNG APPS SUPORTE MY SAMSUNG BUSCA. Tweetar 3. Escolhe a melhor foto para você

Documentação Symom. Agente de Monitoração na Plataforma Windows

Social Media. Criação Personalização Gerenciamento.

Desempenho: aspectos a considerar

Manual do Desktop Sharing. Brad Hards Tradução: Marcus Gama

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

SDSS SQL. Walter A. Santos Jr. IAG/USP

Processos de Backup Sistemas Cali

Olho por olho, e o mundo acabará cego. Mohandas Gandhi

Manual de Instalação ( Client / Server ) Versão 1.0

Como Criar Sites Grátis de Sucesso

Sistemas Distribuídos

TML 2.3 MANUAL DO PROGRAMA DE ENVIO DE TML RIP Tela 1 - Início Apenas apresentação do Programa

- Wireless e NTP - 272

Manual do Remote Desktop Connection. Brad Hards Urs Wolfer Tradução: Marcus Gama

Monitoramento no Linux Avaliação de desempenho. Prof: Paulo Maciel Instrutor: Jamilson Dantas

Tutorial. Transmitindo arquivos via FTP. FTP Protocolo da internet responsável pelo envio e recebimento de arquivos com maior eficiência e rapidez.

Como Configurar Catálogos de Correio Eletrônico com o MDaemon 6.0

UltraVNC. Personalizando o UltraVNC (Single Click) com os dados da sua empresa para suporte remoto.

Manual de Instalação do Hábil Enterprise NFC-e Gratuito. Hábil Enterprise NFC-e Gratuito by Koinonia Software Ltda.

1º Seminário de Software Livre Tchelinux Software Livre: leve adiante esta idéia. Soluções de Web Caching e Web Acceleration

SUPERÀTO DIVULGA: ANALISTA DE SISTEMAS / LÍDER DE PROJETOS

Principais Comandos SQL Usados no MySql

DNS DOMAIN NAME SERVER

Curso de Aprendizado Industrial Desenvolvedor WEB

ebook Aprenda como aumentar o poder de captação do seu site. por Rodrigo Pereira Publicitário e CEO da Agência Retina Comunicação

Daniel Santos MVP MCP MCSA MCSE MCTS MSBS

MÓDULO 11 ELEMENTOS QUE FAZEM PARTE DO PROJETO DO SISTEMA

Avaliação de Desempenho em Sistemas de Computação e Comunicação

Instalando, configurando e utilizando a Área de trabalho remota via Web

Por que o financiamento coletivo está se tornando um fenômeno social?


Capítulo 7 CAMADA DE TRANSPORTE

Processos Técnicos - Aulas 4 e 5

Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo

Configuração do da UFS no Outlook Express

Para resolver este problema foi aberta a solicitação abaixo

O Manual do Desktop Sharing. Brad Hards Tradução: Pedro Morais

Android e Bancos de Dados

HTML / JAVASCRIPT. A versão atual é o HTML5 (seus predecessores imediatos são HTML 4.01, XHTML 1.1, etc.).

Instalando o Internet Information Services no Windows XP

METODOLOGIA PARA ANÁLISE DE DESEMPENHO

VENDAS DETALHE. Com as tabelas preenchidas abra execute agora o ireport, pressione CRTL+N ou vá ao menu File>> New.

Análise de Sistemas I: Programação em Nuvem. Luiz Filipe Licidonio. Faculdade de Tecnologia Pastor Dohms. Porto Alegre, Rio Grande do Sul

Prof.: MARCIO HOLLWEG

MINISTÉRIO DA EDUCAÇÃO

Entendendo como funciona o NAT

Iniciando o MySQL Query Brower

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Tapa kill boring No bode

INF1013 MODELAGEM DE SOFTWARE

Conhecendo os usuários de um Sistema de Banco de Dados

MVC e Camadas - Fragmental Bliki

Sistemas Distribuídos: Conceitos e Projeto Caracterização de Sistemas Distribuídos

Como é o Funcionamento do LTSP

Criamos suluções para evoluir seu negócio

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Guia de boas práticas

Atenção ainda não conecte a interface em seu computador, o software megadmx deve ser instalado antes, leia o capítulo 2.

Drupal. Desenvolvimento de Módulos

INE 5223 Informática para Secretariado

A VERDADE SOBRE OS SOFTWARES ROBÔS DE LICITAÇÃO

VRAPTOR: O FRAMEWORK DE APRENDIZADO JAVA WEB AUGUSTO BEVILAQUA RAFAEL CIRINO LACERDA SAULO ALMEIDA LIMA

Transcrição:

A ARQUITETURA DO STACK OVERFLOW Roberta Arcoverde / @rla4 QCon Rio 2015

/WHOIS ROBERTA recifense cientista da computação, UFPE, 2008 mestre em informática, PUC-Rio, 2012 programadora desde 2004 full-stack developer na Stack Exchange desde 2014 (mas gosto mesmo é de backend) mãe do Dostoievski e do Turing

*Alexa, Quantcast começou em 2008 10M perguntas 18M respostas 50M visitantes únicos/mês top 50 sites mais acessados do mundo*

>140 SITES

APENAS NO ÚLTIMO MÊS NÓS TIVEMOS 1,468,389,303 page views 5,183,954,727 HTTP hits 71,562,833,811,315 bytes enviados 3,202,505,376 CDN hits 19,532,899,854 SQL queries executadas 81,505,688,410 comandos Redis 18.2ms tempo médio de page load...operando a 5-10% da nossa capacidade

TUDO ISSO COM APENAS 9 SERVIDORES* *mas 1 bastaria http://stackexchange.com/about/performance** **tá meio desatualizado, mas dá uma ideia

NOSSO DC EM UMA IMAGEM* *imagem originalmente apresentada pelo Marco (@sklivvz) em http://www.slideshare.net/howtoweb/marco-cecconistack-overflow-architecture

...OU MELHOR, DUAS New York, NY Denver, CO

...SÓ MAIS UMA IMAGEM... galeria de fotos: http://imgur.com/a/x1hoy

COMOFAS? UMA LOUCA OBSESSÃO: PERFORMANCE!

TIME 34 devs 6 sysadmins 6 designers 75% do time trabalha remotamente http://stackexchange.com/about/team

STACK c#, asp.net mvc less/jquery sql server elasticsearch redis

TEH CODEZ muita emissão de IL, muito método estático

ARQUITETURA MONOLÍTICA

TESTES?

META STACKEXCHANGE! isto é, testando direto com o usuário final :D http://meta.stackexchange.com

COMUNIDADE É AMOR http://meta.stackexchange.com/questions/71780/loldebugging-are-we-stack-overflow-homepage-alerts-false

3 PRINCÍPIOS BÁSICOS 1. solução mais simples possível 2. encontre os gargalos (medição) 3. remova os gargalos

ENCONTRE OS GARGALOS https://github.com/miniprofiler

ENCONTRE OS GARGALOS II https://github.com/opserver/opserver

REMOVENDO OS GARGALOS é indispensável que todo desenvolvedor entenda profundamente como funcionam planos de execução todo dev é um DBA em potencial como funcionam índices (e seus trade-offs) paginação sargability

REMOVENDO OS GARGALOS

REMOVENDO OS GARGALOS PROBLEMAS DE PERFORMANCE SÃO BUGS! @Html.Partial("~/Views/Shared/PageTabs.cshtml", new PageTabs { Tabs = new List<TabItem> { new TabItem {Value = ShowViewData.Tab.Active, Title = _s("active") new TabItem {Value = ShowViewData.Tab.Oldest, Title = _s("oldest") new TabItem {Value = ShowViewData.Tab.Votes, Title = _s("votes") }, UrlFormat = Question.UrlRelative + "?answertab={0}#tab top", CurrentSelection = Model.CurrentTab })

CACHE ALL THE THINGS

REMOVENDO OS GARGALOS @Html.Partial("~/Views/Shared/PageTabs.cshtml", new PageTabs { Tabs = Current.LocalCache.GetSet<List<TabItem>>("question show tabs", (_1,_2) => new { new TabItem {Value = ShowViewData.Tab.Active, Title = _s("active") new TabItem {Value = ShowViewData.Tab.Oldest, Title = _s("oldest") new TabItem {Value = ShowViewData.Tab.Votes, Title = _s("votes") }, 24 * 60 * 60, 24 * 60 * 60), UrlFormat = Question.UrlRelative + "?answertab={0}#tab top", CurrentSelection = Model.CurrentTab })

DESIGN FOR MINIMAL ALLOCATIONS VS DESIGN FOR TESTABILITY

REINVENTANDO RODAS? wikipedia: http://bit.ly/1u9kjth

REINVENTANDO RODAS! dapper opserver protobuf-net jil stackexchange.redis stackexchange.exceptional stackexchange.precompiler

DAPPER nosso próprio ORM <3 var loginhistories = DB.Query<AccountLoginHistory>( "select * from AccountLoginHistory where AccountId = @accountid") https://github.com/stackexchange/dapper-dot-net

DAPPER alta performance, através de emissão de IL e caching

CONCLUSÃO SOA é legal microservices são legais injeção de dependência é legal testes são BEM legais...mas não são pra todo mundo!

CONCLUSÃO é bem boring (nada de reflection, DI ou outros patterns legais) monolítica (nada de services, muito menos micro) não seguimos várias boas práticas :( gostamos de reinventar a roda (ORM, caching, perf monitors) funciona pra gente :) escolha as práticas que fazem sentido no SEU projeto

PERGUNTAS? twitter.com/rla4 stackexchange.github.io stackexchange.com/work-here

OUTRAS APRESENTAÇÕES/REFERÊNCIAS the architecture of stack overflow, by Marco Cecconi - http://www.slideshare.net/howtoweb/marco-cecconi-stackoverflow-architecture scaling stack overflow, by David Fullerton - https://speakerdeck.com/dfullerton/scaling-stack-overflowqcon-nyc-2015