<?xml version="1.0" encoding="UTF-8" ?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" version="2.0"><channel><title>Paul Laurence | CrunchyData Blog</title>
<atom:link href="https://www.crunchydata.com/blog/author/paul-laurence/rss.xml" rel="self" type="application/rss+xml" />
<link>https://www.crunchydata.com/blog/author/paul-laurence</link>
<image><url>https://www.crunchydata.com/build/_assets/paul-laurence.png-PIITZABT.webp</url>
<title>Paul Laurence | CrunchyData Blog</title>
<link>https://www.crunchydata.com/blog/author/paul-laurence</link>
<width>834</width>
<height>835</height></image>
<description>PostgreSQL experts from Crunchy Data share advice, performance tips, and guides on successfully running PostgreSQL and Kubernetes solutions</description>
<language>en-us</language>
<pubDate>Mon, 03 May 2021 05:00:00 EDT</pubDate>
<dc:date>2021-05-03T09:00:00.000Z</dc:date>
<dc:language>en-us</dc:language>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<item><title><![CDATA[ Using Kubernetes? Chances Are You Need a Database ]]></title>
<link>https://www.crunchydata.com/blog/using-kubernetes-chances-are-you-need-a-database</link>
<description><![CDATA[ Whether you are starting a new development project, launching an application modernization effort, or engaging in digital transformation, chances are you are evaluating Kubernetes. If you selected Kubernetes, chances are you will ultimately need a database. ]]></description>
<content:encoded><![CDATA[ <p>Whether you are starting a new development project, launching an application modernization effort, or engaging in digital transformation, chances are you are evaluating Kubernetes. If you selected Kubernetes, chances are you will ultimately <a href=https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes>need a database</a>.<p><a href=https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/>Kubernetes</a> provides many benefits for running applications including efficiency, automation, or infrastructure abstraction. These features allow you to deploy <a href=https://access.crunchydata.com/documentation/postgres-operator/latest/architecture/high-availability/>highly availability</a> databases and scale, making it easier to manage hardware for databases as they grow.<p>More users are adopting databases on Kubernetes. The <dfn>Cloud Native Computing Foundation</dfn> (<abbr>CNCF</abbr>) provides great data on Kubernetes adoption. The <a href=https://www.cncf.io/blog/2020/11/17/cloud-native-survey-2020-containers-in-production-jump-300-from-our-first-survey/>Cloud Native Survey 2020</a> that 55% of respondents are using stateful applications in containers in production. Crunchy Data has many <a href=https://www.crunchydata.com/customers>customers</a> who successfully run Postgres on Kubernetes.<p>So how do you start with databases on Kubernetes?<h2 id=selecting-your-database><a href=#selecting-your-database><strong>Selecting Your Database</strong></a></h2><p>As users select new databases for Kubernetes, they generally start with open source. Typically users adopt a combination of SQL and NoSQL databases for their <a href=/blog/postgres-the-friendly-relational-member-of-your-data-management-toolbox>data toolbox</a>.<p>At <a href=https://www.crunchydata.com>Crunchy Data</a>, we are fans of <a href=/blog/postgres-the-batteries-included-database>Postgres</a> and believe it is a great fit for SQL workloads on Kubernetes. We are happy to see the CNCF agree with this assessment. The <a href=https://www.cncf.io/blog/2020/11/18/cncf-end-user-technology-radar-database-storage-november-2020/>CNCF End User Technology Radar for Database Storage</a> places Postgres in the "Adopt" category. This status indicates Postgres is among "widely adopted and recommended by the respondents."<p><img alt=2020-11-database-storage loading=lazy src=https://f.hubspotusercontent00.net/hubfs/2283855/2020-11-database-storage.png><p>With the right tools (like <a href=https://github.com/CrunchyData/postgres-operator>PGO</a>, the <a href=https://github.com/CrunchyData/postgres-operator>Postgres Operator</a> from Crunchy Data) and expertise, Postgres is Kubernetes friendly.<h2 id=you-probably-want-an-operator><a href=#you-probably-want-an-operator><strong>You Probably Want an Operator</strong></a></h2><p>The term “operator” was a term <a href=https://operatorhub.io/what-is-an-operator>coined by CoreOS</a>. Technically, a Kubernetes Operator is an application-specific controller for Kubernetes. Simply put, an operator is a Kubernetes extension to automate actions of a human "operator".<p>The operator pattern works especially well for databases, which can be admin intensive. Tasks like backups or restore typically need human intervention. A database operator can automate these administrative tasks, reducing your admin burden. Application specific operators go a step further to provide application specific automation which can accelerate scaling and standardization.<p>For instance, PGO automates Postgres specific capability through automating Postgres tools and expertise. PGO provides GitOps friendly workflows for provisioning standardized Postgres clusters and automates <a href=https://access.crunchydata.com/documentation/postgres-operator/4.6.2/architecture/high-availability/>high availability</a>, <a href=https://access.crunchydata.com/documentation/postgres-operator/4.6.2/architecture/disaster-recovery/>disaster recovery</a>, <a href=https://access.crunchydata.com/documentation/postgres-operator/4.6.2/architecture/monitoring/>and monitoring</a>.<p>You can use an operator in a range of use cases. Users can deploy Kubernetes native applications alongside Postgres using PGO. Operators provide centralized administrations and automation at scale for users building a database-as-a-service.<h2 id=storage-options><a href=#storage-options><strong>Storage Options</strong></a></h2><p>Databases are different than stateless apps in that they need <a href=https://kubernetes.io/docs/concepts/storage/persistent-volumes/>persistent storage</a>.<p>Databases running on Kubernetes can make use of a range of storage types. Options include HostPath, <dfn>Network File System</dfn> (<abbr>NFS</abbr>), and Dynamic storage. PGO is storage agnostic: it works with any supported Kubernetes storage system.<p>You must provision persistent volumes for both Hostpath and NFS, though automated storage provisioners do exist. Dynamic storage classes allow users to request persistent volume claims and have the <a href=https://kubernetes.io/docs/concepts/storage/persistent-volumes/>persistent volume</a> created for you. There are many providers of dynamic storage classes to choose from. You will need to configure what works for your environment and size the Physical Volumes, <dfn>Persistent Volumes</dfn> (<abbr>PVs</abbr>).<p>Public cloud environments with multiple availability zones raise additional issues. If you are planning to use a public cloud with multiple zones, you will want to become familiar with the <a href=https://access.crunchydata.com/documentation/postgres-operator/latest/advanced/multi-zone-design-considerations/>topology aware storage class configurations</a>.<h2 id=getting-started><a href=#getting-started><strong>Getting Started</strong></a></h2><p>The Kubernetes ecosystem has made it easy to deploy self-managed databases. Tools such as <a href=/blog/gitops-postgres-kubernetes-helm>Helm</a> and Kustomize provide automated installation and initial configuration. Marketplaces like <a href=https://operatorhub.io/operator/postgresql>OperatorHub.io</a>, the OpenShift Lifecycle Manager and Google Kubernetes Marketplace also provide easy getting started workflows.<p>If you have a <a href=https://kubernetes.io/docs/tasks/administer-cluster/change-default-storage-class/>default storage class</a> setup, the below commands enables you to deploy PGO:<pre><code class=language-shell>kubectl create namespace pgo>
kubectl apply -f https://raw.githubusercontent.com/CrunchyData/postgres-operator/v4.6.2/installers/kubectl/postgres-operator.yml
</code></pre><p>Within a few minutes, you should be up and running and ready to deploy a database to your Kubernetes environment.<h2 id=ready-for-a-deeper-dive><a href=#ready-for-a-deeper-dive><strong>Ready for a Deeper Dive?</strong></a></h2><p>The CNCF research is important validation of what we are seeing in the market. Users are adopting databases on Kubernetes. Operators, Helm, Kustomize and improvements in persistent storage have made this a much easier option. That said, there are of course areas where you may want to do a deeper dive include:<ul><li><a href=/blog/set-up-tls-for-postgresql-in-kubernetes>Using TLS to Secure Your Database On Kubernetes</a><li><a href=/blog/setup-postgresql-monitoring-in-kubernetes>Setting Up Monitoring for Your Database On Kubernetes</a><li><a href=/blog/active-active-postgres-federation-on-kubernetes>Active Active Database Federation on Kubernetes</a></ul><p>Deploying Postgres on Kubernetes is one of the <a href=/blog/the-answer-is-postgres-the-question-is-how>many ways to benefit from the power and efficiency of Postgres</a>. At Crunchy Data, we are seeing <a href=https://www.crunchydata.com/customers>customers have success</a> with this model and further grow their adoption of trusted open source Postgres. Now is a great time to get started running <a href=https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes>Postgres on Kubernetes</a>. ]]></content:encoded>
<category><![CDATA[ Kubernetes ]]></category>
<category><![CDATA[ Production Postgres ]]></category>
<author><![CDATA[ Paul.Laurence@crunchydata.com (Paul Laurence) ]]></author>
<dc:creator><![CDATA[ Paul Laurence ]]></dc:creator>
<guid isPermalink="false">https://blog.crunchydata.com/blog/using-kubernetes-chances-are-you-need-a-database</guid>
<pubDate>Mon, 03 May 2021 05:00:00 EDT</pubDate>
<dc:date>2021-05-03T09:00:00.000Z</dc:date>
<atom:updated>2021-05-03T09:00:00.000Z</atom:updated></item>
<item><title><![CDATA[ Is Postgres Secure? ]]></title>
<link>https://www.crunchydata.com/blog/is-postgres-secure</link>
<description><![CDATA[ This post provides a framework for thinking through how you can confront "security questions" as you embark on your Postgres journey. ]]></description>
<content:encoded><![CDATA[ <p>With the rise <a href=https://db-engines.com/en/blog_post/85>of Postgres,</a> new organizations are evaluating how to benefit from its <a href=https://www.crunchydata.com/blog/postgres-the-batteries-included-database>power and flexibility</a>. As that evaluation progresses, Postgres advocates must address the question, "Is Postgres secure?"<p>There are a variety of ways to answer this question, but the short answer is a confident "Yes!"<p>At <a href=https://www.crunchydata.com/>Crunchy Data,</a> we often collaborate with organizational stakeholders to address this question. Many organizations have used the same collection of databases for years (maybe decades). The idea of adopting a new database often requires first brushing off the security criteria, and then evaluating whether Postgres meets these requirements.<p>This post provides a framework for thinking through how you can confront "security questions" as you embark on your Postgres journey.<h2 id=does-postgres-have-the-security-functionality-we-require><a href=#does-postgres-have-the-security-functionality-we-require>Does Postgres Have the Security Functionality We Require?</a></h2><p>Chances are your organization is using an alternative database today. As a result, your organization has some expectation of the security functionality that a database must provide. An initial question is often "Does Postgres have the necessary security functionality that we rely on from $OTHER_DATABASE?"<p>Short answer is YES.<p><a href=https://www.commoncriteriaportal.org/ccra/index.cfm>Common Criteria for Information Technology Security</a> is an international standard (ISO/IEC 15408) for computer security certification. <dfn>Common Criteria</dfn> (<abbr>CC</abbr>) provides database specific security guidance through the <a href=https://www.commoncriteriaportal.org/pps/>Protection Profile for Database Management Systems</a> (DBMS PP). The DBMS PP presents the "security functional requirements" and "security assurance requirements" that representatives from industry, government, and CC Test Laboratories have determined to be applicable to databases. According to DBMS PP, in order for a database to achieve Common Criteria certification, it is necessary for the database to provide:<ul><li><em><dfn>Discretionary Access Control</dfn> (<abbr>DAC</abbr>) limits access to objects based on the identity of the subjects or groups to which the subjects and objects belong, and which allows authorized users to specify how the objects that they control are protected.</em><li><em>Audit Capture for creation of information on all auditable events.</em><li><em>Authorized administration role to allow authorized administrators to configure the policies for discretionary access control, identification and authentication, and auditing. The TOE must enforce the authorized administration role.</em><li><em>Limitation of the number of concurrent sessions and restrictions on establishing sessions.</em></ul><p>Our team went through the initial Common Criteria certification of PostgreSQL 9.5 in 2016 and we've just completed <a href=https://www.crunchydata.com/news/crunchy-certified-postgresql-12-achieves-in-evaluation-status-for-common-criteria-certification>recertification on PostgreSQL 12</a>. We validated that PostgreSQL and several open source extensions, including PostGIS, pgaudit and the JDBC driver, support the CC certification capabilities.This is a powerful statement: while the Common Criteria certification does have some specifics to how Crunchy Data distributes PostgreSQL, all of the components are just the open source projects!<p>CC certification provides lab based validation that open source Postgres, with these extensions, provides the full set of security functionality required by the DBMS PP and that users can expect from a database.<h2 id=how-do-i-securely-deploy-and-administer-my-postgres-database><a href=#how-do-i-securely-deploy-and-administer-my-postgres-database>How Do I Securely Deploy and Administer my Postgres Database?</a></h2><p>The existence of security functionality alone is of course just the beginning. Using these capabilities consistent with best practices are necessary for secure use of Postgres.<p>In working with the <dfn>Center for Internet Security</dfn> (<abbr>CIS</abbr>) and the United States <dfn>Defense Information Security Agency</dfn> (<abbr>DISA</abbr>), we've developed security guidance for the deployment, configuration and administration of Postgres. The most recent versions of these standards bring them current with <a href=https://www.postgresql.org/support/versioning/>PostgreSQL 13, the most recent major release</a>. The <a href=https://www.crunchydata.com/blog/announcing-the-crunchy-data-postgresql-stig><dfn>Security Technical Implementation Guide</dfn> (<abbr>STIG</abbr>)</a> in particular provides guidance on the configuration of PostgreSQL to address requirements associated with:<ul><li><p>Auditing<li><p>Logging<li><p>Data Encryption at Rest<li><p>Data Encryption in Transit<li><p>Access Controls<li><p>Administration<li><p>Authentication<li><p>Protecting against SQL Injection</ul><p>There are many things that you must consider when you want to securely manage a PostgreSQL database, but these guides provide ways you can tick the standard "checkboxes" when to securely deploy your data.<h2 id=how-does-postgres-address-sql-injection><a href=#how-does-postgres-address-sql-injection><strong>How Does Postgres Address SQL Injection?</strong></a></h2><p>Despite the widespread awareness of this attack vector, the risk of SQL injection attacks remains a common question. Through SQL injection attacks, bad actors “inject” data into your SQL query using destructive phrases or unescaped parameters. Hackers use this technique to gain access to business data and personal information, as well as modify or delete the content within your database.<p>Most modern ORMs keep you well protected and are actively tested against these vulnerabilities. A basic <a href=https://portswigger.net/burp/communitydownload>security tool</a> will also tell you if you're susceptible.<p>For Postgres users, writing customer SQL as part of their application, <a href=https://www.crunchydata.com/blog/preventing-sql-injection-attacks-in-postgresql>specific guidance on the topic is also applicable</a>.<p>The best practices from the CIS Benchmark and the DISA STIG will also provide the necessary protection.<h2 id=how-can-i-address-my-organizations-encryption-requirements><a href=#how-can-i-address-my-organizations-encryption-requirements><strong>How Can I Address My Organization's Encryption Requirements?</strong></a></h2><p>Data encryption is a common organizational requirement and security best practice. The general requirement typically includes both "encryption of data at rest" and "encryption of data in transit". Each has its own range of solutions, including full disk encryption, volume encryption, and folder encryption.<p>Postgres enables data encryption in conjunction with the broader enterprise IT environment through a number of features, including the "<a href=https://www.postgresql.org/docs/current/pgcrypto.html>pgcrypto</a>" extension, and support for <a href=https://www.crunchydata.com/blog/postgres-and-crypto-supply-chain-of-integrity>FIPS validated encryption modules</a>.<p>While this post will not attempt to do the subject justice, a few initial observations based on how we see our customers address these requirements:<ul><li><p>For "Encryption At Rest", our customers often address these requirements through the storage layer or by your <a href=https://www.crunchydata.com/products/crunchy-bridge>infrastructure provider</a> (such is the case on <a href=https://www.crunchydata.com/products/crunchy-bridge>Crunchy Bridge</a>).<li><p>For "Encryption In Transit", Postgres enables users to connect over TLS and setting explicitly in your connection string.</ul><p>Again, the CIS Benchmark and the DISA STIG also provide specific configuration guidance.<h2 id=the-hot-topic-of-the-day-supply-chain><a href=#the-hot-topic-of-the-day-supply-chain><strong>The Hot Topic of the Day: Supply Chain</strong></a></h2><p>Recent news has highlighted the risks and importance of understanding the software supply chain. Postgres is of course an open source software project maintained by an active global development community with a high degree of transparency. This transparency provides an important mitigation against potential security risks. That said, freely available source code is a mitigation against supply chain risk, not a cure all.<p>The core Postgres source code is only one consideration. Production Postgres deployments often make use of a broad range of Postgres tools and extensions. It is important to consider how you will maintain a secure supply chain for this full ecosystem of software. It is also necessary to think through the various "stops" along the software supply chain path between the Postgres source code and the binaries running on your server.<p>One of the <a href=https://www.crunchydata.com/about/value-of-subscription>values provided by open source software vendors</a> is maintenance and certification of the software supply chain. This is where the Common Criteria come in: the CC EAL 2+ certification provides third party validation of the software supply chain and support to ensure you are installing only trusted components.<h2 id=yes-postgres-is-secure><a href=#yes-postgres-is-secure><strong>Yes, Postgres is Secure</strong></a></h2><p>There is no shortage of good reasons to adopt Postgres in your data management <a href=https://www.crunchydata.com/blog/postgres-the-friendly-relational-member-of-your-data-management-toolbox>toolbox</a>. Postgres' security capabilities are just one of them.<p>It is a testament to the global Postgres community that open source Postgres can stand up to the security standards developed by leading proprietary database vendors and imposed by security conscious enterprise users, and enable security conscious users to adopt Postgres consistent with industry best practices. ]]></content:encoded>
<category><![CDATA[ Security ]]></category>
<author><![CDATA[ Paul.Laurence@crunchydata.com (Paul Laurence) ]]></author>
<dc:creator><![CDATA[ Paul Laurence ]]></dc:creator>
<guid isPermalink="false">https://blog.crunchydata.com/blog/is-postgres-secure</guid>
<pubDate>Mon, 29 Mar 2021 05:00:00 EDT</pubDate>
<dc:date>2021-03-29T09:00:00.000Z</dc:date>
<atom:updated>2021-03-29T09:00:00.000Z</atom:updated></item>
<item><title><![CDATA[ The Answer is Postgres; The Question is How? ]]></title>
<link>https://www.crunchydata.com/blog/the-answer-is-postgres-the-question-is-how</link>
<description><![CDATA[ Deciding to use Postgres is a great start, we like to think it’s the right start. As to how best to deploy it, you have a number of options. ]]></description>
<content:encoded><![CDATA[ <p>There is increasing consensus that Postgres is a great choice of database for a broad range of use cases. As our friends at RedMonk have said:<blockquote><p>the answer is postgres, now what's the question again? ;-)<p>— Elon Mook (@monkchips) <a href="https://twitter.com/monkchips/status/858433502181822464?ref_src=twsrc%5Etfw">April 29, 2017</a></blockquote><p>You have a number of good options for how to run Postgres: run it in VMs, as a managed service or bare metal. Benjamin Good, a Google Cloud Solutions Architect, wrote a helpful blog post of when to run <a href=https://cloud.google.com/blog/products/databases/to-run-or-not-to-run-a-database-on-kubernetes-what-to-consider>databases on Kubernetes</a>; a common question and increasingly popular and successful option.<p>So which deployment model is appropriate for you? As usual, it depends.<p><em>At</em> <a href=https://www.crunchydata.com/><em>Crunchy Data</em></a><em>, we support customers who have made the choice for all of the above. That vantage point gives us some perspective on when you should choose which approach. Building on the Google Cloud framework, let's review the options and considerations.</em><h2 id=postgres-on-virtual-machines-the-old-standard><a href=#postgres-on-virtual-machines-the-old-standard>Postgres on Virtual Machines: The "Old" Standard</a></h2><p>The <a href=https://cloud.google.com/blog/products/databases/to-run-or-not-to-run-a-database-on-kubernetes-what-to-consider>Google Cloud analysis</a> describes this as the "Full Ops" option, "Where you take full responsibility for building your database, scaling it, managing reliability, setting up backups, and more," with a core trade-off between the level of effort to maintain the database against the flexibility associated with your choice of location for deployment (on-premise, public cloud, etc.).<p>Most Postgres users view running on VMs as a tried and true approach (though this wasn’t always the case). There are many tools for automating Postgres on VMs, enabling users to reduce the administrative level of effort. Automated or not, you are of course responsible for the database administration.<p>Often the choice of Postgres on VMs is most appropriate when you already have the necessary internal infrastructure and expertise to run databases and you want control over both your database and infrastructure. The decision is commonly driven by economies of scale. In the public cloud you may prefer VM-based Postgres deployments due to flexibility in version availability, configuration options and availability of extensions.<p>In these cases, Postgres on VMs provides the right balance of flexibility, control and investment.<h2 id=postgres-on-kubernetes-is-kubernetes-ready-for-databases><a href=#postgres-on-kubernetes-is-kubernetes-ready-for-databases>Postgres on Kubernetes: Is Kubernetes Ready for Databases?</a></h2><p>PostgreSQL on Kubernetes is a new option by database standards. <a href=https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/>Kubernetes</a> provides many benefits for running applications, including efficiency, automation, or infrastructure abstraction. But <a href=https://twitter.com/craigkerstiens/status/1349840342359502851>what about running databases</a>?<p>It is a common question of whether Kubernetes has matured to the point where it is ready for stateful workloads. My colleague <a href=/blog/author/greg-smith>Greg Smith</a> recounts that it took VMs about five years of maturation before users could reliably run Postgres. By that time, following appropriate testing of their configuration, users could prove that their VM platform was sufficiently reliable to run a database. Has Kubernetes reached the maturity stage where you can reliably run databases on that platform?<p>The <dfn>Cloud Native Computing Foundation</dfn> (<abbr>CNCF</abbr>) <a href=https://www.cncf.io/blog/2020/11/17/cloud-native-survey-2020-containers-in-production-jump-300-from-our-first-survey/>Cloud Native Survey 2020</a> provides interesting data. The CNCF Survey reports that 55% of respondents are using stateful applications in containers in production.<p>Today, it isn’t just early adopters running Postgres on Kubernetes. Many Crunchy Data customers have <a href=https://www.crunchydata.com/case-studies/sas>successfully deployed Postgres on Kubernetes,</a> and have been kind enough to <a href=https://www.crunchydata.com/case-studies/ibm>talk about it</a>.<p>While there were initially some rough edges in running Postgres on Kubernetes, it has come a long way since the early days. The Kubernetes ecosystem has evolved considerably since the days of "Petsets" and <a href=/blog/postgres-operator-for-kubernetes>Third Party Resources</a> with the evolution of the <a href=https://coreos.com/operators/>Operator model from CoreOS</a> and the variety of storage options currently available to users.<p>Similar to VMs, with time Postgres admins are getting more comfortable running Postgres on Kubernetes. To help build that confidence, our team <a href=https://www.redhat.com/en/resources/crunchy-data-postgresql-overview>recently worked with Red Hat to validate Postgres containers on Kubernetes</a>.<h2 id=postgres-on-kubernetes-but-postgres><a href=#postgres-on-kubernetes-but-postgres>Postgres on Kubernetes: But Postgres?</a></h2><p>The Google Cloud post describes databases on Kubernetes as "closer to the full-ops option," while indicating that "You do get some benefits in terms of the automation Kubernetes provides to keep the database application running." In the Google Cloud's analysis, the key decision point is whether the database has "Kubernetes-friendly features" or "Is there an operator project to help?"<p>We of course believe <a href=/blog/postgres-the-batteries-included-database>Postgres is a great database</a>. Its core functionality is extended through a robust open source software ecosystem. With the right tools (like <a href=https://github.com/CrunchyData/postgres-operator>the Postgres Operator</a>) and expertise, Postgres is Kubernetes friendly. Was it designed from scratch to work with cloud native primitives? No.? Does it work with cloud native primitives from continued development and evolution? Absolutely.<p>Kubernetes provides many interesting capabilities for running databases, particularly when coupled with an Operator. The ability to scale up nodes uniformly makes it easier to manage hardware for databases as they grow. Kubernetes features like <a href=https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/>node affinity</a> and <a href=https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/>tolerations</a> allow admins to make decisions about where Postgres instances are deployed. These tools combine to enable database workloads to benefit from <a href=https://access.crunchydata.com/documentation/postgres-operator/latest/architecture/high-availability/>high availability</a> or specific hardware.<p>That said, running Kubernetes, and applications on Kubernetes, comes with its share of administrative requirements. Operators and tools such as Helm and Kustomize are all helpful in easing the administrative burden, but automation and orchestration associated with Kubernetes does not come for free.<p>In the context of Postgres, the question seems to boil down to whether a user values the benefits of Kubernetes sufficiently to sustain the incremental administration.<h2 id=fully-managed-postgres><a href=#fully-managed-postgres>Fully Managed Postgres</a></h2><p>What about fully managed database options for Postgres? <a href=https://blogs.gartner.com/adam-ronthal/2019/06/23/future-database-management-systems-cloud/>As database workloads move to the cloud</a>, managed services are an attractive option for deploying databases. Google Cloud describes this as the "low-ops choice" as the ‘managed service’ handles a number of the database administration tasks for you - including backups, patching and scaling.<p><a href=/news/crunchy-data-announces-fully-managed-cloud-postgres-database-service>Crunchy Data launched Crunchy Bridge</a> to provide users with the best managed Postgres experience. By combining industry leading Postgres expertise, with extensive operational expertise running Postgres as a service, Crunchy Bridge provides users with the flexibility of Postgres control, Postgres extensions and dedicated Postgres support.<p>Managed Postgres also enables you to benefit from hands-on expertise from Crunchy Data Postgres engineers. As my colleague <a href=https://www.twitter.com/craigkerstiens>Craig</a> likes to say, “Fully managed Postgres from Crunchy provides you with the benefit of the Crunchy Data engineers with decades of experience running large scale Postgres databases and database as a service. “ While many days you may not need this level of expertise to run Postgres, when you do, you can have confidence the scale we operate Postgres at has given us experience to effectively troubleshoot any problem with Postgres.<p>For users who are not interested in maintaining a database server, managed Postgres is a great option. And you still get the best part: Postgres<h2 id=so-what-should-you-do><a href=#so-what-should-you-do>So what should you do?</a></h2><p>Good news. Deciding to use Postgres is a great start, we like to think it’s the right start. As to how best to deploy it, you have a number of options.<p>To ensure users have a variety of Postgres options, Crunchy Data provides <a href=https://www.crunchydata.com/products/crunchy-high-availability-postgresql>Crunchy High Availability PostgreSQL</a> for VM based deployments, <a href=https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes>Crunchy PostgreSQL for Kubernetes</a> complete with a mature Postgres Operator, and <a href=https://www.crunchydata.com/products/crunchy-bridge>Crunchy Bridge</a>, a managed Postgres service.<p>The analysis that we have seen is less of an either/or decision and more of a question of when and where. Similar to the hybrid cloud reality that enterprises of all sizes tend to use, Postgres users often choose some combination of these deployment models based upon their team requirements and organizational standards. The choice is less about deciding which model to use for all applications, and more about which choice to use for a given project.<p>For many projects, using a managed service works well if the use cases require a "set and forget" Postgres deployment. The choice between deploying Postgres on VMs and Kubernetes is less about a decision for more or less management or automation but rather based on whether a group is standardizing on Kubernetes.<p>Are you still wondering how you should deploy PostgreSQL? Let me offer a decision tree to help you:<p><img alt=BlogDiagram-1 loading=lazy src=https://f.hubspotusercontent00.net/hubfs/2283855/BlogDiagram-1.png><p>As with everything, each decision has trade offs but as long as you are starting with "The answer is Postgres," it is unlikely you'll get too far off the correct path. <a href=https://www.crunchydata.com/contact>If you need help, Crunchy Data is here to assist.</a> ]]></content:encoded>
<category><![CDATA[ Production Postgres ]]></category>
<author><![CDATA[ Paul.Laurence@crunchydata.com (Paul Laurence) ]]></author>
<dc:creator><![CDATA[ Paul Laurence ]]></dc:creator>
<guid isPermalink="false">https://blog.crunchydata.com/blog/the-answer-is-postgres-the-question-is-how</guid>
<pubDate>Mon, 08 Feb 2021 04:00:00 EST</pubDate>
<dc:date>2021-02-08T09:00:00.000Z</dc:date>
<atom:updated>2021-02-08T09:00:00.000Z</atom:updated></item>
<item><title><![CDATA[ Postgres: The Friendly Relational Member of Your Data Management Toolbox ]]></title>
<link>https://www.crunchydata.com/blog/postgres-the-friendly-relational-member-of-your-data-management-toolbox</link>
<description><![CDATA[ The recent selection of Postgres as the "Database of the Year" for the third time in four years is by no means an overnight success story, but is well deserved recognition for a database decades in the making. As organizations look for the relational database of the future, Postgres is ready and waiting. We are proud to be among the leading contributors and supporters of this important movement. ]]></description>
<content:encoded><![CDATA[ <p>While <a href=https://www.infoworld.com/article/3583633/the-year-of-postgresql-is-every-year.html>every year feels like the year of Postgres</a> these days, 2012 did not. For most observers, 2012 was the year of "Big Data" as NoSQL technologies like Hadoop and MongoDB were demonstrating powerful new data management use cases.<p>At the same time, Crunchy Data was still just an idea and was beginning to engage with various consumers of database technology on how this wave of new open source tools were impacting their data strategy. During these early discussions - and many since - we heard how organizations were building a modern data management toolbox. The tools were being selected to support the next generation of application development. Organizations were including a NoSQL tool like Hadoop, one or two legacy databases, a data caching or message broker technology, and a modern relational tool as the new SQL standard. And the relational database tool of choice that we heard about time and time again, was <a href=https://www.postgresql.org/>Postgres</a>.<p>Despite the enthusiasm for Big Data, the macro trend driving change in how organizations think about databases, the more nuanced trend was toward open source software as both a viable and innovative solution to data problems. While Linux was an increasingly well-established operating system of choice, prior to the Big Data movement, open source data tooling was still relegated to the early adopters and enterprise "exception" servers. For Big Data in 2012, open source was not only a credible option, it was the only option for addressing these new challenges.<p>No more. As organizations began to get comfortable with open source for their "NoSQL" data stores, the next logical question was,"Why not use open source for our relational databases?" The death of relational and SQL was grossly overstated, and the forward thinking users were betting on Postgres as their relational database for the future.<p>As organizations re-evaluated their long held data management perspective, Postgres was ready and waiting. What began as a <a href=https://twitter.com/mikeolson/status/1344432920845381633>well thought out codebase at UC Berkeley</a> had developed into a rock solid and full featured relational database ready to take on all sorts of workloads.<p>Postgres was steadily innovating as a <a href=https://www.techrepublic.com/article/what-the-postgresql-community-has-done-so-right/>community-driven</a> open source database, adding new capabilities with each release. Users who had looked at Postgres long ago were surprised to learn that it now supported native replication, <a href=https://www.craigkerstiens.com/2017/03/12/getting-started-with-jsonb-in-postgres/>JSONB</a>, query parallelism, and partitioning. This was on top of many features that had Postgres at parity with other relational databases, such as multi-version concurrency control, native procedural language support (PL/SQL, <a href=/blog/getting-started-with-postgres-functions-in-plpython>Python</a>, Perl, R), advanced authentication mechanisms (<a href=/blog/ssl-certificate-authentication-postgresql-docker-containers>certificates</a>, Kerberos, <a href=/blog/windows-active-directory-postgresql-gssapi-kerberos-authentication>ActiveDirectory</a>) and more. With each release, the Postgres community brought it closer to readiness for the wide range of applications backed by relational databases, along with the wide range of Postgres extensions like <a href="https://www.youtube.com/watch?v=rWwfR2P07co">PostGIS</a> that enable even more rapid innovation and workload specific capabilities.<p>We at Crunchy Data have continued to be impressed by the Postgres community and its steady innovation. Year after year, the project gets better. The rise of the cloud and new platforms such as Kubernetes have only accelerated the trend toward open source infrastructure, and open source data management by extension.<p>The recent selection of Postgres as the "<a href=https://db-engines.com/en/blog_post/85>Database of the Year</a>" for the third time in four years is by no means an overnight success story, but is well deserved recognition for a database decades in the making. As organizations look for the relational database of the future, Postgres is ready and waiting. We are proud to be among the leading contributors and supporters of this important movement. ]]></content:encoded>
<category><![CDATA[ Production Postgres ]]></category>
<author><![CDATA[ Paul.Laurence@crunchydata.com (Paul Laurence) ]]></author>
<dc:creator><![CDATA[ Paul Laurence ]]></dc:creator>
<guid isPermalink="false">https://blog.crunchydata.com/blog/postgres-the-friendly-relational-member-of-your-data-management-toolbox</guid>
<pubDate>Fri, 15 Jan 2021 04:00:00 EST</pubDate>
<dc:date>2021-01-15T09:00:00.000Z</dc:date>
<atom:updated>2021-01-15T09:00:00.000Z</atom:updated></item></channel></rss>