Escolar Documentos
Profissional Documentos
Cultura Documentos
BELO HORIZONTE, MG
2012
BELO HORIZONTE, MG
2012
BANCA EXAMINADORA
_________________________________________________
_________________________________________________
_________________________________________________
Resumo
Este trabalho apresenta uma introduo aos conceitos de Service Oriented
Archictecture (SOA), entre eles: servios, orientao a servios e princpios de
design de servios. Adicionalmente, so definidos os conceitos de escalabilidade de
software e os principais problemas enfrentados ao se tentar construir sistemas mais
escalveis. Em seguida, realizada uma anlise em cima de diversas tecnologias e
estratgias, entre elas: Shared Nothing Architecture, Event Driven Architecture,
Enterprise Service Bus, SOA Patterns e Cloud Computing, sobre quais os ganhos
que elas trazem para o aumento de escalabilidade e o porqu de SOA se relacionar
com tais mtodos.
Palavras chave: Service Oriented Architecture, SOA Patterns, Infraestrutura
SOA, Escalabilidade.
Abstract
This paper presents an introduction to the concepts of Service Oriented
Archictecture (SOA), including: services, service-orientation and principles of service
design. Additionally, its defined the concepts of software scalability and the main
problems faced when trying to build more scalable systems. Then an analysis is
performed on various technologies and strategies, including: Shared Nothing
Architecture, Event Driven Architecture, Enterprise Service Bus, SOA Patterns and
Cloud Computing, on which gains they bring for increasing scalability and why SOA
relates to such methods.
1
2 SOA - CONCEITOS
Segundo Carl August Simon(SIMON, 2005), "Arquitetura Orientada a Servios
(SOA) um framework organizacional e tcnico que permite uma empresa distribuir
suas funcionalidades de negcio, independente de plataforma tecnolgica, como
peas para construo de aplicaes". Alm desse conceito, SOA possui as
seguintes definies, de acordo com grandes nomes existentes no mercado:
"Service Oriented Architecture (SOA) uma arquitetura para construo de
aplicaes de negcio a partir de um conjunto de servios com baixo
acoplamento armazenados em uma 'caixa preta' e orquestrados de forma a
entregar resultados alinhados com os objetivos de negcio de uma
empresa. (IBM, citado por MELO, 2012, p. 8)
um estilo de arquitetura de software cujo princpio fundamental prega que
as funcionalidades implementadas pelas aplicaes devem ser
disponibilizadas na forma de servios. Frequentemente, estes servios so
conectados atravs de um "Barramento de Servios" (Enterprise Service
Bus, em ingls), que disponibiliza interfaces ou contratos, acessveis
atravs de webservices ou outra forma de comunicao entre aplicaes.
(Wikipdia, citado por MELO, 2012, p. 8)
SOA uma forma de tecnologia arquitetural que adere aos princpios de
orientao de servios. Quando realizada atravs do uso de Web Services,
SOA atinge o potencial para suporta e promover estes princpios atravs
dos processos de negcio e automao dos domnios corporativo. (ERL,
2005)
Caso contrrio, o produto final ser apenas uma integrao entre sistemas legados
que no expem o negcio atravs de contratos e servios.
Antes de mencionar sobre esses princpios e prticas, ser feita uma breve
definio sobre servios e orientao a servios nas prximas sees.
3 SERVIOS
Um servio em SOA um componente de software que possui uma forte
relao com o processo de negcio, segundo a Mulesoft (MULESOFT, 2013)
Servios so unidades lgicas auto suficientes que realizam atividades especficas.
Possui uma maior importncia a partir do conceito de orientao a servios, citado a
seguir. Graas a esse conceito, o servio contm uma srie de caractersticas que o
diferenciam de componentes criados com outras abordagens. Algumas dessas
caractersticas so: (i) possuir uma ou mais operaes e ser descrito atravs de um
contrato e (ii) ter a capacidade de utilizar outros servios que se completam na
execuo de uma atividade, se tornando reutilizvel. (ERL, 2005)
O contrato mencionado na primeira caracterstica composto de um ou mais
documentos que descrevem metainformaes sobre o servio. Desses documentos,
o mais importante o que descreve sua interface tcnica, ou seja, sua API e quais
operaes o servio pode prover. Adicionalmente, este contrato pode ser resumido
em uma linguagem mais legvel para o usurio, no formato de SLAs3.
sejam
descobertas
entendidas
por
humanos
4 ESCALABILIDADE
A escalabilidade a capacidade de um sistema crescer e continuar
atendendo requisies, dado que a carga de acesso ao mesmo aumenta. Um
sistema pode ser escalvel horizontalmente ou verticalmente.
Mas, onde SOA se relaciona com SNA? SNA trata de uma abordagem que
utiliza o baixo acoplamento entre os componentes e, conforme visto na seo 8, um
dos princpios que guia a orientao a servios e, consequentemente, SOA, o
Loose Coupling Services. Dessa forma, utilizando SNA com SOA, tem-se uma
arquitetura onde cada servio seria responsvel por lidar com seus prprios
recursos, sem compartilh-los, minimizando os pontos de falha. Esta estratgia torna
o uso de SNA com SOA uma soluo altamente escalvel horizontalmente.
(OLIVEIRA, 2013)
Uma desvantagem desta abordagem que eventualmente os dados tero
que ser compartilhados. Ento, como tratar um cruzamento de funcionalidades
entre, por exemplo, usurio e conta bancria? Seria necessrio acessar os dados do
usurio e, em seguida, envi-los para os servios responsveis pela conta bancria
para ter o retorno do processamento. Essa comunicao entre diferentes ns
causaria um aumento no trfego da rede.
Por fim, possvel utilizar SNA sem SOA. Porm, o que difere SOA de outros
tipos de aplicao so seus princpios, que prezam pela no manuteno de estado,
evitando sua gerncia e propagao entre os diferentes ns da arquitetura. Essa
abordagem facilita a utilizao de SNA a partir dos princpios de design de servios.
Figura 2 - ESB como camada de integrao entre diferentes plataformas (SOAEXPERTb, 2012)
mltiplos eventos em grandes volumes para dar a eles significado e ajuda a buscar
padres em eventos aparentemente sem relacionamentos, tomando decises
inteligentes (MALEKZADEH, 2010, p. 44).
mensageria. Assim, poderiam ser criados grupos que ficariam responsveis por
tratar somente eventos de determinado tipo, evitando que a memria dos servidores
seja utilizada com todos os eventos recebidos (FERREIRA, 2013).
Figura 4 Service grid replicando dados entre diferentes servidores (ERL, 2009).
O processo de insero nas filas tem um custo baixo e a leitura das mesmas
pode ser feita utilizando load-balacing com diversos leitores distribuindo a carga
entre si. Esse padro se relaciona com os princpios de Service Abstraction e
Service Autonomy, pois alm de lidar com seus prprios recursos, os consumidores
no precisam ter conhecimento da arquitetura encapsulada pelo servio.
Aumento
de
disponibilidade
confiabilidade:
infraestrutura
os
provedores
de
cloud
ainda
trabalham
com
Princpios de SOA
Vantagens
Baixo Acoplamento,
Baixssimo
Abstrao,
acoplamento
produtores.
Habilidade de poder
permite escalar o
Servios proveem o
ser composto
sistema.
Os
servios
se
tornam
consumidores
EDA
Escalabilidade
Horizontal
valor de negcio.
Shared-Nothing
Cada
servio
Architecture
torna
responsvel
por
se
determinadas
Autonomia,
Baixo
No
Horizontal
acoplamento,
compartilhamento
Abstrao.
de
recursos
funcionalidades,
aumenta o poder
dessa forma, no
de
aplicao.
escalar
compartilhamento
de recursos entre
diferentes servios.
Enterprise
Service
Bus
Pilar
da
Baixo acoplamento,
Cluster de ESBs,
Vertical
infraestrutura SOA,
Abstrao, Contrato
Load
Horizontal
facilita a integrao
de
Represamento
entre
padronizado.
diferentes
servios
Balacing,
protocolos
promovendo
tambm um baixo
acoplamento
entre
clientes e servios.
Service
Grid
Pattern
Padro
de
Abstrao
Reduz
ponto
escalabilidade
nico
de
falha
SOA.
mantendo
um
cache
em
diferentes
ns
Horizontal
aumentando
disponibilidade.
Decoupled
Padro
de
Abstrao
Permite
atender
Invocation Pattern
escalabilidade
uma
alta
SOA.
demanda
em
Horizontal
picos de acesso.
Parallel
Pattern
Pipeline
Padro
de
Baixo Acoplamento,
Fraciona
escalabilidade
Habilidade de poder
demanda
SOA.
ser composto.
manter
processamento
Horizontal
mesmo
quando
um
sistema
externo no est
disponvel.
Service
Instance
Pattern
Padro
de
Abstrao
Aumenta a vazo
escalabilidade
com
que
as
SOA.
requisies
so
Horizontal
processadas.
Cloud Computing
SOA
facilita
Baixo Acoplamento,
Maior
Horizontal
distribuio
dos
Abstrao,
infraestrutura dos
servios
nas
Autonomia,
ambientes
Habilidade de poder
ser descoberto.
permitir
nuvens.
nas
uma
maior
disponibilidade e
escalabilidade.
Tabela 1 Tabela de sintaxe dos resultados
7 CONCLUSO
Diante do estudo apresentado, percebe-se que SOA possui um arcabouo de
princpios e tecnologias que promovem uma facilidade na busca por sistemas mais
escalveis. Estilos arquiteturais como EDA tem uma forte relao com SOA e so
altamente escalveis por trabalharem com um altssimo desacoplamento entre seus
componentes. Tecnologias e padres de infraestrutura como Cloud Computing e
Shared Nothing Architecture so utilizados por diversos tipos de aplicao, mas
conforme foi analisado, possuem uma srie de sinergias com SOA que facilitam a
sua implantao e utilizao. Alm disso, SOA possui diversos patterns que
resolvem problemas comuns de escalabilidade, alm do Enterprise Service Bus, que
abstrai a complexidade tcnica das solues mencionadas acima.
Todo esse estudo pode ser validado pelo relato da Amazon conforme descrito
no Apendice I (HOFFa, 2013), que demonstra como o uso de SOA pode escalar
uma aplicao a nveis de uso mundial. Conclui-se, dessa forma, que SOA pode
auxiliar o aumento de escalabilidade de software, no sendo a nica estratgia que
aborda o problema, mas certamente uma abordagem vlida e til, que se preocupa
em manter o valor de negcio.
8 REFERNCIAS
8.1 LIVROS E APOSTILAS
CARTER, Sandy. The new language of business: SOA and WEB 2.0
Crawfordsville: Pearson Education, Inc, 2007, p299.
ERL, Thomas. Service Oriented Architecture: Concepts, Technology and
Design. CrawsfordVille: Prentice Hall, 2005.
ERL, Thomas. SOA Design Patterns. Prentice Hall, 2009.
MELO, Diovani. Service Oriented Architecture. Instituto de Gesto em
Tecnologia da Informao. 2012. p6-60
ROTEM GAL-OZ, Arnon. SOA Patterns. Manning Publications Co. 2012. ISBN
9781933988269
SAUDATE, Alexandre. SOA Aplicado: Integrando com Web Services e alm.
Casa do Cdigo, 2012.
SOAEXPERTa, SOA Foundation: Classic and Next Generation, SOA|Expert.
2012.
SOAEXPERTb, Enterprise Service Bus: Integration Specialist, SOA|Expert,
2012.
Samisa.
Scalable
SOA
[Projeo
visual].
2009.
62
de
Maro
de
2013.
Disponvel
em:
http://serviceorientation.com/serviceorientation/index
BOWEN, Filmore. How SOA can ease your move to cloud computing.
Acessado
em
24
de
Maro
de
2013.
Disponvel
em:
http://www-
01.ibm.com/software/solutions/soa/newsletter/nov09/article_soaandcloud.html
FERREIRA, Ricardo. Creating Scalable Fast Data Applications using Oracle
Event Processing Platform (Setting Up an Active-Active Oracle CEP Domain).
Acessado
em
28
de
Maro
de
2013.
Disponvel
em:
https://blogs.oracle.com/middlewareplace/entry/implementing_distributed_processing
_of_events
HOFF, Todd. Amazon Architecture. Acessado em 24 de Maro de 2013.
Disponvel em: http://highscalability.com/amazon-architecture
HOFF, Todd. 42 Monster Problems That Attack As Loads Increase. Acessado
em:
17
de
Maro
de
2013.
Disponvel
em:
http://highscalability.com/blog/2013/2/27/42-monster-problems-that-attack-as-loadsincrease.html
de
2013.
Disponvel
em:
http://soacloud.com.br/discussion/comment/171/#Comment_171
SIMON, Carl August. Killer SOA Definition. 2005. Acessado em 28 de Maro
de 2013. Disponvel em http://carlaugustsimon.blogspot.com.br/2005/09/killer-soadefinition.html
STOPFORD, Benjamin. Shared Nothing v.s. Shared Disk Architectures: An
Independent View. Acessado em 17 de Maro de 2013. Disponvel em:
http://www.benstopford.com/2009/11/24/understanding-the-shared-nothingarchitecture/
WIKI, Phillip. Scaling Service Oriented Architecture: A look at how Oracle
solutions fit into a scalable Service Oriented Architecture. Acessado em: 10 de Maro
de 2013. Disponvel em: http://www.oracle.com/technetwork/articles/soa/wik-soascaling-1738196.html
WIKIPEDIA, Service-oriented Architecture. Acessado em: 02 de Maro de
2013. Disponvel em: http://en.wikipedia.org/wiki/Service-oriented_architecture
Wikipediab, Acordo de nvel de servio. Acessado em 28 de Maro de 2013.
Disponvel
em:
http://pt.wikipedia.org/wiki/Acordo_de_n%C3%ADvel_de_servio
Uma das tcnicas adotadas foi o uso de uma Shared Nothing Architecture,
pois recursos compartilhados podem causar deadlocks. O uso de uma arquitetura
orientada a servios aliada SNA permite a criao de servios isolados que