O Google lançou a versão alpha de um novo serviço chamado Cloud Functions. Este serviço permite a criação de pequenas funções JavaScript que respondem a eventos da cloud sem necessidade de intervenção do usuário, configuração e execução do ambiente de runtime, ou escalar para múltiplas máquinas.
Em um ambiente de cloud podem ocorrer vários eventos, que são propagados assincronamente através da infraestrutura de Cloud Pub/Sub. O usuário pode configurar um gatilho que é disparado de acordo com os eventos registrados e aciona a execução do código JavaScript em um ambiente Node.js. Atualmente, gatilhos podem ser ativados por meio dos seguintes canais.
- Cloud Pub/Sub: qualquer evento assíncrono de Publicação/Subscrição;
- Cloud Storage: notificações de alterações no objeto armazenado;
- HTTP Invocation: invocação síncrona por meio de HTTP;
- Debug/Direct Invocation: uso da Interface de Linha de Comando para implantar ou depurar Cloud Functions.
De acordo com o Google, o que as Cloud Functions podem fazer:
A função pode acessar qualquer outro recurso da cloud que tenha bibliotecas cliente Node (JavaScript) ou APIs RESTful. Se forem utilizadas bibliotecas clientes gcloud-node, a autenticação é realizada automaticamente com as credenciais padrão do projeto, desta forma não é necessária a preocupação com geração e armazenamento de chaves de autenticação, entre outras coisas.
A função tem total acesso a internet, e por isso pode realizar chamadas para qualquer API de terceiros, porém deve ser realizada a manutenção das chaves de autenticação para estes serviços externos.
O Google não comentou sobre o desenvolvimento futuro, então não é possível saber outras linguagens serão suportadas, porém é provável que sim.
A Amazon possui um serviço similar chamado AWS Lambda. As funções lambda podem ser acionadas diretamente pelos serviços CloudWatch, DynamoDB, Kinesis, SNS, S3, ou por alterações no estado do sistema, alterações de dados ou ação do usuário. O AWS Lambda pode ser usado no processamento de arquivos em tempo real ou fluxo de dados, na execução de várias operações nos dados que são carregados ou modificados. O AWS Lambda suporta Java, JavaScript/Node.js e Python, com a promessa que outras linguagens serão suportadas no futuro.