Um modelo de middleware adaptativo - COSTA, Marcos André da Silva (2004)
Sistemas de middleware têm sido amplamente adotados como infra-estrutura de comunicação para sistemas distribuídos. O middleware provê serviços (e.g., eventos, nomes e tempo) que escondem a complexidade dos mecanismos de comunicação e a heterogeneidade de sistema operacional e de linguagens de programação. Diferentes tipos de aplicações distribuídas utilizam sistemas de middleware, entre elas aplicações móveis, aplicações multimídia e aplicações cientes de QoS. Cada uma destas aplicações possuem determinadas características que necessitam de um middleware que forneça QoS, seja por requisitos de tempo real, como é o caso de multimídia, seja por escassez de recursos, como é o caso de aplicações móveis. Para as aplicações citadas anteriormente, o suporte à configuração dinâmica realiza um papel chave. O middleware precisa ajustar o seu comportamento às mudanças no contexto de execução, ao mesmo tempo que precisa preservar a qualidade de serviço necessária às aplicações. Por exemplo, se o tráfego em uma rede aumenta, o middleware pode dinamicamente adotar um novo algoritmo que melhore a compressão de dados, tornando-a mais eficiente. É preciso observar que a adaptação pode ter um escopo global, que tem seu efeito sentido por todas as chamadas ao middleware subseqüentes à adaptação; ou um escopo de chamada, que têm seu efeito sentido apenas por uma determinada invocação remota. Apesar da grande quantidade de produtos de middleware, como CORBA, RMI ou Web Services, eles normalmente falham em suportar configuração dinâmica de maneira efetiva. A razão desta incapacidade para adaptação reside no fato de que essas plataformas de middleware são projetados de maneira inflexível, como caixas pretas, não oferecendo mecanismos que permitam às aplicações acesso ao seu comportamento interno com o objetivo de modificá-lo. Assim, plataformas de middleware tradicionais não fornecem o dinamismo requerido pelas aplicações citadas anteriormente. Conseqüentemente, os desenvolvedores das aplicações distribuídas precisam criar complexos mecanismos de configuração dinâmica específicos para suas necessidades. Nesta dissertação, é proposto um modelo de middleware adaptativo ciente do contexto que possibilita configuração dinâmica em nível de chamada, não fortemente acoplado a nenhuma plataforma de middleware, linguagem de programação ou sistema operacional. Ciência do contexto refere-se à propriedade do middleware de possuir mecanismos que permitam o conhecimento das condições do ambiente de execução (e.g. memória disponível, carga da CPU e largura de banda). O modelo proposto permite configuração dinâmica em nível de chamada, onde cada chamada remota concorrente pode ser tratada de uma maneira particular. Adicionalmente, como certas configurações do middleware necessitam ter efeito sobre toda invocação remota, como uma estratégia de controle de concorrência, foi também definido um mecanismo de configuração dinâmica que considera o escopo da alteração. Finalmente, com o objetivo de saber o momento no qual o middleware necessita ser configurado, o modelo de middleware adaptativo proposto utiliza-se de monitores que possuem a missão de registrar o estado do ambiente de execução (e.g. vazão da rede)