Escolar Documentos
Profissional Documentos
Cultura Documentos
Arquitectura de sistema
smarter, faster, better deliver
2011 http://www.festock.com
Específicações Técnicas
Arquitectura de sistema
smarter, faster, better deliver
0‘‘ ‘‘0
0 0 ‘‘
0 0 0
‘‘ ‘‘
0 ‘‘ 0‘ ‘ 0
‘‘
0
0‘‘0‘‘ ‘0 0 0 ‘‘
‘‘ ‘‘ ‘‘
0
0‘‘0‘‘
00 0
0 ‘ 0 0 ‘‘‘ 0
0
‘‘
0
‘‘ ‘‘
‘‘ ‘‘ ‘‘
0 ‘‘ 0
‘‘ ‘‘
00 ‘‘ 0
‘‘
‘‘ ‘‘ ‘‘
‘‘
(2011) (2012)
Plataforma assente em vários servidores, Cada camada do sistema foi escolhida por Utilizamos soluções open-source, usadas e
cada um deles específicamente nós ou desenvolvida por nós. A nossa testadas por alguns dos projectos web
configurado com hardware e software para equipa está estratégicamente dividida e mais sonantes a nível mundial, tais como
lidar apenas com as tarefas que lhes serão focada pelas diferentes camadas do Wordpress, Flickr, Wikipedia, Twitter,
destinadas. E nada mais. sistema, assegurando-lhe uma atenção Typepad, Youtube, Digg, entre outros.
constante.
Distribuimos os processos necessários Garantimos as melhores soluções técnicas Muitas das soluções foram desenvolvidas
para o funcionamento do Festock, sendo aos nossos visitantes, em cada camada do específicamente para lidar com inumeros
assi possível lidar com um número sistema seja com o mais recente e estável pedidos e ou o fazem mais rápido ou criam
crescente de utilizadores, desde o dia do software, seja com as melhores práticas. soluções paralelas que fazem com que o
lançamento. Tudo integrado. Tudo estável. sistema não seja alvo de um
processamento de dados desnecessário.
Apenas leitura.
Visitantes/Clientes
Internet
Internet
APIs externas
Infraestrutura local
Servidor(es) de backups
Internet
Internet
APIs externas
Infraestrutura local
3. APIs e outros ficheiros
Servidor da aplicação Servidor de Servidor de
servidos por 3ªs partes
compressão de streaming de
vídeos vídeos
2. Pedido recebido pelo servidor de http APACHE.
Os pedidos serão processados através do processador 5. Streaming dos
de scripting PHP, que em conjunto com um servidor 4. Compressão, pelo vídeos armazenados.
de base de dados MySQL, irão devolver os resultados ffmpeg, dos vídeos
ao visitante através de uma página web. submetidos.
----------------------------------------------------------------------- --------------------------
Estes pedidos e processamentos serão muitas vezes Feitos através de um
acelerados graças a soluções de reverse proxy e caches. agendamento no
sistema operativo
(cron).
Servidor(es) de backups
0 00 ‘‘0
000
‘‘
‘ 0 0 ‘‘
‘‘
0‘‘0‘‘ ‘0
‘‘ ‘‘
0 ‘‘
‘‘
0 00
‘‘
‘‘ ‘‘ ‘‘
‘‘
HTTP GET/POST Response
Firewall
Framework JQuery
Google Analytics
StatCounter
Compressão de vídeos
HTTP Reverse Proxy
Streaming de video
Servidor HTTP Ficheiros estáticos
(Apache) (css, js, jpg, png, etc.)
(ffmpeg)
(ffmpeg)
(Nginx)
(Nginx)
Processador de scripting Op-cache
(PHP) (eAccelerator)
Backups
000
0
‘‘ ‘‘
‘‘
‘‘ Pedido
HTTP Cache
(Varnish Cache)
HTTP Reverse Proxy
(Nginx) Se o pedido está disponível em cache (hit),
(hit)
o servidor de cache responde
Servidor de proxy HTTP imadiatamente e o pedido nunca chega à
de alta performance. dynamic aplication.
Memory Cache
(memcached)
Aumenta a performance
PHP
HTML
CSS
ao colocar em cache dados
JS
JSON na memória.
etc...
Resposta
Processador de scripting
Base de dados Processador de scripting
(PHP)
(MySQL)
(PHP)
nginx é um servidor de http e reverse proxy, de alta performance e estabilidade e de consumo baixo de recursos.
Ao contrário do Apache, o nginx foi desenvolvido tendo em conta grandes afluências ao servidor http pelo que lida melhor com
grandes afluências. É usado pelo Wordpress, YouTube, Facebook, GitHub, SouceForce entre outros.
PHP é uma linguagem de scripting desenvolvida para desenvolvimento de páginas web dinâmicas. Tal como o nginx é usado pelos portais
web mais conhecidos e acedidos a nível mundial tais como o Wordpress, YouTube, Facebook, GitHub, SouceForce entre outros.
eAccelerator optimiza o código de PHP e disponibiliza-o em cache, na memória ou disco. O eAccelerator pode reduzir até 10x o processamento
no servidor dos scripts em PHP.
memcached é um sistema geral de caching. Será usado principalmente para aumentar os resultados às queries à base de dados, uma vez
que ao criar cache dos resultados e coloca-los na memória RAM torna o seu acesso muito mais rápido. É usado pelo Facebook, YouTube, Twitter
entre outros.
ffmpeg é conjunto de bibliotecas e software open-source que grava, converte e cria streaming de audio e video. As suas bibliotecas são usadas
por, por exemplo, VLC, MPlayer, Blender, Google Chrome entre outros.
Além destas soluções que visam criar eficiência e eficácia no nosso portal, os servidores estarão dotados de soluções de monitorização de hardware,
rede, etc como por exemplo o RRDTool/Cacti afim de podermos prever e/ou atender a falhas no sistema.
O sistema dispõe de um infraestrutura paralela de backup. Os backups serão periodicamente replicados num
datacenter num país ainda a estipular.
Não menos importante, toda a solução funcional é desenvolvida sob um sistema de control de versões, neste caso o Subversion.
Os fluxogramas são técnicas de representações gráficas, nas quais que se utilizam símbolos previamente convencionados,
permitindo a descrição clara e precisa do fluxo, ou sequência de um processo, bem como sua análise e redesenho.
Os fluxogramas apresentados servem de representação à forma como são executadas algumas das principais funcionalidades do portal Festock
Nestas representações estão visíveis os fluxos do lado do cliente e do lado do servidor, quando aplicado.
- convidar júri
- criar evento
- criar festival
- submeter filme numa competição
- upload de filme
- converter filme
Client-side Server-side
PH P
Pede nom e Ajax PHP s im
E x is tem utiliza dor es
I nicio ou em a il do E nv ia nom e ou em a il R ecebe nom e ou
com o nom e ou em a il
j úr i pa r a o s er v idor em a il do j úr i
for necido?
s im
nã o
JS ON
nã o Quer pr ocur a r com J a v a S cr ipt
S em
outr o nom e ou Apr es enta
utiliza dor
em a il? “ m ens a gem ”
nã o
JS ON
J a v a S cr ipt D a dos dos
O j úr i a pa r ece na C r ia j a nela s com os utiliza dor es
cons ulta ? utiliza dor es encontr a dos
encontr a dos
s im
PHP
E s colha de R ecebe da dos do j úr i PH P s im
Ajax
um dos e a cr es centa a lis ta O j úr i foi ins er ido na
E nv ia da dos do j úr i
utiliza dor es de j úr is do fes tiv a l na ba s e de da dos ?
ba s e de da dos
nã o
JS ON
J a v a S cr ipt
er r os
Apr es enta “ E r r os ”
J a v a S cr ipt JS ON
Fim Apr es enta m ens a gem de s uces s o
s uces s o
J a v a S cr ipt PHP
V er ifica s e os ca m pos PHP
Pede s im R ecebe da dos do s im
es tã o todos pr eenchidos Os da dos fora m
I nicio da dos do fes tiv a l e env ia
cor r ecta m ente recebidos pela
E v ento pa r a a ba s e de
ba s e de da dos ?
da dos
nã o nã o
J a v a S cr ipt
Apr es enta Ajax
“ E rr o” E nv ia da dos pa r a
o s er v idor
JS ON
er r os
J a v a S c r ipt
Pede da dos JS ON
C r ia ca m pos de
da s s uces s o
a diçã o de
com petiçoes
com petições
PHP
J a v a S cr ipt PHP
Ajax Grava as s im
V er ifica s e os da dos Os da dos fora m
E nv ia da dos pa r a ca tegor ia s do
es tã o todos pr eenchidos gua r da dos na ba s e de
o s er v idor ev ento na ba s e de
cor r ecta m ente da dos ?
da dos
nã o
JS ON
er r os
J a v a S cr ipt JS ON
Fim Mens a gem de s uces s o
s uces s o
nã o nã o
J a v a S cr ipt
Ajax
Apr es enta “ E r r o”
E nv ia da dos pa r a o
s er v idor
JS ON
er r os
J a v a S cr ipt JS ON
Pede da dos do
C r ia ca m pos de s uces s o
pa ga m ento
pa ga m ento
PHP
PHP
Ajax Pr oces s a o s im
Os da dos for a m
E nv ia da dos pa r a o pa ga m ento e gr a v a
proces s a dos e gua r da dos
s er v idor da dos na ba s e de
na ba s e de da dos ?
da dos
nã o
JS ON
er r os
J a v a S cr ipt JS ON
Fim Mens a gem de s uces s o
s uces s o
Client-side Server-side
I nicio
PHP
Utiliza dor Utiliza dor Utiliza dor PHP
Ajax O film e pode concorrer s im
s elecciona s elecciona s elecciona PHP E nv ia pa ra a ba s e de
E nv ia da dos em toda s a s
film e pa ra fes tiv a l pa ra com petições R ecebe da dos da dos os da dos da s
pa r a s erv idor com petições
s ubm eter concor rer pa r a concor r er ins crições
s eleciona da s ?
nã o
JS ON
J a v a S c r ipt
err os
Apres enta “ E rr o”
PHP
Os da dos fora m
nã o
recebidos
correcta m ente pela
ba s e de da dos ?
JS ON
J a v a S c r ipt
err os
Apres enta “ E rr o”
s im
J a v a S c r ipt JS ON
Fim Mens a gem de s uces s o
s uces s o
S erv er - s ide
Cron
Cron F ich e ir o ph p
s im Qua ndo ter m ina r a
D e 1 5 em 1 5 m in ex ecuta V erifica s e ex is te a lgum
I nicio I nicia conv ers ã o conv er s ã o Actua liza
o ficheiro conv ers a o de film e que a inda nã o
os da dos do film e na
film es php tenha s ido conv ertido
BD
nã o
Fim
PHP PHP
J a v a S cr ipt s im Ajax PHP O ficheiro foi s im I ns ere ca m inho do
I nicio I ns er e film e Form a to do film e é E nv io o ficheiro do G ua rda o ficheiro do gua rda do? film e na ba s e de
v á lido? film e pa ra o s erv idor film e no s erv idor
da dos
nã o
nã o
J a v a S cr ipt
Apr es enta “ E rro”
JS ON
erros
nã o PHP
Os da dos fora m
gua rda dos na B D ?
JS ON
erros
s im
J a v a S cr ipt JS ON
nã o
Pr eencheu o link do C ons trói div pa ra D a dos do
I MD B ? pedir os da dos do ficheiro de film e
film e e m os tra j a nela
s im
PHP PHP
Ajax s im
PHP O link é v a lido? Lê a pá gina do I m db
E nv ia link pa ra o
R ecebe link do im db e retira os da dos do
s erv idor
film e
nã o
JS ON
J a v a S c r ipt
erros
Apres enta “ E rro”
PHP
R etorna os da dos
encontra dos
J a v a S cr ipt JS ON
preenchim ento Preenche os ca m pos D a dos do film e
m a nua l de todos de tex to com os no I m db
os da dos da dos recebidos
PHP
Ajax
PHP Actua liza da dos do
E nv ia da dos pa ra o
R ecebe da dos film e na ba s e de
s erv idor
da dos
JS ON
erros
nã o PHP
Os da dos fora m
gua rda dos na B D ?
s im
J a v a S cr ipt JS ON
Fim Mos tra m ens a gem de s uces s o
s uces s o
É possível dizer de uma forma genérica que qualquer conjunto de dados é uma base de dados (BD) – exemplo:
bloco de notas.
Embora sendo possível usar a definição genérica dada acima, o termo base de dados é aplicado hoje em dia princi-
palmente para fazer referência a bases de dados informáticas, isto é, conjuntos de dados estruturados, manipula-
dos usando um Sistema de Gestão de Bases de Dados (SGBD) ou Database Management System (DBMS).
O mundo cinematográfico” é cada vez mais exigente no que respeita aos recursos utilizados para fomentar o seu progressivo cresci-
mento no mercado global.
Para fazer face às exigências dos festivais de cinema, a empresa ‘Festock’ criou um serviço on-line que permite a comunicação entre
festivais e utilizadores/cineastas.
Na plataforma “Festock” qualquer utilizador tem acesso ao registo, sem que tenha qualquer custo (€) para o efeito. Refira-se, ainda, que
qualquer utilizador (registado ou não registado) tem a possibilidade de conhecer a realidade de toda a dinâmica da plataforma, serviços
disponíveis e potencialidades existentes. Veja-se alguns exemplos: aceder aos contactos dos administradores do site; visualizar o histo-
rial e o manual de identidade da empresa “Festock”; aceder a informações relativas a festivais ou eventos dos mesmos e seus detalhes;
assistir a alguns filmes e seus detalhes; assistir a notícias e seus detalhes; consultar a ajuda; fazer registo e login.
Após registo no site o utilizador, além das funcionalidades referidas anteriormente, passa a usufrui de novas funcionalidades, tais como:
a inserção de filmes e respectiva inscrição em festivais; a visualização de filmes (biblioteca); a possibilidade de enviar, receber e visualizar
mensagens; a opção de utilizar um sistema de pesquisa com filtragem (notícia, autor, festival, evento, filme); a hipótese de criar um
festival. Ao criar um festival, e após este ser aceite pela administração da plataforma, o utilizador passa a poder administra-lo a partir de
novas funcionalidades que são disponibilizadas (publicar, editar e apagar notícias; convidar júris e formar guest list, selecionar filmes para
concurso; criar e editar eventos; gerir estatísticas; gerir as participações dos utilizadores no festival). Existe ainda outra categoria de
utilizador - júri, esta permite ao utilizador ver e avaliar os filmes concorrentes.
Refira-se, ainda, que os utilizadores têm total mobilidade na plataforma.
Login
Apresentação do site
Registo
Festivais
Filmes
Notícias
Sobre nós
Factos
Notícias Filmes Festivais Mapa do site Ajuda Contactos Sobre nós
Listagem das notícias Listagem dos filmes Listagem dos festivais Mapa de navegação FAQ Morada Historial
Links Funcionalidades Mapa de localização Manual de identidade
Ajuda online Email
Telefone
Evento
Detalhes do evento
Home page
(utilizador)
Filmes
Eventos
Mensagens
Pesquisar
Perfil
Ajuda
Criar festival
Filmes Eventos Mensagens Pesquisar Perfil Criar festival Perfil administrador Perfil júri
(festival) (festival)
Inserir filme Recomendações Enviar mensagem Procurar por: Def. de privacidade Formulário de registo Notícias Ver filmes
Os meus filmes Lista de eventos Ver recebidas - notícia Editar dados Pagar subscrição Administrar Avaliar filmes (rating)
Inscrição em festivais Pesquisar Ver enviadas - autor O meu historial Eventos
Ver filme As minhas inscrições - festival Mensagens
- evento Pesquisar
- filme
Logout
A localização é um dos pontos-chave do século XXI. Quando levamos a mesma consideração de localização e acessibilidade aos nossos sites, devemos sempre colocar-
nos nas posições dos nossos utilizadores e nada melhor do que uma "bússola" virtual para orientá-los. Nas "páginas inicias" esse instrumento é conhecido como - Mapa
do Site.
Landing page – Esta página estará presente sempre que qualquer utilizador (registado ou não registado) aceda ao nosso site.
Funcionalidades:
-Login
-Apresentação do site
-Registo
-Festivas
-Filmes
-Notícias
-Factos (estatísticas do site)
Contactos – Nesta página, todos os utilizadores podem aceder aos seguintes contactos da empresa responsável pelo site:
-Morada – disponibilização da morada da sede da empresa detentora do site ou sua administração;
-Mapa de localização – disponibilização da sede da empresa detentora do site ou sua administração através de um sistema de localização - Google Maps;
-Email – disponibilização do email da administração do site;
-Telefone – Disponibilização do contacto telefónico da administração do site;
Utilizadores registados
Home page – A esta página só têm acesso os utilizadores que estão registados no site. Saliente-se que os utilizadores registados têm, também, acesso a todas as
funcionalidades presentes na ‘Landing page’.
Funcionalidades:
-Filmes
-Eventos
-Mensagens
-Pesquisar
-Perfil
-Ajuda
-Criar festival
Pesquisar – Nesta página, todos os utilizadores registados podem recorrer a filtros para pesquisar de uma forma mais eficiente, veja-se as possibilidade de filtragem:
-notícia;
-autor;
-festival;
-evento;
-filme;
Login – Este permite aos utilizadores registados se conectarem ao site de modo a usufruírem de todas as funcionalidades disponíveis.
Logout – Este permite aos utilizadores, que estão conectados ao site, desconectarem-se do mesmo.