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.
CloudFoundry
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.

Chris

Google App Engine SDK Release New Features

With Salesforce.com 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 Salesforce.com, 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.

Chris

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)
Salesforce.com 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.

Storage
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.

Servers
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.

Doug

Error in Deploying to the Google App Engine

Yesterday I wanted to deploy a new application to the Google App Engine. Having done this many many times I was somewhat surprised that the deployment failed with the following message:

Deploying app_id to Google has encountered a problem 401 unauthorized Must authenticate first

No more details than this were provided. My initial reaction was that the credentials were wrong, but having verified that these were ok, I then spent much longer than I wanted to trying to find the solution. The solution, when I found it was not obvious nor is it still clear as to actually why Google report the error this way – but the main thing is it solved the problem.

I had not noticed that my system clock was forward by 2 days – I do not know why I decided to change this and retry but thats what I did and things went back to normal. My experience of the Google App engine has been totally positive, and thought it worth posting on this glitch I found in case it may save somebody some time in the future.

Chris

Comparing PaaS and IaaS

One of the most common questions I am asked when consulting or teaching Learning Tree’s Cloud Computing course is “What is the difference between Platform as a Service (PaaS) and Infrastructure as a Service (IaaS). This is an excellent question that the cloud computing vendors do little to help clarify.

Let’s consider IaaS first…
As the name suggests, what is provided here is an infrastructure delivered as a service. This includes hardware (servers, networks, load balancers etc) and software (operating systems, databases, application servers etc). The largest provider of IaaS is Amazon AWS and they have a wide variety of hardware and software combinations to choose from.

Now lets consider PaaS…
What we are gaining here is a platform as a service. This includes hardware (servers, networks, load balancers etc) and software (operating systems, databases, application servers etc). There are a number of PaaS providers including Google App Engine, Microsoft Azure and Salesforce.com’s Force.com.

Is the difference clear now ?
I thought not. On the surface the feature set of both IaaS and PaaS are the same but delving a little further a major difference is the amount of control a user has over the service. Take for example Microsoft Azure. Using Azure, the user has no control over the operating system, security features or the ability to install software applications – other than your own applications developed specifically for Azure. The same can be said for Google App Engine and Force.com. All operating system updates, versions, patches, security etc are controlled and implemented by the PaaS vendor.

Now considering IaaS. With IaaS, the user selects a configuration which defines server size, operating system, application software etc and then has complete responsibility for the maintenance of the system. If an operating system upgrade is required – its your responsibility. A security patch – its your responsibility. Want to install a new application or a database – feel free, its your server.

So in summary…
A major difference between IaaS and PaaS is the amount of control over the system available to users of the services. IaaS provides total control, PaaS typically provides no control. This also means virtually zero administration costs for PaaS whereas IaaS has administration costs similar to a traditional computing infrastructure.

There are many other differences between IaaS and PaaS of course. It is these kind of things that we investigate and evaluate as well as provide hands-on experience of in the Learning Tree Cloud Computing introduction course.

Chris Czarnecki

As cloud computing continues to make information technology headlines, vendors are aggressively promoting the many benefits it can provide organizations.  Our White Paper, Cloud Computing Promises: Fact of Fiction , addresses the claims and questions that are often raised in relation to cloud computing and provides a clear view of what the cloud can—and can’t—deliver in reality.

Google App Engine Account Not Displaying Applications

The course team recently encountered a problem working with the Google App Engine whilst developing the Cloud Computing Technologies course. We created an application in our Google App Engine account and then deployed it from Eclipse. The application deployed successfully and we could access it from a browser and use it. However, when we tried to view the application from our App Engine account it was not listed there. This meant that all the monitoring facilities together with the ability to stop the application were not available to us.

The problem appears to be down to the fact that we are using a Google Apps account to access the Google App Engine. We had previously created a Google Apps account for our domain and then used the same account to create a Google App Engine account. It seems that if you do this, a different URL is required to access your Google App Engine account – or at least to access it and see the applications you have created listed.

The standard Google App Engine URL is

https://code.google.com/appengine

Using this URL everything works fine for creating applications, but they are not listed or visible in the Google App Engine console.

When using a Google Apps account to access the Google App Engine you must use a different URL to access the applications. The URL structure is as follows

https://appengine.google.com/a/[domain_name]

where [domain_name] is the domain you used to create the Google Apps account.

With this URL all our applications are listed.

Hope this saves you some time !

Chris


Learning Tree Logo

Cloud Computing Training

Learning Tree offers over 245 IT and Management courses, including over 10 courses on Cloud Computing and Virtualization.

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

Join 1,701 other followers

Follow Learning Tree on Twitter

Archives

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

Follow

Get every new post delivered to your Inbox.

Join 1,701 other followers