Escalabilidade com SOA

Boa tarde pessoal,

Atualmente estou cursando a pós de arquitetura de software no IGTI (www.institutogti.com.br) e também a formação Consultor SOA da SoaExpert, desta forma gostaria de aliar o curso com a pós e fazer meu TCC sobre SOA.

Conversando com o instrutor do curso Felipe Oliveira acabei decidindo fazer algo no sentido de “Escalabilidade com SOA”.

Desta forma, queria pedir a ajuda de vocês para que indiquem material/livros/etc que possa me ajudar na pesquisa, de repente vocês indicam alguma coisa que não achei e que pode ajudar.

Desde já agradeço a ajuda,

Abraços,

Hugo

Você pode resumir tudo em uma frase: SOA não escala.

Escalabilidade em SOA é intimamente ligado a Cloud Computing. Com esquemas de roteamento e load-balancing, você pode fazer miséria, imagine quando isso está numa nuvem.

Pegue a AWS, por exemplo: você coloca seus componentes em instâncias EC2, configura o Auto-Scaling e o Elastic Load Balancer e voilà. Sua arquitetura orientada a serviços escalável horizontalmente.

Mas, quando o stack é Oracle, normalmente se fala em escalabilidade vertical. Aí, você adiciona mais um Managed Servers no seu WebLogic (não sem antes colocar mais uns pentes de memória na máquina) e também dá “certo”.

Se você quiser livros, o Thomas Erl tem um, na série de livros dele, sobre SOA e Cloud Computing.

[]'s

Você pode resumir tudo em uma frase: haters gonna hate.

[quote=Alexandre Saudate]

Você pode resumir tudo em uma frase: haters gonna hate.[/quote]

Infelizmente sistemas baseados nas especificações WS-* não são conhecidos por escalar facilmente.

[quote=JoseIgnacio][quote=Alexandre Saudate]

Você pode resumir tudo em uma frase: haters gonna hate.[/quote]

Infelizmente sistemas baseados nas especificações WS-* não são conhecidos por escalar facilmente.[/quote]
Nunca li nada sobre isso, nem passei por isso na minha vida profissional…poderia indicar alguma bibliografia?

[quote=JoseIgnacio][quote=Alexandre Saudate]

Você pode resumir tudo em uma frase: haters gonna hate.[/quote]

Infelizmente sistemas baseados nas especificações WS-* não são conhecidos por escalar facilmente.[/quote]

Amigo, meus pontos:

  1. SOA não é sinônimo de WS-*;
  2. Mostre os fatos. Conte a sua experiência com SOA, quais sistemas implantou, em quais segmentos de mercado, quais problemas teve;
  3. O que você conhece de escalabilidade? Quais sistemas você implantou que eram amplamente escaláveis?

Acredito que não exista livro sobre tal ponto…
Faça como o Alexandre falou…
Eu por exemplos tenho comprovados que os protocolos SOAP realmente acrescentam um overhead nas chamadas quando trafegados milhares de objetos.
Vc tb pode pegar as afirmações de escalabilidade REST …
Vc pode tb poder fazer uns testes com benchmarks…etc

Olá amigos,

Vou entrar na discussão como especialista no assunto, pois SOA foi feito para escalabilidade.

O grande truque da escalabilidade é não compartilhar estados, ou seja, não distribuir lei do Dijkstra sobre computação distribuída. Quando você concorre com variáveis mutáveis por exemplo, está montando todo um mecanismo de thread safe e isso tem um custo muitíssimo alto. É o famoso, Synchronize and Suffer Model.

SOA trabalha com representações dos recursos através de objetos imutávies, logo você pode distribuir os objetos sem compartilhar estado, sem necessidade de sincronizar threads aumentando escalando verticalmente sua aplicação.

Quanto à especificação WS*, ela é oriunda do Corba e segue os mesmos princípios, Stub-Skeleton com a vatangem de ser mais simples pois não obriga um datagrama específico como o IIOP. O SOAP não é um bicho papão, todo protocolo até sistemas de ESB, se baseam em UOMs ( Universal Object Message)/Exchange e segue a mesma filosofia. O SOAP é um protocolo lógico que navega embarcado em outros protocolos. Muitos pensam somente em HTTP, mas levar um grafo de HTTP para SNA, você precisa de um mecanismo de transporte/conversão.

Existem uma série de Specs super interessantes, por exemplo - MTOM, que o Bruno Paz acabou de escrever um super artigo para tráfego de dados binários - http://arquiteturacomputacional.blogspot.com.br/2012/09/transferindo-arquivos-binarios-via-web.html , WS-Addressing para Callback de mensageria Assíncrona fora todo mecanismo de segurança etc. Existem muitos cenários que você não consegueria com Restful por exemplo, mas ambos foram feitos para escalabilidade.

Lembrando que há outras abordagens dentro do contexo SOA, como EDA - Event-Driven e nesse aspecto, há implementações como ActorsModel que pode não só escalar, mas performar a mais de 50 milhões de mensagens por segundo.

http://akka.io

Por fim, vou colocar um link de uma apresentação bem interessante do Ebay e como eles conseguiram dar vazão ao número insano de requests que recebem e como SOA os auxiliou nesse processo:


Várias Startups: http://www.dodgycoder.net/2012/04/scalability-lessons-from-google-youtube.html em especial, olhem o que a Amazon diz.
Vídeo do Ebay: http://www.infoq.com/presentations/SOA-eBay

Bom, quem ainda tiver dúvidas, pode entrar em contato comigo via Twitter - @scaphe ou dar um pulo na SOA|EXPERT conhecer nosso trabalho.

Um abraço,

Felipe Oliveira

[quote=Kenobi]…

O grande truque da escalabilidade é não compartilhar estados


[/quote]

O nome técnico é arquitetura shared-nothing (http://en.wikipedia.org/wiki/Shared_nothing_architecture), e é possivelmente a arquitetura mais escalável que existe.

Aliás, acabei de lembrar duas fontes excelentes para estudar escalabilidade. Uma é o http://highscalability.com/ . Outra é o livro Release It!, do Michael Nygard (que não é focado exclusivamente em escalabilidade, mas dá alguns cases interessantes envolvendo o assunto, por exemplo, construção de sistemas que sobrevivam à Black Friday americana). Recomendo fortemente a leitura deste livro, pois acho que ele é o melhor livro técnico que eu já lí (e olha que eu já lí Effective Java, Pragmatic Programmer e outros livros de renome).

[]'s

[quote=Alexandre Saudate] Outra é o livro Release It!, do Michael Nygard (que não é focado exclusivamente em escalabilidade, mas dá alguns cases interessantes envolvendo o assunto, por exemplo, construção de sistemas que sobrevivam à Black Friday americana). Recomendo fortemente a leitura deste livro, pois acho que ele é o melhor livro técnico que eu já lí (e olha que eu já lí Effective Java, Pragmatic Programmer e outros livros de renome). [/quote]Eu não sou nenhuma autoridade em assunto nenhum mas concordo com o Alexandre com relação ao livro. [=

[quote=felipeguerra][quote=JoseIgnacio]
Infelizmente sistemas baseados nas especificações WS-* não são conhecidos por escalar facilmente.[/quote]
Nunca li nada sobre isso, nem passei por isso na minha vida profissional…poderia indicar alguma bibliografia?[/quote]

Não tenho no momento, mas não deve ser difícil entender que um protocolo binário, apesar de mais performático, terá mais dificuldade de escalar.

Essa foi a coisa mais sem nexo que eu li hoje, sem dúvida alguma.

Meu caro,

Apelo a autoridade não tem vez em ciencia. O ponto em questão é SOA não escala. ok?

Se vc não concorda, cite seu argumentos ou mostre pra nós um exemplo de sistema que escale usando protocolos binários.

Ou ele não existe e por isso não pode citar?

[quote=JoseIgnacio][quote=Alexandre Saudate]
Amigo, meus pontos:

  1. SOA não é sinônimo de WS-*;
  2. Mostre os fatos. Conte a sua experiência com SOA, quais sistemas implantou, em quais segmentos de mercado, quais problemas teve;
  3. O que você conhece de escalabilidade? Quais sistemas você implantou que eram amplamente escaláveis?

[/quote]

Meu caro,

Apelo a autoridade não tem vez em ciencia. O ponto em questão é SOA não escala. ok?

Se vc não concorda, cite seu argumentos ou mostre pra nós um exemplo de sistema que escale usando protocolos binários.

Ou ele não existe e por isso não pode citar?

[/quote]

Você tanto NÃO conhece que está falando que SOAP é um protocolo binário. Muito bom, continue assim :wink:

Agora, sério… vá estudar um pouco antes de falar essas bobagens num fórum público. Não fica bem pra você #ficaadica

P.S: Me diz ONDE, no meu post anterior, está o apelo à autoridade? Se você não sabe, fica mais bonito dizer que não sabe, do que dizer que existe apelo à autoridade onde não tem.

[quote=Alexandre Saudate]Você tanto NÃO conhece que está falando que SOAP é um protocolo binário. Muito bom, continue assim :wink:

Agora, sério… vá estudar um pouco antes de falar essas bobagens num fórum público. Não fica bem pra você #ficaadica
[/quote]Vai que ele usa soap enviando apenas 0 e 1… :lol: :lol: :lol:

O fato é que é “binário” porque é ilegível para caches e outros intermediários na rede, a não ser um cliente programado especificamente para aquele serviço.

Sinceramente, a essa altura sinto que você não esta preparado para discutir sobre escalabilidade e esta apenas tentando desvirtuar a discussão, por exemplo, eu não citei SOAP (que tb não deixa de ser um protocolo binário usando XML como envelope).

E o colega que caiu de paraquedas pra apontar que XML não é só 0 e 1, sério, não brinca?

[quote=JoseIgnacio]O fato é que é “binário” porque é ilegível para caches e outros intermediários na rede, a não ser um cliente programado especificamente para aquele serviço.

Sinceramente, a essa altura sinto que você não esta preparado para discutir sobre escalabilidade e esta apenas tentando desvirtuar a discussão, por exemplo, eu não citei SOAP (que tb não deixa de ser um protocolo binário usando XML como envelope).

E o colega que caiu de paraquedas pra apontar que XML não é só 0 e 1, sério, não brinca?[/quote]De onde você tirou que binário pode ser utilizado para determinar isso? Pode me informar um link, por favor?

[quote=JoseIgnacio]O fato é que é “binário” porque é ilegível para caches e outros intermediários na rede, a não ser um cliente programado especificamente para aquele serviço.

Sinceramente, a essa altura sinto que você não esta preparado para discutir sobre escalabilidade e esta apenas tentando desvirtuar a discussão, por exemplo, eu não citei SOAP (que tb não deixa de ser um protocolo binário usando XML como envelope).

E o colega que caiu de paraquedas pra apontar que XML não é só 0 e 1, sério, não brinca?[/quote]

Parabéns, você foi eleito troll!!!

(Algum moderador, pode trancar isso aqui, por favor?)

Isso o que?