Looking back over the years I've been an IT professional / SysAdmin / Developer / Senior Developer / CTO / SRE I realise there has been one constant in my professional life, that constant is Microsoft SQL Server.
Way back in the mists of time I inherited a few servers from my predecessor, amongst them was a beautiful box with the quaint name SPS2003, little did I know at that point what fun that box and I were going to have. The stories of SharePoint are for a different entry, for now, I want to focus on the SQL Server portion of that box. As a brand new SysAdmin SPS2003 was the first server I had where I had sole responsibility for the SQL Installation, I could literally do anything I wanted to on that box - so I began to experiment with my own databases on there. Being ever careful not to touch the SharePoint databases at all in case I bring that service crushing down on my own head. Very quickly I became very opinionated on how SQL Server should be configured which brought me to loggerheads with an older developer working there who felt that SQL Server was his domain.
It really wasn't though, he spent his days building desktop applications for the engineering space which left me able to tweak and upgrade SQL Server to my heart's content to get it running just how it needed too.
It wasn't until the next role that I learned about SQL Azure something that took me years of hard-earned knowledge and turned it in to nothing (or so I thought at the time) - spinning up a database was a simple portal command and all query issues were resolved by sliding the slider to the right within the Azure Portal. I felt lost, but still somehow comforted by the fact SQL Server was still there.
Jumping forward to the company where I would later become CTO I once again found myself staring down the barrel of SQL Server. Although I was recruited as a pure applications developer it became clear within a short period of time that service issues were costing the business more and more money. Months later we had been migrated away from our VM's on our previous host to a fully dedicated SQL Fail-over Cluster at Rackspace with more than enough headroom for a few years growth. By the time I left though we were back to running on a single physical SQL Server a change driven by the economies of operating during a recession, that was fine for the business it had the right level of performance for the right monthly cost.
All was good.
Yet here I stand writing this article mulling over conversations I've had with the Architect over the past few months, is SQL Server the right thing for us to be using. Like many businesses that use SQL Server, we are at a point where one of our main costs is SQL Server. We are sinking thousands of pounds into our database infrastructure each week and the usage graphs are climbing meaning our next upgrade is really not that far away. Using the knowledge we have gained through running our current platform is driving the decisions around how we build platform vNext and one of the biggest questions I see is how do we store our relational data.
At the time of writing the answer appears to be PostgreSQL.
This wonderful open-source database service is available to us at the fraction of the cost of SQL Server and with the advancements in software like Entity Framework Core is truly within reach for us. The inertia of SQL Server is huge at this point the default for any developer is to stick things in an MSSQL database and have done, the unknowns surrounding the use of PostgreSQL are numerous and in some places quite scary.
All that being said for us now I feel that PostgreSQL is the way we should move forward, at least at the beginning of our project, building a new platform is a wonderful freeing moment in a developers life because all of the constraints are gone and you're left with only the constraints your mind puts in place. The R&D process, the high functioning team have all combined to free us of certain blinders related to the old platform and how it works.
In a few months time I'll look back on this article and write an update, at the present time I don't know whether that will be from the point of view of success or failure for this idea only time will tell.
All I do know for now is that I'm sorry SQL Server, it's you and not me that means you're not on the top of my speed dial list any longer.
As soon as you get to scale, you just cost too damn much.