InfoWorld has named Heroku as a 2012 Technology of the Year. While we're not normally much for industry awards, we feel honored to be included alongside past winners such as the iPad, Android, Visual Studio, and Eclipse; and this year's winners, including Amazon Web Services, Node.js, Hadoop, CloudBees, and Heroku add-on provider Rhomobile.

InfoWorld is a venerable publication in the technology world, and this is the first time they've given awards in the cloud space. We see this as another major point of validation for platform-as-a-service, and cloud technologies more generally. 2011 was the year that PaaS came into the greater collective consciousness of the technology industry. We can't wait to see how things will unfold in 2012.

View Comments

tagged:

From the Heroku Postgres Blog:

"One of the benefits of consuming a database through Heroku Postgres is that we are continually improving the service. This benefit is compounded by the fact that our service is based on PostgreSQL, a vibrant and active open source project. The release of PostgresSQL 9.1 had added a number of feature, performance and reliability improvements. These are available today with our beta support for PostgreSQL 9.1 ..."

→ Read More

Check out the Heroku Postgres Blog to read more.

View Comments

tagged:

Deploy Grails Applications on Heroku

by Jesper - Dec 15, 2011

We're happy to announce the public beta of Grails application deployment on Heroku with support for Grails 1.3.7 and 2.0 provided by the open source Heroku Grails buildpack.

Grails is a high-productivity web application framework for the JVM based on the Groovy programming language and featuring many similarities with Rails. Since its inception in 2006, the framework has enjoyed broad adoption in the Java community as it combines the strengths of the JVM and richness of the Java platform with the productivity benefits of modern frameworks like Rails.

Today the Grails team announced Grails 2.0, the latest incarnation of the framework. It features numerous large improvements including an overhauled command line tool, faster and more reliable reloads, and static asset support. Details are covered in the What's New section of the Grails docs.

The release includes the Grails Heroku plugin that provides simple commands to set up your Grails app with Heroku add-on services like Postgres, Memcached, Redis, MongoDB from MongoLabs or MongoHQ and RabbitMQ.

Deploying a Grails app on Heroku

Create a new Grails project:

$ grails createApp HelloWorld
| Created Grails Application at /Users/jjoergensen/dev/HelloWorld
$ cd HelloWorld

Commit to Git:

$ grails integrate-with --git
$ git init
Initialized empty Git repository in /Users/jjoergensen/dev/HelloWorld/.git/
$ git add .
$ git commit -m init
[master (root-commit) bd0f36b] init
 58 files changed, 2788 insertions(+), 0 deletions(-)
 create mode 100644 .classpath
 create mode 100644 .gitignore
 create mode 100644 .project
...

Create Heroku Cedar app:

$ heroku create --stack cedar
Creating smooth-night-8061... done, stack is cedar
http://smooth-night-8061.herokuapp.com/ | git@heroku.com:smooth-night-8061.git
Git remote heroku added

Deploy to Heroku:

$ git push heroku master
Counting objects: 73, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (69/69), done.
Writing objects: 100% (73/73), 97.82 KiB, done.
Total 73 (delta 2), reused 0 (delta 0)

-----> Heroku receiving push
-----> Grails app detected
-----> Grails 2.0.0 app detected
-----> Installing Grails 2.0.0..... done
-----> executing grails -plain-output -Divy.default.ivy.user.dir=/app/tmp/repo.git/.cache war

       |Loading Grails 2.0.0.
       ...
       |Done creating WAR target/HelloWorld-0.1.war
-----> No server directory found. Adding jetty-runner 7.5.4.v20111024 automatically.
-----> Discovering process types
       Procfile declares types  -> (none)
       Default types for Grails -> web
-----> Compiled slug size is 30.6MB
-----> Launching... done, v3
       http://smooth-night-8061.herokuapp.com deployed to Heroku

Learn More

View Comments

tagged:

Heroku Postgres Launches

by James - Nov 22, 2011

Heroku's Postgres database service, the origins of which date back to 2007, is one of the most battle-tested cloud database services around.

Over the last year, our growing data team has done an amazing job of dramatically increasing the scale, reliability, and durability of the service - now boasting 99.99% (measured) uptime and over 400 million write-transactions per day.

Until now, the service has only been available to Heroku customers, but today we are pleased to announce the launch of Heroku Postgres as a standalone database service. Included in this launch is a new web interface for managing databases, as well as rock-solid durability based on Continuous Protection technology.  Best of all, these improvements are effective immediately for all existing users of the Heroku Postgres add-on.

To learn more, check out the inaugural post of the new Heroku Postgres blog.  Future posts to this blog will contain product updates and articles about leveraging the advantages of PostgreSQL.

View Comments

tagged:

Heroku Scheduler Add-on Now Available

by Mark - Nov 12, 2011

Today we're happy to announce the availability of Heroku Scheduler. Scheduler is an add-on for running administrative or maintenance tasks, or jobs, at scheduled time intervals. It's the polyglot replacement of the Cron add-on, with more power and flexibility. And it's free; you just pay for the dyno time consumed by the one-off tasks.

A dashboard allows you to configure jobs to run every 10 minutes, every hour, or every day, and unlike the Cron add-on, you can control when. E.g. Every hour on the half-hour, or every day at 7:00am.

Scheduler Dashboard

Polyglot Tasks

Tasks are any command that can be run in your application or even the Unix shell.

For Rails, the convention is to set up rake tasks. To create your scheduled tasks in Rails, copy the code below into lib/tasks/scheduler.rake and customize it to fit your needs.

desc "This task is called by the Heroku scheduler add-on"
task :update_feed => :environment do
    puts "Updating feed..."
    NewsFeed.update
    puts "done."
end

task :send_reminders => :environment do
    User.send_reminders
end

If you're using Python with the popular Fabric automation tool, you can define a fab clean_sessions task:

from fabric.api import task

@task
def clean_sessions():
    url = urlparse(os.environ.get('REDISTOGO_URL'))
    db = redis.Redis(host=url.hostname, port=url.port, password=url.password)
    db.delete('myapp:sessions')
    print 'done.'

For apps built on other frameworks or languages, another convention is to add a script to bin/ that will perform the task. E.g. bin/updater.

Scheduling Jobs

To schedule a frequency and time for a job, open the scheduler dashboard by finding the app in My Apps, clicking "General Info", then selecting "Scheduler" from the Add-ons dropdown.

On the Scheduler Dashboard, click "Add Job...", enter a task, select a frequency and next run time.

Note that the next run time for daily jobs is in UTC. If you want to schedule the job at a certain local time, add the proper UTC offset.

For example, add rake update_feed, select "Hourly" and ":30" to update feeds every hour on the half-hour. Then add rake send_reminders, select "Daily" and "00:00" to send reminders every day at midnight.

Migrating From the Cron Add-on

Existing Cron add-on users should migrate to Heroku Scheduler as soon as possible. It has more functionality, is easier to use, and is free. Cron is restricted to running a single command, rake cron and does not provide control over when daily and hourly tasks are run. Scheduler can do everything the Cron add-on does, and more.

If you want your new jobs to be scheduled as close as possible to when your Cron jobs would run, go to the Cron dashboard and look at the "Scheduled for" information. Then in the Scheduler dashboard, create a new task, set it to be either hourly or daily, and then set the Next Run field to the selection closest to the previous scheduled time. Set the task to rake cron.