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!