Posts Tagged 'Google App Engine'

Billing Alerts Help Prevent Surprise Bills

Recently I was travelling from my home town Leicester to London by train for a meeting with a consulting client. I arrived at the train station at 6am for a 6.30am train, purchased a ticket and then heard an announcement that the train drivers were on strike and a very limited service was running. A little frustrated I went to the train companies Web site to see if any schedule of this limited service was available only to be greeted by the screen below.

My immediate thought was that this could easily have been averted with the use of the auto scaling of cloud computing which works perfectly in such times of large spikes of traffic to a Web application.

Autoscaling of resources is a great facility but it is not as straightforward as maybe first appears. Technically, it requires configuration on most cloud services. Take for instance Amazon’s AWS. Here a load balancer must be configured and then the CloudWatch service must be enabled with thresholds set for scaling up and down the number of server instances. Added to this there are business concerns too. The obvious one being how much the services will really cost in any particular month. We could be happily running our systems, but at what financial cost ?

Cloud services such as Amazon and Microsoft do not enable the setting of spending thresholds, although Google’s App Engine does. This means paying by credit card or by invoice may result in a surprise at the end of each month–the bill may be much larger than expected if usage is large. As a user of Amazon AWS, my company have been aware of this for some time and regularly check our billing data for abnormal patterns. We were thus delighted to hear that Amazon have now announced billing alerts. This service allows you to configure spending thresholds which when reached for any particular service will send you an immediate notification. This means that you will be aware as soon as spending is above your accepted limit and can take appropriate action at that time. The billing service makes use of the standard CloudWatch alarms and Amazon Simple Notification Service (SNS) for sending alerts. The free monthly usage tier of CloudWatch is 10 alarms and unto 1000 email notifications can be sent before charges are incurred. This facility is a much needed and welcome addition to the Amazon Web Service portfolio.

If you would like to understand more about cloud computing, consider attending Learning Tree’s course, Cloud Computing Technologies:  A Comprehensive Hands-On Introduction,  which provides a thorough coverage of the business and technical benefits of cloud computing as well as exposure to the products from the major vendors. For those looking to use Amazon Web Services, Learning Tree also have an excellent four day hands-on Amazon Web Services course where the lower level details of using and integrating these services are covered.

Hope to see you at one of these courses soon.

Chris Czarnecki

Committing to the Cloud

When I teach Learning Tree’s Introduction to Cloud Computing course I often get questions about how components from different public cloud vendors can be used together in an integrated application. The answer, of course, is: “it all depends on the application.” Here I would like to give a more comprehensive response than that.

This will be the first of a series of blog posts that will explore that question in some detail. I will go through the process of building a real-world application using services from Microsoft, Amazon and Google. Further, I will do all development and testing in the cloud. Dev/Test is often a good use case for organizations wishing to get started in the cloud. I will use a very minimal local machine which will allow me simply to connect to cloud resources using only RDP, SSH and HTTP.

My application will be designed using an n-tier architecture. There will be, at a minimum, a tier for storage, business logic and presentation. Since I am attempting to illustrate interoperability between cloud vendors it may make some sense to host components for each of the architectural tiers with different providers. So, somewhat arbitrarily, I will choose to host the storage on Amazon Web Services (exact service to be defined later), the business logic on Azure (so I can program in C# J) and the presentation on Google App Engine (since it is very cost-effective).

Follow along over the next few weeks. We will go from square zero to a fully functional, interoperable web application that uses services from the “Big 3” public cloud providers. We will provision our development, testing and deployment environments from a lightweight client (tablet PC). All the while we will track cloud costs and development time.

This should be fun!

Kevin Kell

Selecting a Cloud Java Platform

I recently posted about a project I am working on that will use cloud computing, and in particular a Java-based Platform as a Service (PaaS). The choice of platform came down to three providers:

  • Google App Engine
  • Amazon ElasticBeanstalk
  • CloudFoundry

Based on our requirements, each of the above platforms can be summarised as follows:
Google App Engine
This platform has many nice features, but does not support full Java. The lack of relational database support is also not ideal, but support for JPA is provided. Spring Framework applications can be deployed seamlessly. For our applications, where we wish to connect to Web services, the restricted I/O library support, coupled with the fact the outbound connections are forced to close after 10 seconds is not acceptable. The cost model is clear and attractive with a high free CPU and storage quota. Another factor for our application is the fact that SSL on customer domains is not supported.
Elastic Beanstalk
Amazon’s offering is attractive in that it offers the elegance of PaaS, but also the control of IaaS if required with support for full Java. Whilst still in beta, this service offers everything we require. The usage cost is clearly defined. A downside maybe is that the service is still in beta.
This service from VMWare, is very similar to Elastic Beanstalk without the lower level (IaaS type) control. The toolset is elegant and simple. The feature set is not quiet as rich as Beanstalk, for instance there is no email service as is available from Amazon AWS. However, the downside for this service is that it is in beta and currently free to use, but there is no indication as yet as to what the pricing model maybe.
In summary
We have decided to use Amazon Elastic Beanstalk, as it offers all the features we require with a clearly defined cost model. In addition, it offers the control at the level of IaaS if required. CloudFoundry is elegant too but with no pricing model available, and we cannot launch a live system on this. Google App Engine is elegant but suffers because of the lack of full Java support required for out application. We have in the background also began examining CloudBees. I will let you know about that in a future post. I will also keep you updated with out progress using Elastic Beanstalk. What is nice for Java developers is that there are many excellent choices available for PaaS.

Chris Czarnecki

Developing Java Applications for Google App Engine

For anybody building and deploying Java Web applications, whether internal business applications or public facing applications for general usage, hosting the application is a primary consideration. Google App Engine (GAE) provides a hosting environment that is potentially suitable for both types of applications. Before choosing GAE as the deployment environment a number of decisions, both technical and commercial must be made.

From a technical view, key questions include are what version of Java Standard Edition (JSE) is supported?, is all of enterprise Java supported (JEE)?, are there any special configuration files required ? and many others too. Business considerations include what is cost of the service, what is the support available, the reliability, vendor lock-in etc.

GAE runtime environment uses Java 6 so supports developing applications using Java 5 or 6. The runtime environment has some restrictions which enable it to provide scaling and reliability. A GAE application must not :

  • Write to the filesystem- Google provides a datastore as an alternative
  • Open a socket – Google provides a URLFetch service as an alternative
  • Spawn a new thread

In addition to these high level restrictions then Google publish a white list of the available Java classes from Java SE that can be used. From enterprise Java GAE supports the full Servlet and JSP API’s enabling developers to write applications using Frameworks built on these technologies, such as Spring MVC, Struts etc.

Whilst initially appearing somewhat restrictive, GAE does provide a large number of features and facilities for developers to not only host but also build scalable Java Web applications. I will detail these in further posts. Understanding the limitations/restrictions of Cloud Computing providers is vital when considering their adoption as well as the definite benefits they can bring. If you would like to know more about GAE and other Cloud Computing providers such as Amazon EC2 and Azure, why not consider attending the Learning Tree Cloud Computing Course.


Google App Engine SDK Release New Features

With grabbing a lot of the Cloud Computing headlines over the last few weeks with its new releases, announcements and acquisition of Heroku, the news that Google have released Google App Engine SDK 1.4.0 was easily missed. I thought that I would highlight what this important release adds to the SDK as Google announced this was the most significant App Engine release of the year.

First I will address the improvements to existing API’s. Until now, background tasks run from Cron or Task Queue were limited to 30 seconds. This limit has been extended to 10 minutes. Many API calls also had 1MB size limits. These have been removed on the URLFetch API, being increased from 1MB to 32MB. The same size increases also apply to Memcache batch get/put operations and Image API requests. Outgoing attachments on the Mail API have increased from 1MB to 10MB. These changes are welcome improvements to existing API’s but its the new features that are really exciting.

Firstly, the Channel API enables a bi-directional channel that allows server side pushing of data to client side JavaScript. This mean there is no need to write JavaScript that polls the server side application looking for changes. Secondly, a new feature known as Always-On is provided. This is aimed at applications that have variable or low traffic levels. Without these features, Google may turn your app off if there is no traffic. When a new request arrives, there will be a delay as the application is loaded. Always on prevents this, reserving 3 machine instances that will never be turned off. This is a chargeable feature that costs $9 per month. Finally there is warm up requests which is a feature that anticipates your application requires more machine instances and will load them before sending the instances requests.

These new features are a welcome improvement to the Google App Engine Platform as a Service (PaaS). The competition in this area between major players such as, VMware, Microsoft, Red Hat and Google amongst others is good news for developers. The platforms are becoming more an more powerful, feature rich and cost effective.

If you would like to know more about the Google App Engine and how it may benefit your organisation, or indeed about Cloud Computing in general, why not consider attending Learning Tree’s Cloud Computing course.


Cloud Computing Services and Alternatives

It’s common to categorize cloud computing as either Software as a Service (SaaS), Platform as a Service (PaaS) or Infrastructure as a Service (IaaS).  When we were moving to the cloud, it seemed more helpful to think in terms of the individual services and applications that we needed to provide our users.  Below is a list of the services we moved, or considered moving, to the cloud and the choices we evaluated.

Email Services
Managing an Exchange or other mail server is expensive, considering Google will do it for next to nothing. Google Apps for Business provides 50 mail accounts using your domain name for free; beyond 50 accounts, Google will charge $50 per user per year.  At a similar cost, Microsoft offers Exchange Online.

Document Sharing and Collaboration
SharePoint is a fantastic program and a huge success for Microsoft.  You might not have to install your own instance though.  Microsoft will host SharePoint for you for around $5 per user per month. Check out SharePoint Online to see how it works.  Google offers services similar to SharePoint using Google Calendars, Google Groups, and Google Sites.

Office Applications
If you choose Google for document sharing and collaboration, you might also like Google Docs for documents, spreadsheets, and presentations.  If you prefer Microsoft Office, check out Microsoft Office Live, which offers online storage and online versions of Word, Excel and PowerPoint similar to Google Docs.

Customer Relationship Management (CRM) began as CRM in the cloud and has expanded from there.  There are also hosted versions of Microsoft Dynamics CRM and SugarCRMIn the end, we chose to host SugarCRM Community Edition on our own virtual server using Amazon EC2.  See my prior post, Saving Money Using the Cloud and Open Source Software.

Database Services
If you need a relational database and like SQL Server, check out SQL Azure.  You can have a database up and running in seconds.  It will cost you about $10 per gigabyte per month.  Amazon Relational Database Service is an alternative based on MySQL, and costs as little as $500 per year.

If you need massive amounts of disk space, Microsoft, Google and Amazon all have cloud offerings.  Check out, Windows Azure Storage, Amazon Elastic Block Store, Amazon Simple Storage Service, and Google App Engine.

Application Hosting
If you’re a .NET, PHP or Java developer, Microsoft Windows Azure provides a complete infrastructure for deploying your applications.  Azure is a massively scalable, zero-administration platform based on Windows Server 2008.  It provides Web hosting and much more, including storage, load-balancing, elastic scalability, authentication services and integration with you local network.  Google App Engine offers services similar to Azure and includes APIs for Python and Java developers.  It’s even free up to a certain number of requests per month.

Sometimes it’s more cost-effective to deploy an application on your own server.  That doesn’t mean you have to buy a physical machine though.  Amazon EC2 allows you to spin up Linux or Windows virtual machines in minutes.  The cost of a Windows server is as little as $109 per year and you don’t need any hardware.

If you want to learn more about cloud computing, come to one of Learning Tree’s cloud-computing courses.


Learning Tree Logo

Cloud Computing Training

Learning Tree offers over 210 IT training and Management courses, including Cloud Computing training.

Enter your e-mail address to follow this blog and receive notifications of new posts by e-mail.

Join 53 other followers

Follow Learning Tree on Twitter


Do you need a customized Cloud training solution delivered at your facility?

Last year Learning Tree held nearly 2,500 on-site training events worldwide. To find out more about hosting one at your location, click here for a free consultation.
Live, online training
.NET Blog

%d bloggers like this: