{"id":105147,"date":"2025-02-06T22:09:59","date_gmt":"2025-02-06T22:09:59","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/?p=105147"},"modified":"2025-01-21T22:16:07","modified_gmt":"2025-01-21T22:16:07","slug":"kubernetes-vs-serverless-when-to-choose-which","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/devops\/containers-and-virtualization\/kubernetes-vs-serverless-when-to-choose-which\/","title":{"rendered":"Kubernetes vs. Serverless: When to Choose Which?"},"content":{"rendered":"<p>As a DevOps engineer working with software development teams, the debate between Kubernetes and <a href=\"https:\/\/www.red-gate.com\/blog\/database-development\/welcome-world-serverless-computing-iowa-computer-gurus&quot; \\t &quot;_blank\">serverless computing<\/a> often arises when the teams plan their architecture. I\u2019ve worked extensively with both paradigms. While they each have their strengths, I\u2019ve learned through trial and error\u2014and sometimes painful lessons\u2014that selecting the right approach boils down to specific use cases, organizational needs, and a clear understanding of their trade-offs.<\/p>\n<p>In this article, I\u2019ll share my perspective on <a href=\"https:\/\/kubernetes.io\/&quot; \\t &quot;_blank\">Kubernetes<\/a> and <a href=\"https:\/\/cloud.google.com\/discover\/what-is-serverless-computing&quot; \\t &quot;_blank\">serverless computing<\/a>. More importantly, I\u2019ll highlight some of the pitfalls I\u2019ve encountered while implementing these solutions\u2014and how you can avoid them.<\/p>\n<p>I\u2019ll also share insights from my journey as a <a href=\"https:\/\/dev.to\/bravinsimiyu&quot; \\t &quot;_blank\">DevOps engineer<\/a>, including lessons learned the hard way, to help you decide when Kubernetes or Serverless is the right fit for your organization.<\/p>\n<h2>Understanding Kubernetes and Serverless<\/h2>\n<p>In this section I will introduce the two technology paradigms for those who are not already acquainted with them.<\/p>\n<h3>Kubernetes: The Container Orchestrator<\/h3>\n<p><a href=\"https:\/\/www.red-gate.com\/simple-talk\/devops\/containers-and-virtualization\/kubernetes-for-complete-beginners\/\">Kubernetes<\/a> is an open-source platform for managing <a href=\"https:\/\/www.red-gate.com\/simple-talk\/devops\/containers-and-virtualization\/a-quick-guide-on-how-to-containerize-your-application-using-docker\/\">containerized applications<\/a>. It offers features like load balancing, scaling, automated rollouts, and self-healing. Kubernetes is perfect when you need fine-grained control over your infrastructure, whether it\u2019s managing multiple <a href=\"https:\/\/microservices.io\/\">microservices<\/a> or running stateful applications. However, its complexity can be overwhelming for teams without prior containerization experience, often requiring dedicated expertise to manage effectively.<\/p>\n<p>One great feature of Kubernetes is its ability to handle rolling updates with minimal downtime. During a project for an e-commerce client, my team and I leveraged Kubernetes\u2019 Deployment resources to roll out application updates seamlessly while maintaining service availability. This capability was a game-changer during the holiday shopping season when downtime wasn\u2019t an option.<\/p>\n<p>Early in my Kubernetes journey, I underestimated the complexity of managing a production-grade cluster. A misconfigured pod security policy led to a vulnerability that an external scanner exploited. That mistake taught me the value of proper governance and the importance of tools like <a href=\"https:\/\/www.red-gate.com\/simple-talk\/devops\/ci-cd\/how-to-set-up-jenkins-ci-cd-on-kubernetes-cluster-using-helm\/\">Helm<\/a> and <a href=\"https:\/\/www.kubewarden.io\/\">Kubewarden<\/a> for securing configurations. I also realized the importance of setting up robust monitoring tools like <a href=\"https:\/\/prometheus.io\/\">Prometheus<\/a> and <a href=\"https:\/\/grafana.com\/grafana\/dashboards\/\">Grafana<\/a> right from the start to avoid flying blind.<\/p>\n<h3>Serverless: The Event-Driven Paradigm<\/h3>\n<p>Serverless computing abstracts infrastructure management, allowing you to focus solely on writing code. <a href=\"https:\/\/www.red-gate.com\/hub\/university\/courses\/cloud-platform-options\/introduction-to-aws-azure-and-google\/cloud-platform-options\/AWSRDS\">Cloud providers<\/a> like <a href=\"https:\/\/aws.amazon.com\/\">AWS<\/a>, <a href=\"https:\/\/azure.microsoft.com\/\">Azure<\/a>, and <a href=\"https:\/\/cloud.google.com\/discover\/what-is-serverless-computing\">Google Cloud<\/a> handle the scaling, maintenance, and availability of your functions. Serverless is highly efficient for event-driven workloads like API gateways, image processing, and IoT data streams. However, it has limitations with long-running tasks, concurrency management, and adherence to cloud-specific paradigms.<\/p>\n<p>For example, during a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Fintech\">FinTech<\/a> project, we implemented serverless functions to process user-uploaded transaction data. The serverless architecture ensured that we could handle unpredictable spikes in traffic without manual intervention. However, the downside became evident when we needed to integrate complex workflows, which required workarounds due to the stateless nature of serverless.<\/p>\n<p>I also once implemented a serverless solution for a file-processing pipeline. It was smooth until we hit the cold start issue during peak traffic\u2014resulting in delayed processing and unhappy clients. Switching to a provisioned concurrency model fixed the problem, but it was a lesson in how serverless is not always \u201cset and forget.\u201d<\/p>\n<p>Additionally, understanding the nuances of integrating serverless with other systems, such as using API Gateway for RESTful endpoints, is crucial for seamless operations.<\/p>\n<h2>Real-World Lessons: When I Messed Up\u2026 and What I Learned<\/h2>\n<p>Messing up is a part of the learning process, though sometimes a painful part. In this section I will share a few of the mistakes that I have made that you can learn from.<\/p>\n<h3>Mistake 1: Overcomplicating a Simple Application with Kubernetes<\/h3>\n<p>I once worked on a project to build an internal tool for <a href=\"https:\/\/www.webscale.com\/\">Webscale<\/a> a medium-sized company. The application was relatively simple: a single-page web app with a few APIs. Yet, I decided to deploy it on Kubernetes. Why? Because Kubernetes was the &#8220;cool &amp; great&#8221; tool everyone was talking about.<\/p>\n<p>Setting up the cluster took weeks longer than anticipated. Configuring deployment manifests, ingress rules, and monitoring tools consumed an inordinate amount of time. By the time we went live, the client asked why such a straightforward app required so much complexity.<\/p>\n<p>From my experience with this client, I learned a very important lesson that Kubernetes is powerful but overkill for simple applications. A serverless approach or <a href=\"https:\/\/www.red-gate.com\/simple-talk\/cloud\/platform-as-a-service\/\">Platform-as-a-Service<\/a> (PaaS) like Heroku would have sufficed and saved us weeks of effort. Kubernetes is best suited when managing complex, distributed systems\u2014not basic web applications.<\/p>\n<h3>Mistake 2: Ignoring Cold Start Issues in Serverless<\/h3>\n<p>On another project, I opted for a <a href=\"https:\/\/www.red-gate.com\/simple-talk\/cloud\/azure\/serverless-architecture-azure\/\">serverless architecture<\/a> to power an API for processing uploaded files. The choice seemed perfect\u2014automatic scaling, no servers to manage, and cost savings. However, the API\u2019s users soon complained about sporadic delays. After investigating, I discovered that infrequently used functions experienced cold start latency, especially during periods of inactivity.<\/p>\n<p>Cold starts occur because serverless platforms spin down idle functions to save resources. The trade-off is that the next request experiences a delay while the function initializes. This was especially problematic for real-time processing.<\/p>\n<p>In this project, I also learned that Serverless isn\u2019t ideal for low-latency applications or workloads with unpredictable traffic patterns. Kubernetes would have provided consistent performance in this case, albeit with higher management overhead.<\/p>\n<h3>Mistake 3: Monitoring and Observability<\/h3>\n<p>Both Kubernetes and serverless require robust monitoring, but the tools and strategies differ. In Kubernetes, I learned the hard way that failing to configure Prometheus alerts correctly led to unnoticed resource exhaustion until it caused downtime.<\/p>\n<p>For serverless, relying solely on the provider\u2019s default monitoring tools limited visibility into performance bottlenecks. You should integrate comprehensive monitoring solutions, such as Datadog or New Relic, to gain better insights.<\/p>\n<h3>Mistake 4: Data Handling in Serverless<\/h3>\n<p>Serverless architectures are stateless by nature, which can complicate workflows requiring a persistent state. For a project processing a large dataset, I initially attempted to store intermediate results in Lambda memory, only to hit storage limits.<\/p>\n<p>Switching to an external database like <a href=\"https:\/\/aws.amazon.com\/dynamodb\/\">Amazon DynamoDB<\/a> resolved this, but it added latency. You should carefully plan how data is managed when designing serverless systems.<\/p>\n<h2>Key Factors to Consider When Choosing Kubernetes vs. Serverless<\/h2>\n<p>In this section I will share some of the things that you need to consider when you are choosing which paradigm fits your needs the best.<\/p>\n<h3>Application Complexity<\/h3>\n<p>When it comes to application complexity, Kubernetes is well-suited for microservices, distributed systems, or applications requiring advanced networking and security. Its ecosystem includes tools like Helm for package management and Prometheus for monitoring, which are invaluable in complex setups. When your application is complex and needs advanced infrastructure, then you need to use Kubernetes for your project.<\/p>\n<p>On the other hand, serverless is ideal for simple, stateless, and event-driven applications where rapid development is a priority. For simple projects like a portfolio website, you should likely use serverless computing.<\/p>\n<p>As an example, a social media analytics platform with multiple microservices would likely benefits from using Kubernetes. Conversely, a notification service triggered by events (e.g., user sign-ups) more readily fits the serverless model.<\/p>\n<p>In my experience, attempting to force a microservices architecture onto serverless functions led to increased code duplication and deployment complexity.<\/p>\n<h3>Scalability Needs<\/h3>\n<p>In this scenario of scalability needs, Kubernetes is best suited to handle complex scaling scenarios with horizontal pod autoscalers and custom metrics. It also supports fine-tuning resource allocation, which is critical for high-performance workloads.<\/p>\n<p>On the other hand, Serverless can just automatically scale functions based on demand but can struggle with concurrency limits and regional restrictions.<\/p>\n<p>As an example, working with a retail e-commerce platform, Kubernetes will ensure reliable scaling during flash sales, while serverless will be used for ancillary tasks like generating personalized recommendations. This hybrid approach provided cost efficiency without sacrificing performance.<\/p>\n<h3>Development Speed<\/h3>\n<p>Kubernetes is slower to set up due to configuration requirements and learning curves for tools like <a href=\"https:\/\/www.red-gate.com\/simple-talk\/devops\/containers-and-virtualization\/how-to-create-kubernetes-deployments-and-services-using-yaml-files-and-kubectl\/\">kubectl<\/a> and <a href=\"https:\/\/www.red-gate.com\/simple-talk\/devops\/containers-and-virtualization\/how-to-create-kubernetes-deployments-and-services-using-yaml-files-and-kubectl\/\">YAML manifests<\/a>. On the other hand, serverless allows faster development cycles since the infrastructure is abstracted, allowing teams to focus on business logic.<\/p>\n<p>I once encountered this scenario when working on a client\u2019s startup project. The client wanted us to give them a working product within the shortest time possible. We had to decide between the two platforms, considering development speed as the key factor.<\/p>\n<p>After some discussion, I opted to use serverless since it\u2019s best suited for faster development cycles. Using serverless, I managed to launch a minimum viable product (MVP) within three weeks. The same effort on Kubernetes would have required at least two months due to the time spent on infrastructure setup and monitoring.<\/p>\n<h3>Cost Implications<\/h3>\n<p>In terms of cost, Kubernetes requires ongoing management and incurs infrastructure costs, even during idle times. Theirs is also hidden costs like DevOps salaries and monitoring tools add up. So, choose Kubernetes when you have enough working budget to maintain your infrastructure,<\/p>\n<p>On the other hand, serverless allows you to use the pay-as-you-go model. This can extensively reduce costs for intermittent workloads but may become expensive at scale, especially for high-frequency invocations.<\/p>\n<p>Here\u2019s a pro tip when you consider using Serverless for your projects. I\u2019ve seen teams rack up unexpected bills due to poorly optimized serverless functions. One project\u2019s monthly cost doubled because a function entered an infinite loop during high traffic. Always test thoroughly and set up billing alerts.<\/p>\n<h2>Ecosystem and Vendor Lock-In<\/h2>\n<p>For this scenario, Kubernetes offers portability across cloud providers. This enables you to avoid vendor lock-in since it offers your team flexibility. Tools like <a href=\"https:\/\/www.redhat.com\/en\/technologies\/cloud-computing\/openshift\">OpenShift<\/a> further enhance portability.<\/p>\n<p>On the other hand, serverless is tightly coupled with specific cloud platforms, making migrations challenging and often requiring code refactoring. Serverless tends to make your team very dependent on a vendor for its services, unable to use another vendor without substantial switching costs and financial pressure.<\/p>\n<p>I remember I once needed to do a cloud migration for one of our projects, from <a href=\"https:\/\/www.red-gate.com\/simple-talk\/cloud\/aws\/\">AWS<\/a> to <a href=\"https:\/\/azure.microsoft.com\/en-us\/\">Microsoft Azure<\/a>. Since we were already using Kubernetes, it allowed us to switch providers without major rewrites, switching costs, and interruptions to business operations. This saved us months of effort if we had set up our entire infrastructure using Serverless. Serverless would have locked us into proprietary APIs, complicating the transition. When you want more flexibility so that your company can use multiple cloud vendors, then you need to use Kubernetes to set up your infrastructure for easier future cloud migration.<\/p>\n<h2>Choosing Between Kubernetes and Serverless<\/h2>\n<p>In this section I will look at the major factors that you should consider when choosing between the two paradigms.<\/p>\n<h3>When to Choose Kubernetes<\/h3>\n<p>Kubernetes is ideal for teams that need control, flexibility, and scalability. Here are specific scenarios where Kubernetes is best suited:<\/p>\n<h4>When You Have Complex Microservices Architectures<\/h4>\n<p>If you\u2019re running a dozen or more interconnected services with dependencies, Kubernetes shines. It provides service discovery, load balancing, and <a href=\"https:\/\/www.red-gate.com\/simple-talk\/devops\/containers-and-virtualization\/how-to-create-kubernetes-deployments-and-services-using-yaml-files-and-kubectl\/\">orchestration<\/a>. This allows you to manage your services cohesively.<\/p>\n<p>One project I worked on involved breaking down a monolith into microservices. We used Kubernetes to deploy over 20 services, each with its database, caching layer, and custom scaling needs. Even though setting up Helm charts and managing the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Service_mesh\">Service Mesh<\/a> (using <a href=\"https:\/\/istio.io\/\">Istio<\/a>) was time-consuming, the result was rock-solid scalability and performance.<\/p>\n<h4>When Portability Is Crucial<\/h4>\n<p>Kubernetes works across any cloud provider or on-premises setup. This makes it invaluable for hybrid or multi-cloud strategies, where applications need to move seamlessly.<\/p>\n<p>A client I worked with initially deployed on AWS, but due to rising costs, they wanted to shift some workloads to Microsoft Azure. With Kubernetes, we migrated workloads in less than a week. Without it, the migration would have taken months of major code rewrites and reconfiguring infrastructure.<\/p>\n<h4>When You Need Stateful Workloads<\/h4>\n<p>Kubernetes handles stateful workloads like databases or persistent storage better than Serverless. Features like <a href=\"https:\/\/www.red-gate.com\/simple-talk\/devops\/containers-and-virtualization\/kubernetes-for-complete-beginners\/\">Persistent Volume Claims<\/a> (PVCs<strong>)<\/strong> and <a href=\"https:\/\/www.red-gate.com\/simple-talk\/devops\/containers-and-virtualization\/checking-the-pulse-of-kubernetes\/\">StatefulSets<\/a> ensure high availability and fault tolerance.<\/p>\n<p>A lesson I learned the hard way occurred when I tried running a database on Serverless using <a href=\"https:\/\/aws.amazon.com\/rds\/aurora\/serverless\/\">Aurora Serverless<\/a>. While the scaling worked for spiky traffic, it added latency during scale-up events. Moving the database to <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/controllers\/statefulset\/\">Kubernetes StatefulSets<\/a> resolved the latency issues, as the resources were always available.<\/p>\n<h4><strong>When You\u2019re Building a <\/strong><a href=\"https:\/\/www.red-gate.com\/simple-talk\/devops\/culture\/ten-tips-building-collaborative-devops-culture\/\">DevOps Culture<\/a><\/h4>\n<p>Kubernetes supports CI\/CD pipelines and infrastructure-as-code practices, making it a natural choice for organizations emphasizing DevOps principles. Tools like <a href=\"https:\/\/www.red-gate.com\/blog\/database-continuous-integration-automated-deployment-jenkins\">Jenkins<\/a>, <a href=\"https:\/\/tekton.dev\/\">Tekton<\/a>, and <a href=\"https:\/\/argo-cd.readthedocs.io\/en\/stable\/\">ArgoCD<\/a> integrate seamlessly into Kubernetes workflows.<\/p>\n<h4>When You Want A Lot of Customization and Control<\/h4>\n<p>Kubernetes gives you full control over your deployment environment. Whether it\u2019s fine-tuning resource limits for pods or setting up intricate network policies, Kubernetes lets you dictate every detail.<\/p>\n<p>During a CI\/CD pipeline setup, I tried to optimize pod startup times for faster deployments. I ended up debugging container image issues and node pool configurations for days. After resolving my Kubernetes infrastructure, the improved deployment speed was worth the pain.<\/p>\n<h3>When to Choose Serverless<\/h3>\n<p>Serverless is perfect for lightweight applications, quick deployment, and scenarios where infrastructure management isn\u2019t your focus. Here\u2019s when Serverless is the better choice:<\/p>\n<h4>When You Have Unpredictable or Spiky Workloads<\/h4>\n<p>Serverless scales automatically based on demand, making it perfect for workloads with unpredictable traffic patterns. You only pay for what you use, saving costs during low-traffic periods.<\/p>\n<p>A Serverless architecture saved my team during an e-commerce client\u2019s Black Friday sale. We deployed a recommendation engine using <a href=\"https:\/\/aws.amazon.com\/lambda\/\">AWS Lambda<\/a>, and it seamlessly handled a 10x traffic spike without intervention. If we\u2019d used Kubernetes, we\u2019d have spent weeks pre-scaling and optimizing.<\/p>\n<h4>When Speed of Deployment Matters (You Need Rapid Prototyping and MVPs<strong>)<\/strong><\/h4>\n<p>Serverless is perfect for MVPs or projects with tight deadlines. It drastically reduces the time to market. You write your code, deploy it, and it\u2019s live. There\u2019s no need to provision servers, configure clusters, or manage infrastructure.<\/p>\n<p>From my experience during a hackathon, we built a prototype analytics app entirely on Serverless. By the end of the weekend, the app was live and processing data. Kubernetes wouldn\u2019t have been feasible for such a short timeline.<\/p>\n<h4>When You Need Cost-Efficient, Small-Scale Applications<\/h4>\n<p>For small-scale apps or batch jobs that don\u2019t run constantly, Serverless is more cost-effective. You avoid the overhead of maintaining servers or clusters.<\/p>\n<p>I once recommended Kubernetes for a simple API handling 1,000 daily requests. The hosting and maintenance costs were disproportionate. When we migrated to Serverless it reduced costs by 70% while maintaining performance.<\/p>\n<h4>When You\u2019re Doing Event-Driven Development<\/h4>\n<p>Serverless thrives in event-driven scenarios like processing queue messages, handling webhooks, or responding to IoT events.<\/p>\n<p>For an IoT project, we used <a href=\"https:\/\/aws.amazon.com\/iot-core\/\">AWS IoT Core<\/a> with <a href=\"Lambda%20functions\">Lambda functions<\/a> to process sensor data in real-time. The Serverless approach simplified the architecture and scaled automatically with thousands of incoming events.<\/p>\n<h2>Hybrid Solutions: The Best of Both Solutions<\/h2>\n<p>In some cases, combining Kubernetes and serverless can yield optimal results. For instance:<\/p>\n<ul>\n<li><strong>Frontend on Serverless, Backend on Kubernetes:<\/strong> Deploy a static web frontend using <a href=\"https:\/\/docs.aws.amazon.com\/whitepapers\/latest\/serverless-multi-tier-architectures-api-gateway-lambda\/serverless-data-storage-options.html\">serverless storage<\/a> (e.g., AWS S3) and APIs on a Kubernetes cluster.<\/li>\n<li><strong>Scheduled Jobs:<\/strong> Use serverless functions for periodic tasks, like database backups, while running persistent services on Kubernetes.<\/li>\n<\/ul>\n<p>There are significant benefits of combining both Kubernetes and serverless in your projects. A team I worked with adopted this hybrid approach for a supply chain platform. Serverless functions handled data ingestion, while Kubernetes managed the core processing. The result? Cost savings and operational efficiency.<\/p>\n<h2>Final Thoughts<\/h2>\n<p>Choosing between Kubernetes and serverless isn\u2019t about picking a winner\u2014it\u2019s about aligning technology with your needs. Reflecting on my own experiences, I\u2019ve learned that understanding the trade-offs is key to making informed decisions.<\/p>\n<p>Throughout this article, I have given a lot of reasons to choose one or the other, but to finish up, at the high level, don\u2019t forget it level:<\/p>\n<ul>\n<li>Does your application demand granular control and long-term scalability? Choose Kubernetes.<\/li>\n<li>Is rapid development and cost-efficiency more critical? Opt for serverless.<\/li>\n<\/ul>\n<p>As a DevOps engineer, if you combine technical insight with real-world lessons covered in this article, you can navigate this decision with confidence and deliver solutions that truly meet your objectives.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As a DevOps engineer working with software development teams, the debate between Kubernetes and serverless computing often arises when the teams plan their architecture. I\u2019ve worked extensively with both paradigms. While they each have their strengths, I\u2019ve learned through trial and error\u2014and sometimes painful lessons\u2014that selecting the right approach boils down to specific use cases,&#8230;&hellip;<\/p>\n","protected":false},"author":342511,"featured_media":105148,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[143513,53],"tags":[],"coauthors":[159023],"class_list":["post-105147","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-containers-and-virtualization","category-featured"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/105147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/342511"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=105147"}],"version-history":[{"count":1,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/105147\/revisions"}],"predecessor-version":[{"id":105149,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/105147\/revisions\/105149"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media\/105148"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=105147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=105147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=105147"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=105147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}