Google App EngineがやっとPython以外のAPIとしてJavaをサポート。
本記事では他にも不足している機能について整理している。
Last week's announcement of Java support for Google App Engine (GAE), along with a host of new features aim specifically at businesses, served to reconfirm the Internet giant's interest in providing enterprises with its evolving cloud computing capabilities. So what's new and what's missing in GAE for enterprises that are looking to try out the cloud?
These additions move Google much closer to the enterprise space than it was previously, though there is still work to do.For its part, the enterprise software market has so far remained fairly resistant to Google's offerings, which range from search to SaaS products, at least compared to the uptake in software from established enterprise leaders such as Microsoft, IBM, Oracle, and SAP.
But today's increasingly broad interest in cloud computing may provide Google with an ideal opening. That is, if they can successfully deliver their unique strengths in the technical and economic underpinnings of networked computing in a form businesses find compelling for cutting costs, becoming more agile, and transitioning successfully to the next generation of computing.
The good news for Google: Of the big four enterprise firms mentioned above, only Microsoft currently has a credible cloud computing offering heading to the market with Azure, though IBM and Oracle are certain to follow shortly. Thus there is a clear opening for Google if it can offer businesses what they really need in the cloud before the leading enterprise software firms manage to arrive. It won't be easy; the network is Google's turf and it is clear that the platform wars have indeed returned, as I discussed a few weeks ago.
The original GAE was primarily a consumer Web application-focused cloud computing offering at the outset and was concerned about performance and high scalability much more than it cared about a robust feature set. It took cloud computing minimalism to a new level, though again, that was also about making it run quickly. GAE also required that you adopt its choices in programming language (Python), database (proprietary datastore), and request/response application model. And while it's not giving these up, the latest additions promise to bring many of the capabilities and technologies that enterprises will require and open up Google's nascent cloud computing platform for a much broader range of uses. As we'll see, these additions move Google much closer to the enterprise space than it was previously, though there is still clearly work to do.
Let's take a look at exactly what the new GAE offers from an enterprise perspective and then look at what is still missing for a truly complete enterprise offering.
Google App Engine - Circa April 2009
- Support for the Java JVM. You can now run Java 5 and 6 code on Google App Engine as long as it doesn't break the security sandbox on Google's servers. Given that most enterprises have standardized on either .NET or Java, this announcement alone is very big news since only Python was supported previously in GAE. While a good amount of enterprise code still won't run without changes (because it will violate the sandbox security constraints), this greatly reduces the barriers to adoption since code can usually be brought into compliance with GAE's requirements less expensively than rewriting it completely. Another key distinction is Google's decision to support Java byte-code directly instead of just being source-level compliant. This opens up a universe of possibilities including many now-popular Java platform capabilities such as dependency injection, aspect-oriented programming (AOP), and expression language runtimes. This also means just about any programming language capable of running within a JVM now works in GAE as well. Google has already tested GAE with Groovy, JavaScript, Python, Ruby, Scala, and Scheme, well-known languages that developers are very interested in at the moment. Because Java is one of the most widely used software platforms in the world, support at the JVM level allows GAE to take advantage of the nearly 15 years of rich history around the runtime and will let enterprises use a surprising amount of their software directly in Google's cloud
- Access to resources inside enterprises. The new Secure Data Connector (SDC) in GAE provides a secure tunnel into organizations that want to use their data, Web services, and SOAs from within GAE, without moving the data itself out into the cloud. SDC requires Google Apps Premier Edition, which brings along some potential entanglements, but in return provides a fully encrypted connection between Google App Engine applications and enterprise data inside the firewall. SDC also provides declarative filters to prevent inadvertent exposure of business data as well as OAuth, which is becoming popular for enabling safe access via open standards to secure Web APIs, for providing secure access to internal SOA services with best practices. With SDC, GAE can directly and safely access a much broader wealth of enterprise data than was possible previously, without the challenges of uploading titanic enterprise datasets across the Internet into Google's data center as well as dealing with GAE's still somewhat limited datastore.
- Database Import. Some types of application, however, particularly very high performance ones, will require enterprise data to be moved into Google's cloud. The new GAE database import tools allows businesses to bulk load their data off their premises and into GAE. This will allow enterprises to more easily and quickly migrate production datasets into GAE as needed. Note that only database import is offered for now, though Google promises to offer a way to bulk export data in the very near future.
- Batch job support. GAE originally offering computing based on an exclusive request/response model, just like the Web itself (HTTP GET/POST, etc.) This makes the GAE computing platform operate only when an inbound request comes in form the network but is a limitation when background processing has to take place. Previously, businesses had to establish their own batch jobs external to GAE using their own facilities. With built-in Cron support, GAE now supports both request/response and background processing, which is required to to meet a robust set of enterprise application requirements since background processing is critical for tasks like backups, report generation, asynchronous processing, etc.
Still missing capabilities from GAE
These new additions to GAE are important and certainly very welcome for enterprises looking at Google's cloud. But they won't yet meet the requirements of numerous enterprises which have evolved many specific technical needs to meet their goals with business software. While I predict that this new version of GAE is much more likely to elicit trials from businesses evaluating their cloud computing options, here are some of the capabilities that Google should consider adding to GAE for a truly enterprise-class cloud computing platform:
- Message queuing. Applications that handle large amounts of data or are heavily event driven need a way to store messages that can't be completely processed when they arrive. While cloud platforms are theoretically elastic enough to have enough horsepower to process all inbound messages no matter their number or size, the realities of physics (and perhaps pricing) dictate that some messages, and some types of applications that do heavy-duty processing, will fall behind. Amazon has had message queuing capabilities in their cloud for a while with Amazon SQS and GAE is well-advised to consider it.
- Server-side push and real-time events. Many types of business applications cannot cost-effectively use polling to see if data has changed or an important event has occurred. While Google has increased the timeouts for server-side responses to 30 seconds, there is still no effective way to notify external systems quickly when key events inside GAE have taken place. While the Cron job will help surface the event information (so too can requests), there is no official method today to get the information out to GAE clients. Real-time event processing is important for call center applications, financial dashboards, medical systems, and anything else which requires rapid and deterministic event transmission of business data to network clients.
- SQL database support. The built-in Datastore in GAE, which is reportedly based on BigTable, is not SQL and was never intended to be. While it's designed for petabyte data volumes, it has built in limitations to enable it to be distributed and extremely high performance. SQL databases, however, are the mainstay of enterprises today and many applications cannot be moved to Google's cloud with practical ease until some form of SQL databases is supported. Again, Amazon is ahead here with offering block storage for those that want it. Certainly using SQL databases will potentially reduce the performance and scalability of GAE-based apps which depend on bending the application model and developer habits to its unique database limitations (typically 1MB object sizes and 1000 rows at a time.)
- Enterprise-friendly management and monitoring. Tivoli, Patrol, and other IT management tools are the mainstays of enterprise datacenters and businesses will want a unified managmenet experience with their cloud computing resources as well as their local IT resources. While GAE exposes that raw dashboard data in XML format, it leaves the integration job up to enterprises. While help does seem to be on the way from management vendors, Google itself is not addressing the issue, an oversight when Google has the chance to impress businesses with its understanding of their needs and the resources to meet them.