terça-feira, 8 de dezembro de 2009

Web Services, computação descentralizada para sistemas distribuídos, por Ramon Rosa da Silva

Resumo. O crescimento dos serviços disponibilizados na internet tornou necessário uma padronização de protocolos para troca de informações.

Para a interoperabilidade dos serviços desenvolvidos em diferentes arquiteturas, sistemas operacionais e linguagens, mais do que nunca é ressaltada a importância de padrões como XML (eXtensible Markup Language) e HTTP (Hypertext Transfer Protocol).

Com ajuda destes padrões Web Services podem resolver problemas de comunicação entre diferentes aplicações, e disponibilizar serviços que podem ser utilizados por vários clientes sem necessidade de reconfiguração do servidor, isto é reutilização de serviços.

1.Introdução

Na década de 60 a computação era baseada em grandes mainframes e terminais burros, isto é computação centralizada, existia pouca ou nenhuma preocupação com padronização de protocolos de comunicação, cada fabricante propunha sua própria especificação de seus produtos que não eram compatíveis com os produtos concorrentes. Muito rápido isso se tornou um problema para os clientes, que passava a ser também um problema aos fabricantes, foi neste contexto que sugiu a ISO, que propôs um modelo de arquitetura dividido em 7 camadas (famosa até hoje, arquitetura OSI).

Conforme foi sendo popularizado os computadores desktop e com a abertura da internet (por HTTP), a computação centralizada foi perdendo espaço, um novo modelo de computadores pessoais que operam sem necessidade de mainframes, que se comunicam pelo protocolo TCP/IP baseado no modelo OSI, assim iniciou a computação descentralizada.

A descentralização possibilitou o surgimento de serviços disponibilizados na web, os Web Services, e novos padrões foram criados para o desenvolvimento de aplicações distribuídas, como CORBA (Commom Object Request Broker Architeture), DCOM da Microsoft entre outros. Em meados da década de 90 existiam vários padrões que criavam um forte acoplamento entre os sistemas, e se tornava complicado diferentes sistemas interagirem entre si.

Mais uma vez foi necessário uma reformulação do modo de diferentes serviços se comunicarem, para este fim foi criada a XML, linguagem/padrão de troca de informações.

Atualmente as empresas se esforçam para aperfeiçoamento de padrões como XML e HTTP, com linguagens como Java e PHP, que permitem a criação de sistemas independentes de arquiteturas e plataformas. Essas tecnologias são utilizadas tanto com os novos padrões quanto antigos em sistemas legados.

2.Padrão Web Service

O padrão do Web Service é padronizado pela W3C, com: “um sistema de software projectado para suportar a interoperabilidade entre máquinas sobre rede”.

Essas interoperabilidade é garantida pelo seu padrão de comunicação baseado em XML encapsulado em SOAP.

3.XML

Atualmente de facto XML é a linguagem padrão para comunicação entre serviços com serviços, e serviços com clientes.


Fig. 1: Comunicação entre os serviços.

A linguagem XML é muito similar a HTML (Hyper Text Model Linguage), é escrita com tags com uma identificação e dados dentro das tags, podem existir tags dentro de tags. Por exemplo:

Fig. 2: Exemplo XML

O XML trafega pela rede dentro de um pacote HTTP ou HTTPS para conexões seguras, que é desempacotado pelo servidor.

4.SOAP

Simple Object Access Protocol, trás a mesma ideia do RPC (Remote Procedure Call) para XML, atualmente é um especificação da W3C.

É um protocolo baseado em XML para comunicação entre aplicações HTTP.

RCP não é recomendado para internet pois teria problemas com segurança e com firewalls ou proxyes.

Mensagens SOAP, são dividas em 3 partes:

SOAP envelope: Define o conteúdo da mensagem.

SOAP header: Contém a autenticação, transação e contabilização, é opcional.

SOAP body: informações dos métodos e parâmetros que serão utilizados.



Fig. 3: Exemplo mensagem SOAP

5.Web Services

Web Services são aplicações publicadas na web, desde simples processos como cálculos até complexas transações de empresariais, depois de publicados permitem obtenção e submissão de dados.

São acessados de forma independente de plataforma ou linguagem de programação, utilizando padrões como HTTP, XML e SOAP. Seus serviços são conhecidos através de uma mensagem padrão XML.

Um Web Service é feito para suportar 3 categorias: provedor do serviço, provedor de registro e o cliente do serviço. Com operações de procura (find), publicação (publish) e acoplamento (bind).

O cliente procura o serviço, e obtém a descrição do serviço e do provedor de registro, com essas informações ele pode acessar e interagir (bind) com o provedor do serviço.



Fig. 3: Ciclo de vida de um Web Service


5.1.WSDL

Web Services Description Language, linguagem XML, desenvolvida para descrever o Web Services, o que o serviços faz, como utiliza-lo e onde ele está localizado.


Contém o elemento "definition" dividido em:
"message" e "portType" : define quais operações o serviço fornece.
"type" : este elemento opcional serve para definir tipos de dados estruturados .
"binding" : designa como as operações são invocadas.
"service" : explicita onde o serviço está localizado.


5.2.UDDI

Universal Description Discovery and Integration, é um conjunto de registros baseados na web que provem informações a respeito de uma entidade ou organização, podem ser utilizadas por qualquer um que queira tornar disponível ou queira obter informações a respeito de negócios ou entidades.

São encontrados 4 tipos de UDDI:

BusinessService: pode conter informações sobre uma ou mais organizações.

BusinessEntity: informações técnicas e de descrições de serviços.

BindingTemplate : contem referencias a um ou mais tModels

tModel: definições de especificações técnicas de serviços.

Uma UDDI é similar a uma lista telefônica. Páginas brancas (white pages), contém informações como nome da organização, contato e identificadores. As páginas amarelas (yellow pages) um índice de serviços e produtos e as páginas verdes (green pages) contém informações a respeito de transações, descrições de serviço e invocação de aplicações.

6.Segurança

Atualmente a segurança é uma das questões mais criticas em um Web Service, não existe falta de tecnologia para segurança, mas um falta de consenso para escolha desta tecnologia.

Existe uma grande preocupação de separar bancos de dados importantes das empresas com os Web Services para maior segurança.

Principais mecanismos de segurança são: SSL, XML signature, XML encryption, WS-security e SAML.

6.1.SSL

Secure Socket Layer, desenvolvido para pequenos dispositivos, oferece autenticação, integridade e privacidade. Trabalha em cima de HTTP, com a desvantagem de ser mais lento que HTTP puro.

6.2.XML signature

Iniciado pela IETF (Internet Engineering Task Force) e W3C, como uma especificação de XML com assinatura digital. Com vantagem de ser independente de linguagem de desenvolvimento, ao contrario de outras assinaturas digitais.

6.3.XML encryption

Também iniciado pela IETF e W3C, define um processo de encriptação e decriptamento de dados no formato XML, onde o XML pode ser acessado por qualquer um, mas apenas o proprietário da chave pode entender os dados.

6.4.WS-security

Web Service seguro, iniciativa da Microsoft, IBM e Verisign, para XML signature e XML encryption, fornecer segurança para SOAP.

6.5.SAML

Security Assertion Markup Language, ainda pouco utilizada, é desenvolvida para prover autenticação e autorização em diferentes Web Services com níveis de direitos de acesso, permitindo que trabalhem como se fosse apenas um apicação.


7.Implementação

Um Web Service pode ser implementado de diferentes linguagens de programação. Linguagens como PHP, ASP, Java, possuem servidores que provem bibliotecas para facilitar a implementação.

No caso do PHP existe o Apache, um dos servidores mais populares para internet, para ASP a Microsoft desenvolve seu próprio servidor e para Java a Sun Microsystens definiu uma arquitetura que é implementada por diferentes empresas como IBM com WebSphere, Oracle, Apache.org com Tomcat entre outras.

8.Conclusões

Os Web Services tem se tornados cada vez mais importantes para as empresas, já substituíram o paradigma de computação centralizada, estão atualmente substituindo servidores que usam protocolos fortemente acoplados como CORBA.

A tendencia é que cada vez mais as empresas passem a disponibilizar seus serviços por Web Services.

Na medida que grandes empresas desenvolvedoras de software estão se dedicando no aperfeiçoamento de arquiteturas como J2EE, plataforma .Net, e também comunidade por trás do PHP, tem ficado cada vez mais simples para as empresas terem seus próprio Web Services.


9.Referencias

W3C

w3schools

www.ws-i.org

segunda-feira, 7 de dezembro de 2009

TI Verde Por Ramon Rosa da Silva

A pratica da TI verde se da escolhendo fornecedores que assumam sua responsabilidade ecológica, utilização materiais renováveis, descartamento de correto de materiais, virtualização, economia de energia entre outros atos que venham em favor sustentabilidade da computação. De forma geral essa pratica procura diminuir o desperdício e aumentar a eficiência.
Muitas pessoas não sabem mas uma forma simples de diminuir o gasto de energia é desligar o monitor quando não está sendo utilizado, principalmente quando é CRT, que pode consumir até 80% da energia do computador. Ainda bem estamos caminhando para monitores mais econômicos como LCDs e de LEDs, que consomem muito menos que os CRT.
Hoje em dia a TI verde está saindo da teoria e entrando em pratica nas grandes empresas, muitas por economia e consciência, outros por publicidades, como concursos como “Top Green 500”, com a escolha dos 500 computadores mais eficientes energeticamente, mas em fim o que importa é a adesão das empresas na TI verde.
Vale lembrar que além do hardware o software também tem grande importância na TI verde, imagine que quanto menor o processamento, menor aquecimento, que se relaciona com refrigeração interna do equipamento e do ambiente. No desenvolvimento o software também pode ser feito de forma sustentável, em forma colaborativa, criando módulos que possam ser melhorados, procurando a reutilização de formas comprovadas de eficiência.
Estive semana passada em uma empresa a ViaFlow de consultoria que em parceria com a IBM, trabalha com implantação de um sistema de GED (Gerenciamento Eletrônico de Documentos), o sistema se trata da digitalização de documentos, visando facilitar o gerenciamento deste documento, e o que eu achei mais interessante, permite anular todos documentos em papel, mantendo-os apenas no sistema, com a mesma validade jurídica, um sistema que elimina papéis é importante não somente para empresas de TI, e sim para todas empresas que trabalhem com um volume considerável de documentos em papel.
Eu trabalhei em um hospital de tamanho médio, e vi um grande volume de documentos gerados em papel apenas para fins jurídicos, pois o sistema podia abranger todas as atividades sem a necessidade de papel.
Sistemas como GED, ou simplesmente gerar em PDF e utilizar e-mail ao invés de imprimir relatórios, ou de desligar os monitores, ou virtualização, entre outros métodos, não são utilizados por estrar intrinsecamente no subconsciente¹ a desconfiança da segurança do software ou hardware.
Acredito que quando as empresas e pessoas tiverem maior consciência do desperdício que fazem, trocarão a cultura atual, por outra com maior confiança em tecnologias com um consciência ecológica.

¹ Nota: Lembra as aulas de psicologia, talvez um psicologo possa ajudar nesse processo de mudanças. Se não me der bem no área de tecnologia vou cursar psicologia...

Memória flash, por Ramon Rosa da Silva

A memória flash é a mais indicada para substituir a do disco rígida (HDs), por sua velocidade superior, com uma única operação é capas de escrever em vários blocos, com acesso aleatório, porém atualmente sua durabilidade é inferior a do disco rígido, são limitadas a uma quantidade finita de leitura e escrita. Seu custo atual é maior que a do disco rígido, quando seu custo baratear são vendida em massa nos desktops e em servidores, atualmente já são encontradas em alguns NetBooks.
São do tipo EEPROM (Electrically-Erasable Programmable Read-Only Memory) . Muito parecidas com a memória RAM (Random Access Memory) com a diferença que não são voláteis (não se apaga quando é desligada).
Encontradas em dispositivos como pen drives, mp3 players, câmeras digitais, celulares, principalmente por sua economia de energia e um tamanho pequeno.

Virtualização, por Ramon Rosa da Silva

Virtualização de sistemas operacionais é a possibilidade de em uma única máquina e sistema operacional, poder rodar por cima mais sistemas operacionais, que possam interagir entre si, e entre a rede de computadores, como se estivessem fisicamente instalados.
Cada vez mais comum nas grandes empresas a virtualização tem se tornado uma grande aliada a redução de custos.
Para que essa virtualização seja eficaz é necessário dispor de um equipamento potente, é pouco provável que um desktop comum tenha um bom desempenho para virtualizar outros sistemas operacionais.
Empresa que produzem servidores estão se dedicando a criação de hardwares específicos para vitalização de vários sistemas operacionais no mesmo servidor, até mesmo desenvolvendo sistemas operacionais específicos para esta atividade. Utilizam dedicação de processadores ou núcleos, memória para determinada máquina virtual.
Um desvantagem desta técnica é a centralização em uma única máquina de diversas atividades, caso ela necessite de reparos é recomendável ter uma outra máquina disponível (redundância), com um com backup dos sistemas virtualizados.

domingo, 6 de dezembro de 2009

Computação social, Por Ramon Rosa da Silva

Tem sido cada vez maior a necessidade das pessoas interagirem utilizando a internet, para solucionar o problema de “como se relacionar pele internet” tem surgido sistemas web e desktop, esses sistemas promovem o relacionamento das mais diversas pessoas, de diferentes classes sociais e lugares do mundo.
Mesmo já existindo muitas tecnologias voltadas para essa área, tais como, orkut, myspace, facebook, msn, gtalk, skype, ainda existe espaço para novas tecnologias que atenda públicos específicos, por exemplo, de empresas, de escolas, entre outros que a criatividade nos permita encontrar.
Para alguns autores como Höök (2001) o termo é aplicado no sentido de “pesquisar e construir software que permita as pessoas terem uma vida social on-line”, para Ashok Rao (2002) o foco seria poder incluir socialmente cidadãos na tecnologia digital.
Atualmente a computação social está motivando em grande quantidade o interesse das classes baixas por computadores e internet, devido a popularização do sistema de relacionamento Orkut, do mensageiro instantâneo Msn Messenger e sistema de gestão de conhecimento wikipedia (os 3 mais populares em suas áreas no Brasil), que muitas pessoas começaram a utilizar os computadores, algumas vezes para se relacionar de uma maneira mais barata que o telefone com amigos/parentes que viajaram para longe, ou até mesmo para conhecer pessoas novas, manter contato.
E também outro ponto importante que fez com que pais de baixa renda adquirissem um computador com internet é a questão de estudo, pois tem a consciência que o futuro é digital e com o computador seus filhos terão mais chances de se relacionar e aprender pela internet.

sábado, 5 de dezembro de 2009

Computação em nuvem, por Ramon Rosa da Silva

Em inglês chamada de “cloud computing”, é uma tendencia para o futuro da internet.
Computação em nuvem é poder utilizar os softwares sem precisar instalá-los, muitas vezes está ligado a computação móvel, no futuro poderemos utilizar softwares com nossos documentos pessoais em qualquer lugar, pois estarão armazenados em servidores na internet.
Mutias empresas atualmente já dedicam muito de seus esforços para aperfeiçoamento destes softwares, o Google por exemplo disponibiliza aos seus usuários, edição de textos, planilhas, email, mapas, e alguns outros software de escritório com gdocs, dmaps e gmail, para acesso em qualquer lugar pela internet. Além do google existem outras empresas como Zooho que estão seguindo o mesmo caminho.
Computação em nuvens é um serviço feito para funcionar em diferentes sistemas operacionais.
Alguns desvantagens deste serviço são:
Dependência de conexão de internet, o serviço só será utilizado com perfeição se o usuário e o servidor estiver uma boa conexão com a internet, ou se por ventura a conexão de uma das pontas cair, termos problemas críticos.
Exige segurança, autenticação segura, farejadores de rede, cópias sem autorização, alteração indevida, falhas com backup, entre outros, são problemas que podem acontecer quando se trabalha com dados armazenados em rede.
Custo alto, atualmente para manter um sistema de computação em nuvens é necessário sistemas de arquivos distribuído muito complexo e equipamento potente, isso eleva muito o custo.