{"id":95636,"date":"2023-04-18T00:36:21","date_gmt":"2023-04-18T00:36:21","guid":{"rendered":"https:\/\/showbizztoday.com\/index.php\/2023\/04\/18\/spotifys-shift-to-a-fleet-first-mindset-part-1\/"},"modified":"2023-04-18T00:36:22","modified_gmt":"2023-04-18T00:36:22","slug":"spotifys-shift-to-a-fleet-first-mindset-part-1","status":"publish","type":"post","link":"https:\/\/showbizztoday.com\/index.php\/2023\/04\/18\/spotifys-shift-to-a-fleet-first-mindset-part-1\/","title":{"rendered":"Spotify\u2019s Shift to a Fleet-First Mindset (Part 1)"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div>\n        <!-- post title --><\/p>\n<div class=\"posted-by\">\n            <img decoding=\"async\" src=\"https:\/\/engineering.atspotify.com\/wp-content\/themes\/theme-spotify\/images\/icon.png\" alt=\"\"\/><\/p>\n<p>&#13;<br \/>\n                <span class=\"date\">April 18, 2023<\/span>&#13;<br \/>\n                <span class=\"author\">&#13;<br \/>\n                    Published by Niklas Gustavsson, VP, Engineering                <\/span>&#13;\n            <\/p>\n<\/p><\/div>\n<p>        <!-- post details --><\/p>\n<div class=\"img-holder\">\n            <!-- post thumbnail --><\/p>\n<p>                                                <a href=\"https:\/\/engineering.atspotify.com\/2023\/04\/spotifys-shift-to-a-fleet-first-mindset-part-1\/\" title=\"Spotify\u2019s Shift to a Fleet-First Mindset (Part 1)\" target=\"_blank\" rel=\"noopener\">&#13;<br \/>\n                        <img src=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Fleet-Management-Header.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" srcset=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Fleet-Management-Header.png 1200w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Fleet-Management-Header-250x123.png 250w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Fleet-Management-Header-700x344.png 700w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Fleet-Management-Header-768x378.png 768w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Fleet-Management-Header-120x59.png 120w\" sizes=\"(max-width: 1200px) 100vw, 1200px\"\/>                    <\/a><br \/>\n                        <!-- \/post thumbnail -->\n        <\/div>\n<p>        <!-- \/post title --><\/p>\n<p><strong>TL;DR<\/strong> Instead of performing 10 main software program upgrades to our infrastructure yearly, what if we did 10,000 small ones? Across our whole codebase? That\u2019s the concept behind Fleet Management: by constructing automation instruments that may safely make adjustments to hundreds of repos without delay, we are able to preserve the well being of our tech infrastructure constantly (as an alternative of slowly and laboriously). More importantly, eradicating this low-level work from our builders\u2019 to-do lists permits product groups to give attention to fixing issues far more fascinating than migrating from Java 17.0.4 to 17.0.5. A more healthy, safer codebase, plus happier, extra productive engineers. What\u2019s to not like? In this primary publish about Fleet Management at Spotify, we describe what it means to undertake a fleet-first mindset \u2014 and the advantages we\u2019ve seen to date.<\/p>\n<h2>The downside of sustaining velocity at scale<\/h2>\n<p>Since delivery the very first app, Spotify has skilled practically fixed progress, be that within the variety of customers we serve, the scale and breadth of our catalog (first music, then podcasts, now audiobooks), or the variety of groups engaged on our codebase. It\u2019s essential that our structure helps innovation and experimentation each at a big scale and a quick tempo.\u00a0<\/p>\n<h3>Many small squads, many extra elements<\/h3>\n<p>We\u2019ve discovered it highly effective to divide our software program into many small elements that every of our groups can totally design, construct, and function. Teams personal their very own elements and might independently develop and deploy them as they see match. This is a reasonably common microservice structure (though our structure predates the time period), utilized to all varieties of elements, be these cellular options, information pipelines, providers, web sites, and so forth. As we\u2019ve scaled up and expanded our enterprise, the variety of distinct elements we run in manufacturing has grown and is now on the order of hundreds.<\/p>\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"alignleft size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Spotify-engineers-vs-software-components.png\" alt=\"\" class=\"wp-image-5990\" width=\"975\" height=\"360\" srcset=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Spotify-engineers-vs-software-components.png 1200w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Spotify-engineers-vs-software-components-250x92.png 250w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Spotify-engineers-vs-software-components-700x258.png 700w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Spotify-engineers-vs-software-components-768x284.png 768w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Spotify-engineers-vs-software-components-120x44.png 120w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\"\/><figcaption class=\"wp-element-caption\"><em>The variety of Spotify engineers (inexperienced) vs. the variety of software program elements (violet). Components grew at a a lot quicker price over time.<\/em><\/figcaption><\/figure>\n<\/div>\n<h3>The small stuff provides up shortly<\/h3>\n<p>Maintaining hundreds of elements, even for minor updates, shortly will get arduous. More advanced migrations \u2014 e.g., upgrading from Python 2 to three or increasing the cloud areas we\u2019re in \u2014 take vital engineering funding from a whole bunch of groups over months and even years. Similarly, pressing safety or reliability fixes would flip into intense coordination efforts to ensure we might patch our manufacturing surroundings in a well timed vogue.<\/p>\n<p>The graph beneath exhibits the development of a typical migration, on this case upgrading our Java runtime, pre\u2013Fleet Management at Spotify. All in all, this single migration took eight months, about 2,000 semiautomated pull requests, and a major quantity of engineering work.<\/p>\n<figure class=\"wp-block-image size-full is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"590\" src=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Java-runtime-update-over-time.png\" alt=\"\" class=\"wp-image-5991\" srcset=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Java-runtime-update-over-time.png 1200w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Java-runtime-update-over-time-250x123.png 250w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Java-runtime-update-over-time-700x344.png 700w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Java-runtime-update-over-time-768x378.png 768w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Java-runtime-update-over-time-120x59.png 120w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\"\/><figcaption class=\"wp-element-caption\"><em>A sluggish, exhausting slog: In the times earlier than Fleet Management, we sometimes measured software program migrations, like this replace to our Java runtime, over many months.<\/em><\/figcaption><\/figure>\n<p>In addition to the toll this takes on a developer\u2019s time, it additionally takes its toll on developer expertise: the sort of upkeep is boring and repetitive toil. It\u2019s precisely the kind of work you need to automate.<\/p>\n<h3>Time to shift our pondering from squad first to fleet first<\/h3>\n<p>All in all, these insights led us to pursue a change in how we take into consideration our software program and to contemplate how we may apply adjustments throughout our whole fleet of elements, relatively than one after the other. We name this fleet-first pondering, and the practices and infrastructure to help it Fleet Management.<\/p>\n<p>While we\u2019ll principally cowl the technical elements of this work on this publish, it\u2019s price noting that altering to a fleet-first mind-set additionally features a large shift in our engineering tradition and within the obligations of our infrastructure groups. It implies that making a change or fixing an issue is not only on your staff, however throughout all of Spotify\u2019s code. Conversely, because the proprietor and operator of a part, you now obtain adjustments to your elements the place you aren&#8217;t within the loop earlier than the adjustments are merged and deployed.<\/p>\n<h2>How we apply fleet-first pondering to Spotify\u2019s infrastructure<\/h2>\n<p>Let\u2019s think about what&#8217;s required with a view to safely make adjustments throughout a fleet of hundreds of elements and round 60 million strains of code. (In complete, we now have &gt;1 billion strains of code in supply management, with about 60 million being thought of manufacturing elements and thus in scope for Fleet Management.) Here are the 4 large questions we have to reply:<\/p>\n<h3>1. What code are we altering?<\/h3>\n<p>First, we&#8217;d like methods to establish the place adjustments should be utilized. Luckily, this was principally obtainable already. We have fundamental code search, and all our code and configuration is ingested into Google\u2019s BigQuery, permitting for fine-grained and versatile querying. Similarly, our manufacturing infrastructure is instrumented and equally ingested into BigQuery, permitting us to question for library dependencies, deployments, containers, safety vulnerabilities, and lots of different elements. This may be very highly effective and helpful for exact concentrating on of adjustments. We are at the moment exploring semantic indexing of our code to allow much more fine-grained concentrating on \u2014 e.g., figuring out API name websites throughout your entire codebase.<\/p>\n<h3>2. Is every little thing we\u2019re altering underneath model management?<\/h3>\n<p>Next, we&#8217;d like to ensure every little thing we need to make adjustments to is underneath model management, in our case, in Git. It goes with out saying that this was already the case for our code and configuration, however a fair proportion of our cloud assets \u2014 issues like storage buckets, service accounts, and database cases \u2014 weren&#8217;t but in Git, as we had been midway by our migration (again) to a totally declarative infrastructure. That story is for an additional day, however for the needs of this publish, simply know we would have liked to complete up this work.<\/p>\n<h3>3. How will we truly make the adjustments?<\/h3>\n<p>After that, we&#8217;d like a mechanism to creator, apply, and roll out adjustments in a secure means. In quick, this mechanism should have the ability to establish the place to use a change (e.g., match a specific piece of code in a repository), apply it to the repository (e.g., automated code refactoring), and confirm that it really works (e.g., by a CI construct). Lastly, the mechanism has to orchestrate how these adjustments are merged and deployed and to watch to make sure we are able to safely abort in case of failures throughout construct or deployment time.\u00a0<\/p>\n<p>It\u2019s price noting that automated code refactoring at this scale shortly will get sophisticated. <a href=\"https:\/\/www.hyrumslaw.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Hyrum\u2019s regulation<\/a> states that \u201cwith a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.\u201d We have discovered this to be a really apt statement and definitely true for us as properly.<\/p>\n<p>Spotify at the moment makes use of a polyrepo structure with hundreds of GitHub repos \u2014 though we now have good causes to consider that the identical set of practices and instruments outlined right here will probably be relevant ought to we transfer to a monorepo sooner or later. Either means, upon getting very massive codebases, the sort of specialised tooling is important to securely and effectively make fleet-wide adjustments \u2014 see, for instance, <a href=\"https:\/\/research.google\/pubs\/pub41342\/\" target=\"_blank\" rel=\"noreferrer noopener\">Google\u2019s paper on C++ refactoring<\/a>. We\u2019re already seeing this for our largest repositories, at the moment with round 1 million strains of code.<\/p>\n<h3>4. How can we enhance belief in adjustments no one evaluations?<\/h3>\n<p>Lastly, we wish to have the ability to full a fleet-wide change inside hours or a number of days, and with out asking a considerable amount of our builders to do the work. This requires that adjustments could be routinely verified, merged, and deployed \u2014 with out a human within the loop.\u00a0<\/p>\n<p>While we typically have high-quality check automation, we would have liked to enhance check protection for some elements, and in some circumstances, add container-based integration testing. Also, many elements didn&#8217;t have automated canary-based testing throughout deployment. We rely closely on our check automation, and the overwhelming majority of our elements don&#8217;t use any kind of handbook testing or staging surroundings. Exceptions are sometimes people who have to be verified finish to finish with one in every of our companions or which have further compliance necessities.<\/p>\n<p>To achieve additional confidence that we may at all times deploy from the principle department in Git, we additionally applied an everyday rebuild and redeployment of all elements. This ensures that each part will get rebuilt and redeployed not less than as soon as per week, lowering the chance of construct or deployment failures as a consequence of code rot.<\/p>\n<h2>Results: The proof is within the repos<\/h2>\n<p>We\u2019re now at a stage the place we fleet-manage &gt;80% of our manufacturing elements, specifically our information pipelines and backend providers. We have accomplished &gt;100 automated migrations over the past three years and routinely replace exterior and inside library dependencies for elements each day. Our automation has authored and merged &gt;300,000 adjustments, including roughly 7,500 per week, with 75% being automerged.<\/p>\n<h3>Happier, extra productive builders<\/h3>\n<p>We estimate we now have diminished developer toil, liberating up an order of magnitude of a whole bunch of developer years for extra enjoyable and productive work. We additionally see this within the sentiment evaluation, the place greater than 95% of Spotify builders consider Fleet Management has improved the standard of their software program.<\/p>\n<h3>A safer codebase<\/h3>\n<p>Our fleet of elements is now additionally in a more healthy state than earlier than. For instance, elements are updated with the inner and exterior libraries and frameworks they use. This has considerably diminished the variety of identified safety vulnerabilities deployed within the fleet and the variety of reliability incidents as we constantly make sure that each part is updated with bug fixes and enhancements.\u00a0<br \/>As an instance, we had been capable of deploy a repair to the notorious <a href=\"https:\/\/en.wikipedia.org\/wiki\/Log4Shell\" target=\"_blank\" rel=\"noreferrer noopener\">Log4j vulnerability<\/a> to 80% of our manufacturing backend providers inside 9 hours. (It then took a number of days to finish the rollout to our, on the time, unmanaged providers.)<\/p>\n<figure class=\"wp-block-image size-full is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"611\" src=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Logj4-fix-days-1.png\" alt=\"\" class=\"wp-image-5993\" srcset=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Logj4-fix-days-1.png 1200w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Logj4-fix-days-1-250x127.png 250w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Logj4-fix-days-1-700x356.png 700w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Logj4-fix-days-1-768x391.png 768w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Logj4-fix-days-1-120x61.png 120w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\"\/><figcaption class=\"wp-element-caption\"><em>Nearly instantaneous peace of thoughts: After merging our preliminary repair for Log4j, 80% of our elements had been patched inside hours.<\/em><\/figcaption><\/figure>\n<h3>New options, quicker<\/h3>\n<p>Similarly, this additionally implies that we are able to make new options and enhancements in our inside frameworks obtainable to our builders extra shortly than ever earlier than. For instance, a brand new model of our inside service framework used to take round 200 days to succeed in 70% of our backend providers by natural updates (see the graph beneath). Now that quantity is &lt;7 days, which means that for those who work on our inside infrastructure platforms, you possibly can iterate and ship new options a lot quicker.<\/p>\n<figure class=\"wp-block-image size-full is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"590\" src=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/days-to-70-of-fleet.png\" alt=\"\" class=\"wp-image-5994\" srcset=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/days-to-70-of-fleet.png 1200w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/days-to-70-of-fleet-250x123.png 250w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/days-to-70-of-fleet-700x344.png 700w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/days-to-70-of-fleet-768x378.png 768w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/days-to-70-of-fleet-120x59.png 120w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\"\/><figcaption class=\"wp-element-caption\"><em>Every week as an alternative of months: Updates to this framework used to take about 200 days to succeed in 70% of the fleet \u2014 now it takes about 7 days.<\/em><\/figcaption><\/figure>\n<h3>Stepping up our repaving sport\u00a0<\/h3>\n<p>Lastly, &gt;75% of our manufacturing surroundings is <a href=\"https:\/\/www.youtube.com\/watch?v=7AIpTodHXSo\" target=\"_blank\" rel=\"noopener\">repaved<\/a> (rebuilt and redeployed from supply code) weekly, lowering the chance of persistent construct\/deployment failures, mitigating safety vulnerabilities, and guaranteeing elements are updated with Git.<\/p>\n<figure class=\"wp-block-image size-full is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"924\" height=\"410\" src=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Repaved-components-monthly.jpg\" alt=\"\" class=\"wp-image-5996\" srcset=\"https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Repaved-components-monthly.jpg 924w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Repaved-components-monthly-250x111.jpg 250w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Repaved-components-monthly-700x311.jpg 700w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Repaved-components-monthly-768x341.jpg 768w, https:\/\/storage.googleapis.com\/production-eng\/1\/2023\/04\/Repaved-components-monthly-120x53.jpg 120w\" sizes=\"auto, (max-width: 924px) 100vw, 924px\"\/><figcaption class=\"wp-element-caption\"><em>More elements, repaved extra regularly.<\/em><\/figcaption><\/figure>\n<h2>The way forward for Fleet Management at Spotify<\/h2>\n<p>While we\u2019ve made good progress to date, we now have numerous enhancements to make and challenges remaining.<\/p>\n<h3>Continuing adoption<\/h3>\n<p>We are step by step onboarding the remaining lengthy tail of elements onto<em> <\/em>Fleet Management. These are sometimes elements that aren&#8217;t constructed utilizing our expertise requirements and thus require extra growth work earlier than they are often totally managed, in addition to further part sorts. As talked about above, fleet first can also be a significant change in our infrastructure groups\u2019 obligations. We will proceed onboarding groups to be fleet first and to routinely and safely roll out their adjustments to the fleet, till that is the default for all groups.<\/p>\n<h3>More advanced adjustments<\/h3>\n<p>We additionally need to have the ability to tackle more and more advanced fleet-wide adjustments. We\u2019re now skilled in managing library and container dependencies and in making easier configuration and code refactoring adjustments. Next, we need to step by step enhance the complexity of the adjustments we\u2019re assured in rolling out, specifically with the automated merging and deployment described above.\u00a0<\/p>\n<h3>Increased standardization<\/h3>\n<p>One issue that extremely influences the complexity of constructing fleet-wide adjustments is how comparable elements within the fleet are. If they use the identical frameworks and comparable code patterns, making adjustments to them at scale turns into considerably simpler. Thus, we need to restrict the fragmentation in our software program ecosystem by offering stronger pointers to our builders on, for instance, what frameworks and libraries are advisable and supported and by supporting onboarding current elements to the anticipated state for our software program. We have over the past 12 months doubled the share of elements that totally use our commonplace expertise stacks and plan to proceed increasing the stacks and driving this adoption over the approaching years.<\/p>\n<h3>Improved tooling<\/h3>\n<p>Lastly, we\u2019ll give attention to simplifying our Fleet Management tooling and persevering with our long-term technique to boost the platform abstraction stage we expose to our builders. We need each developer at Spotify to have the ability to simply and safely carry out a fleet-wide change.\u00a0<\/p>\n<h2>Look out for extra posts<\/h2>\n<p>Now that we\u2019ve outlined the advantages of adopting a fleet-first mindset, how did we truly implement it? In future posts on this sequence, you&#8217;ll get to study extra about the best way we implement declarative infrastructure at Spotify and the opposite infrastructure adjustments we made to help Fleet Management. In the meantime, you possibly can study extra about our shift to fleet-first pondering on Spotify R&amp;D\u2019s official podcast \u2014 <a href=\"https:\/\/open.spotify.com\/episode\/4Zoysds1hXCMDujN31GlTz?si=cc6f5c3cf96d4e63\" target=\"_blank\" rel=\"noreferrer noopener\">NerdOut@Spotify<\/a><\/p>\n<figure class=\"wp-block-embed is-type-rich is-provider-spotify wp-block-embed-spotify wp-embed-aspect-21-9 wp-has-aspect-ratio\">\n<p>\n<iframe title=\"Spotify Embed: 12: Fleet First\" style=\"border-radius: 12px\" width=\"100%\" height=\"152\" frameborder=\"0\" allowfullscreen=\"\" allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\" loading=\"lazy\" src=\"https:\/\/open.spotify.com\/embed\/episode\/4Zoysds1hXCMDujN31GlTz?si=fa5e45f92f994e1f&amp;utm_source=oembed\"><\/iframe>\n<\/p>\n<\/figure>\n<p><\/p>\n<p>        Tags: <a href=\"https:\/\/engineering.atspotify.com\/tag\/engineering-culture\/\" rel=\"tag noopener\" target=\"_blank\">engineering tradition<\/a>, <a href=\"https:\/\/engineering.atspotify.com\/tag\/engineering-leadership\/\" rel=\"tag noopener\" target=\"_blank\">engineering management<\/a><br \/> \n            <\/div>\n<p><script async defer crossorigin=\"anonymous\"\n    src=\"https:\/\/connect.facebook.net\/en_US\/sdk.js#xfbml=1&#038;autoLogAppEvents=1&#038;version=v7.0&#038;appId=256751791017051\">\n<\/script><br \/>\n<br \/>[ad_2]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] &#13; April 18, 2023&#13; &#13; Published by Niklas Gustavsson, VP, Engineering &#13; &#13; TL;DR Instead of performing 10 main software program upgrades to our infrastructure yearly, what if we did 10,000 small ones? Across our whole codebase? That\u2019s the concept behind Fleet Management: by constructing automation instruments that may safely make adjustments to hundreds [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":95638,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[],"class_list":{"0":"post-95636","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-spotify"},"_links":{"self":[{"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/posts\/95636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/comments?post=95636"}],"version-history":[{"count":0,"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/posts\/95636\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/media\/95638"}],"wp:attachment":[{"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/media?parent=95636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/categories?post=95636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/showbizztoday.com\/index.php\/wp-json\/wp\/v2\/tags?post=95636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}