Como converter back-ends em serviços

O uso da API Backend foi suspenso em 13 de março de 2014 e ela será encerrada em 13 de março de 2019. Os desenvolvedores precisam migrar todas as instâncias de back-end para serviços, caso contrário as instâncias não serão mais gerenciáveis e deixarão de disponibilizar o tráfego.

A arquitetura original do App Engine é baseada em uma única instância de front-end com instâncias de back-end opcionais. Se você tem um aplicativo que usa back-ends, talvez queira convertê-los para um formato de serviço e aproveitar ao máximo a funcionalidade adicional que os serviços oferecem, como a capacidade de gerar versões de back-ends.

No App Engine, um back-end existente é executado automaticamente como uma nova versão não padrão do serviço padrão. Os back-ends residentes recebem escalonamento manual e os back-ends dinâmicos, escalonamento básico.

É possível converter instâncias de back-end em serviços designados versionados, com tipos de escalonamento e classes de instâncias explícitos. É necessário substituir o arquivo original backends.xml por vários arquivos WAR, um para cada serviço. O procedimento é o seguinte:

  1. Crie um diretório EAR de nível superior.
  2. Crie um subdiretório META-INF no diretório EAR que contém um arquivo appengine-application.xml e um application.xml.
  3. Adicione elementos de declaração de serviço ao arquivo application.xml.
  4. Crie um subdiretório no diretório EAR para cada serviço no aplicativo, incluindo o serviço padrão. Por convenção, os subdiretórios têm o mesmo nome que o serviço que os define.
  5. Copie o conteúdo do diretório WAR original para cada subdiretório. O WAR original precisa ter um subdiretório denominado WEB-INF. Cada novo subdiretório precisa ter sua própria cópia desse diretório.
  6. Adicione elementos de configuração do serviço aos arquivos appengine-web.xml em cada subdiretório para configurações, como nome do serviço, dimensionamento ou classe de instância
  7. Os arquivos de configuração de aplicativos, como cron.xml, dispatch.xml ou dos.xml, só podem ser incluídos no subdiretório de serviço padrão. Remova esses arquivos de todos os outros subdiretórios do serviço.

Por exemplo, veja um arquivo example/backends.xml que define três back-ends (memdb, worker e cmdline):

<backends>
 <backend name="memdb">
   <class>B8</class>
   <instances>5</instances>
 </backend>
 <backend name="worker">
   <options>
     <fail-fast>true</fail-fast>
   </options>
 </backend>
 <backend name="cmdline">
   <options>
     <dynamic>true</dynamic>
   </options>
 </backend>
</backends>

Para converter esses back-ends em serviços, primeiro suponha que você criou um novo diretório EAR denominado "ear". Declare os back-ends como serviços no arquivo ear/META- INF/application.xml. Observe que esse arquivo também declara o serviço padrão:

<?xml version="1.0" encoding="UTF-8"?>
<application
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/application_5.xsd"
  version="5">

  <description>Demo Application</description>
  <display-name>My Java App</display-name>

  <!-- Default Module -->
  <module>
    <web>
      <web-uri>default</web-uri>
      <context-root>defaultcontextroot</context-root>
    </web>
  </module>
  <!-- Other Modules -->
  <module>
    <web>
      <web-uri>memdb</web-uri>
      <context-root>memdb</context-root>
    </web>
  </module>
  <module>
    <web>
      <web-uri>worker</web-uri>
      <context-root>worker</context-root>
    </web>
  </module>
  <module>
    <web>
      <web-uri>cmdline</web-uri>
      <context-root>cmdline</context-root>
    </web>
  </module>
</application>

A configuração para cada serviço está gravada em um arquivo appengine-web.xml separado, no subdiretório correspondente. Em ear/memdb/WEB-INF/appengine-web.xml:

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>my-java-app</application>
  <module>memdb</module>
  <version>uno</version>
  <threadsafe>true</true>
  <instance-class>F4</instance-class>
  <manual-scaling>
    <instances>5</instances>
  </manual-scaling>
</appengine-web-app>

Em ear/worker/WEB-INF/appengine-web.xml:

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>my-java-app</application>
  <module>worker</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
   <!-- For failfast functionality, please use the ‘X-AppEngine-FailFast’ header on requests made to this module. -->
  <instance-class>F2</instance-class>
  <manual-scaling>
    <instances>5</instances>
  </manual-scaling>
</appengine-web-app>

Em ear/cmdline/WEB-INF/appengine-web.xml:

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>my-java-app</application>
  <module>cmdline</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
  <instance-class>F2</instance-class>
  <basic-scaling>
    <max-instances>10</max-instances>
  </basic-scaling>
</appengine-web-app>
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Java 8