O documento discute estratégias para distribuir e escalar aplicações, desmistificando a complexidade da escalabilidade. Apresenta ferramentas como Memcached e Gearman que permitem escalar de forma simples e econômica através de caching, balanceamento de carga e processamento assíncrono de tarefas. Refuta mitos como a necessidade de refatorar aplicações para escalá-las e que escalar custa caro.
2. Who am I?
I’m not Batman! But I whis I was!
http://ifind.io
System Architect ( about 14 years in 2013 )
PHP Evangelist ( hell yeah!! )
Javascript lover ( since … well, since I discovered it )
Minimalist, Purist, Pain in the ass(!?)
Worked in some cool projects: DHL, Wal*Mart and
Perdigão’s GPS Tracking System / CallCenter
Systems / SAP Integrations / Privalia / Coquelux /
Super Exclusivo / Ci&T / Axia Value Chain / Ernst &
Young / bla bla bla …
"
"
Can say I had work in more than 200 projects =)
7. O que é o Memcached?
Aspectos funcionais da ferramenta
http://ifind.io
Caching
Key / Value
Runtime
Não é um banco de dados
O Memcached é uma maneira escalável, simples,
leve e inteligente de cachear e organizar dados
cacheados. A principal função reduzir o volume de
chamadas a banco, mas também serve para
transportar dados entre aplicações uma vez que
q u a s e t o d a s a s l i n g u a g e n s p o s s u e m
implementação da API.
"
"
Simples, MUITO, simples!
8. O que é o Memcached?
Aspectos funcionais da ferramenta
http://ifind.io
Fácil Configuração
Multiplos Servidores
Peso/Prioridade dos servidores
API rica em recursos
Escalável
Open Source
Poliglota : C++, PHP, Python,
Ruby, .NET, Lua, Perl, CLI, LISP, MySQL,
PostgreSQL, …
9. O que é o Gearman?
Aspectos funcionais da ferramenta
http://ifind.io
Framework para gerenciar "farms" de tasks
Filas ( persistentes ou não: mysql, libdrizzle, sqlite3, memcached, ... - Redis
and MongoDB under development )
Paralelizador de tarefas ( Sincronas ou Não )
Map & Reduce
O Gearman é em sua essência uma ferramenta
para gerir e distribuir tarefas porém dentro das
funcionalidades ele permite você fazer e ir muito
mais além integrando funcionalidades como filas e
map/reduce.
"
"
Tolerante a Falhas
10. Como funciona o Gearman?
http://ifind.io
/users/123/sendMail SMTP mail.server.com
App Server Response OK Mail Server Response OK
Users x Requests = (????) SMTP Calls
Até onde eu posso aumentar uma única máquina?
Quantos serviços ( pagamentos por ex ) estão sendo prejudicados pela queda de performance?
Como faço pra garantir as entregas uma vez que todas estão rodando simultaneamente e
gargaladas? (Runtime)
11. Como funciona o Gearman?
Enviando emails de forma correta
http://ifind.io
/users/123/sendMail SMTP mail.server.com
App Server Response OK
Asyncronous
Response OK
Workers x Requests = SMTP Calls ( Numero Controlado de Workers )
Enfileiramento das Requests
Diminuição exponencial do load do servidor e controlar a carga a ser processada
É possível persistir a fila e garantir as entregas caso aconteça algum gargalo ou problema
Worker
Call
Gearman
Server
14. Como funciona o Gearman?
http://ifind.io
/users/123/sendMail
App Server Response OK
Asyncronous
Workers
192.168.1.
10
Call
Gearman
Server
Workers
192.168.1.
11
Workers
192.168.1.
12
Map/Reduce automático
Escolher worker mais "disponível"
Especialização de servidores de acordo com o tipo de worker
Escalabilidade "infinita"