Search icon CANCEL
Subscription
0
Cart icon
Cart
Close icon
You have no products in your basket yet
Save more on your purchases!
Savings automatically calculated. No voucher code required
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
Learning Heroku Postgres
Learning Heroku Postgres

Learning Heroku Postgres: Efficiently design, implement, and manage a successful PostgreSQL database with Heroku

By Patrick Rafael de Oliveira Espake
$19.99
Book Feb 2015 164 pages 1st Edition
eBook
$19.99
Print
$32.99
Subscription
$15.99 Monthly
eBook
$19.99
Print
$32.99
Subscription
$15.99 Monthly

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Buy Now
Table of content icon View table of contents Preview book icon Preview Book

Learning Heroku Postgres

Chapter 1. Getting Started with Heroku Postgres

Heroku simplifies the infrastructure of web applications. With its architecture, it is possible to create robust, manageable, and scalable applications according to the needs of your business.

This book is focused on how Heroku works with PostgreSQL. It will cover pieces of architecture and how to build applications that benefit from Heroku Postgres. In this first chapter, you will learn about the key concepts of Heroku, how it works, what are the supported versions of PostgreSQL, how to choose the best plan according to your need, and how high availability works. The concepts covered in this chapter are fundamental to understanding the other chapters.

In this chapter, will cover the following topics:

  • How does Heroku work?

  • Postgres supported versions

  • Choosing the right Heroku Postgres plan

  • Production-tier technical characterization

  • High availability

How does Heroku work?


Heroku is a multi-language cloud platform that enables you to deploy applications written in several programming languages such as Ruby, Java, Python, Clojure, Scala, and Node.js. The list of supported programming languages is always growing.

The main idea of Heroku is to take away the pain of managing and scaling servers, so you can focus on the development of your product and deliver more functionality to your client, where Heroku is responsible for the infrastructure.

You don't need knowledge of servers to build a robust application with millions of users around the world.

Heroku Dashboard and Heroku Toolbelt

Heroku has a dashboard where you can easily manage your application. Through this dashboard, you can manage your resources, dynos, workers, add-ons, metrics, activity log, access permissions, and settings. In this chapter, you will learn to better understand these items.

Heroku Dashboard

Heroku also provides a command-line client to manage your applications. This client is called Heroku Toolbelt and is available at https://toolbelt.heroku.com. It is available for Mac OS X, Windows, Debian/Ubuntu, or in standalone mode. Heroku Toolbelt is a set of tools for managing and displaying the information about your applications. Most developers prefer to use Heroku Toolbelt instead of Heroku Dashboard because of the command-line facilities, in addition to offering a broader set of information. In the following chapter, you will understand how it works.

Heroku Toolbelt

Deploying your applications

The first item you need to understand is how the deploy process happens. An application is a collection of code with its associated dependencies. In the case of Ruby on Rails, these dependencies are found in Gemfile in Python requirements.txt, in Node.js package.json, and in Java pom.xml. This gives further information on how Heroku should work with your code.

If you use Ruby, Node.js, Python, or Java, Heroku can easily identify how to make your code executable, through the conventions that these languages adopt. For example, in the case of Ruby on Rails, Heroku knows it needs to run the Rails server to run your application.

If Heroku cannot run your application, you need to show how to do it. You must do so through the creation of a Procfile in your project, which contains instructions on how to run your application, as follows:

web: java –jar lib/my_app.jar $PORT

Tip

Downloading the example code

You can download the example code files from your account at http://www.packtpub.com for all the Packt Publishing books you have purchased. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

Heroku has adopted a very simple way to send your code to deploy. Each application built on Heroku has a Git repository, you should do a git push heroku master to start the deploy process. In the next chapter, you will deploy your first application and understand it better.

Heroku handles your code and dependencies by generating an optimized slug of your application. This slug is placed in each dyno that you have and each slug contains a compressed copy of your application. The slug is created by the slug compiler and its core is a collection of scripts called a buildpack. For each language supported by Heroku, there is one buildpack available. You can find more information about each of them in their repositories on GitHub:

The dyno manager is responsible for managing each dyno with your application slug.

Heroku architecture

Heroku's architecture is very robust and equipped to work with small applications such as blogs, personal websites, and large applications with a lot of users, such as Ello and Toyota.

This architecture serves the entire operation flow of its application, providing the mechanism to deploy your code until the management and scalability of your application.

The following diagram shows this architecture:

HTTP routing

The Heroku platform receives HTTP requests coming from the entry point herokuapp.com or by your custom domain, and forwards these requests to the load balancer, then to the routing mesh that distributes it for each dyno. The routing mesh is a personalized solution developed in Erlang based on MochiWeb (https://github.com/mochi/mochiweb). Each dyno has its own queue of requests to be processed. When a dyno is available, it picks up a request from its queue and the application inside the dyno processes it.

Heroku HTTP routing

Dyno Manager

The Dyno Manager is responsible for maintaining the dynos running. When some dyno presents a problem, it is automatically replaced by a new dyno and the application information is loaded through the slug generated during the deploy. Because of the Dyno Manager, you do not need to make any changes to the operating system or other internal settings. Everything is done in an automated way.

Config vars

The traditional approach is setting the configuration variables in the source code of your application; this approach is not useful, especially when you have many environments such as production, development, and test. The safer approach is creating environment variables. Heroku works with environment variables called config vars.

Config vars are necessary to run your application. Some of these variables are provided by Heroku and others are provided by add-ons that you have installed. You can also add your own config vars. For example, for Postgres add-on the config vars are provided credentials to access the database. All the provided dynos have the same set of config vars. These variables are copied automatically when you create a new dyno.

Understanding the Dynos

A dyno is a single virtualization in a Unix container. This container contains the slug of your application created during the deploy and you can add more dynos at anytime for scaling your application. The dyno does not persist changes in the filesystem and does not contain a database. To save files, you need to use a shared service such as Amazon AWS S3 (Simple Storage Service), and use the data store's add-ons such as Heroku Postgres, ClearDB MySQL Database, MongoLab (MongoDB), Redis Cloud, GrapheneDB, or others to share a database data between your dynos. You can see all the available data stores' add-ons at https://addons.heroku.com/#data-stores.

Heroku Dynos

Workers

Workers are responsible for running background jobs in your applications hosted on Heroku. This is a key feature for building really scalable web applications. Through the workers, your applications can resize images, perform data upload to other servers, fetch API data, send e-mail, and perform many other tasks in the background. Your web requests always return immediately improving the user experience. On Heroku, the workers are scalable, so you can increase or decrease the quantity at anytime.

Add-ons

Heroku has a marketplace of add-ons. The idea of these add-ons is to provide integration with third-party services simply and seamlessly into your applications hosted on Heroku. Currently, there is a wide variety of add-ons that are divided in categories: Data Stores, Mobile, Search, Logging, e-mail, SMS, Workers and Queueing, Analytics, Caching, Monitoring, Media, Utilities, and Payments. Add-ons include Heroku Postgres, PG Backups, MemCachier, AirBrake, New Relic APM, Logentries, Deploy Hooks, Heroku Scheduler, Zerigo DNS, SSL, Websolr, SendGrid, Mandrill by MailChimp, and Codeship. You can meet these add-ons at https://addons.heroku.com/.

PostgreSQL is provided on Heroku via an add-on called Heroku Postgres. This add-on has a number of plans that vary in their features such as cache size, storage limit, limit of simultaneous connections, and the ability to work with forks and followers. In the Choosing the right Heroku Postgres plan section, you will understand more about these differences.

Logplex

Logplex is a distributed log collector, able to merge and redistribute multiple input streams to individual subscribers. Logs are collected from your app and other components of the Heroku platform. You can query this information through the Heroko Toolbelt or using the public API Logplex. These logs are collected from all the dynos and components that you have on Heroku.

Heroku API

The Heroku platform API allows you to create automated tasks, such as creating applications, collecting information from applications, managing add-ons, or performing other tasks programmatically, which previously could only be done through the Heroku dashboard. For example, Heroku Toolbelt uses Heroku API to perform its tasks.

Postgres supported versions


PostgreSQL is a relational database, open source, and very powerful. It has over 20 years of development and has a proved and reliable architecture. It is commonly adopted in many applications because of the following advantages:

  • An open-source SQL standard compliant RDBMS

  • Strong community

  • Strong third-party support

  • Extensible

  • Objective

PostgreSQL is provided on Heroku via an add-on. This add-on has a free initial plan, only for small applications such as websites or blogs and then is available at a given series of paid plans, according to your need.

Each year a new version of PostgreSQL is released and Heroku adopts the newest version as standard in a very short time. Heroku keeps the current version and the last three versions. The versions currently available are:

  • 9.4 (beta)

  • 9.3 (default)

  • 9.2

  • 9.1

  • 9.0 (deprecated, support ended December 3, 2014)

This means that every three years you need to upgrade the version of PostgreSQL used in your application because a new version of PostgreSQL is available and the last one is deprecated.

Choosing the right Heroku Postgres plan


Heroku offers three lines of plans with some differences in characteristics, these changes were made to suit small applications to applications that have a large volume of data or need transactional control.

Choosing the best plan will depend on the needs of your application. At any time, you can upgrade your database plan and optimize your application with a very short period of downtime. You will see more information about this in Chapter 6, Rollback, Followers, and Forks.

The main variations between the plans are expected downtime supported:

  • Hobby tier tolerates 4 hours of downtime and is used for small and simple applications.

  • Standard tier tolerates 1 hour of downtime and is used for production applications.

  • Premium tier tolerates 15 minutes of downtime and is used for production applications where uptime is important.

The following table shows the main differences between the plans offered by Heroku and their respective prices:

Plan

Connection Limit

Row Limit

RAM

Storage

Price

Hobby Dev

20

10,000

0 Bytes

No

Free

Hobby Basic

20

10,000,000

0 Bytes

No

$9/mo

Standard 0

120

Unlimited

1 GB

64 GB

$50/mo

Premium 0

120

Unlimited

1 GB

64 GB

$200/mo

Standard 2

400

Unlimited

3.5 GB

256 GB

$200/mo

Premium 2

400

Unlimited

3.5 GB

256 GB

$350/mo

Standard 4

500

Unlimited

15 GB

512 GB

$750/mo

Premium 4

500

Unlimited

15 GB

512 GB

$1200/mo

Standard 5

500

Unlimited

30 GB

1 TB

$1400/mo

Standard 6

500

Unlimited

60 GB

1 TB

$2000/mo

Premium 5

500

Unlimited

30 GB

1 TB

$2500/mo

Premium 6

500

Unlimited

60 GB

1 TB

$3500/mo

Standard 7

500

Unlimited

120 GB

1 TB

$3500/mo

Premium 7

500

Unlimited

120 GB

1 TB

$6000/mo

Shared features

All the plans share the following features:

  • Data clips to share data and queries with others people securely

  • SSL protection to access psql/libpq

  • Postgres extensions

  • Web UI interface to manage the database

  • Unmodified versions of Postgres

  • Database service fully managed for automatic health checks

  • Write-ahead log (WAL) that ensures minimal data loss in case of catastrophic failure, storing every minute

Production-tier technical characterization


The Standard, Premium, and Enterprise plans are offered for production applications that require certain operating characteristics based on multitenancy architectures, CPU, RAM, and IO. These characteristics can be more easily understood with the help of the following table:

Plan

vCPU

RAM

Disk Size

Connection Limit

PIOPs

Multitenant

Standard 0

Premium 0

2

1 GB

64 GB

120

200

Yes

Standard 2

Premium 2

2

3.5 GB

256 GB

400

200

Yes

Standard 4

Premium 4

2

15 GB

512 GB

500

1000

No

Standard 5

Premium 5

4

30 GB

1 TB

500

2000

No

Standard 6

Premium 6

8

60 GB

1 TB

500

3000

No

Standard 7

Premium 7

Enterprise 7

16

120 GB

1 TB

500

4000

No

Enterprise 8

32

240 GB

1 TB

500

4000

No

All plans run a 64-bit architecture, which ensures the best performance for the internal operations of Postgres. Heroku Postgres runs on a virtual infrastructure provided by Amazon AWS EC2.

The vCPU is the number of virtual processors in the instance and RAM is the amount of memory used to data cache. The PIOPs are a measure of how many IO disk operations can be performed per second.

For applications that require a lot of writes, IO can be a critical point. The data sets should fit in RAM, which ensures high performance with lower values of IOPs (Input/Output operations per second).

Finally, multitenancy refers to the principle of software architecture where a software instance is a server serving multiple client organizations (tenants).

High availability


The plans of the Premium and Enterprise tier comes with the High Availability feature. This feature involves a cluster database and a management system to increase availability in case of failure.

When the database fails, it is automatically replaced by another. To determine that a failure occurred, Heroku starts a series of checks. This process can take up to 2 minutes. Because of the continuous protection mechanism, Heroku minimizes data loss, usually to 160 MB or 10 minutes, whichever is less.

When the recovery process finishes, new access credentials are generated and the database URL is changed. Finally the Heroku application is restarted with the new access data to the database.

Self-test Questions


Answer true or false:

  1. Is Heroku a multi-language platform?

  2. Using Heroku, does the developer have many concerns about infrastructure?

  3. Is Heroku Toolbelt the most powerful way to manage your apps on Heroku?

  4. Is it possible to deploy applications on Heroku via FTP?

  5. Is dyno a virtualization of a Unix container?

  6. Does Heroku always support the latest 10 versions of PostgreSQL?

  7. Do the plans of the Premium tier tolerate 30 minutes of downtime?

  8. Do all plans of Heroku run a 64-bit architecture?

  9. Do only Standard plans have the capability of High Availability?

  10. When a new database is built upon failure access, are the credentials changed?

Summary


In this chapter, you have learned how Heroku works, how to transform your application into a slug with dependencies that can be distributed across multiple dynos, making your application scalable. You have also learned that by default Heroku supports the current version of PostgreSQL and the last three versions, and every three years you need to upgrade the version used in your application.

You have also learned about the structure of the Heroku plans and your characteristics, where the Hobby plans are more oriented for blogs or personal websites, while the Standard, Premium, and Enterprise plans are ideal for production applications. You understood that the downtime of each plan must be taken into consideration to choose the plan that is best for your business.

You also got knowledge about the characterization of the Standard, Premium, and Enterprise plans and that there are variations of plans based on the usage of vCPU, RAM, and IO.

Finally, you learned the High Availability feature that manages and monitors the application and database in case of a failure. When a new database is created, the credentials are changed.

In the next chapter, you will learn about the Heroku Toolbelt and all tools you need to get started with using Heroku at the command line.

Left arrow icon Right arrow icon

Key benefits

What you will learn

Introduce yourself to the inner workings of Heroku Postgres Deploy your first application with Heroku using the Heroku Toolbelt Work with permission levels to connect your database with a number of programming languages Secure your database using Postgres backups Interact with your data and share it with Dataclips Manage your data loss by performing rollbacks and working with followers and forks Identify common errors by analyzing logs and viewing metrics Add functionalities to your database with extensions such as PostGIS and Full Text Search Dictionaries

Product Details

Country selected

Publication date : Feb 24, 2015
Length 164 pages
Edition : 1st Edition
Language : English
ISBN-13 : 9781782173458
Vendor :
PostgreSQL Global Development Group
Category :
Languages :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Buy Now

Product Details


Publication date : Feb 24, 2015
Length 164 pages
Edition : 1st Edition
Language : English
ISBN-13 : 9781782173458
Vendor :
PostgreSQL Global Development Group
Category :
Languages :

Table of Contents

17 Chapters
Learning Heroku Postgres Chevron down icon Chevron up icon
Credits Chevron down icon Chevron up icon
About the Author Chevron down icon Chevron up icon
About the Reviewers Chevron down icon Chevron up icon
www.PacktPub.com Chevron down icon Chevron up icon
Preface Chevron down icon Chevron up icon
1. Getting Started with Heroku Postgres Chevron down icon Chevron up icon
2. Heroku Toolbelt Chevron down icon Chevron up icon
3. Postgres Add-on Chevron down icon Chevron up icon
4. PG Backups Chevron down icon Chevron up icon
5. Dataclips Chevron down icon Chevron up icon
6. Rollback, Followers, and Forks Chevron down icon Chevron up icon
7. Understanding Log Statements and Common Errors Chevron down icon Chevron up icon
8. Extensions, PostGIS, Full Text Search Dictionaries, Data Caching, and Tuning Chevron down icon Chevron up icon
Keyword List Chevron down icon Chevron up icon
Self-test Answers Chevron down icon Chevron up icon
Index Chevron down icon Chevron up icon

Customer reviews

Top Reviews
Rating distribution
Empty star icon Empty star icon Empty star icon Empty star icon Empty star icon 0
(0 Ratings)
5 star 0%
4 star 0%
3 star 0%
2 star 0%
1 star 0%
Top Reviews
No reviews found
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.