Smart Proxies para Invocação de Serviços Web Replicados

Documentos relacionados
Smart Proxies para Invocação de Serviços Web Replicados

Prof. Me. Sérgio Carlos Portari Júnior

Smart Proxies para Invocação de Serviços Web Replicados

Sistemas Distribuídos

Sistemas Operacionais II

RPC e RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Sistemas Distribuídos

HMI: UM MIDDLEWARE PARA OBJETOS DISTRIBUÍDOS SOBRE O PROTOCOLO HTTP

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

Desenvolvimento de Aplicações Distribuídas

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado

Sistemas Distribuídos

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

Aspectos para Construção de Aplicações Distribuídas

Objetos e Componentes Distribuídos: EJB e CORBA

INTRODUÇÃO. RPC x RMI

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

Introdução a Web Services

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1

Reuso de Software Aula Maio 2012

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

INTEGRAÇÃO DE UMA REDE DE SENSORES SEM FIO COM A WEB UTILIZANDO UMA ARQUITETURA ORIENTADA A SERVIÇO

Avanços e Perspectivas do Projeto Integrade na UFMA

Sistemas de Arquivos Distribuídos. Bruno M. Carvalho Sala: 3F2 Horário: 35M34

Principais conceitos de CORBA

Programação Distribuída. Metas de um Sistema Distribuído

Sistemas Distribuídos

5 Processo de Reificação e de Desenvolvimento com ACCA

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída

Desenvolvimento de um Framework para replicação de dados entre bancos heterogêneos

Um Serviço Escalável e Robusto para Gerenciamento de Membros em Grades Computacionais de Grande Escala*

Estágio Supervisionado

O que é um sistema distribuído?

Tecnologias de Distribuição e Integração. Quais as preocupações a ter com um sistema distribuído?

SSC0611 Arquitetura de Computadores

Número: Nome: Página 1 de 7. Duração da prova: 1h30m. Grupo I [7] Considere o seguinte excerto (incompleto) de um programa cliente em SUN RPC:

PMR3507 Fábrica digital

Características de Sistemas Distribuídos

Alcides Pamplona

Aula 7 TECNOLOGIA EM JOGOS DIGITAIS JOGOS MULTI PLAYER. Marcelo Henrique dos Santos

Unidade 3: Classes em Java Para Programadores C Classes, Objetos e Tratamento de Erros Prof. Daniel Caetano

Arquitetura Cliente-Servidor Generalizada com identificação de tiers. Arquitetura Cliente-Servidor Generalizada com identificação de tiers

Processos ca 3 pítulo

Replicação em sistemas web

Grupo I [7v] b) [0,3] Em que componente do sistema de RPC será utilizado o campo identificador de operação?

contidos na descrição do serviço para localizar, contactar e chamar o serviço. A figura mostra os componentes e a interação entre eles.

Banco de Dados I Curso: Sistemas de Informação

LEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10

RMI e RPC. RPC significou um passo muito grande em direcção à

GRADE HORÁRIA 2º SEMESTRE DE 2017

Common Object Request Broker Architecture

7.1 Trabalhos Relacionados

Sistemas Distribuídos Aspectos de Projeto de SD. Aspectos de Projeto em SD. Transparência 14/03/12. ! Transparência; ! Abertura; !

FACULDADE DE CIÊNCIA DE ENGENHARIA DE SOFTWARE MATRIZ CURRICULAR DO CURSO DE ENGENHARIA DE SOFTWARE PRIMEIRO PERÍODO SEGUNDO PERÍODO

Características de Sistemas Distribuídos

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Arquiteturas. capítulo

Programação Concorrente com Thread Java. Luiz Affonso Guedes Sistemas Distribuidos

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

Model Driven Development (MDD)

Aula 4 TECNOLOGIA EM JOGOS DIGITAIS JOGOS MASSIVOS DISTRIBUÍDOS. Marcelo Henrique dos Santos

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

SISTEMAS OPERACIONAIS DE REDE

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Quando Distribuir é bom

Replicação em sistemas web

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio

Engenharia de Confiança. Helena Macedo Reis Luis Fernando de Souza Moro

Palavras-chave: (banco de dados; prontuário médico; paciente); deve vir logo abaixo do resumo

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

COMPUTAÇÃO DISTRIBUÍDA

Arquitetura da World Wide Web. WWW: Histórico. WWW: Usos. WWW: Histórico. WWW Tecnologias Fundamentais. Comércio Eletrônico na WWW

Tratamento de Exceção. Programação Orientada a Objetos Java (Rone Ilídio)

ESCOLA POLITÉCNICA DA UNIVERSIDADE DE SÃO PAULO

Vamos fazer um pequeno experimento

Protótipo tipo de um ambiente virtual distribuído

Sistemas de Informação. Sistemas Operacionais

Rede de computadores Cliente- servidor. Professor Carlos Muniz

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Processamento distribuído em ambiente peer-to-peer

Sistemas de Objetos DistribuídosPrimeira Aplicação Java ORB p.1/21

Um Servidor HTTP/2 Reativo em Scala

Um Protótipo de Servidor Multimídia com Mecanismos de QoS

Universidade Federal do Maranhão

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

O que se espera para o futuro dos Web Services? As tecnologias são respectivamente JSON e REST.

Adaptação Dinâmica desistemas Distribuídos p.1/54

Organização de Computadores II. Arquiteturas MIMD

Sistemas Distribuídos

Interfaces e Classes Internas

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

PROVIDING DEPENDABILITY FOR WEB SERVICES

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Chamada Remota de Procedimento (RPC)

Transcrição:

Smart Proxies para Invocação de Serviços Web Replicados José Geraldo Ribeiro Júnior (CEFET-MG / PUC Minas) Orientador: Prof. Marco Túlio Valente (PUC Minas) Fevereiro 2007

Apresentação Motivação Proposta Trabalhos relacionados Sistema SmartWS Experimentos Contribuições Conclusão Trabalhos Futuros 2/64

Motivação Potencial de Serviços Web para tornar realidade, idéias e princípios propostos em Computação Orientada por Serviços (SOC) Características do ambiente Flutuações de largura de banda Alto número de falhas Elevadas latências Desafios na busca de QoS na Internet Desempenho Disponibilidade 3/64

Replicação Vantagem Incrementa o desempenho e a disponibilidade de aplicações distribuídas Dificuldades Localização da réplica Diferenças entre réplicas 4/64

Solução - Middleware Vantagem Apoio ao desenvolvimento de clientes de serviços Web evitando o entrelaçamento entre o código funcional e não-funcional Considerar Características do cliente Latência de rede Carga de processamento nos servidores Dificuldade Atuais plataformas de middleware não disponibilizam suporte a replicação 5/64

Proposta Uso de Smart Proxies Extensão que inclui a especificação e geração de proxies especiais, destinados a encapsular as tarefas relacionadas com a seleção da melhor réplica de um serviço Extensão proposta - SmartWS Recursos definição de interfaces abstratas definição de políticas de seleção definição de adaptadores de interface definição de sessões de uso definição de protocolo de invocação de métodos 6/64

Trabalhos relacionados Políticas para seleção transparente de serviços Web replicados (implementadas por clientes) Framework RWS Implementa cinco políticas para seleção de servidores Web replicados: Aleatória (Randômica), Paralela, HTTPing, Melhor Última e Melhor Mediana Apresenta uma avaliação empírica das políticas implementadas, utilizando serviços Web reais espalhados em três continentes 7/64

Análise crítica - RWS Deixa a cargo da aplicação cliente a definição da política de seleção de réplica Não apresenta diretrizes claras e objetivas sobre os ambientes de rede adequados a cada uma das políticas propostas Não considera o fato dos servidores Web possuírem picos distintos de processamento e tráfego de rede de acordo com os fuso horários O cenário utilizado apresentava poucas falhas e por isso ignorou-se o tratamento de falhas Conseqüência: não foi possível detectar o problema de adaptação da política via Melhor Mediana 8/64

Contribuições em relação a RWS Proposta da política PBM (Parallel Best Median) para seleção de servidores Diretrizes claras e objetivas sobre os ambientes de rede adequados a cada uma das políticas de seleção de réplicas propostas Suporte a adaptadores de interfaces Suporte ao estabelecimento de sessões de uso de um servidor Suporte a protocolos de invocação de métodos Geração automática dos smart proxies, a partir de uma linguagem de especificação de alto nível 9/64

SmartWS Políticas de seleção de réplicas Seleção Estática Seleção Aleatória Seleção Paralela Seleção via Melhor Mediana Seleção PBM (Parallel Best Median) 10/64

Política de seleção - Estática Funcionamento Programador define, estaticamente, a ordem em que as réplicas serão invocadas (em caso de falhas) A política falha quando todas as réplicas falham Aplicação Tempos de resposta previamente conhecidos Prioridade de acesso a determinada réplica Sintaxe de uso em SmartWS policy service1 > service2 >... > servicen 11/64

Política de seleção - Aleatória Funcionamento Escolhe-se aleatoriamente a réplica que será invocada pelo cliente A política falha quando todas as réplicas falham Aplicação Servidores com características e tempos de resposta semelhantes Sintaxe de uso em SmartWS policy service1? service2?...? servicen 12/64

Política de seleção - Paralela Funcionamento Invoca-se concorrentemente todas as réplicas conhecidas de um serviço Web A política falha quando todas as réplicas falham Aplicação Tempos de resposta desconhecidos É permitido invocar todas as réplicas simultaneamente Desvantagem: overhead gerado Sintaxe de uso em SmartWS policy service1 service2... servicen 13/64

Política de seleção Melhor Mediana Funcionamento O serviço invocado é aquele que possui a menor mediana dentre as k últimas invocações A política falha quando todas as réplicas falham Aplicação Tempos de resposta desconhecidos Pequena variação nos tempos de resposta Poucas falhas Sintaxe de uso em SmartWS policy bestmedian(service1, service2,..., servicen) 14/64

Problemas detectados Política não se adapta a grandes variações no tempo de resposta e falhas Conseqüência: invocação de um serviço que se recuperou (após uma seqüência ruim de invocações) depende da piora de todos os outros Uso de buffer grande Conseqüência: tamanho do buffer está diretamente relacionado ao tempo necessário para adaptação 15/64

Exemplo de uso - Buffer com 13 posições Política utilizada - via Melhor Mediana. Mediana dos servidores: A = 400ms, B = 500ms, C = 650ms, D = 580ms Servidor A Posição do Situação 1 9 invocações Buffer (ms) depois (ms) Mediana 1 400 400 400 2 300 300 350 3 350 350 350 4 340 340 345 5 390 390 350 6 400 400 370 7 380 380 380 8 340 340 365 9 370 370 370 10-10000 375 11-10000 380 12-10000 385 13-10000 390 14-10000 395 15-10000 400 16-10000 400 17-10000 400 18-10000 5200 19 - - - 20 - - - 16/64

Princípios básicos para definição da política PBM (Parallel Best Median) Resolver o problema do overhead gerado pela política Paralela Proposta: definir um limite superior para o paralelismo, baseado nas características da rede Utilizar outros recursos além da escolha da melhor mediana (cenário que apresente alterações bruscas nos tempos de resposta ou falhas) Proposta: é imprescindível, independentemente do critério para seleção da réplica, renovar os tempos de todos os servidores periodicamente, para obter um novo panorama do cenário 17/64

Política de seleção PBM (Parallel Best Median) Combina aspectos positivos das políticas de seleção Paralela e via Melhor Mediana A cada ciclo com n invocações, as t primeiras invocações funcionam de forma idêntica à política Paralela Objetivo Atualizar o tempo de resposta de todos os servidores no início de cada ciclo Permitir que servidores voltem a ser selecionados Obs.: t deve ser igual ao b, onde b é o tamanho do buffer 2 18/64

Política de seleção PBM (Parallel Best Median) Nas próximas invocações do ciclo, invoca-se de forma concorrente: o serviço com a menor mediana m os serviços cujas medianas são menores ou iguais a m*k (limitados a um máximo de p servidores (k > 0, p r)) k - grau de paralelismo, p - limite superior para este paralelismo e r - total de réplicas Aplicação Tempos de resposta desconhecidos Variação nos tempos de resposta Falhas 19/64

Política de seleção PBM (Parallel Best Median) A política falha quando todas as réplicas falham Sintaxe de uso em SmartWS policy pbm(1.2, 2, 10, 3, service1, service2,.., servicen) Obs.: respectivamente: k, p, n, t 20/64

Composição de políticas Exemplo 1 policy (service1 service2 service3) > service4 Exemplo 2 policy pbm(1.2, 2, 10, 3, service1, service2, service3) > (service4 service5) 21/64

Adaptadores de interface Possíveis diferenças entre interfaces Nome dos métodos Número, tipo e ordem dos parâmetros de entrada SmartWS se vale dos conceitos de interfaces abstratas e adaptadores de interfaces Objetivo: compatibilizar a interface abstrata de um cliente com as interfaces concretas das réplicas que este cliente consulta Um objeto adaptador deve implementar a interface abstrata e possuir uma referência para o serviço que está sendo adaptado 22/64

Sessão de uso As operações opstart e opend delimitam uma sessão Desabilitam e habilitam o emprego de uma política de seleção de réplicas Aplicação Operação altera o estado de uma réplica e exige que as operações seguintes sejam processadas sobre o estado alterado Exemplo - Sistema de comércio eletrônico: operações como pesquisaproduto, login e logout 23/64

Protocolo de Invocação Define um protocolo com seqüências válidas de mensagens enviadas aos servidores remotos por meio de um AFD Cada transição representa uma chamada ao método da interface abstrata (se o estado atual não possui uma transição correspondente ao método, a referida chamada é inválida) 24/64

Estudo de caso Método Invocado pesqproduto pesqproduto additemcarrinho login additemcarrinho listacarrinho efetuacompra logout pesqproduto pesqproduto Servidor 1 3-2 2 2 2 2 3 4 Estado q0 q0 Msg Erro q1 q1 q1 q1 q0 q0 q0 25/64

Timeout Tempo máximo no qual o cliente está disposto a esperar por uma resposta das réplicas Tempo considerado a partir da invocação até o momento em que a aplicação cliente recebe a resposta Timeout em sessões de uso No caso de perda da conexão durante uma sessão de uso é possível definir: número de tentativas para restabelecer a sessão intervalo entre cada tentativa 26/64

Interface de Programação SmartWS Arquitetura Geração Funcionamento Linguagem de especificação 27/64

Arquitetura do Sistema 28/64

Processo de geração de SmartWS 29/64

Funcionamento de SmartWS (política PBM) 30/64

Linguagem de especificação (sintaxe) interface name= EchoInt webservice alias= service1 uri= http://200.154.100.23/echo.asmx?wsdl adapter= terra1 webservice alias= service2 uri= http://200.154.100.232/echo.asmx?wsdl adapter= terra2 webservice... buffer size= 5 refresh= 20 timeout= 20000 policy pbm(1.2, 2, 10, 3, service1, service2,..., servicen ) end 31/64

Linguagem de especificação (sintaxe)... buffer... session begin= login finish= logout retry= 5 interval= 3000 protocol methods= pesqproduto, login, logout, additemcarrinho, remitemcarrinho, efetuacompra, limpacarrinho, listacarrinho states= q0, q1 transitions= q0, pesqproduto, q0; q0, login, q1; q1, additemcarrinho remitemcarrinho..., q1; q1, logout, q0; timeout = 20000 policy... end 32/64

Exemplo de implementação de uma aplicação cliente de SmartWS public class cliente { public static void main(string[] args){ //Instancia o objeto do tipo PROXY convtemp teste = PROXY.getInstance(); for(int x=1; x<=100; x++) { try { teste.ctof(100); } catch (WSFailureInvocation e) {... } catch (ProtocolFailure e) {... } catch (Exception e) {... } } } } 33/64

Resultados Experimentais Cenário 1 4 experimentos curtos 100 invocações (cada política) 3 servidores utilizados em cada experimento Políticas utilizadas: Estática, Aleatória, Paralela, via Melhor Mediana e PBM Serviço utilizado conversão de temperatura Cenário 2 3 experimentos de longa duração Cada experimento 4 dias (segunda a quinta-feira) 24h por dia 6 servidores utilizados Políticas utilizadas: Aleatória, Paralela, via Melhor Mediana e 2 variações da política PBM Serviço utilizado Echo (mensagens de 8 KB, 4 KB e 1 KB) 34/64

Resultados Experimentais Experimento 1 (Cenário 1) Foram utilizados 3 servidores (WebserviceX, DeveloperDays, local) 35/64

Resultados Experimentais Experimento 2 (Cenário 1) Foram utilizados 3 servidores locais (iniciados sem nenhuma carga extra de processamento) 36/64

Resultados Experimentais Experimento 2 (Cenário 1) Distribuição de cargas 37/64

Resultados Experimentais Experimento 3 (Cenário 1) Foram utilizados 3 servidores remotos (WebserviceX, DeveloperDays, CEFET-MG) O tempo de resposta dos servidores variava de forma considerável Servidores apresentavam sempre uma baixa taxa de falhas 38/64

Resultados Experimentais 39/64

Resultados Experimentais Experimento 4 (Cenário 1) Foram utilizados 3 servidores (WebserviceX, DeveloperDays, local (indisponível nas primeiras 50 invocações)) 40/64

Resultados Experimentais 41/64

Resultados Experimentais Serviços utilizados nos Experimentos 5, 6 e 7 (Cenário 2) WS 1 - http://200.176.0.129/echo.asmx?wsdl (Terra) WS 2 - http://200.154.100.232/echo.asmx?wsdl (Terra) WS 3 - http://201.87.225.6/echo.asmx?wsdl (Empresa de BH) WS 4 - http://200.214.173.151/mpvrisk/echo.asmx?wsdl (Empresa de BH) WS 5 - http://200.131.41.132:8180/axis/echo.jws?wsdl (CEFET - MG) WS 6 - http://143.106.7.180/axis/echo.jws?wsdl (Unicamp) 42/64

Resultados Experimentais Configurações da política PBM nos Experimentos 5, 6 e 7 (Cenário 2) Argumentos n t k p PBM 16 3 1,2 1 PBM2 16 3 1,2 2 43/64

Resultados Experimentais Semana 1ª 2ª 3ª Registro de falhas durante os Experimentos do Cenário 2 Mensagens 8 KB 4 KB 1 KB Experimento 5 6 7 Número de Invocações 30075 26010 38510 Timeouts 424 (1,4%) 887 (3,4%) 1382 (3,6%) Outras falhas 66 (0,2%) 41 (0,2%) 29 (0,1%) Obs.: Outras falhas - falhas na rede local, no acesso à Internet ou nos servidores consultados 44/64

Resultados Experimentais Experimento 5 (Cenário 2) Experimentos com 8 KB 45/64

Resultados Experimentais 46/64

Resultados Experimentais 47/64

Resultados Experimentais 48/64

Resultados Experimentais Experimento 6 (Cenário 2) Experimentos com 4 KB 49/64

Resultados Experimentais 50/64

Resultados Experimentais 51/64

Resultados Experimentais 52/64

Resultados Experimentais Experimento 7 (Cenário 2) Experimentos com 1 KB 53/64

Resultados Experimentais 54/64

Resultados Experimentais 55/64

Resultados Experimentais 56/64

Resultados Experimentais Somatório dos tempos de invocação - Mensagens de 8 KB 57/64

Resultados Experimentais Somatório dos tempos de invocação - Mensagens de 4 KB 58/64

Resultados Experimentais Somatório dos tempos de invocação - Mensagens de 1 KB 59/64

Contribuições Proposta de uma nova política de seleção chamada PBM (Parallel Best Median) Implementação de um protótipo em Java do sistema SmartWS Utiliza o conceito de smart proxies Suporta as principais políticas de seleção de servidores replicados, incluindo a política proposta PBM Adaptação de interfaces remotas Estabelecimento de sessões de uso Definição de protocolos de invocação Smart proxies são gerados automaticamente a partir de uma linguagem de especificação de alto nível Validação do protótipo proposto, por meio de experimentos Definição de diretrizes que permitem a um programador de clientes de serviços Web optar pela política mais adequada a sua aplicação 60/64

Conclusão Diretrizes para escolha de políticas de seleção de réplicas Política Estática Aleatória Mediana Ambiente Computacional Recomendada quando se tem servidores com tempos de resposta conhecidos a priori, estáveis e diferentes entre si (Experimento 1) Recomendada quando se tem servidores com tempos de resposta conhecidos a priori, estáveis e semelhantes entre si (Experimento 2) Recomendada quando se tem servidores desconhecidos a priori, mas que apresentam pequenas variações nos tempos de resposta. Não recomendada para ambientes instáveis, como a Internet (Experimentos 3, 5, 6 e 7) 61/64

Conclusão Política Paralela PBM Ambiente Computacional Recomendada quando se tem servidores com tempos de resposta desconhecidos ou que variam ao longo do tempo, que falham com freqüência considerável e em situações onde é permitido invocar todas as réplicas simultaneamente. Recomendado somente quando se utiliza um tamanho de mensagem que gere um overhead suportado pela rede (Experimentos 6 e 7) Recomendada quando se tem servidores com tempos de resposta desconhecidos ou que variam ao longo do tempo, que falham com freqüência considerável e onde o tamanho da mensagem não é previamente conhecido. Recomendada para ambientes como a Internet (Experimentos 4, 5, 6 e 7) 62/64

Trabalhos Futuros Permitir que as configurações da política PBM sejam definidas em tempo de execução Definir, por exemplo, um tamanho de ciclo maior ou menor, como mais ou menos invocações em paralelo Desenvolver um mecanismo para monitoramento e análise dos dados históricos, com o objetivo de prever mudanças de comportamento no ambiente Sugestão - utilizar técnicas de Inteligência Artificial como, por exemplo, Redes Neurais Fazer um estudo para definir o limite suportado com mensagens de tamanho x em uma rede com largura de banda y, acessando em paralelo z servidores Web 63/64

Trabalhos Futuros Permitir, em tempo de execução, uma combinação das políticas suportadas por SmartWS, ou mesmo alteração entre elas Definir em SmartWS a utilização de buffers diferentes para cada método, ou classes de métodos, de um servidor 64/64

Smart Proxies para Invocação de Serviços Web Replicados José Geraldo Ribeiro Júnior (CEFET-MG / PUC Minas) Orientador: Prof. Marco Túlio Valente (PUC Minas) Fevereiro 2007