- CartolaFC é o fantasy game oficial do campeonato brasileiro.
- Existe desde 2005
- Falar como o jogo funciona
refazer uma aplicação consolidade no mercado, em 5 meses... com um time de 4 pessoas... possibilitar o crescimento de até 3vezes
antes de começar o projeto, defimos o que nós queríamos, quais nossas necessidades.. foram elas:
leve - rápida - segura - deploy automatizado - escalável - baixo custo - 100% softwar livre - Desenvolvimento rápido e fácil - Fácil manuntenção
falar de cada ferramenta
hj em dia nosso desafio eh muito maior do que ha alguns anos... precisamos atender muitas requisições simultâneas.. e esse era nosso problema... pesquisando encontrei esse paper, bem famoso até. ele fala sobre os tipos de servidores, e como extrair o máximo de performance dos seus recursos
como performar aplicações web em pyton?
existem duas formas...
cgi: cada requisição inicia uma nova linha de execução própria
app: o app server mantém o mesmo contexto
cgi script não performa bem, é lento e instável
python application performa muito bem, estabilidade
fork: para cada requsição, um novo processo e criado para atende-lá
pre-fork: os processos são iniciados antes antes da requisição chegar
thread: uma thread para cada requisição
single thread: uma única thread atende todas as requisições
abrir um processo para cada requisição, é morte certa
muito lento
consegue imaginar 10mil processos?
melhor que o fork, mais tem o mesmo problema, muitos processos abertos
melhor abrir uma thread do que abrir um processo, mas threads consomem muita memória, e com o aumento de requisições a degradação é muito grande
resta o single thread. mas como uma única thread é capaz de atender milhares de requisições simultâneas?
tudo em linux é arquivo ... vc estabelece um socket, fazendo listen em uma determinada porta. registra esse socket no event polling do SO. Quando um evento acontece nesse socket, uma nova linha de execução e criada pelo SO, e vc consegue processar multiplas requisições simultâneamente, pode acreditar.
por padrão o SO bloquea a execução de sua aplicação, quando operações de I/O são feitas. isso gera overhad, com non blocking, sua aplicação não é bloqueadas e continua sendo executada mesmo quando se está realizando alguma operação de I/O
1 webserver rodando
balanceamento de carga entre as 7 instâncias de aplicação
capaz de processar 250 requisições por segundo
uma aplicação escalável, é um aplicação preparada para crescer
unidade operacional, box. cada unidade é capaz de rodar de forma isolada e independente
deploy automatizado
escalabilidade horizontal, cada novo box representa aumento proporcional
cada box processa 250 requisiçoes por segundo
- CartolaFC é o fantasy game oficial do campeonato brasileiro.
- Existe desde 2005
- Falar como o jogo funciona