{"id":9108,"date":"2020-03-31T08:00:20","date_gmt":"2020-03-31T15:00:20","guid":{"rendered":"http:\/\/softwareengineeringdaily.com\/?p=9108"},"modified":"2020-03-30T13:20:47","modified_gmt":"2020-03-30T20:20:47","slug":"managing-cloud-data-services-with-heroku","status":"publish","type":"post","link":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/","title":{"rendered":"Managing Cloud Data Services with Heroku"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Nearly all modern web applications depend on persisted data in order to function. Since the introduction of frameworks such as JavaScript in the late 1990s, developers have demanded more functionality from their web-based programs than traditional \u201cstatic\u201d websites could provide. Today, single-page applications (SPAs) such as Gmail provide a dynamic user experience by interacting with the server to rewrite individual components of a page. Increasing demands for interactivity and a customized UX, along with a broadened horizon of what a website could or should do, meant that persistent data storage was more and more critical to a web application\u2019s engineering.<\/span><\/p>\n<p><a href=\"https:\/\/www.w3resource.com\/mongodb\/nosql.php\"><img fetchpriority=\"high\" decoding=\"async\" data-attachment-id=\"9110\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/image2-31\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image2.png?fit=1104%2C740&amp;ssl=1\" data-orig-size=\"1104,740\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image2\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image2.png?fit=300%2C201&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image2.png?fit=1024%2C686&amp;ssl=1\" class=\"aligncenter wp-image-9110 \" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image2.png?resize=501%2C336&#038;ssl=1\" alt=\"\" width=\"501\" height=\"336\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image2.png?w=1104&amp;ssl=1 1104w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image2.png?resize=300%2C201&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image2.png?resize=1024%2C686&amp;ssl=1 1024w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image2.png?resize=768%2C515&amp;ssl=1 768w\" sizes=\"(max-width: 501px) 100vw, 501px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Heroku was the first, and remains the most prominent, <\/span><a href=\"https:\/\/softwareengineeringdaily.com\/2020\/02\/13\/what-is-a-layer-2-cloud-provider\/\"><span style=\"font-weight: 400;\">Layer 2 Cloud Provider.<\/span><\/a><span style=\"font-weight: 400;\"> Heroku is a \u201cPlatform-as-a-Service\u201d provider that builds upon the infrastructure of Layer 1 Cloud Providers, such as AWS, to create a <\/span><a href=\"https:\/\/www.softwaredaily.com\/post\/5913c07d4ee01db33caccec4\/Heroku-Autoscaling-with-Andrew-Gwozdziewycz\"><span style=\"font-weight: 400;\">streamlined, developer-first platform<\/span><\/a><span style=\"font-weight: 400;\"> for the deployment and management of 12-Factor Web Apps. Heroku is a strong proponent of 12-Factor Web App best principles, and the 12-Factor \u201cmanifesto\u201d was written by Heroku engineers.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">One critical element of 12-Factor Web Apps is so-called \u201cbacking services;\u201d that is, \u201cany service the app consumes over the network as part of its normal operation.\u201d <\/span><a href=\"http:\/\/12factor.net\"><span style=\"font-weight: 400;\">Best practices<\/span><\/a><span style=\"font-weight: 400;\"> dictate that these backing services- including databases- should be treated as \u201cattached resources,\u201d and an app\u2019s code should be agnostic to whether the resource is accessed locally or over a network.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The principle of \u201cloose coupling\u201d of backing services comes with an implicit contract- that the increased flexibility will not create a trade-off in availability or durability. This is especially important for services such as attached databases, which provide critical data such as user account information. Users of web applications expect fast, accurate rendering of the data they expect to see.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/12factor.net\/backing-services\"><img decoding=\"async\" data-attachment-id=\"9111\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/image3-26\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image3.png?fit=1992%2C960&amp;ssl=1\" data-orig-size=\"1992,960\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image3\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image3.png?fit=300%2C145&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image3.png?fit=1024%2C493&amp;ssl=1\" class=\"aligncenter wp-image-9111 \" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image3.png?resize=506%2C244&#038;ssl=1\" alt=\"\" width=\"506\" height=\"244\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image3.png?w=1992&amp;ssl=1 1992w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image3.png?resize=300%2C145&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image3.png?resize=1024%2C493&amp;ssl=1 1024w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image3.png?resize=768%2C370&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image3.png?resize=1536%2C740&amp;ssl=1 1536w\" sizes=\"(max-width: 506px) 100vw, 506px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Heroku provides several managed <\/span><a href=\"https:\/\/www.heroku.com\/managed-data-services\"><span style=\"font-weight: 400;\">data resources<\/span><\/a><span style=\"font-weight: 400;\">, including PostgreSQL, Redis, and Kafka. In addition, the <\/span><a href=\"https:\/\/elements.heroku.com\/addons\"><span style=\"font-weight: 400;\">Heroku Elements Marketplace<\/span><\/a><span style=\"font-weight: 400;\"> contains dozens of add-ons available to developers using Heroku\u2019s platform-as-a-service offering.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Heroku\u2019s flagship data management offering is Heroku Postgres. PostgreSQL is an open-source relational database management system (RDBMS) that has been widely adopted since its release in 1996 due to its support for a wide variety of data types, its ACID-compliant transactions, and its use of write-ahead logging to increase fault tolerance. Heroku adopted Postgres in 2007, and it continues to be the most popular data storage offering on the platform. Heroku Postgres allows users to manage schema migrations, database access controls, and scaling from the Heroku platform. A Heroku Postgres database can be shared between several applications by a simple set of commands from the CLI. Heroku Postgres has a feature called <\/span><a href=\"https:\/\/devcenter.heroku.com\/articles\/heroku-postgres-rollback\"><span style=\"font-weight: 400;\">rollback,<\/span><\/a><span style=\"font-weight: 400;\"> which acts like a time machine for the database, allowing a developer to \u201croll back\u201d the database to a previous point in time without affecting the present state of the database.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/www.heroku.com\/postgres\"><img decoding=\"async\" data-attachment-id=\"9113\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/image5-20\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image5.png?fit=1876%2C1398&amp;ssl=1\" data-orig-size=\"1876,1398\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image5\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image5.png?fit=300%2C224&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image5.png?fit=1024%2C763&amp;ssl=1\" class=\"aligncenter wp-image-9113 \" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image5.png?resize=501%2C374&#038;ssl=1\" alt=\"\" width=\"501\" height=\"374\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image5.png?w=1876&amp;ssl=1 1876w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image5.png?resize=300%2C224&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image5.png?resize=1024%2C763&amp;ssl=1 1024w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image5.png?resize=768%2C572&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image5.png?resize=1536%2C1145&amp;ssl=1 1536w\" sizes=\"(max-width: 501px) 100vw, 501px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">In addition to Postgres and the add-ons in the Elements Marketplace, Heroku offers official integrations with <\/span><a href=\"https:\/\/www.heroku.com\/redis\"><span style=\"font-weight: 400;\">Redis<\/span><\/a><span style=\"font-weight: 400;\"> and <\/span><a href=\"https:\/\/www.heroku.com\/kafka\"><span style=\"font-weight: 400;\">Kafka<\/span><\/a><span style=\"font-weight: 400;\">. Redis is a key-value store that supports a wide variety of abstract data types. While Redis traditionally holds all data in memory, Heroku Redis is configured to persist data to disk by using an Append-Only File (AOF) and maintaining a high-availability standby for failover. Heroku Redis also provides tools to federate data with Postgres; this ability to manage data from multiple sources in a streamlined fashion is another advantage of a platform-as-a-service offering abstracting away the work of creating a common data model across data sources.<\/span><\/p>\n<p><a href=\"https:\/\/www.heroku.com\/kafka\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"9112\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/image4-25\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image4.png?fit=961%2C650&amp;ssl=1\" data-orig-size=\"961,650\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image4\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image4.png?fit=300%2C203&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image4.png?fit=961%2C650&amp;ssl=1\" class=\"aligncenter wp-image-9112 \" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image4.png?resize=506%2C342&#038;ssl=1\" alt=\"\" width=\"506\" height=\"342\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image4.png?w=961&amp;ssl=1 961w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image4.png?resize=300%2C203&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image4.png?resize=768%2C519&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image4.png?resize=540%2C364&amp;ssl=1 540w\" sizes=\"(max-width: 506px) 100vw, 506px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Heroku also offers a managed Kafka service for streaming data. Apache Kafka is a <\/span><a href=\"http:\/\/kafka.apache.org\/intro\"><span style=\"font-weight: 400;\">distributed streaming platform<\/span><\/a><span style=\"font-weight: 400;\"> which provides four core APIs (Producers, Consumers, Streams, and Connectors) which allow communication across a distributed system using an abstraction called a \u201ctopic.\u201d A topic is a stream of records, created by Producers, which other members in a distributed application can subscribe to (these are the Consumers). Kafka builds on the concept of an event-driven architecture (EDA), which uses messages between services as the drivers of application state. Kafka also acts as a transport for large volumes of immutable event streams, making it a key tool for real-time data streaming and parallel processing of Big Data. Kafka acts as a \u201cdistributed commit log\u201d, storing key-value records of these messages across several nodes in a cluster. Kafka also works hand-in-hand with Zookeeper, which helps orchestrate nodes across the cluster and perform failover migration.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As distributed applications scale, the management complexity increases rapidly. As before, Heroku\u2019s focus is on streamlining the management of data resources. Heroku Kafka allows management of Kafka through the web platform or the CLI, while lower-level configuration tasks are <\/span><a href=\"https:\/\/www.softwaredaily.com\/post\/5913c0984ee01db33caccf19\/Managed-Kafka-with-Tom-Crayford\"><span style=\"font-weight: 400;\">abstracted away<\/span><\/a><span style=\"font-weight: 400;\">. Heroku Kafka allows straightforward monitoring of Kafka clusters, and is built to be secure and compliant with regulations involving streaming of Personal Identifiable Information (PII).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For developers building 12-Factor Web Apps- or any cloud-based applications which can benefit from a streamlined development-to-production workflow- Heroku\u2019s data management tools offer significant benefits. Less time spent in configuration can equate to more time spent coding the application itself. For more information on Heroku Postgres, we did a <\/span><a href=\"https:\/\/www.softwaredaily.com\/post\/5ccffc58c8ed02000c782c00\/Cloud-Database-Workloads-with-Jon-Daniel\"><span style=\"font-weight: 400;\">deep dive on the subject with Jon Daniel<\/span><\/a><span style=\"font-weight: 400;\">, an infrastructure engineer at Heroku. For more information on Heroku, check out <\/span><a href=\"https:\/\/www.heroku.com\/managed-data-services\"><span style=\"font-weight: 400;\">their website<\/span><\/a><span style=\"font-weight: 400;\">, or visit our <\/span><a href=\"https:\/\/www.softwaredaily.com\/search?query=heroku\"><span style=\"font-weight: 400;\">Heroku archives at SoftwareDaily.com.<\/span><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nearly all modern web applications depend on persisted data in order to function. Since the introduction of frameworks such as JavaScript in the late 1990s, developers have demanded more functionality from their web-based programs than traditional \u201cstatic\u201d websites could provide. Today, single-page applications (SPAs) such as Gmail provide a dynamic user experience by interacting with<\/p>\n","protected":false},"author":53,"featured_media":9109,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[1363,83,2143],"tags":[1272,71,911,581,2902,3416],"class_list":["post-9108","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-all-episodes","category-articles","category-exclusive-content","tag-apache-kafka","tag-big-data","tag-heroku","tag-heroku-kafka","tag-jon-daniel","tag-nick-daigler"],"jetpack_publicize_connections":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Managing Cloud Data Services with Heroku - Software Engineering Daily<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Managing Cloud Data Services with Heroku - Software Engineering Daily\" \/>\n<meta property=\"og:description\" content=\"Nearly all modern web applications depend on persisted data in order to function. Since the introduction of frameworks such as JavaScript in the late 1990s, developers have demanded more functionality from their web-based programs than traditional \u201cstatic\u201d websites could provide. Today, single-page applications (SPAs) such as Gmail provide a dynamic user experience by interacting with\" \/>\n<meta property=\"og:url\" content=\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/\" \/>\n<meta property=\"og:site_name\" content=\"Software Engineering Daily\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-31T15:00:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-03-30T20:20:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image1.png?fit=1266%2C860&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1266\" \/>\n\t<meta property=\"og:image:height\" content=\"860\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Danny Seymour\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@software_daily\" \/>\n<meta name=\"twitter:site\" content=\"@software_daily\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Danny Seymour\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/\"},\"author\":{\"name\":\"Danny Seymour\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/618234cbe1ece5fb1942f58d2d279e62\"},\"headline\":\"Managing Cloud Data Services with Heroku\",\"datePublished\":\"2020-03-31T15:00:20+00:00\",\"dateModified\":\"2020-03-30T20:20:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/\"},\"wordCount\":865,\"publisher\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image1.png?fit=1266%2C860&ssl=1\",\"keywords\":[\"Apache Kafka\",\"Big Data\",\"Heroku\",\"Heroku Kafka\",\"Jon Daniel\",\"Nick Daigler\"],\"articleSection\":[\"All Content\",\"Exclusive Articles\",\"Exclusive Content\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/\",\"url\":\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/\",\"name\":\"Managing Cloud Data Services with Heroku - Software Engineering Daily\",\"isPartOf\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image1.png?fit=1266%2C860&ssl=1\",\"datePublished\":\"2020-03-31T15:00:20+00:00\",\"dateModified\":\"2020-03-30T20:20:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image1.png?fit=1266%2C860&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image1.png?fit=1266%2C860&ssl=1\",\"width\":1266,\"height\":860},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/softwareengineeringdaily.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Managing Cloud Data Services with Heroku\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#website\",\"url\":\"https:\/\/softwareengineeringdaily.com\/\",\"name\":\"Software Engineering Daily\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/softwareengineeringdaily.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\",\"name\":\"Software Engineering Daily\",\"url\":\"https:\/\/softwareengineeringdaily.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1\",\"width\":549,\"height\":169,\"caption\":\"Software Engineering Daily\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/software_daily\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/618234cbe1ece5fb1942f58d2d279e62\",\"name\":\"Danny Seymour\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4346abbfc4b4d898a9c6b21499ae87d8?s=96&d=retro&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4346abbfc4b4d898a9c6b21499ae87d8?s=96&d=retro&r=pg\",\"caption\":\"Danny Seymour\"},\"description\":\"Danny is a Santa Fe-based developer who works as a Junior Consultant at Rural Sourcing.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/daniel-seymournm\/\"],\"url\":\"https:\/\/softwareengineeringdaily.com\/author\/danny\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Managing Cloud Data Services with Heroku - Software Engineering Daily","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/","og_locale":"en_US","og_type":"article","og_title":"Managing Cloud Data Services with Heroku - Software Engineering Daily","og_description":"Nearly all modern web applications depend on persisted data in order to function. Since the introduction of frameworks such as JavaScript in the late 1990s, developers have demanded more functionality from their web-based programs than traditional \u201cstatic\u201d websites could provide. Today, single-page applications (SPAs) such as Gmail provide a dynamic user experience by interacting with","og_url":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/","og_site_name":"Software Engineering Daily","article_published_time":"2020-03-31T15:00:20+00:00","article_modified_time":"2020-03-30T20:20:47+00:00","og_image":[{"width":1266,"height":860,"url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image1.png?fit=1266%2C860&ssl=1","type":"image\/png"}],"author":"Danny Seymour","twitter_card":"summary_large_image","twitter_creator":"@software_daily","twitter_site":"@software_daily","twitter_misc":{"Written by":"Danny Seymour","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#article","isPartOf":{"@id":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/"},"author":{"name":"Danny Seymour","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/618234cbe1ece5fb1942f58d2d279e62"},"headline":"Managing Cloud Data Services with Heroku","datePublished":"2020-03-31T15:00:20+00:00","dateModified":"2020-03-30T20:20:47+00:00","mainEntityOfPage":{"@id":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/"},"wordCount":865,"publisher":{"@id":"https:\/\/softwareengineeringdaily.com\/#organization"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image1.png?fit=1266%2C860&ssl=1","keywords":["Apache Kafka","Big Data","Heroku","Heroku Kafka","Jon Daniel","Nick Daigler"],"articleSection":["All Content","Exclusive Articles","Exclusive Content"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/","url":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/","name":"Managing Cloud Data Services with Heroku - Software Engineering Daily","isPartOf":{"@id":"https:\/\/softwareengineeringdaily.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#primaryimage"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image1.png?fit=1266%2C860&ssl=1","datePublished":"2020-03-31T15:00:20+00:00","dateModified":"2020-03-30T20:20:47+00:00","breadcrumb":{"@id":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#primaryimage","url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image1.png?fit=1266%2C860&ssl=1","contentUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image1.png?fit=1266%2C860&ssl=1","width":1266,"height":860},{"@type":"BreadcrumbList","@id":"https:\/\/softwareengineeringdaily.com\/2020\/03\/31\/managing-cloud-data-services-with-heroku\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/softwareengineeringdaily.com\/"},{"@type":"ListItem","position":2,"name":"Managing Cloud Data Services with Heroku"}]},{"@type":"WebSite","@id":"https:\/\/softwareengineeringdaily.com\/#website","url":"https:\/\/softwareengineeringdaily.com\/","name":"Software Engineering Daily","description":"","publisher":{"@id":"https:\/\/softwareengineeringdaily.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/softwareengineeringdaily.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/softwareengineeringdaily.com\/#organization","name":"Software Engineering Daily","url":"https:\/\/softwareengineeringdaily.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1","contentUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1","width":549,"height":169,"caption":"Software Engineering Daily"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/software_daily"]},{"@type":"Person","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/618234cbe1ece5fb1942f58d2d279e62","name":"Danny Seymour","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4346abbfc4b4d898a9c6b21499ae87d8?s=96&d=retro&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4346abbfc4b4d898a9c6b21499ae87d8?s=96&d=retro&r=pg","caption":"Danny Seymour"},"description":"Danny is a Santa Fe-based developer who works as a Junior Consultant at Rural Sourcing.","sameAs":["https:\/\/www.linkedin.com\/in\/daniel-seymournm\/"],"url":"https:\/\/softwareengineeringdaily.com\/author\/danny\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2020\/03\/image1.png?fit=1266%2C860&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p7GuoD-2mU","_links":{"self":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts\/9108"}],"collection":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/comments?post=9108"}],"version-history":[{"count":0,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts\/9108\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/media\/9109"}],"wp:attachment":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/media?parent=9108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/categories?post=9108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/tags?post=9108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}