Backing services as attached resources
The Twelve-Factor Apps has a great summary of backing services: https://12factor.net/backing-services.
I love it and I have very little to add. That's the essence of building a modern software.
Off-the-shelf PaaS/SaaS services
I want to make one important point. Wherever possible use integrations to existing PaaS/SaaS managed services rather than trying to build various services yourself. (Does this ring a bell Building cloud native apps: Identity and Access Management?)
The Twelve-Factor App was created by Heroku team and I will use Heroku as an example. I remember when I built my first big app on Heroku back in 2012. I used a number of different Heroku addons (now called Heroku Elements Marketplace) and it was a truly mind-blowing experience. I just attached managed services to my app and used them (endpoints and/or API keys exposed via env variables). Heroku was the avant-garde of PaaS.
The beauty of Heroku platform is that you simply can't do it wrong. You don't have access to the underlying infrastructure and there is no temptation for you to host your own Elasticsearch cluster and build your own log management solution. I know: homegrown solutions may appear cheaper, but in terms of the quality can you really match a service delivered by a highly specialized company?
What many people tend to forget is that your team's time is worth more than the costs of those services. Your team should be focusing on the business value and not trying to figure out how to best implement HA for a database cluster or troubleshoot performance issues with your log management solution.
Just look at Heroku Elements Marketplace or check out AWS, Azure, GCP list of managed services. The big cloud players offer you everything you need to develop your application: Compute, Serverless, Networking, Databases, Caches, Queues, Storage, Monitoring, Log Management, Security/Governance & Compliance/Threat Detection & Prevention, Encryption, Machine Learning, Artificial Intelligence, Internet of Things, Mobile, Game Tech, Media Services, VR & AR. AWS offers even crazy services like AWS Ground Station to control your satellites.
To wrap up:
- treat backing services as attached resources;
- don't build them yourself, use specialized managed services.
Top comments (0)