Amazon adds several enhancements to its Simple Queue Service (SQS)

Last week when the world was busy with the release of Java support to Google App Engine, Amazon added several enhancements to its Simple Queue Service (SQS) which are mentioned below:

1. Added ability to share queues, including support for anonymous access.

2. Added Policy as a value for the Attribute.

3. Changed the global reference in the MessageQueue service.

4. Added one new operation for messages: ChangeMessageVisibility i.e. one can change the message persistence on a queue for more than the default persistence time of twelve hours.

5. Added two new access control operations: AddPermission and RemovePermission.

6. The SQS schema is now inline in the WSDL. There is no longer a separate URL for the schema.

7. Added a new endpoint for the European community.

The enhancements on access control to queues or the concept of shared queues  is similar to the features available in Websphere MQ, i.e. a queue can be “PUT” (i.e. write), “GET” (i.e. read) enabled or both. You can also control access (through authorization) to a queue using “setmqaut” command. However, Amazon’s SQS introduces access control on a queue in two ways:

a) A Simple API for shared queues
b) An advanced API for shared queues

The simple API provides two operations for sharing a queue namely: AddPermission (allows one to access a queue) and RemovePermission. With the simple API, Amazon writes a policy based on the information provided in the AddPermission operation. This policy is limited in scope. Here’s where the advanced API for shared queues helps. With the advanced API “you write the policy yourself directly in the access policy language and upload the policy with the SetQueueAttributes operation. The advanced API allows you to deny access or to apply finer access restrictions.”

From SQS developer documentation here:

“The following example policy gives the developer with AWS account number 123456789012 the SendMessage permission for the queue named 987654321098/queue1.”

sqs-policy1

The introduction of the policy language is an important announcement and Amazon is planning to use this policy language across all its other services.

Cast Iron with Google’s SDC attempts to simplify integration with Google Apps

google-castiron1

Cast Iron Systems provides integration services between enterprises and various on demand services. The integration process offered by Cast Iron uses pre configured templates for integrating with on demand services resulting in benefits such as lower costs of integration, faster time to market and simple management among others.

Cast Iron provides straight out of box support for Google’s Secure Data Connector (SDC) to integrate Google Apps, Google App Engine and Google Sites with enterprise data that can be made available from repositories such as ERP, CRM and SaaS applications among others. The straight out of box support might push the adoption of SDC in enterprises. Cast Iron for Google Apps is offered as an appliance, SaaS (cloud) offering and virtual appliance.

Related article(s) of possible interest:

The value proposition of SaaS Integrators

Overview of Java support in Google App Engine

What you cannot do using Java in Google App Engine

What you cannot do using Java in Google App Engine

1. Cannot write to the filesystem. Must use Data Store for persistence.

2. Cannot open a socket or access another host directly.

3. Cannot spawn a sub-process or thread.

4. Cannot make other kinds of system calls.

5. Cannot create a new java.lang.ThreadGroup nor a new java.lang.Thread. However, operations against the current thread, such as Thread.currentThread().dumpStack() is allowed.

6. The features of the java.lang.System class that do not apply to App Engine are disabled.

7. The System methods such as: exit(), gc(), runFinalization() and runFinalizersOnExit() do nothing.

8. Cannot directly invoke JNI code

9. Application is allowed full, unrestricted, reflective access to its own and JRE classes. However, An application cannot reflect against any other classes not belonging to itself, and it can not use the setAccessible() method to circumvent these restrictions.

Related Post: Overview of Google App Engine for Java

Overview of Java support in Google App Engine

Google App Engine now supports Java. This posting provides a high level overview of Google App Engine for Java.

gae-1

1.    What is Google App Engine?

Google App Engine is offered as a Platform as a Service (PaaS) where one can develop applications and run it in Google’s infrastructure. The value proposition is the easy implementation, no servers to maintain, easy to scale and easy maintenance.

2.    Services

Google App Engine now supports Java 1.6 and 1.5 and exposes several services via Java API which are listed below:

a.    URL Fetch Service

  • Access data over Internet: Provides the ability for applications to fetch resources and communicate with other hosts over the internet using HTTP and HTTPS requests.
  • Access data behind your Corporate Firewall: Is made possible using Google Secure Data Connector (SDC) service. Basically SDC enables data encryption exchanged between Google Apps domain or your application running on Google App Engine and your corporate network by wrapping the data in socks protocol and encrypting it.

b.    Mail Service

Provides the ability for applications to send email messages using Java Mail API on behalf of application’ administrator or as users with Google accounts.

c.    Cache Service

A distributed in-memory data cache exposed as Memcache API by implementing JCache.

d.    Image Manipulation Service

This service provides the ability to manipulate image data such as resize images or rotate, flip, and crop images. It can also enhance photographs using a predefined algorithm.

e.    Task Scheduling (Cron) Service

Allows you to configure regularly scheduled tasks that operate at defined times or regular intervals.

f.    Google Account Service

Integration between Google App Engine and this account service is an optional feature in App Engine. This service enables an application to authenticate users with Google Accounts.

3.    Persisting Data

App Engine exposes access to the data store via JDO and JPA implemented by the open source Data Nucleus Access platform.

4.    Development and tooling

The App Engine software development kits (SDK) for Java includes the following:

  • A web application and a web server that emulates all App Engine services on your local development machine.
  • The SDK includes all the APIs and libraries available on App Engine.
  • The SDK includes support to upload your application to App Engine.
  • Eclipse IDE is supported for developing App Engine applications through Google Plugin for Eclipse.

5.    Logging

Applications can write information to the log files using java.util.logging.Logger. Log data for an application can be viewed and analyzed using the Administration Console, or downloaded using appcfg.sh request_logs.

6.    Configuration and Deployment

  • Configuration files include the standard Java Web Deployment descriptor web.xml, an App Engine specific file called appengine-web.xml that contains the deployment and execution details of the application.
  • Then upload the application using App Engine Admin console or Eclipse or through command prompt.
  • Register the application using Admin Console (requires Google Account) and specify a  id for your application
  • If you use the free domain appspot.com then the access URL for your application would be app-id.appspot.com

7.    Quotas and Limits

An App Engine application can consume resources up to certain maximums, or quotas. With quotas, App Engine ensures that your application won’t exceed your budget, and that other applications running on App Engine won’t impact the performance of your app. A sample quota for HTTP(s) request is shown below (image courtesy: Google). Quotas are applicable to various other requests such as to data store, email messages and their details are available here. There are some things that you cannot do using the Java API for Google App Engine listed here.

google quotas

Brief Overview of HP Cloud Assure services

HP Cloud Assure is offered as a turnkey solution providing three services:

·         Cloud Security provides end to end solution for performing security risk assessments to detect and correct security issues.

·         Cloud Performance offers application testing service and also lets business the experience perceived by the users. (via synthetic monitoring)

·         Cloud Availability (CA) provides visibility into service uptime and availability with business analytics enabled. CA also enables to isolate problems and detect root causes.

 

How it works?

·         Contact HP Tech. Account Manager (TAM)

·         TAM/HP Engineers gather info about your service

·         HP SaaS team configures security, availability & performance services

·         Services include availability dashboard, performance reporting & incident detection/alerting

 

Market Impact:

HP Cloud Assure competes directly with:

      Performance testing services such as SOASTA, BrowserMob and Keynote Systems

      Security SaaS such as Qualys, Panda Security among others

      Cloud Availability service from vendors such as AdventNet.

Sun Microsystems rejects IBM’s acquisition offer

Wall Street Journal reports “Sun’s board rejected a formal acquisition offer by IBM on Saturday, sending a notice terminating Sun’s agreement to negotiate exclusively with IBM. IBM on Sunday withdrew its offer to buy Sun, said a person informed about the situation.”

Keynote, a cloud performance management solution is on fire

Forrester rates Keynote Systems is on fire. The complete report is available here. See my write up on Keynote vs. SOASTA here.