PostgreSQL is one of the fastest growing open source relational database engines that is being widely embraced by developers. The Azure cloud is a first-class platform for open source technologies that allow you to bring the tools you love and skills you already have, and deploy any applications. Given Microsoft’s love for open source and the goal to provide developers with choices, I am happy to share with you that earlier today, at the Microsoft Build 2017 conference in Seattle, Scott Guthrie announced the preview for managed database service for PostgreSQL, Azure Database for PostgreSQL.
The service uses the community edition of PostgreSQL and provides app developers with expanded choices to use their favorite database on Azure, without the complexity of managing and administering the databases. In this blog, I will give you a deeper overview of Azure Database for PostgreSQL service and discuss what this announcement means to app developers and the thinking that went behind delivering value that we believe is unique in the industry.
If you’re interested in learning more about our MySQL offering, take a look at Jason Anderson’s blog post where he talks about what we’ve done for MySQL.
What is Azure Database for PostgreSQL?
Azure Database for PostgreSQL is a managed database service that makes it easier to build apps without the management and administration burden. The service uses community edition of PostgreSQL and seamlessly works with native tools, drivers and libraries. At the start of preview, we are offering support for PostgreSQL versions 9.5 and 9.6.
Many managed database service offerings out there from different cloud providers promise to reduce database management complexity, but each one follows a different approach which forces customers to make several tradeoffs. We believe our approach to managed database services and particularly Azure Database for PostgreSQL is unique in the industry and one that addresses the core pain points of an app developer and much more. I will be elaborating more on this below – keep reading!
PostgreSQL database for App developers
Most app developers love doing what they do – i.e., build great apps rapidly that become popular and widely adopted. One of the complex components of any app development process is planning for database infrastructure and then the ongoing care and feeding of the database. PostgreSQL, over the years has grown to become a popular open source relational database amongst developers, thanks to it being highly robust, customizable and extendable along with rich database features and technologies. However, while app developers love the features PostgreSQL has to offer, many do not enjoy the complexity of managing the infrastructure. A key benefit of managed database service is that the developer does not need to worry about managing the operating system and database patching, perform manual database backups, orchestrate recovery, etc. Most managed services provide these basic capabilities freeing developers from spending their vital resources on those tasks.
When we looked at offering managed PostgreSQL service for developers, we of course wanted to address those basic managed service capabilities such as automated patching, backup and restore capability, monitoring, alerting, logging, etc. However, talking to customers we learnt that there is a unique opportunity for Microsoft to do something more and better than other cloud providers, specifically in areas such as reliability, security and elasticity and making it simple and worry free for developers. We have therefore in many ways redefined the value creation with managed database service.
Benefits of Azure Database for PostgreSQL
As I dig deeper into explaining the benefits of the managed PostgreSQL service, I would like to highlight that our primary focus for the service was attention to fundamentals, such as availability, elasticity and security besides making sure that native tools, extensions, drivers and libraries work seamlessly. This is exactly what we have done in this installment of the Azure Database for PostgreSQL. Let me elaborate further on each of these topics.
Built-in high availability
Azure Database for PostgreSQL offers built-in high availability feature out-of-the-box. You got it right – no additional setup, configuration or extra costs! This means as a developer you do not have to setup additional VMs and configure replication to ensure high availability for your PostgreSQL database. While in preview, the service is not backed up with a specific SLA. However, at general availability, all databases will have an SLA of 99.99%.
The service has security baked in. What does this mean? All data including backups are encrypted on disk by default. No additional switch or planning required to secure your database! Furthermore, the service has SSL enabled by default which makes all data in-transit encrypted. Optionally, if your client application does not support SSL connectivity, we created an option to disable it as well. We are committed to working broadly across the open source communities to ensure these security gaps are addressed over time.
Scale on the fly
Elasticity is one of the foundational attribute of the cloud. It is hard for any developer to figure out how much compute and storage is required at the time of deploying your app, since who can predict how popular the app will become and pre-plan for peaks and valleys? While most cloud service providers allow you to scale the instance sizes, you are out of luck in terms of impacting availability of your app unless you have another VM with replication for which you have to pay for additional replicas. Further it also means additional monitoring, setting alerts and ensuring that the secondary replica is consistent with the primary. The Azure Database for PostgreSQL allows you to scale compute on the fly without application downtime in one step. The following is a simple Azure CLI command that you will use to scale PostgreSQL database servers up or down.
Automated backups and point-in-time restore
Most managed database services provide automated backup with ability to point-in-time restore, in case for oops recovery. The differentiating factor for our service is that the user does not need to separately manage storage for backups. The service provides up to 35 days of retention for automated backups to be able to recover. This means, developers are now free from having to monitor, manage capacity and configure alerts on backup storage capacity. You will never have to worry about managing backups ever again! These backups are geo-redundantly backed up as well.
Monitoring, alerting and server logs
The service provides monitoring on metrics via integration with Azure Monitor service for up to 30 days, define alerting on those metrics, and configure server log retention period up to 7 days. In addition, users have the option to customize log verbosity parameter so you can debug easily when developing and then tune it appropriately for production use. Further these metrics are integrated with many 3rd party tools. You get all of this for no additional costs!
Configurability and Extensibility
Azure Database for PostgreSQL allows you to configure database server parameters. This provides the flexibility to customize based on your application requirements. The service, at preview currently supports over 18 popular PostgreSQL extensions (including PostGIS) with a roadmap to enable more based on user feedback.
Azure Database for PostgreSQL is tightly integrated with Azure Web Apps. We have enabled an integrated experience to deploy Azure Web App with managed PostgreSQL making app development simple and easy!
The above summarizes the major areas where we focused the most to provide unique managed service value with PostgreSQL. Further we made database patching automatic, which means developers do not have to worry about managing this. We also made sure the business model and pricing is as simple as it can get. All the value I mentioned above is included in one inclusive price, which means no surprises on your bill! You choose a starting performance tier based on compute and storage requirements and then flexibly scale compute and storage independently.
Seamless migration with customer evidence
Azure Database for PostgreSQL also allows seamless migration from on-premise or any cloud service to managed PostgreSQL service on Azure. Developers can accomplish this using native tools such as pg_dump and pg_restore. Further, whether you want to develop using Python, node.js, Java, PHP or any programming language of your choice, use your favorite open source frameworks such as Djnago, Flask, etc., the service will work seamlessly.
Here is what few of our early customer adopters had to say about their experience –
“Spinning up the PostgreSQL database through the Azure portal was very easy. Then we just exported the database from the existing system and imported it into Azure Database for PostgreSQL. It only took two or three hours.” -Eric Spear, Chief Executive Officer of Higher Ed Profiles. Learn more about the story here.
“The ability to mix Azure and our open source technologies is definitely a big advantage for us…. Moving the geospatial database from our datacenter to the Azure Database for PostgreSQL service will save us money, allow for much more scalability, and lower our support overhead.” -- Andy Grigg, Enterprise Architect, Somerset County Council. Learn more about the story here.
“Hosting PostgreSQL on Azure will enable us to scale seamlessly worldwide, and all the services that we need from a development standpoint are just a few clicks away.” --Irakliy Khaburzaniya, Chief Executive Officer, Credo360. Learn more about the story here.
In our pursuit of focusing on the fundamental areas such as reliability, security, elasticity and worry free database management, there are few areas where we have still lots of opportunity to improve! We have several identified opportunities to improve performance. This will be one of the areas of active focus for us in the coming weeks and months. Besides performance, we will continue to increase the scaling limits and support larger compute and storage sizes. It is also our intent to create tighter integration with other Azure data and app services to make developing rich and intelligent apps simple and as easy as hitting few clicks. We will be keenly awaiting user feedback and suggestions on where we can improve and/or add new value.
This is really an exciting new chapter for us and represents just a beginning. We hope you will join us in this journey too! I look forward to blogging on more deep dive topics in the weeks to come.
Call to Action
We would ask that you try the service today. Please leave your feedback and questions below. You can also engage with us directly through User Voice if you have suggestions on how we can further improve the service. You can also find sample apps and ARM templates in our GitHub repo.