• No results found

4. Hvordan bør kompensasjonen gis?

5.2 Gjelder statsstøttereglene for tjenesteleverandørene?

No contexto Next>, uma API REST é um serviço que poderá trazer grandes vantagens, dado que permite o desenvolvimento de diversas aplicações para uma gama de dispositivos mais alargada. Sendo a Next> uma plataforma com o intuito de se tornar uma referência internacional no mercado de contratação eletrónica, é essencial que acompanhe o avanço tecnológico e proporcione diversas formas de integração com plataformas externas.

Arquitetura e Escalabilidade

Como já foi referido (3.1), no ecossistema Next> existem dois componentes principais: o Marketplace e o Community. O Community funciona como um gestor de vários conteúdos (p.e. informação de empresas) e o Marketplace representa a área de trabalho dos compradores e dos fornecedores. Assim, é possível concluir que a informação com mais relevância para o negócio do utilizador se encontra ao nível do Marketplace, ou seja, toda a informação relacionada com as consultas da plataforma (respostas, avaliações, negociações, etc. ). Devido a este facto, o Marketplace vai ser o foco de toda a dissertação e de todas as soluções apresentadas, sem prejuízo de a arquitetura da solução apresentar flexibilidade suficiente para a inclusão de informação derivada de outras fontes internas à plataforma. Assim sendo, quando se pensa na disponibilização de uma API, é aconselhável que esta se encontre ao nível do Marketplace, que seja acessível através de Web Services REST, que seja responsável pela comunicação com a plataforma e pelo retorno dos dados no formato adequado (Figura 26).

Avaliação das Possibilidades

36

Figura 26 – Visão geral da arquitetura Next> com uma API REST

Esta solução tem um impacto reduzido na arquitetura dado que apenas é necessário definir camadas de acesso independentes da arquitetura atual que, por sua vez, possuam os métodos necessários para aceder aos dados já existentes.

A escalabilidade é, muitas vezes, referida como a facilidade de um sistema ser modificado de forma a responder a um determinado problema. Esta definição de escalabilidade é suficientemente vaga para gerar confusão e diferentes opiniões relativamente ao assunto. A escalabilidade é, um conceito bastante simples que assenta em três princípios base [29]:

 Capacidade de um sistema se adaptar ao aumento de utilização;

 Capacidade de um sistema suportar um maior conjunto de dados;

 O sistema ser de fácil manutenção.

Para uma API REST garantir alta escalabilidade é necessário uma arquitetura por camadas tal como numa aplicação web, ou seja, pode existir uma camada responsável por receber pedidos de clientes e uma outra para aceder a um ou vários recursos para fornecer a resposta adequada (Figura 27) [30] . Se pensarmos numa API como uma aplicação web comum, a alta escalabilidade pode ser garantida utilizando uma aproximação ao padrão arquitetural Model- View-Controller.

Avaliação das Possibilidades

Facilidade de Desenvolvimento

Uma API REST deve ser sempre acompanhada de uma manual de utilização (i.e. documentação), onde são explicados quais os métodos existentes e a forma de os invocar (Figura 28). Assim, do ponto de vista dos utilizadores finais, a utilização de uma API é um processo bastante simples e de fácil habituação que consiste na realização de pedidos HTTP e interpretar/tratar as respostas do servidor.

Apesar de ser uma abordagem de fácil utilização, esta apenas fornece a possibilidade de realização de operações de gestão sobre a informação (leituras e escritas), o que significa que os restantes componentes aplicacionais, como a interface, têm de ser garantidos e preparados pelos utilizadores.

Figura 28 – Documentação Típica de uma API REST (Twitter) [31]

A disponibilização da API REST é, sem dúvida, a mais simples das três abordagens mencionadas. De uma forma muito genérica, para esta solução é necessário garantir uma camada aplicacional de Web Services (Figura 26) responsáveis por receber pedidos HTTP, comunicar com o servidor e gerar uma resposta adequada.

Performance e Interoperabilidade

Segundo a Yahoo [32], a melhor técnica para aumentar a performance web é minimizar o número de pedidos HTTP. Pelo facto de a utilização das API’s REST ser baseada em constantes pedidos HTTP ao servidor, rapidamente se conclui que este principio é perdido e que a performance da plataforma é afetada.

Com o crescimento de utilização da API, o número de aplicações desenvolvidas através da mesma irá, consequentemente, aumentar levando assim ao aumento do número de pedidos diários recebidos (Figura 29).

Avaliação das Possibilidades

38

Figura 29 – Exemplo de utilização de uma API REST [30]

Com o aumento do número de pedidos diários, a carga do servidor web e da Base de Dados aumenta. Se nenhuma ação for tomada no sentido de balancear esta carga, o tempo de resposta irá consequentemente crescer.

As API’s REST são muito utilizadas no contexto web, mas têm ganho muita popularidade no desenvolvimento de aplicações para dispositivos móveis, pelo facto de os dados serem passados em formatos leves com um baixo consumo de largura de banda (JSON). Das três soluções apresentadas esta é, sem dúvida, aquela que garante uma maior interoperabilidade por conseguir atingir um maior número de dispositivos, nomeadamente, os dispositivos móveis.

Time to Market

O Time to Market (TTM) é o período de tempo entre a concepção de um produto e a sua disponibilização no mercado para venda. É um fator muito importante para as empresas que disponibilizam produtos e serviços pois, quanto mais pequeno for maior é a probabilidade de o produto entrar no mercado antes dos concorrentes diretos e captar a atenção dos consumidores finais.

Uma API REST, apenas é responsável por disponibilizar diferentes tipos de recursos para gestão de dados, ou seja, os restantes componentes aplicacionais são garantidos pela empresa ou pelo programador que a está a utilizar. Assim, no caso da API, cabe à empresa ou ao programador garantir o TTM mais curto possível.

Vantagem Competitiva

As API’s públicas, quando suficientemente boas para atrair a atenção de vários programadores, têm um impacto muito grande no negócio base de uma empresa [14]. Para além de ser possível atingir um maior número de dispositivos, uma API pode ser verdadeira vantagem competitiva.

Avaliação das Possibilidades

Software Development Kits

Arquitetura e Escalabilidade

Para o desenvolvimento de um SDK, é necessário criar pontos de extensibilidade na plataforma atual para que sejam disponibilizados os componentes, os dados e as ferramentas essenciais ao desenvolvimento. Estes pontos de extensibilidade seriam criados ao nível do Marketplace, pelas mesmas razões referidas em 5.1.

O próximo passo seria disponibilizar o SDK como um componente isolado da arquitetura Next>, um IDE (p.e. uma página web integrada na plataforma atual), ferramentas e comportamento próprios (Figura 30). Pelo facto de o SDK ser focado no desenvolvimento para a plataforma Web da Vortal, necessitaria de comunicar com esta utilizando os pontos de extensibilidade acima referidos e, assim, garantir aos seus utilizadores toda a informação, métodos e ferramentas necessárias.

Figura 30 – Visão Geral da Arquitetura Next> com um SDK

Esta solução tem um impacto considerável na arquitetura atual pois, para o SDK garantir, por exemplo, as ferramentas de compilação e teste das aplicações desenvolvidas necessita de as conseguir integrar no ambiente aplicacional da Next>, sem por em causa o funcionamento e performance da mesma (p.e. como acontece com os emuladores dos dispositivos móveis). A arquitetura de um SDK, como já foi referido, tem de ser pensada e desenhada de forma a contemplar vários componentes e garantir diferentes tipos de ferramentas. Um dos aspectos fundamentais na arquitetura de um SDK, para além da facilidade de utilização e performance, é garantir que este se consiga adaptar às constantes mudanças do negócio sem necessitar de grandes alterações, ou seja, é importante que este apresente altos níveis de escalabilidade. Um SDK apenas garante alta escalabilidade se esta for pensada desde o início do seu desenvolvimento.

Avaliação das Possibilidades

40

Facilidade de Desenvolvimento

O objectivo principal de um SDK é fornecer, a um programador, as ferramentas necessárias para o desenvolvimento completo de uma aplicação (interface, lógica e persistência de dados). As aplicações desenvolvidas, tipicamente, são incorporadas num sistema computacional superior (p.e. sistema operativo móvel) e, por isso mesmo, não é comum encontrar dois SDK’s com os mesmos princípios e metodologias de desenvolvimento. Por este facto, o desenvolvimento de aplicações utilizando SDK’s exige um esforço de aprendizagem inicial, que passa por entender os seus componentes e arquitetura. É uma abordagem mais complexa para os utilizadores (convém, por exemplo, que estes tenham bases de programação), mas pode tornar-se uma experiência muito gratificante a nível técnico, levando mesmo ao aparecimento de novos negócios, empresas e especialistas.

O desenvolvimento do SDK é um processo complexo, onde é necessário simplificar a sua arquitetura e fornecer um conjunto de ferramentas adequadas para que a interação do utilizador com o mesmo seja o mais simples e intuitiva possível.

Performance e Interoperabilidade

No que toca à performance, o SDK apresenta grandes vantagens relativamente às restantes abordagens, dado que pode e deve existir uma metodologia de validação e teste das aplicações desenvolvidas (como acontece com a AppStore e a Play Store), ou seja, permite que o ambiente Next> seja controlado.

Depois de um utilizador desenvolver uma determinada aplicação, esta é submetida para validação. Durante o processo de validação, uma equipa especializada no interior da empresa (neste caso da Vortal) será responsável por testar e identificar os pontos de melhoria da aplicação, para que o correto funcionamento da plataforma não seja posto em causa. De notar, que os componentes do SDK disponibilizados para o desenvolvimento das aplicações, encontrar-se-ão optimizados a nível de segurança e da performance de forma a minimizar o impacto na plataforma atual.

O desenvolvimento de aplicações com base em SDK, é focado numa plataforma ou sistema computacional em específico, por exemplo, o SDK de Android apenas permite o desenvolvimento de aplicações para dispositivos móveis com este sistema operativo. No caso da plataforma Vortal, o SDK permitiria o desenvolvimento de aplicações para integrar a

Avaliação das Possibilidades

plataforma web (Vortal Next>) e, por isso, a interoperabilidade da solução é mais reduzida quando comparada com as API’s REST.

Time to Market

O TTM das aplicações desenvolvidas utilizando o SDK é medido pelo tempo necessário para o desenvolvimento da mesma (como acontece com a API), mas neste caso também é preciso ter em conta o tempo de validação necessária para verificar se a aplicação está em condições para integrar o ambiente aplicacional da Next>. É, talvez, a solução que tem um TTM mais demorado mas, que pelo facto de compreender uma fase de validação das aplicações, garante uma performance controlada da plataforma.

Numa segunda fase, como evolução da solução, é possível construir um motor de regras que tenha a responsabilidade de avaliar a aplicação de forma automática em diferentes aspetos (segurança, performance, etc.) e, por consequência, melhorar o TTM removendo toda e qualquer intervenção humana do processo de validação e verificação do programa.

Vantagem Competitiva

Para além de um SDK permitir o crescimento do leque de funcionalidades presentes na plataforma, pode ser um aspecto diferenciador dos concorrentes do mercado e gerar uma grande parte dos lucros da empresa.

Os SDK’s são, por norma, pacotes de software gratuitos sendo passível a implementação de uma política de pay per use. Existe um SDK base com as funcionalidades essenciais para os utilizadores, onde é possível comprar componentes adicionais que garantam funcionalidades e melhorias em diversos aspectos.

A biblioteca de componentes do SDK é fundamental para o sucesso do mesmo pois, necessita de garantir liberdade aos utilizadores para desenvolver as aplicações que melhor se adequam às suas necessidades. Assim, é possível considerar a existência de um componente que possibilite a disponibilização de uma API REST, por parte dos utilizadores, e garantir todas as vantagens aplicacionais e competitivas descritas em 5.1.

Apesar de as aplicações desenvolvidas serem integradas na plataforma Next>, a sua execução será realizada num ambiente estanque e bem definido que não compromete a performance e a disponibilidade da plataforma. Para além de o bom funcionamento da plataforma atual ser

Avaliação das Possibilidades

42

garantido, é garantida também a transversalidade das aplicações, ou seja, é possível que estas migrem para outras plataformas desde que seja criada a interface com os serviços adequados. Para além disto, é ainda possível cobrar aos utilizadores pela submissão das aplicações na plataforma ou até mesmo haver um valor mensal/anual que estes necessitem de pagar para desenvolver as aplicações.