Upload
duongquynh
View
216
Download
0
Embed Size (px)
Citation preview
- Arquiteturas Distribuídas -
Rui Mendes Página 2 de 69
AULAS 1 E 2 – INTRODUÇÃO ....................................................................................................................................... 3
AULA 2 – MAIS SOBRE CLOUD COMPUTING .............................................................................................................. 18
AULAS 3 E 4 – SOA (SERVICE ORIENTED ARCHITECTURE) .......................................................................................... 28
AULAS 5 E 6 – ESCALABILIDADE E MODULARIDADE .................................................................................................. 55
AULA 7 – SEGURANÇA............................................................................................................................................... 63
- Arquiteturas Distribuídas -
Rui Mendes Página 3 de 69
Arquitetura de Sistemas
À medida que o tamanho e complexidade dos sistemas de software aumentam, o problema da conceção vai
além dos algoritmos e estruturas de dados da computação: conceber, desenhar e especificar a estrutura geral
do sistema emerge como um novo tipo de problema… Isto é a conceção ao nível da arquitetura de software.
Garlan, 1992
O que é Arquitetura de Software?
A arquitetura de software de um programa ou sistema computacional é a estrutura ou estruturas do sistema,
englobando componentes de software, as propriedades visíveis externamente desses componentes e as
relações entre eles.
(Bass et al, 2003)
O que nos diz este diagrama?
Vista de topo da arquitetura de um sistema de controlo para uma simulação acústica subaquática
- Arquiteturas Distribuídas -
Rui Mendes Página 4 de 69
Existem 4 elementos: CP, MODP, MODR, MODN
3 dos elementos devem ser mais semelhantes entre si do que com o CP
Todos os elementos têm um tipo de relação com os restantes
Resumindo: temos 4 componentes com ligações entre eles
Como uma arquitetura é um conjunto de componentes e ligações, então este é o esquema
de uma arquitetura.
Será?
São funções, processos, programas distribuídos, ou outra coisa distinta?
Quais as suas responsabilidades?
O que é que fazem?
Qual a sua função no sistema?
O que significam as ligações?
As ligações significam comunicação, controlo, envio de informação, invocação, sincronização,
partilha de informação sensível, …?
Quais os mecanismos de comunicação?
Que informação flui nesses mecanismos?
Natureza dos elementos?
A sua separação é significativa?
São executados em processadores distintos?
Correm em tempos distintos?
Representam formas de dividir o fluxo de tarefas?
Qual o significado do layout?
Porque está CP num nível separado?
Invocará os restantes elementos e os restantes não o poderão invocar?
Conterá os restantes elementos na sua implementação?
Questão estética?
Não haveria espaço na horizontal para colocar todos os elementos na mesma linha?
Então…
Vista de topo da arquitetura de um sistema de controlo para uma simulação acústica subaquática
- Arquiteturas Distribuídas -
Rui Mendes Página 5 de 69
Algumas definições de arquitetura e desenho de arquitetura
A arquitetura preocupa-se com a seleção dos elementos arquiteturais, a sua interação, os
constrangimentos e regras nesses elementos e nas suas interações… O desenho está relacionado com
a modularização e interfaces detalhadas dos elementos arquiteturais, dos seus algoritmos e
procedimentos, os tipos de dados necessários para suportar a arquitetura e para satisfazer os seus
requisitos. (Perry e Wolf,, 1992)
A arquitetura… é especificamente omissa … nos detalhes de implementações (algoritmos e estruturas
de dados). O desenho de arquitetura utiliza uma coleção mais rica de abstrações do que a conseguida
através de Desenho Orientado a Objetos (Monroe et al, 1997)
A arquitetura foca-se nas propriedades dos componentes de software visíveis externamente (Bass et
al, 1998)
Resumo:
A arquitetura não interessa a questão da implementação, se o sistema vai ser desenvolvido em python, C,
etc., não interessa as propriedades ou mecanismos internos de cada um dos módulos. Via interessar
perceber quais as interfaces que cada um dos componentes disponibilizará para outros comunicarem com
ele e do ponto de vista geral como é que todo o sistema vai comunicar entre os diferentes módulos e os
outros SI.
Como é que os dados são representados ou guardados não faz parte do ponto de vista de arquitetura.
Evolução
Arquiteturas centralizadas
Sistemas Monolíticos
Sistemas de Micro-Kernel
Arquiteturas distribuídas
Cliente-Servidor
P2P
Grid Computing
Cloud Computing
- Arquiteturas Distribuídas -
Rui Mendes Página 6 de 69
Sistemas Monolíticos
Sistemas autocontidos
Entrada de dados
Saída de dados
Processamento
Gestão de erros
Interface de utilizador
Podem ser executados em modo batch (automático/semiautomático) ou mediante pedidos de
utilizador (interface)
Os dados são carregados em memória e gravados em momentos conhecidos
Pode suportar concorrência
Acesso por múltiplos utilizadores simultaneamente é complexo e não garantido
Sistemas monolíticos - Vantagens
Performance
Acesso a informação - depois de carregados, os dados estão em memória
Alteração – edição em memória
Simplicidade
Estrutura mais simples
○ Menos código? Não necessariamente…
Menos problemas “difíceis”
○ Locking, transações, integridade, performance, concorrência, …
Sistemas monolíticos - Desvantagens
Acesso por vários utilizadores
Alterações e manutenção de sistema
Aplicações críticas – quanto tempo poderão estar paradas?
Tempo de “carregar”
Toda a informação tem que ser carregada para memória
○ Podem-se implementar mecanismos de carregamento seletivo, mas já vai
complicar…
Sistema Monolítico
Entrada e Saída de dados
Processamento dados Gestão de Erros
Interface Utilizador
- Arquiteturas Distribuídas -
Rui Mendes Página 7 de 69
Sistemas de Micro-Kernel
Mais comum em sistemas operativos
No entanto a filosofia deste pode ser adaptada a outros cenários
Lógica central, altamente generalista
Define as regras gerais e formas de efetuar operações
Módulos carregados dinamicamente
Extensíveis
Costumizáveis
Robustos (em teoria)
Confiáveis (em teoria)
Proteção (vários níveis)
Tolerância a falhas
Segurança
Sistemas de Micro-Kernel - Vantagens
Alterações aos módulos em tempo-real
Implica o recarregamento do novo módulo
Sem necessidade de parar o programa principal
A lógica deste sistema pode ser combinada com outros para dar origem a sistemas bastante flexíveis
Sistemas de Micro-Kernel - Desvantagens
Potencial complexidade do kernel
Necessidade de maior rigor e controlo
Interfaces
○ Comunicação
○ Acesso
Integridade
○ Até que ponto poderão as ações de um módulo afetar outro(s)?
É necessário que cada um destes módulos seja bem projetado
Processamento dadosProcessamento dados
Gestão de ErrosGestão de Erros
Entrada e Saída de dadosEntrada e Saída de dados
Sistema
Interface UtilizadorInterface Utilizador
- Arquiteturas Distribuídas -
Rui Mendes Página 8 de 69
Cliente-Servidor
Mais conhecido a nível de aplicações (Web)
Acesso de vários utilizadores em simultâneo
Usando um ou mais clientes
Cliente e servidor podem existir no mesmo sistema
Tipicamente este não é o caso
Cliente-Servidor - Vantagens
Dados armazenados nos servidores
Possibilidade de backups centralizados
Flexibilidade de serviços
Possibilidade de migração de serviços entre máquinas sem que os clientes se apercebam
Manutenção
Uma única atualização permite servir inúmeros clientes (ou todos, em alguns casos)
Segurança
Os servidores podem ser armazenados em locais controlados
Pontos de acesso aos serviços podem ser focalizados e vigiados
Redundância
É possível escalar o serviço, aumentando a disponibilidade, sem que os utilizadores se
apercebam
Cliente-Servidor - Desvantagens
Se não for bem “pensado”, o sucesso do sistema pode ser o seu maior inimigo
O número de clientes a pedir serviço pode ultrapassar a capacidade do serviço
Peer to Peer
Cada nó na rede é (pode ser) simultaneamente cliente e servidor
Peer to Peer - Vantagens
Escalável
Quantos mais nós, mais recursos
Redundância
Servidor ClienteCliente
Cliente
Cliente
- Arquiteturas Distribuídas -
Rui Mendes Página 9 de 69
Peer to Peer - Desvantagens
Manutenção
Cada atualização tem que ser replicada por todos os nós
Dados não são armazenados centralmente, pelo que backups automatizados de toda a rede P2P
seria um processo moroso.
Grid Computing
Sistema distribuído
Controlo central de processos
Processamento intensivo
Armazenamento
Tipicamente meio académico
Computação como Serviço
Utility computing
Água, luz, gás…
CERN
SETI@Home
Folding@Home
World Community Grid
...
Grid Computing - Vantagens
Gestão descentralizada dos nós
Acesso ao sistema estandardizado
Pontos de acesso conhecidos
Protocolos de comunicação standard
Otimizado para HPC (High Performance Computing)
Uma única tarefa pode necessitar de todos os nós ativos
Grid Computing - Desvantagens
APIs de integração de módulos são bastante específicas
Manutenção do sistema (existente em vários datacenters e casas particulares)
Tipicamente apenas processos batch são executados
Processamentos longos
Maior dificuldade de escalonamento de recursos
Sistema de Grid
Nó Grid
Nó Grid
Nó Grid
Nó GridNó de
Controlo
Nó Grid
Ponto de
AcessoCliente
Cliente
Cliente
- Arquiteturas Distribuídas -
Rui Mendes Página 10 de 69
Cloud Computing
Semelhante a Grid (foi inspirado nele)
Trata-se de uma arquitetura
Permite executar máquinas virtuais nos seus nós
Constituída por 3 camadas lógicas
IaaS
PaaS
SaaS
Cloud Computing - Vantagens
Facilidade de escalar serviços
No Natal, as compras na sua loja online disparam? Então nada como scale-up apenas
durante esse período!
Possibilidade de ter não só serviços como sistemas operativos completos
Preço de acesso
“Pay as you go”
Flexibilidade de escalonamento de serviços
Cloud Computing - Desvantagens
Possível “vendor lock-in” (Principalmente no SaS)
Preço de acesso
Pode tornar-se caro
○ Mas se se torna caro é porque há muitos recursos em uso!
Deve-se analisar o Total Cost Ownership envolvido (ter os recursos no DataCenter privado ou
outsourcing)
Copyright e direitos legais são ainda matéria complexa
- Arquiteturas Distribuídas -
Rui Mendes Página 11 de 69
Estratificação de arquiteturas
Arquiteturas 1 camada
Interface, lógica de negócio e armazenamento estão integrados
Expansão e alteração complexas
Arquiteturas 2 camadas
Interface + lógica separado de armazenamento
Interface separados de lógica + armazenamento
Clara distinção entre camadas
Atualização de uma camada não interfere com a outra
Desde que se respeitem as interfaces públicas!
Arquiteturas 3 camadas
Interface, lógica de negócio e armazenamento estão
conceptualmente separados
Possibilidade de alteração e/ou expandir cada uma das
camadas de forma independente
- Arquiteturas Distribuídas -
Rui Mendes Página 12 de 69
Arquiteturas n-Camadas
Várias camadas independentes
Pode ser vista como uma especialização do modelo 3 camadas
Permite um grau mais detalhado de independência entre módulos do sistema
Arquiteturas Orientadas ao Serviço
Composta por serviços distintos
podem ou não existir no mesmo espaço geográfico (mesmo computador)
○ Não confundir com camadas de aplicação do mesmo programa
Cada serviço é independente dos restantes
Cada serviço tem/pode ter a sua própria arquitetura!
Arquitetura distribuída
Invocação de serviços
CORBA (Common Object Request Broker Architecture)
RMI (Remote Method Invocation)
- Arquiteturas Distribuídas -
Rui Mendes Página 13 de 69
Web Services
○ SOAP
○ REST
○ XML
○ JSON
Independência total
Evolução (cada bloco pode evoluir isoladamente)
Linguagem de programação
Sistemas operativos
Altamente escalável (com load balancer p.e.)
Reutilizável (podem ser utilizados para diversas funções)
Reconfigurável
Configurações dinâmicas
Orquestração
Coreografia de serviços
BPEL
UDDI
Um apanhado de estilos e padrões de arquitetura
Blackboard
Client–server model (2-tier, n-tier, peer-to-peer, cloud computing all use this model)
Database-centric architecture
Distributed computing
Event-driven architecture
Front end and back end
Implicit invocation
Monolithic application
Peer-to-peer
Pipes and filters
Plugin
Representational State Transfer
Rule evaluation
Search-oriented architecture (A pure SOA implements a service for every data access point.)
Service-oriented architecture
Shared nothing architecture
Software componentry
Space based architecture
Structured (module-based but usually monolithic within modules)
Three-tier model (An architecture with Presentation, Business Logic and Database tiers)
N-tier model
Aspects oriented architecture
- Arquiteturas Distribuídas -
Rui Mendes Página 14 de 69
O arquiteto de sistemas
Influência dos stakeholders no arquiteto
Princípios e boas práticas
Architectural Description Languages
Tipicamente UML
Há mais… ACME, Rapide, etc
Método formal e sistemático de representação de arquiteturas
Devem poder ser interpretadas por computadores e humanos
Tal como a arquitetura em si, é independente da tecnologia e linguagem de programação
Documentação de Arquitetura
Modelo, vistas e estruturas
Não esquecer:
“A arquitetura … é a estrutura … englobando componentes …, as propriedades visíveis … e as
relações entre eles”
Moral da história: é complicado tentar mostrar toda a arquitetura de um sistema apenas
num desenho bidimensional
Escolha das vistas a representar
Uma vista é a representação de um conjunto coerente de elementos arquiteturais, tal como
definido e interpretado pelos stakeholders
Adicionar informação ad hoc que não possa ser incluída nas vistas e que seja pertinente para a
interpretação correta da arquitetura (notas, argumentos, …)
Uma estrutura é o conjunto de elementos representados nas vistas
- Arquiteturas Distribuídas -
Rui Mendes Página 15 de 69
Software
Hardware
Estruturas de Módulo
Como deve o sistema ser estruturado em termos de unidades de código (módulos)?
Estruturas de Componente/conector
Como deve o sistema ser pensado em termos de comportamento em execução
(componentes) e interações (conectores)?
Estruturas de Alocação
Como se relaciona o sistema com estruturas não software (i.e., CPUs, sistemas de ficheiros,
rede, equipas de desenvolvimento, etc.)?
Estruturas de Módulo
Representação de unidades de implementação
Responsabilidade funcional
Que outros módulos pode este usar?
Com que módulos este se relaciona?
Herança, etc
Estruturas de Componente/conector
Como é que o sistema funciona?
Quais são os componentes principais na execução?
Quais as fontes de dados?
Que componentes poderão ser paralelizáveis?
Como é que a informação flui?
Estruturas de Alocação
Relações entre os elementos de software e elementos de sistemas externos
Qual a equipa de desenvolvimento responsável por determinado módulo?
Em que ficheiros são os elementos armazenados em cada uma das fase do ciclo de vida do projeto?
- Arquiteturas Distribuídas -
Rui Mendes Página 16 de 69
Que estruturas não descurar?
Módulo
Componente/conector
Concorrência e distribuição de funcionalidade
Desenvolvimento
Organização de módulos
bibliotecas
Subsistemas
unidades de desenvolvimento (fases de desenvolvimento)
Deployment
Informação sobre execução e mecanismos de comunicação
Modelação de arquitetura Exemplos de relações e notação em UML
Módulo B é parte do módulo A, módulo D depende do módulo C, e o módulo F é do tipo do módulo
E.
- Arquiteturas Distribuídas -
Rui Mendes Página 17 de 69
Decomposição e reutilização
Módulo
Unidade de implementação
Padrão
Comportamento repetitivo manifestado em diversos cenários, na implementação de um ou
mais módulos
A deteção de padrões é responsabilidade não apenas do arquiteto, mas também das equipas
de desenvolvimento
Reutilização
Capacidade de reaproveitar padrões em diversos cenários
Generalização
Capacidade de extrapolar padrões para ambientes diversos do original
Desenho de padrões
Não reinventar a roda!
Reutilizar soluções já conhecidas e de qualidade para problemas recorrentes
Estabelecer terminologias comuns para melhorar a comunicação inter e intra equipas
Padrões conhecidos
Gang-of-four
○ http://www.dofactory.com/Patterns/PatternAdapter.aspx
Refatorizar
Constantemente alterar e adaptar implementações para que seja mais fácil de interpretar e
simples de alterar
- Arquiteturas Distribuídas -
Rui Mendes Página 18 de 69
... a bit of history...
Prior to 1960 – Huge machines (e.g. ENIAC) – Only governments could afford computers
the 60's – Computer use developed commercially and was shared by multiple parties – The mainframe era
the 70's – The age of the microprocessor (1971 - Intel releases the 4004) – First commercial data networks
the 80's – IT operations grow in complexity and microcomputers are now split between the Personal
Computer and the Server the 90's
– The Internet gained immense popularity. – Companies required fast internet connectivity and nonstop operation to deploy systems and
establish a presence on the Internet. the millenium
– A fast growing Internet based economy required mass deployments of Servers with fast Internet access.
– The rebirth of the DataCenter
Dot.com bubble burst
The aftermath...
dot.com companies built overcapacity
– Datacenters full of computational capacity
– Democratization of broadband access (companies and individuals)
Cloud computing pioneers
– Salesforce.com
• Provides CRM application over the browser
• Low cost access over the Web to a previously unaffordable service
– Amazon Web Services
- Arquiteturas Distribuídas -
Rui Mendes Página 19 de 69
• In 2002 offers online storage service (S3)
• In 2006 launches Elastic Compute cloud (EC2)
Anyone could rent capacity and build/sell their services online.
....REWIND
Cloud Computing Precursors
Client-Server Model: Distributed applications which distinguish between providers (or servers), and
clients
Grid Computing: A virtual computer, composed of a cluster of networked, coupled computers (in
order to perform larger tasks).
Peer-to-Peer: Participants are both suppliers and consumers, using distributed architecture without
the need for centralization
Service Oriented Computing: Like cloud computing, this service-oriented version implements
computing techniques, leveraging software-as-a-service
– source: http://tinyurl.com/cjaol8a
Cloud Computing
New and smaller companies could not reach large audiences without building their own datacenter,
but…
Running a DataCenter is expensive
– Costs to much to built (real-estate, servers, network equipment, HVAC)
– Costs to much to run (energy, connectivity, network administration, systems management,
replacements, … )
There is a need to adapt existing capacity and resources to it's uses
– You hardly need an entire datacenter (or even a server) when deploying a first production
grade system prototype
What is Cloud Computing?
Service Oriented access to distributed computational, storage and network resources
Elastic resource provisioning
– Ability to upgrade AND downgrade computational and network resources
Software defined computational resources
– Virtualization technologies enable Cloud Providers to soft-define computational and network
resources
API based provisioning
- Arquiteturas Distribuídas -
Rui Mendes Página 20 de 69
– All provisioning aspects are handled programatically through a API (lowering costs associated
with admin staff)
Computing utility - Pay per use
– Pay only for what you use (no CAPEX)
Instant Scalability
– Instant deployment of new resources as requested
Reliability
– Professional management of hardware resources, 24h support
Efficiency
– Efficient use of resource, through large economies of scale
Typical granted access divided on layers
– Infrastructure as a Service (IaaS)
– Platform as a Service (PaaS)
– Software as a Service (SaaS)
There is no requirement for providing (or even using!) all layers
IaaS – Infrastructure as a Service (I)
Service access to virtualized servers, storage & networks
– E.g. Amazon (EC2, S3, EBS), Rackspace
Access to infrastructure stack:
– Full OS access
– Storage
– Routers
– Load balancing
Advantages
– Pay per use
– Instant Scalability
– Security
– Reliability
– APIs
- Arquiteturas Distribuídas -
Rui Mendes Página 21 de 69
Examples
The closest to the hardware layer made available on Cloud Computing
Abstracts and virtualizes the hardware layer
– Required by the other layers
– Provides an homogeneous platform from which to grow
“Oldest” layer available, so pretty much stable in terms of VMs migration. Stable, but not standard:
– According to E.G. Nadhan, standardization is somewhere between Discovery and Experience.
– Consensus, Simplification and Governance are on the far horizon
– http://tinyurl.com/d96axyo (12-22-2011)
IaaS – Virtualization
IaaS is made possible thanks to recent developments in virtualization technologies
Virtualization is a technique allowing to run several different systems in the same hardware, in a
totally separated manner.
Virtualization allows a single computer to play the role of several computers, through sharing
hardware resources to multiple environments.
Virtualization benefits: resource consolidation, security, encapsulation, homogenization, hardware
independence
Virtualization drawbacks: best effort availability, vendor lock in, poor I/O performance, overcommit
scenarios
PaaS – Platform as a Service
The abstraction of applications from traditional limits of hardware allowing developers to focus on
application development and not worry about operating systems, infrastructure scaling, load
balancing and so on.
– Examples include Google App Engine (Java, Python), MS Azure (.net), Heroku (RoR)
Platform delivery model
– Platforms are built upon Infrastructure, which is expensive
- Arquiteturas Distribuídas -
Rui Mendes Página 22 de 69
– Estimating demand is not a science!
– Platform management is not fun!
Advantages
– Pay per use
– Instant Scalability
– No sysadmin tasks
– Better Security
Examples
Usually consists of specially crafted software development kits (SDKs)
SDK enables applications to be aware of the cloud’s capabilities
– Ex.: scaling applications, controlling costs, etc.
Not so much standardized as IaaS, so standards de facto are used by some providers
– Several providers support migration from/to major providers
– Possible vendor lock-in may occur
SaaS – Software as a Service
Software-as-a-Service: Applications with a Web-based interface accessed via Web Services and Web
2.0.
– E.g. Google Apps, SalesForce.com and social network applications such as FaceBook
Software delivery model
– Increasingly popular with SMEs
– No hardware or software to manage
– Service delivered through a browser
Advantages
– No installation required
– Not platform specific
- Arquiteturas Distribuídas -
Rui Mendes Página 23 de 69
– Automatic upgrades
– Access your data anywhere
Examples
Typical solutions provide multi-tenancy
– Make it once, use it multiple times solutions
– Client customizable solutions
– One single running instance
Benefit from being deployed over the PaaS
– Can control the horizontal scaling (add/remove more processing nodes)
Typical access is done from thin clients or web browser
Anything as a Service (XaaS) (X as a Service)
IaaS, PaaS and SaaS are the original service layers, however…
Database as a Service, is one of the most commonly referred services
There’s more:
– Storage as a Service, Communications as a Service, Monitoring as a Service, ….
Cloud Provisioning Models
Public
Endorse the pay-as-you-go model
No upfront commitment, no maintenance
Computing as a true utility (just like water or gas)
– The more you use… the more you pay!
The computational limit is in your pocket (i.e. your credit card)
- Arquiteturas Distribuídas -
Rui Mendes Página 24 de 69
Private
Suitable on computational communities and companies
Big upfront commitment (Datacenter, hardware, licenses, …)
Fixed costs (IT Team, electricity, …)
Maintenance costs (hardware upgrades, …)
The computational limit is in the amount and usage of the facilities (just like the public cloud,
however, these are typically smaller)
Hybrid
Small Datacenter for every day operations
When scaling is required, reach for public providers
Grid Computing vs Cloud Computing
Grid Computing Cloud Computing
• Typical usage: batch scheduled execution of
long running operations
• Specific programming languages
• Mostly research scenarios
• Enables utilization of resources
• Accessible for some
• Typical usage: deployment of services for
clients
• Fairly common programming languages
• Mostly business scenarios
• Enables virtualization of resources
• Accessible for everyone
- Arquiteturas Distribuídas -
Rui Mendes Página 25 de 69
Moving to the Cloud?
Things to consider before moving to the cloud (1)
Estimate the application’s resources usage
Estimate the application’s growth requirements
Calculate the Total Cost of Ownership (TCO) for the application
– On a cloud provider
– On a regular hosting provider
– On your own Datacenter (if applicable)
Review the SLA of the cloud providers
Analyze the impact of outsourcing your business data
– And your users data!
Is there sensitive/personal data?
– In terms of data protection, what is the provider’s policy?
Are there any copyright issues?
Which law should be applied to your data?
– Cloud providers are available worldwide, capable of backing up data on geographically
different sites
– Service providers and Cloud providers may be of different countries
– Users and Service providers may be of different countries
– Depending on the countries’ rules, legislation on personal user data registration may differ
– More interestingly:
“Our data flows around in thousands of clouds, in deeply encrypted forms, ready to be used when
necessary. Earth bound nodes that transform the data are as deeply encrypted and reboot into a
deadlock if not used for 8 hours.
All attempts to attack The Pirate Bay from now on is an attack on everything and nothing. The site
that you're at will still be here, for as long as we want it to. Only in a higher form of being. A reality to
us. A ghost to those who wish to harm us.” http://thepiratebay.se/blog/224, 17th nov 2012
Cloud Computing - Pros
Lower cost of ownership
Reduce infrastructure management responsibility
Allows for unexpected resource loads
- Arquiteturas Distribuídas -
Rui Mendes Página 26 de 69
– During Christmas, purchases on your online shop skyrocketed? Scale-up the application only
during the peak season!
Faster application rollout
May provide not only services, but full blown operating systems
– With integrated backups
How does cloud economy work ?
– Multi-tenant
– Virtualization lowers costs by increasing utilization
– Economies of scale afforded by technology
– Automated update policy
Usage price
– Utility model, “Pay as you go”
Cloud Computing - Cons
Possible vendor lock-in
Usage price
– May become expensive
• But that means more resources are in use, which may be a good sign… unless poorly
configured!
– Should analyze the TCO
Copyrights and legal obligations are still a complex subject
When it rains, it pours!
– Remember the day Amazon crashed? 21st April 2011
• Reddit, Foursquare, GitHub, Indaba, etc…
• 24h+ outage on some sites
• 0,07% of irrecoverable data on one availability zone – multiply by a few thousands of
clients and…
– Remember the day Azure crashed? 29th February 2012
• About 10 hours outage worldwide
• No data loss
• Leap day bug on certificates issuing
Research Trends (I)
Standardization on PaaS layer
- Arquiteturas Distribuídas -
Rui Mendes Página 27 de 69
– How to prevent vendor lock-in?
– Can we endorse a transparent PaaS? Or is it better to use transversal PaaS switchers?
– Why do we need to understand the cloud’s insights? Do we need to understand the web
server’s insights?
Usage Optimization Models
– How to optimize cloud providers usage?
– How to optimize clients’ cloud usage?
– How to minimize costs?
– What is the impact of using a GPU-based cloud solution?
Multiple Clouds Usage
– Sky computing – deploying your software over multiple providers
– Cloud bursting – deploying your software internally and externally, if required
– Automatic selection over …
• best price/conditions
• estimated cloud usage
• External resources are seen as your own, for your clients
Volunteer Cloud Computing
– How to explore the idle resources outside the datacenter?
– Can we use your computer? Xbox? PlayStation?
Security
Disaster scenarios
- Arquiteturas Distribuídas -
Rui Mendes Página 28 de 69
“A distributed system is one in which the failure of a computer you didn’t even know existed can render your
own computer unusable.”
Leslie Lamport
Orientada ao Serviço
Definição
Acrónimo para “Arquitetura Orientada a Serviços”
Não é uma tecnologia, mas sim um paradigma de utilização de sistemas
Advoga a exposição de lógicas de negócio na web, como forma de gerar novas receitas e
aproveitar novos mercados
É uma abordagem que tem estado em voga, devido à rede global e a integração de serviços e
sistemas
Trata-se de um modelo de arquitetura cuja meta é aumentar a eficiência, agilidade e produtividade
relativamente a paradigmas anteriores, focando em serviços os meios pelos quais é representada a
lógica de negócio
http://www.youtube.com/watch?v=sbd_1G8Kqjs
- Arquiteturas Distribuídas -
Rui Mendes Página 29 de 69
Para que serve o SOA?
Dar maior relevo a produtos (lógicas) comerciais de empresas
“Alavancar” um modelo de negócio
Permite que uma dada empresa se concentre na sua área de especialização, podendo usar
serviços disponibilizados por outros
Criar melhores sistemas, desenvolvidos sobre serviços já testados
SOA – Princípios gerais e boas práticas
Reusabilidade
os serviços disponibilizados poderão ser potencialmente reutilizados noutros cenários
Granularidade
sendo específicos o suficiente para a resolução do problema
Modularidade
auto-suficientes, no sentido em que o serviço possa ser entendido como um módulo que
processa de forma independente e autónoma uma dada instrução
Composabilidade e Componentização
suportar composição de serviços mais elaborados, usando para tal os próprios serviços como
componentes orquestrados ou encadeados numa dada sequência
Adesão a standards
permite maximizar as potencialidades de interoperabilidade do serviço com outros.
Identificação e categorização de serviços, provisionamento, entrega, monitorização e
acompanhamento
os serviços em produção deverão ser corretamente identificados e categorizados, de forma a
facilitar a tarefa (manual ou automatizada) de pesquisa e retorno do serviço correto para
uma dada operação
SOA – Princípios específicos
Encapsulamento
O serviço é visto como uma “caixa negra”, onde o importante, do ponto de vista de utilização
do mesmo é saber quais os dados esperados à entrada, e qual o resultado esperado à saída.
Separação da camada de negócio da tecnologia de base
uma vez que o serviço está abstraído numa caixa negra, é em qualquer instante possível
alterar a tecnologia base, mantendo a lógica de negócio.
Implementação única e vista global de componentes
- Arquiteturas Distribuídas -
Rui Mendes Página 30 de 69
Corolário dos princípios gerais, visto que se os serviços devem ser reutilizados em serviços
cada vez mais complexos, então estes deverão ter implementação única na empresa/meio
onde serão usados, estando ao mesmo tempo visíveis e disponíveis para composição de
outros serviços.
Reaproveitamento de lógicas existentes sempre que possível
se for possível adaptar um serviço para ser interoperável quando até então servia apenas
uma aplicação, é uma abordagem que ganha todo o tempo de desenvolvimento da fase de
operação com uma única aplicação.
Serviços vagamente unidos – loosely coupled services
Os serviços dependem de si em primeiro lugar, mas para poderem comunicar com outros,
dependem dos manifestos ou contratos destes
Os contratos indicam o que o serviço necessita para funcionar (parâmetros de entrada) e o
que retorna no final da execução,
Gestão do ciclo de vida
Tal como em qualquer sistema em produção, será necessário gerir o ciclo de vida do serviço.
Uso eficiente de recursos do sistema
Cenários de interoperabilidade conferem um potencial de maior utilização dos serviços
disponibilizados, estes deverão acautelar questões de desempenho e escalabilidade da
operação para casos de elevada utilização.
Maturidade e desempenho do serviço
Os serviços disponibilizados deverão estar já num ciclo de vida de produto que permita
garantir a sua robustez e desempenho.
Serviço
Um serviço é uma unidade autónoma que não dependente da plataforma, e que pode ser publicado,
descoberto e agregado a outros de novas formas, não necessitando de contextos ou estados de
outros serviços para satisfazer a sua função
pode, contudo, invocar outros serviços como parte do seu processo de execução
Qualquer componente lógico de uma aplicação pode ser transformado num serviço usável em rede
Serviço de reserva de bilhetes apenas disponível numa aplicação de call center pode
rapidamente ficar disponível na web, em diversas aplicações e cenários
- Arquiteturas Distribuídas -
Rui Mendes Página 31 de 69
Encadeamento de serviços
Orquestração
Considerando os serviços como unidades de processamento bem definidas através de manifestos ou
contratos é possível encadear vários serviços, criando assim novos serviços de possivelmente maior
valor
Tal como numa orquestra, também em SI podemos coordenar, ou orquestrar.
BPEL – business process execution language – é o standard de orquestração
Explicando graficamente
Livraria online
Empresa financeira
Utilização de serviços
Dependendo da natureza da prestação do serviço, podem ser necessários mecanismos que
garantam:
Confiança
○ A empresa XPTO confia nas informações que lhe são prestadas pela empresa ou
aplicação ABCD
Não repudiação
○ A empresa ou aplicação ABCD é responsável pelas informações dadas, e é garantida
a autenticação desta perante o serviço
○ Esta autenticação permite à empresa fornecedora efetuar desde registo de
operações até contabilidade e faturação sobre as mesmas
- Arquiteturas Distribuídas -
Rui Mendes Página 32 de 69
○ Exemplo de serviços com esta lógica: amazon.com
Da teoria à práctica
Como se passa de um modelo conceptual SOA para a prática?
O uso de web-services tem sido o mais recorrente para colocar um modelo de SOA em
prática
Web-Services
Encapsulados em envelopes SOAP
Baseados em XML
○ Esquemas standard
Definem contratos de utilização do serviço
○ WSDL – web service definition language
○ Especifica o que é esperado à entrada e qual o tipo de resultado esperado
SOA na UA
http://api.web.ua.pt
Diretório de serviços
○ UA
○ SAPO
○ PTInovação
○ Disciplinas
SOA no Sapo
https://store.services.sapo.pt/pt/Catalog
- Arquiteturas Distribuídas -
Rui Mendes Página 33 de 69
Potencialidades de SOA - exemplos
Integração de informação de forma distinta
Mashups
www.dipity.com
http://www.openmashup.org/omadocs/v1.0/index.html
Vista de processo de negócio
Definição
Por processo de negócio entende-se qualquer atividade cujo objetivo seja a de satisfazer uma
necessidade ou desejo de um participante
Intervenientes
Um interveniente é uma entidade individual humana ou não humana ou um aglomerado de
entidades que tenha um interesse no estado do serviço ou no resultado do uso do mesmo.
- Arquiteturas Distribuídas -
Rui Mendes Página 34 de 69
Participante
Interveniente que interage no processo
O interesse primário está no uso bem-sucedido de serviços
Não participante
Intervenientes que não interagem no processo
Podem ser afetados pelo uso ou provisionamento de recursos
Podem ter interesse no resultado do processo
○ Aplicação de taxas, por exemplo
Fornecedor de serviço
Trata-se de um participante que oferece um serviço que pode ser usado por outros
Consumidor de serviço
Trata-se de um participante que necessita de interagir com o serviço para aceder a algo que
este fornece
Agente
Entidade capaz de agir em nome de uma pessoa ou organização
É necessário para que os participantes possam oferecer, consumir e de uma forma geral
participar no processo
Exemplos: Aplicações de software, dispositivos de hardware, ...
- Arquiteturas Distribuídas -
Rui Mendes Página 36 de 69
O que não é
O que é
Semelhante ao ciclo de vida de produto
Identificação, Especificação, Modelação, Desenvolvimento, Pré-produção, produção,
Avaliação e … Identificação.
Foca-se nos aspetos de
Interoperabilidade
Composição
Reutilização
Deve ter em consideração também o fim de ciclo: o que acontece ao serviço quando já não se afigura
necessário?
Ciclo de vida
- Arquiteturas Distribuídas -
Rui Mendes Página 37 de 69
Tipos de desenvolvimento de serviço
A semelhança de qualquer aplicação, há várias formas de desenvolvimento.
Code-first
Contract-first
Code-first
Desenvolvimento das funcionalidades em primeiro lugar
No fim, adequa-se a integração como serviço
Ou seja, faz-se o código e no fim geram-se os contratos
Vantagens
up and running mais depressa?
Contract-first
Especifica-se como o serviço interage em primeiro lugar
Depois, preenchem-se os espaços em branco com código
Ou seja, geram-se os contratos primeiro e só depois o código
Vantagens
possibilidades de integração a partir do momento de especificação?
- Arquiteturas Distribuídas -
Rui Mendes Página 38 de 69
Code-first vs contract-first
O que está em questão?
Saber como resolver as questões de interoperabilidade
O que vai ficar nas mãos de ferramentas de tradução?
A especificação do contrato?
A geração de um stub a partir do contrato?
Até que ponto as ferramentas podem ajudar?
Referências
http://www.oracle.com/technetwork/articles/entarch/soa-service-lifecycle-design-096035.html
Comunicação entre módulos
CORBA? Popular em tempos
○ Implementações em Windows e Linux (tipicamente JAVA e C++) Problemas de APIs, segurança, concorrência, etc.
DCOM? Problemas semelhantes a CORBA
RMI? Específico de JAVA
Web-services! SOAP
○ Envelopes de XML REST Independentes da linguagem
Web-Services
Tipicamente disponibilizados como informação em XML
Envelopes SOAP
Comunicados via http
SOAP (Simple Object Access Protocol)
Encapsula informação a ser comunicada na rede
A comunicação entre aplicação e serviço é normalmente feita usando protocolos como HTTP ou
HTTPS, mas pode também ser feita com outros (SMTP, por exemplo)
- Arquiteturas Distribuídas -
Rui Mendes Página 39 de 69
A vantagem do HTTP e HTTPS é que passam com maior facilidade por firewalls
A maior desvantagem é que o SOAP é também ele XML, pelo que uma mensagem simples
pode ficar bastante maior quando passada na rede
WSDL (Web Service Description Language)
Descreve as funcionalidades disponíveis no web service:
Métodos
Argumentos de entrada
Valores de retorno
É no fundo o que explica o que a “caixa negra” faz
É um contrato que vincula o consumidor e fornecedor do método, em termos de troca de dados
Podem ser usados por ferramentas que geram o código para acesso ao web-service de forma
automática
REST (REpresentational State Transfer)
Apresentado na tese de doutoramento de Roy Fielding
Um dos autores do HTTP (rfc2616 )
Outra forma de usar recursos (resources) de servidores remotos
Tudo são recursos
Cada recurso tem um URI único
Interface uniforme para manipular os recursos
Como protocolo
Stateless
Cacheable
○ Podem ser guardadas versões do recurso durante a sua transferência pela rede
Uma página Web é um recurso REST
A forma da página, é uma representação desse recurso
Em REST, um recurso pode ter várias representações
É o cliente que pede uma representação específica, de acordo com as disponibilidades do
servidor
O estado do recurso é transferido do servidor para o cliente e vice-versa
É mais “limpo” que SOAP
REST
WS
POST /generic_message_handler
- Arquiteturas Distribuídas -
Rui Mendes Página 40 de 69
POST /purchase_orders HTTP/1.1 Host: accounting.mycompany.com content-type: application/purchase-order+xml .... <po>...</po>
content-type: application/SOAP+XML <soap:envelope> <soap:body> <submit-purchase-order> <destination>accounting.mycompany.com</destination> <po>...</po> </submit-purchase-order> </soap:body> <soap:envelope>
WADL (Web Application Description Language)
Semelhante a WSDL, mas tipicamente usado com serviços REST
Trata-se de uma proposta da SUN que não passou para norma W3C
http://www.w3.org/Submission/wadl/
“As of today, W3C has no plans to take up work based on this Submission.” (W3C,
2009/10/14)
Uma das questões levantadas é da real necessidade de sua existência
○ http://bitworking.org/news/193/Do-we-need-WADL
JSON (JavaScript Object Notation)
Também pode ser lido como “Jason”
Formato mais simples que XML para intercâmbio de informação
À semelhança de XML
permite ser lido tanto por máquinas como por humanos
É independente da linguagem e/ou arquitetura do sistema
JSON – Tipos de dados
Duas estruturas
Objeto
○ Coleção de pares nome/valor
Lista de valores
Objeto
Conjunto não ordenado de pares nome/valor
{ “nome” : valor , “nome1”:valor1, ... }
Lista ou array
Coleção ordenada
[ valor , valor1, valor2, ... ]
- Arquiteturas Distribuídas -
Rui Mendes Página 41 de 69
JSON – Tipos de valor
Texto -> “txt”
Número -> 123
Objeto -> { ... }
Array -> [...]
Verdadeiro -> true
Falso -> false
Nulo -> NULL
JSON – esquematização lógica
object
{}
{ members }
members
pair
pair , members
pair
string : value
array
[]
[ elements ]
elements
value
value , elements
value string
number
object
array
true
false
null
JSON vs XML – Tipos de dados
JSON XML
Tipo de dados escalares nativos como base
Dados estruturados
Arrays
Todos os tipos de dados são definidos via
um esquema
- Arquiteturas Distribuídas -
Rui Mendes Página 42 de 69
objetos
Hierarquia de tipos de dados
JSON vs XML – Suporte de listas
JSON XML
Suporte nativo
Um array tem que ser especificado no schema,
tipicamente por intermédio de um elemento exterior
que permite que os filhos sejam repetidos
JSON vs XML – Suporte a objetos
JSON XML
Suporte nativo Um objeto tem que ser definido no schema, por
intermédio de elementos e atributos
- Arquiteturas Distribuídas -
Rui Mendes Página 43 de 69
JSON vs XML – Nulos
JSON XML
Suporte nativo Através de xsi:nill (e importação de respetivo
namespace)
JSON vs XML – Comentários
JSON XML
Não suportados Sim
JSON vs XML – namespaces
JSON XML
Não existe esse conceito
Colisões de nomes iguais são tratadas com prefixos
nos nomes: “carro.cor”
Suporte nativo
JSON vs XML – tamanho
JSON XML
Formato simples e compacto
Formato mais textual
Pode ser mais extenso, principalmente nas listagens
de elementos
- Arquiteturas Distribuídas -
Rui Mendes Página 44 de 69
JSON vs XML – uso em Javascript
JSON XML
É baseado na sintaxe do JavaScript, pelo que não é
necessário nenhum parser extra
Requer um parser de XML DOM (Document Object
Model)
Necessita de código extra para passar de XML DOM
para objetos JavaScript
JSON vs XML – curva de aprendizagem
JSON XML
Conceitos simples, acessíveis a quem tenha já
conhecimentos de JavaScript ou outras linguagens
semelhantes
XPath
XML Schema
XSLT
XML Namespaces
DOM
...
JSON vs XML – exemplos
Exemplo1
JSON XML
- Arquiteturas Distribuídas -
Rui Mendes Página 46 de 69
Segurança e confiança em arquiteturas distribuídas
Que garantias tenho sobre o serviço que estou a usar?
Acesso aos meus dados?
Adulteração dos meus dados?
Que garantias tem o serviço sobre quem o está a invocar?
Acesso aos dados?
Alteração? Introdução?
Tempo de processamento?
Espaço de armazenamento?
Web–Services: Segurança e confiança
Segurança
Comunicações cifradas
Autenticação de ambos os intervenientes através de certificados digitais
WS-Security e WS-SecurityPolicy
Confiança
WS-Trust
- Arquiteturas Distribuídas -
Rui Mendes Página 47 de 69
SAML
Diretório de serviços
UDDI (Universal Description, Discovery and Integration)
Serviço externo aos web services
As “páginas amarelas” dos WS
Permitem o registo e pesquisa de web services (através de web-services)
Dados
BusinessEntity
BusinessService
BindingTemplate
- Arquiteturas Distribuídas -
Rui Mendes Página 49 de 69
UDDI - vivo ou morto?
Não é relevante
O conceito subjacente é importante
UDDIs e alternativas
Apache Java UDDI aka jUDDI (Maio 2011)
http://apachejuddi.blogspot.com/
Microsoft UDDI
DNS for REST Web Service
http://www.infoq.com/articles/rest-discovery-dns
Serviços semelhantes
Ex: WSo2, SAP, etc…
Referências
http://www.w3.org/2002/ws/arch/
http://dx.doi.org/10.1007/s10796-009-9221-9
- Arquiteturas Distribuídas -
Rui Mendes Página 50 de 69
Criação de sistemas em ambientes distribuídos
Segurança
Projeto de alto risco (se pelo menos dois critérios não sejam cumpridos…)
Aplicação única
Falta de documentação
Equipa de desenvolvimento pouco madura
Sem escalonador automatizado
Requisitos pouco claros
Segurança - Objetivos
Confidencialidade
Integridade
Disponibilidade
Segurança - O que considerar para segurança?
Depende do sistema em questão
Métrica de segurança
Requisitos específicos por sistema
Requisitos de segurança
Ameaças
○ Circunstância ou evento que pode ser prejudicial
Disponibilização, modificação ou destruição de informação
Inviabilização de serviços
Vulnerabilidades
○ Falhas ao nível dos sistemas de controlo
Ameaça + Vulnerabilidade = RISCO!
Qual o impacto de implementação de segurança
Custo?
Performance?
Disponibilidade?
Definição de políticas de segurança
Níveis de acesso
Níveis de permissões
DMZs
Firewall
Cifra de dados
- Arquiteturas Distribuídas -
Rui Mendes Página 51 de 69
Autenticação forte
Certificados
X.509
Permite
○ Comunicação segura
○ Princípio da não repudiação
○ Mecanismos de accounting mais fidedignos
Segurança
Como evitar…
Man in the middle?
Eavesdropping?
DoS?
…?
Concorrência
Computação em sistemas distribuídos, é por natureza, concorrencial
Como evitar dead locks no acesso aos nossos serviços?
Como evitar questões de acesso concorrente a dados?
Propriedade Intelectual
Necessidade de clarificar e especificar, de forma previamente acordada, sobre quem deverá deter a
prop. intelectual
Gestão conteúdos, administração e auditoria
Que interfaces de gestão terei à minha disposição?
Que tipo de permissões terei sobre a informação?
Como posso controlar quem, como, de onde e quando foram consultados os meus dados?
- Arquiteturas Distribuídas -
Rui Mendes Página 52 de 69
Acesso a serviços via browser (usando AJAX)
Ajax
Assyncronous Javascript And XML, mas não é acrónimo
Traduzindo por miúdos, chamadas do lado do cliente fora da ordem de chamada de página
Pode usar XmlHttpRequest
Nome pompososo para dizer que é um pedido HTTP que vem formatado em XML
○ Com a entrada em cena de HTML5 há um XMLHttpRequest2
Pode também utilizar jQuery do lado do cliente para auxiliar nas concretização das
funcionalidades pedidas
A informação pode também ser devolvida em JSON
Ciclo de vida de página
Ajax (continuando)
Entretanto, o utilizador aguarda que a página carregue
Mesmo que assim que esta carregar ele selecione outro link
Como resolver esta situação?
Dividindo a página em blocos mais pequenos que podem ser carregados de forma autónoma
- Arquiteturas Distribuídas -
Rui Mendes Página 53 de 69
Uma espécie de “pequenas” páginas na página grande
○ NAO CONFUNDIR COM IFRAMES
Estes pequenos blocos irão ligar-se ao servidor da mesma forma, mas:
irão consultar menos sistemas
menos bases de dados
menos serviços externos
Logo, cada um deles carregará mais rápido
Assim como na hora de carregar, também na hora de processar pode-se usar Ajax
Significa que APENAS os campos importantes para o pedido são enviados
A página em si não altera
Não há refrescamento (reload)
Não fica menção no histórico da alteração
Alterações invisíveis no código da página
Depois de processada, o bloco alterado pode ser modificado
É também possível forçar uma alteração noutro bloco
Conseguimos desta forma páginas web com uma interatividade mais rica
RIA
Ajax - problemas
A navegação não fica no histórico
Não é linear a gravação nos favoritos
Crawlers, como o google, yahoo, etc não “vêem” a informação que é apenas acessível via Ajax
Sem ovos não há omeletes, e sem javascript, ou com ele desativado, não há Ajax
- Arquiteturas Distribuídas -
Rui Mendes Página 54 de 69
Ajax - vantagens
Potencia maior interatividade
Aumenta o controlo sobre a quantidade de dados processados pelo servidor em cada instante
Pode levar a um aumento da disponibilidade do servidor
Permite comunicação assíncrona
A página pode interagir com o servidor sem ser por intervenção do utilizador
Do mesmo modo, o utilizador pode interagir com a página sem que esta tenha “carregado”
completamente
Ajax - potencialidades
https://github.com/mui/mochaui
http://mochaui.com/demo
http://layout.jquery-dev.net/demos.cfm
…
- Arquiteturas Distribuídas -
Rui Mendes Página 55 de 69
Escalabilidade
Capacidade do serviço manter a disponibilidade, fiabilidade e performance
à medida que o tráfego simultâneo dirigido ao serviço (a carga) aumenta
Cenário típico de aplicações em produção: são muito bonitas, fazem muita coisa, mas… quando se passa
de um servidor para meia dúzia de pedidos por minuto para um servidor para milhares de pedidos por
minuto, será que a aplicação aguenta?
Performance
Relacionada com a eficiência na resposta a pedidos web
Principais fatores que afetam a performance
Arquitetura da aplicação
Qualidade de construção/implementação
Conectividade a base de dados
Capacidade da rede interna
Capacidade da rede externa
Conectividade a serviços
○ Web services
○ Rss feed
○ …
Recursos de hardware
- Arquiteturas Distribuídas -
Rui Mendes Página 56 de 69
Performance - Questões fundamentais
Quanto tempo demora responder a um pedido?
Em quanto se degrada a performance com pedidos acrescidos?
Escalabilidade linear
Escalabilidade linear em função de carga
A performance é degradada a um ritmo constante
Escalabilidade linear em função de recursos
A performance melhora a um ritmo constante com a adição de recursos
É meramente teórica. A adição de novos recursos implica lógica adicional para os gerir (exige tempo
e processamento)
Escalabilidade - Efeito de carga
Escalabilidade - Efeito de hardware
- Arquiteturas Distribuídas -
Rui Mendes Página 57 de 69
Escalabilidade - Arquitetura da aplicação
Aplicações com arquiteturas erradas não escalam
Podem ter bom comportamento para cargas baixas, mas com muita carga, vão abaixo
Escalabilidade - Implementação
“o código não está otimizado”
Até que ponto se deve otimizar o código de algo que ainda não provou o que vale?
Escalabilidade - Base de dados
Acesso a informação
Quando um processo acede a uma linha de informação numa tabela, o que acontece ao
resto da tabela?
- Arquiteturas Distribuídas -
Rui Mendes Página 58 de 69
Escalabilidade - Capacidade da rede interna
Escalabilidade - Rede interna
- Arquiteturas Distribuídas -
Rui Mendes Página 59 de 69
Escalabilidade - Vertical vs Horizontal
Escalabilidade Vertical!
“o servidor não é rápido o suficiente”
Upgrade de servidor para um mais rápido
Quanto custa um servidor com o dobro da capacidade?
Escalabilidade Horizontal
“um servidor não chega”
Adquire-se outro para processamento paralelo
Dois não chegam? Juntam-se mais.
Qual o preço de aumentar a capacidade?
Escalabilidade - Implementação e Arquitetura
Implementação
Melhorias permitem escalar a aplicação algumas vezes
Arquitetura
Melhorias permitem escalar muitas mais vezes (várias ordens de grandeza acima)
Modularidade
Diz-se de um sistema ou aplicação se este permitir particionar a sua lógica em componentes mais
pequenas
Cada módulo é independente dos demais
Se uma aplicação é constituída por módulos
Pode-se detetar quais os “botleneck” do sistema e atuar sobre eles
○ Otimizar
○ Escalar os recursos à disposição
- Arquiteturas Distribuídas -
Rui Mendes Página 61 de 69
Cache
De grande utilidade se houver conteúdos acedidos frequentemente
Pode ser prejudicial se for colocada em cache informação que não é necessária
O ganho de devolver da cache não é superior aos recursos (tempo, processamento, etc)
gastos a guardar e verificar a sua existência)
Breve noção de funcionamento
Cliente pede documento noticias.php
Servidor verifica se existe na cache
Caso exista, verifica a sua validade temporal
Se existir e for válida, devolve a cópia terminada do documento
Caso contrário, gera a página pedida
Acede a todo o sistema de informação e gera a página
Devolve a página ao utilizador e armazena em cache para futuras utilizações
Cache - Níveis
Cache de BD
Resultado de um select é usado por vários pedidos subsequentes
Cache de página
Resultado da geração de uma página é usada por vários pedidos subsequentes
Pode ser ao nível do servidor e do cliente
○ Tudo depende da informação de cache que a acompanha
Cache - do’s & dont’s
Quando usar
Conteúdos esporadicamente alterados
Nº de acessos a páginas específicas superior à média do site por ordem(s) de grandeza
Quando não usar
Conteúdos altamente dinâmicos
Conteúdos altamente específicos de um utilizador
- Arquiteturas Distribuídas -
Rui Mendes Página 62 de 69
Workers Os trabalhadores incansáveis e as filas de tarefas
Usados para comunicação entre serviços/sistemas
Acesso a base de dados para modificações
Permitem despoletar tarefas agendadas de forma simples
Backups, replicação, atualização de BD, etc.
Podem aliviar a carga das bases de dados
Guardam os pedidos enquanto a BD estiver ocupada com outros pedidos
O que acontece se um worker com tarefas em fila falha/pára/morre?
Pode ter implementados métodos de saber o “andamento” da fila
Via XmlHttpRequest indica ao utilizador que faltam 15 segundos…
Permite aumentar o número de pedidos/sec feitos ao sistema
A resposta mantém-se
Server Farm Quinta de servidores?
Simplificadamente é “um conjunto de servidores logicamente equivalentes com um distribuidor de
carga na entrada”
Distribuidor pode ser hardware ou software
Processo que permite colocar servidores em funcionamento paralelo
Todos os servidores devem suportar as mesmas funções
Cluster?
Sistema redundante
desde que corretamente implementado
- Arquiteturas Distribuídas -
Rui Mendes Página 63 de 69
Sempre que haja possibilidade de perda de dados ou comunicações, adulteração de informação ou entrega
de informação a terceiros não autorizados, estamos perante riscos de segurança
Tipos de ataque
Eavesdropping
Man in the middle
DoS
SQL Injection
Identity Spoofing
…
Eavesdropping
Alguém está à escuta e, a meio da comunicação, encontram informações que podem ser utilizadas
indevidamente.
- Arquiteturas Distribuídas -
Rui Mendes Página 65 de 69
Denial Of Service
Tipicamente levado a cabo pelas chamadas botnets
Traduz-se no consumo de recursos: rede, espaço em disco ou tempo de CPU
SQL Injection
Permite adulterar dados armazenados
Pode, inclusivamente, permitir a destruição de bases de dados
É possível, em certos casos, que o atacante tenha acesso a dados não previstos pelo método
invocado
Identify Spoofing
- Arquiteturas Distribuídas -
Rui Mendes Página 66 de 69
Serviços seguros
Como endereçar estes problemas?
Depende de vários fatores:
o Nível de controlo de recursos de rede e de controlo de admissão (firewall, etc.)
o Tecnologia usada na nossa aplicação
Pode influenciar a forma de resolução de problemas. Ex.: utilização de SOAP vs. ReST
Comunicação Segura
Certificado Servidor
De um modo geral, sempre que possível, deve-se optar por ter a aplicação sobre HTTPS, com
certificado válido de servidor.
Certificado Cliente
Permite assegurar a identidade do cliente
Não é aplicável em todos os cenários
o Questões de custos
o Processamento
- Arquiteturas Distribuídas -
Rui Mendes Página 67 de 69
Continuando…
Como vimos, os certificados de servidor são úteis para evitar ataques eavesdropping, man in the
middle e identity spoofing.
E os restantes ataques identificados?
o Carecem de estratégias mais elaboradas e, muitas das vezes, menos standard, visto
dependerem das tecnologias em questão.
Todos menos… SQL Injection!
Quando acontece? Acessos a BD não controlados
SQL Injection
Queries devem ser parametrizadas
o Via stored procedures
o Via chamadas com parâmetros
- Arquiteturas Distribuídas -
Rui Mendes Página 68 de 69
Finalmente… como garantir a segurança de serviços?
Um serviço implica uma abertura da nossa informação ao mundo
o O que na realidade queremos é a abertura da nossa informação aos utilizadores que devem
ter acesso!
Dependendo do tipo de utilizadores, podem ser pensadas estratégias distintas
Comunicação
Serviço *Serviços
De entre as opções standard, escolher a que melhor se enquadra.
Neste caso, é possível utilizar certificados cliente para autenticação bidirecional
Usando web services SOAP há também a possibilidade de utilizar os cabeçalhos da SOAP para troca
de credenciais
o É necessário que os * serviços consigam comunicar por SOAP
Serviço Browser/Mobile
Em ambos os casos a utilização preferencial será composta por serviços ReST e troca de dados
agregados em JSON
o Não esquecer que o que é pedido na query é público!
No entanto, trata-se de duas utilizações distintas
- Arquiteturas Distribuídas -
Rui Mendes Página 69 de 69
o No caso do Mobile, tipicamente existirá uma aplicação fechada, que pode incluir chaves
partilhadas
o No caso do Browser, o acesso ao código de invocação dos serviços é linear, pelo que é
necessário ter uma maior reserva sobre o modo de atuar
Serviço Browser (ReST + JSON)
A forma mais comum recorre a um token de autenticação
o Gerado num momento anterior ao pedido
pelo servidor ou por um terceiro, se for um cenário federado
o Passado em todos os métodos como parâmetro
Token pode ainda ser encapsulado num HMAC (Hash-based Message Authentication Code)
o Garante a validade de toda a mensagem
o Útil em cenários sem certificado de servidor
o Pode agregar no HMAC a informação que se entender
Exemplo: user token, timestamp, apikey, parâmetros específicos do método, etc
Serviço Browser (Identificação segura do cliente)
No cenário tradicional, o utilizador autentica-se perante a aplicação para poder aceder à informação
o Deste processo resulta, em regra um Cookie que é enviado para o cliente. Este garante a
validade dos acessos subsequentes.
o No entanto, nem todos os dispositivos estão preparados para cookies…
A garantia da identidade do cliente pode depender dos requisitos do browser
Sugestão:
Método inicial de autenticação do utilizador que devolve um token (com validade temporal)
Do lado do cliente este token é armazenado
Token é enviado com cada nova chamada de métodos
Dica:
Analisar comportamento de soluções de single sign on, como por exemplo oAuth
o Serviços de teste online:
http://term.ie/oauth/example/index.php e
http://term.ie/oauth/example/client.php
o Utilização de oAuth na UA
http://api.web.ua.pt/pt/services/universidade_de_aveiro/oauth