RailsConf 2015
Heroku: A Year in Review

Heroku: A Year in Review

by Terence Lee

In the video "Heroku: A Year in Review," Terence Lee discusses the significant updates and features introduced to the Heroku platform over the past year, particularly focusing on enhancements that benefit developers using Ruby and Postgres. Highlights of the session include:

  • Introduction to Heroku: Terence Lee emphasizes Heroku's commitment to providing a seamless experience for developers deploying Ruby applications.

  • New Features:

    • Deploy to Heroku Button: A feature to easily create a duplicate of an app from GitHub repositories with a single click, making demo setups straightforward.
    • GitHub Integration: Automatic deployments can now be set up directly from GitHub, enhancing the workflow and simplifying the deployment process.
    • Heroku Elements: This new ecosystem allows easy integration of various add-ons, helping users to enhance their applications.
    • PX Dyno and Cedar 14 Stack: Introduction of improved performance features, including high-memory instances and updated stacks for better security and performance.
    • Enhanced Security Features: Implementation of two-factor authentication and automatic HTTPS communications for improved user security.
    • WebSockets Support: Now enabled by default, facilitating real-time app functionalities.
    • Revamped Dashboard: Improved user interface for better monitoring of app performance metrics.
  • Postgres Updates: Will, a member of the Postgres team, shares key enhancements including:

    • PostgreSQL 9.4 and JSONB Support: Improved data handling and performance.
    • Data Clips: A tool for sharing data results in CSV format for easy integration into reports and dashboards.
    • Improved Backup Services: Benefits from a re-architecture designed for enhanced reliability.
    • pgDiagnose Tool: Assists in diagnosing performance issues within databases.
    • Database Forking: Allows testing without affecting production environments.

The session is concluded with a reassurance of Heroku's commitment to improving the user experience and fostering a collaborative development environment. Terence Lee invites questions from the audience to clarify any additional points about Heroku's developments over the year.

00:00:15.200 Hi everyone! Now, I can't actually see you, so I'm here to talk about Heroku's 2015 Year in Review. Every year, we discuss the new features and things that have happened since last year in real time.
00:00:32.320 I'm Terence Lee, and I go by @tlee on Twitter. I worked with Richard Schneeman who gave a talk yesterday on speeding up science or something like that. I actually got kicked out of that room because I was a fire hazard. But we work on the Ruby experience at Heroku.
00:00:46.160 This means that every time you deploy a Ruby app, that code is running on our platform. If there is a problem with that, then it is our fault, so you should come and talk to us about any issues. Both Richard and I are here to help.
00:01:03.920 Today, I'm going to talk about a few different things, as well as Will over here on the right and Fuli. First off, I will cover some general Heroku features and updates that have come out since RailsConf.
00:01:18.400 We also had an amazing Postgres product, and Will works on that team. He will cover some new features that have been released in the Postgres landscape. Additionally, we will discuss specific Ruby-related announcements that you should be aware of, and finally, Will will share some work that Matt's team has accomplished over the last year.
00:01:48.640 So, when I'm talking about Heroku, I mean the general product, including the runtime and the build service. One of the really cool features we launched in the past year has been the 'Deploy to Heroku' button, which you may have seen in GitHub repositories.
00:02:05.600 This purple deploy button allows you to create your own copy of an application with just one click. You can specify a different app name or leave it blank, and we will generate a random name for you. Inside this interface, you can specify add-ons and other configurations that define what it takes to set up a template.
00:02:39.760 This feature is great for demos. For example, when I was preparing my presentation last year on WebSockets, I used these buttons for my demos, allowing attendees to easily deploy their own version of a simple chat application.
00:03:04.480 To set this up, you just need to have a README file in your repository with the appropriate Markdown linking to the deploy button image. When clicked, it links the user to the appropriate repository, where everything is automatically configured.
00:03:31.920 The magic behind this feature is handled by an app.json file in your repository. This file contains necessary keys like the app name, description, and engineering details, including the add-ons required to get the application running. For instance, if you're depending on Redis for handling WebSockets sessions, you can specify a Redis add-on provider directly in this file.
00:04:12.159 When someone deploys an application using this configuration, they will get a fully functional app without needing to manually create it or add the add-ons themselves. You can also define environment variables for specific configurations within the same JSON structure.
00:04:43.600 Another feature we worked on is GitHub integration, which many had been requesting for a while. Previously, you could achieve deployment through services like CodeShip or Travis, but now you can connect your Heroku app directly to a GitHub repository via the deploy tab.
00:05:01.360 This allows for automatic deployments from a specific branch, which is particularly useful when working on a client feature. Once you push your changes to GitHub, Heroku will automatically trigger a deploy via a webhook. This setup is also beneficial for staging applications, although I still recommend being cautious with production applications that are tied to CI workflows.
00:05:38.000 Recently, we launched Heroku Elements, which is part of our add-on ecosystem, allowing users to seamlessly integrate various services into their applications. Elements include a plethora of services like Postgres databases, CDN offerings like Fastly, monitoring tools like New Relic, and numerous other services for improved functionality.
00:06:14.400 With Elements, you can now easily search through available buildpacks and integrate them into your Ruby applications. For instance, if you need to add Nginx or PhantomJS for your worker processes, you can easily find and implement those integrations.
00:06:37.680 Additionally, the Heroku CLI has introduced a plugin system that allows you to search for various plugins to extend and enhance your command line experience, making it even easier to build and manage your applications.
00:07:17.440 If you're working with clients in Europe, we announced the PX Dyno, which are six-gigabyte instances run completely independently—meaning there are no noisy neighbor issues. This significantly improves performance consistency, especially for applications that require multiple web servers, allowing for better scaling.
00:07:52.800 We also announced the Cedar 14 stack, based on the latest LTS release, which is Ubuntu 14.04. This brings updated libraries for enhanced security and overall performance without making many noticeable changes to your applications.
00:08:29.760 Transitioning from the Cedar stack to Cedar 14 is fairly straightforward. You can set the stack for your next push by specifying it in your command, and if any issues arise during migration, the Heroku rollback command is still available to revert back to the previous version of your application.
00:09:15.360 Given the significant changes and improvements since the last Ubuntu was used four years ago, I recommend testing the migration on a staging application before pushing it to production. We have detailed articles available for any potential challenges you might encounter.
00:10:03.040 For improved security, we now support two-factor authentication for securing your accounts in addition to passwords. This is particularly useful given the recent security breaches some platforms have encountered.
00:10:27.200 This year, we transitioned to using HTTPS for all default communications. This eliminates the hassles involved with SSH keys, especially for Windows users who often faced significant challenges managing SSH connections.
00:10:52.800 Another significant improvement is the announcement of WebSockets support, which is now enabled by default. This integration is designed to work seamlessly with Action Cable and facilitates real-time communication within your applications. Sample projects showcasing this capability can be found on our Dev Center.
00:12:10.240 Additionally, we have revamped the Heroku dashboard. The new dashboard provides comprehensive insights into metrics like response time, throughput, and memory usage, allowing you to monitor and thoroughly analyze your application's performance.
00:12:41.760 This is an ongoing effort, and we plan to continuously enhance the dashboard with new features over time.
00:13:01.600 I will now hand it off to Will, who will discuss the Postgres updates.
00:13:32.839 Hello, I'm Will. I've been part of the Postgres team for a long time. I want to talk about some exciting features we released last year for the Postgres product and Postgres itself.
00:14:01.760 A significant release was PostgreSQL 9.4, which supports JSONB technology that allows for storing structured JSON data effectively. Using JSONB can yield impressive speed improvements over previous versions.
00:14:37.760 This technology allows us to leverage binary representation for data storage and has proven to be faster in many scenarios compared to other document databases that primarily rely on documents. Additionally, it integrates seamlessly with Ruby on Rails.
00:15:12.000 It's supported through ActiveRecord, and we've sponsored several initiatives to enhance PostgreSQL's capabilities, including this exciting implementation of JSONB that has now become available.
00:15:52.000 Alongside this feature, we also introduced data clips, a very powerful tool for businesses that need read-only access to their data. With data clips, you can execute queries and share the results in CSV format, facilitating easy intake into spreadsheets and dashboards.
00:16:09.680 We also improved our Postgres backup service, which has been re-architected to prevent common issues experienced with old systems. The new service has increased reliability and allows you to schedule your backups for any time according to your operational needs.
00:16:46.560 Another major feature is pgDiagnose, a tool that checks for common issues within your Postgres setup and generates a comprehensive report. This tool is especially useful for diagnosing slow queries and identifying unoptimized indices that can affect performance.
00:17:22.720 With pgDiagnose, you can pinpoint long-running queries and see potential areas for optimization, ensuring your database operates efficiently and effectively.
00:18:00.000 Lastly, we enable forking instances of databases so that developers can experiment without affecting their production environments. This allows for quick testing of migrations or other changes prior to implementation.
00:18:36.800 In terms of community contributions, many enhancements have come through collaboration with other developers, allowing us to implement improvements that benefit everyone in the Postgres ecosystem.
00:19:15.760 In conclusion, there are numerous exciting features and enhancements that have come out for both Heroku and Postgres over the past year. These updates aim to improve the user experience and make development more seamless for everyone.
00:19:53.000 The growth we've seen in both the Ruby community and the Postgres community shows a collective effort to push forward technology and collaboration across platforms. Thank you, and I look forward to any questions!