{"id":21448,"date":"2016-12-12T18:38:56","date_gmt":"2016-12-12T18:38:56","guid":{"rendered":"http:\/\/image_video_gone_serverless"},"modified":"2022-02-26T00:20:08","modified_gmt":"2022-02-26T00:20:08","slug":"image_video_gone_serverless","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless","title":{"rendered":"Image &amp; Video Gone Serverless"},"content":{"rendered":"<p class=\"c3\">\n<p class=\"c3\">Nowadays, developers everywhere are introduced to an application development trend called serverless computing. The trend isn\u2019t new but rather an evolution culminating from a number of development methodologies, including service-oriented architecture (SOA), distributed cloud computing, Platform-as-a-service (PaaS) and Containers\/Microservices. A key defining element\u00a0of serverless computing is the serverless application\u2019s logic that combines custom-developed code and 3rd-party service functionality.<\/p>\n<p class=\"c3\">In this article, we will focus on a serverless computing architecture for realtime apps. These apps are characterized by devices and services that exchange structured messages carried via realtime data streams. The flow of data is orchestrated via event-driven logic (called <span class=\"c1\"><a href=\"https:\/\/www.pubnub.com\/products\/blocks\/\" target=\"_blank\" rel=\"noopener\">blocks<\/a><\/span>) deployed globally in a managed environment (called a <span class=\"c1\"><a href=\"https:\/\/www.pubnub.com\/products\/global-data-stream-network\" target=\"_blank\" rel=\"noopener\">Data Stream Network<\/a><\/span>). We will specifically discuss handling of rich media in realtime apps, per the illustration below.<\/p>\n<p id=\"h.hosfve7gnhng\" class=\"c3 c5\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/c_scale,w_600\/image-video-serverless\/image-video-serverless-1.jpg\" alt=\"Image Transformations and Data Streams\" width=\"600\" height=\"413\" \/><\/p>\n<h2 id=\"h.4dbyyvyq3bdn\" class=\"c3 c5\">A Preface to Serverless<\/h2>\n<p class=\"c3\">The premise for app developers is highly compelling: (1) run your code without worrying about provisioning servers or the hassle of managing runtime environments and (2) pay only for the compute time your app is actually consuming, resulting in efficient utilization and scaling economics.<\/p>\n<p class=\"c3\">So, what is the FaaS (<span class=\"c1\">function-as-a-service<\/span>) all about? As the cloud ecosystem continues to mature, it\u2019s become apparent that we need to be able to partition, scale and ensure adequate QoS (quality-of-service) at an individual function level. We need this level of control in order to reduce complexity and improve external integration with distributed functional components and end-user devices within deployed applications.<\/p>\n<p class=\"c3\">Small is beautiful in this paradigm: the FaaS-based apps are easy to design for scale, have no single-point-of-failure, provide a demand-based pricing model, and give developers the ability to monitor performance and availability \u2013 easily pinpointing bottlenecks in order to resolve scale-related issues. General-purpose serverless platforms are now offered by the largest software vendors (AWS <span class=\"c1\"><a href=\"https:\/\/aws.amazon.com\/lambda\/\" target=\"_blank\" rel=\"noopener\">Lambda<\/a><\/span>, IBM <span class=\"c1\">OpenWhisk<\/span>, Google <span class=\"c1\"><a href=\"https:\/\/cloud.google.com\/functions\" target=\"_blank\" rel=\"noopener\">Cloud Functions<\/a><\/span>,\u00a0Azure <span class=\"c1\"><a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/functions\" target=\"_blank\" rel=\"noopener\">Functions<\/a><\/span>). These platforms are rapidly evolving in tandem with emerging\u00a0deployment best practices.<\/p>\n<p class=\"c3\">\n<h2 class=\"c3 c5\">Realtime Apps<\/h2>\n<p class=\"c3\">From consumer to enterprise, the majority of apps being developed now entail \u201clive\u201d realtime behavior whereby functionality is invoked in response to events. Such events (or messages) can be produced or consumed by internal or external functions, end-user devices,\u00a0and infrastructure services. This, in turn, fits neatly with a (data) <span class=\"c1\"><a href=\"https:\/\/www.pubnub.com\/products\/global-data-stream-network\" target=\"_blank\" rel=\"noopener\">stream-oriented programming model<\/a><\/span>\u00a0where structured messages (e.g. in JSON format) are used for dispatching serverless functions.<\/p>\n<p class=\"c3\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/image-video-serverless\/image-video-serverless-2.jpg\" alt=\"Serverless Logic and Data Streams\" width=\"497\" height=\"323\" \/><\/p>\n<p class=\"c3\">To underscore the uniqueness of this architectural fabric &#8211; not only can functions run anywhere, but their deployment is driven by real-time message streams. With this approach, developing custom logic and integrating external service logic can be done within the same framework. Essentially, this means the differences between integration of internal and external functions starts\u00a0to diminish.<\/p>\n<p class=\"c3\">Taken a step further, <span class=\"c1\"><a href=\"https:\/\/www.pubnub.com\/products\/blocks\" target=\"_blank\" rel=\"noopener\">event-driven realtime logic<\/a><\/span>\u00a0that consumes message streams, processes message streams and produces message streams, can be created in a popular programming language (e.g. JavaScript). This logic is composable, in that services can dispatch other services; streams can effectively be connected to one another in structured ways\u00a0(1-to-1, 1-to-many, etc.)<\/p>\n<p class=\"c3\">\n<h2 id=\"h.5i66e85fd2u8\" class=\"c3 c5\">Rich Media on Serverless<\/h2>\n<p class=\"c3\">One of the immediate places where integration of external services becomes handy is in the handling of rich media, in particular image management. The complexities inherent to uploading, storing, transforming, optimizing and delivering images require expertise well beyond the skillset of most app developers. Luckily, <span class=\"c1\"><a href=\"https:\/\/cloudinary.com\/solutions\/why_cloudinary\" target=\"_blank\" rel=\"noopener\">image management<\/a><\/span>\u00a0bodes well with being abstracted to a service accessible via an easy-to-use API within a serverless framework.<\/p>\n<p class=\"c3\">Examples of realtime apps built using a serverless architecture, that can make use of rich media, range from simple <span class=\"c1\"><a href=\"https:\/\/cloudinary.com\/blog\/how_to_build_a_real_time_photo_sharing_website_in_a_few_easy_steps\" target=\"_blank\" rel=\"noopener\">photo album sharing<\/a><\/span>\u00a0to contemporary projects such as twitter\/chat bots, home automation, industrial security, editorial collaboration\u00a0and many others. With the recent availability of the <span class=\"c1\"><a href=\"https:\/\/www.pubnub.com\/blocks-catalog\/cloudinary-image-manipulation\" target=\"_blank\" rel=\"noopener\">Cloudinary Block<\/a><\/span>, creation of such serverless apps is within immediate reach. Take it for a spin. The\u00a0<span class=\"c1\"><a href=\"https:\/\/www.pubnub.com\/blog\/2016-11-28-image-manipulation-and-transformation-on-the-fly-with-cloudinary\" target=\"_blank\" rel=\"noopener\">setup process<\/a><\/span>\u00a0is straightforward and we can\u2019t wait to see the cool serverless apps\u00a0you\u2019ll create, <a href=\"https:\/\/cloudinary.com\/contact\" target=\"_blank\" rel=\"noopener\">contact us<\/a> today to learn more.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nowadays, developers everywhere are introduced to an application development trend called serverless computing. The trend isn\u2019t new but rather an evolution culminating from a number of development methodologies, including service-oriented architecture (SOA), distributed cloud computing, Platform-as-a-service (PaaS) and Containers\/Microservices. A key defining element\u00a0of serverless computing is the serverless application\u2019s logic that combines custom-developed code and [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":21449,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[25,165],"class_list":["post-21448","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-asset-management","tag-image-transformation"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Image and Video Management using Serverless Computing<\/title>\n<meta name=\"description\" content=\"Build realtime rich media apps based on a serverless design that use a Cloudinary block for image and video management logic\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Image &amp; Video Gone Serverless\" \/>\n<meta property=\"og:description\" content=\"Build realtime rich media apps based on a serverless design that use a Cloudinary block for image and video management logic\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-12-12T18:38:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-26T00:20:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724597\/Web_Assets\/blog\/image-video-serverless\/image-video-serverless.jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"655\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Image &amp; Video Gone Serverless\",\"datePublished\":\"2016-12-12T18:38:56+00:00\",\"dateModified\":\"2022-02-26T00:20:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless\"},\"wordCount\":652,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724597\/Web_Assets\/blog\/image-video-serverless\/image-video-serverless.jpg?_i=AA\",\"keywords\":[\"Asset Management\",\"Image Transformation\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2016\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless\",\"url\":\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless\",\"name\":\"Image and Video Management using Serverless Computing\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724597\/Web_Assets\/blog\/image-video-serverless\/image-video-serverless.jpg?_i=AA\",\"datePublished\":\"2016-12-12T18:38:56+00:00\",\"dateModified\":\"2022-02-26T00:20:08+00:00\",\"description\":\"Build realtime rich media apps based on a serverless design that use a Cloudinary block for image and video management logic\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724597\/Web_Assets\/blog\/image-video-serverless\/image-video-serverless.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724597\/Web_Assets\/blog\/image-video-serverless\/image-video-serverless.jpg?_i=AA\",\"width\":1000,\"height\":655},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Image &amp; Video Gone Serverless\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Image and Video Management using Serverless Computing","description":"Build realtime rich media apps based on a serverless design that use a Cloudinary block for image and video management logic","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless","og_locale":"en_US","og_type":"article","og_title":"Image &amp; Video Gone Serverless","og_description":"Build realtime rich media apps based on a serverless design that use a Cloudinary block for image and video management logic","og_url":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless","og_site_name":"Cloudinary Blog","article_published_time":"2016-12-12T18:38:56+00:00","article_modified_time":"2022-02-26T00:20:08+00:00","og_image":[{"width":1000,"height":655,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724597\/Web_Assets\/blog\/image-video-serverless\/image-video-serverless.jpg?_i=AA","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless"},"author":{"name":"","@id":""},"headline":"Image &amp; Video Gone Serverless","datePublished":"2016-12-12T18:38:56+00:00","dateModified":"2022-02-26T00:20:08+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless"},"wordCount":652,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724597\/Web_Assets\/blog\/image-video-serverless\/image-video-serverless.jpg?_i=AA","keywords":["Asset Management","Image Transformation"],"inLanguage":"en-US","copyrightYear":"2016","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless","url":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless","name":"Image and Video Management using Serverless Computing","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724597\/Web_Assets\/blog\/image-video-serverless\/image-video-serverless.jpg?_i=AA","datePublished":"2016-12-12T18:38:56+00:00","dateModified":"2022-02-26T00:20:08+00:00","description":"Build realtime rich media apps based on a serverless design that use a Cloudinary block for image and video management logic","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/image_video_gone_serverless"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724597\/Web_Assets\/blog\/image-video-serverless\/image-video-serverless.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724597\/Web_Assets\/blog\/image-video-serverless\/image-video-serverless.jpg?_i=AA","width":1000,"height":655},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/image_video_gone_serverless#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Image &amp; Video Gone Serverless"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724597\/Web_Assets\/blog\/image-video-serverless\/image-video-serverless.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21448","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=21448"}],"version-history":[{"count":2,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21448\/revisions"}],"predecessor-version":[{"id":22965,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21448\/revisions\/22965"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21449"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21448"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}