{"id":14167,"date":"2023-03-09T14:50:44","date_gmt":"2023-03-09T22:50:44","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=14167"},"modified":"2025-06-13T22:04:25","modified_gmt":"2025-06-14T05:04:25","slug":"data-sync-capella-app-services-and-mobile","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/","title":{"rendered":"Data Sync between Capella App Services and Self Managed Couchbase Mobile Deployments"},"content":{"rendered":"<p><a href=\"https:\/\/www.couchbase.com\/products\/capella\/app-services\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Capella App Services<\/span><\/a><span style=\"font-weight: 400\"> is a fully managed cloud backend for your mobile, desktop and IoT frontend applications. On the other end of the spectrum, the paradigm of <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/edge-computing-for-100-uptime\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">\u201cEdge Computing\u201d<\/span><\/a><span style=\"font-weight: 400\"> has gained a lot of traction in recent years. Edge Computing is a distributed computing topology that aims to bring compute and storage closer to the edge, which is essentially the location where data is generated and consumed. Applications running at the edge benefit from low latency real time responses, reduced network bandwidth costs to cloud and adherence to data privacy and regulatory restrictions which prescribe that sensitive data is processed at the edge.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Edge Computing complements Cloud Computing. The cloud continues to serve as the source of truth. Data that is processed at the edge is transmitted to the cloud for eventual consistency and data integrity. <\/span><i><span style=\"font-weight: 400\">So how do we enable such a deployment topology that combines the power of Capella\u2019s managed cloud environment with self-managed, on-prem edge deployment?<\/span><\/i><span style=\"font-weight: 400\"> This is possible with the <\/span><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/sync-inter-syncgateway-overview.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Inter-Sync Gateway Replication<\/span><\/a><span style=\"font-weight: 400\"> protocol that offers enterprise-grade scalable, secure sync between couchbase cloud and edge clusters.<\/span><\/p>\n<p><span style=\"font-weight: 400\">In this post, we will walkthrough an example of how you can set up a hybrid deployment between a Capella managed App Services deployment and a self managed Couchbase Mobile deployment.\u00a0<\/span><\/p>\n<h2>Hybrid Deployment Topology &amp; Use Cases<\/h2>\n<p><span style=\"font-weight: 400\">In the context of this post, we use hybrid deployment topology to refer to a topology consisting of a fully managed Capella App Services syncing data with one or more self managed couchbase mobile clusters. A self-managed couchbase mobile cluster could be one that\u2019s deployed and managed by a user in a public cloud, private cloud or data center or on-prem. A simple hybrid topology is shown below. In this model, data is stored and processed in Capella App Services as well as in the self-managed couchbase mobile cluster. Data is synced between the cloud and edge cluster using Inter-Sync Gateway Replication. Mobile and desktop client apps can sync data with Capella App Services or with self-managed Couchbase Mobile cluster.\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-14141 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/03\/cloud-edge-isgr-1024x494.png\" alt=\"couchbase capella cloud to edge sync\" width=\"900\" height=\"434\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1024x494.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-300x145.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-768x370.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1536x740.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1320x636.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr.png 1892w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p><span style=\"font-weight: 400\">There are several use cases of distributed cloud deployments as described in this <\/span><a href=\"https:\/\/resources.couchbase.com\/c\/cloud-edge-computing-wp?x=8VqgG5#page=1\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">whitepaper<\/span><\/a><span style=\"font-weight: 400\">. They include resiliency to Internet disruptions and reduced latency in data processing.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Specifically, hybrid deployment topology offers the following benefits :-<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><b>Data Privacy\/Governance<\/b><span style=\"font-weight: 400\">: Fulfillment of regulatory policies that dictate that sensitive data that should only be stored and processed on self managed, private or on-prem data centers<\/span><\/li>\n<li style=\"font-weight: 400\"><b>Phased Migration to Capella<\/b><span style=\"font-weight: 400\">: Not as obvious, but the hybrid topology with Capella will simplify the migration of existing on-prem couchbase mobile deployments to Capella. While <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/app-services\/migrating\/on-prem-to-capella.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">XDCR based migration<\/span><\/a><span style=\"font-weight: 400\"> allows a one-shot migration of on-prem mobile clusters to Capella App Services, wherein all clients have to switch over from self-managed cluster to Capella. On the other hand, a hybrid topology with a bi-directional Inter-Sync Gateway Replication will allow for a phased migration &#8211; allowing for clients to migrate over time.<\/span><\/li>\n<li style=\"font-weight: 400\"><b>Emerging Cloud Provider Edge Services<\/b><span style=\"font-weight: 400\">: As cloud service providers continue to expand their infrastructure to the edge with offerings like <\/span><a href=\"https:\/\/aws.amazon.com\/about-aws\/global-infrastructure\/localzones\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">AWS Local Zones<\/span><\/a><span style=\"font-weight: 400\">, users can take advantage of these offerings by connecting their\u00a0 self-managed couchbase mobile clusters deployed at the edge of the cloud provider network with Capella App Services.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Configuration<\/h2>\n<h3>Active Cluster<\/h3>\n<p><span style=\"font-weight: 400\">The Sync Gateway cluster on which the replication is initialized or scheduled is the <\/span><b>Active Cluster<\/b><span style=\"font-weight: 400\">. Think of it as being equivalent to a client in a classic client-server connection that is initializing a connection. In hybrid deployment, this would correspond to the self-managed Couchbase Mobile cluster. In other words, all replications (bi-directional and uni-directional) are initialized on the self-managed side.<\/span><\/p>\n<h3>Passive Cluster<\/h3>\n<p><span style=\"font-weight: 400\">The Sync Gateway cluster that is the target of replication is the <\/span><b>Passive Cluster<\/b><span style=\"font-weight: 400\">. Think of it as being equivalent to a server in a classic client-server connection that is listening for incoming connections.<\/span><\/p>\n<h2>Walkthrough<\/h2>\n<p><span style=\"font-weight: 400\">We will walk through a simple example that demonstrates how you can setup a Hybrid topology with Capella App Services. For brevity, we will not be walking through the specifics of how you deploy and provision Sync Gateway on-prem or on Capella App Services. If you are new to Capella App Services, please refer to the <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/app-services\/deployment\/creating-an-app-service.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Getting Started with App Services<\/span><\/a><span style=\"font-weight: 400\"> guide. If you are new to Couchbase Mobile, refer to <\/span><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/get-started-prepare.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Getting Started with Sync Gateway<\/span><\/a><span style=\"font-weight: 400\"> guide.\u00a0<\/span><\/p>\n<h3>Initial State<\/h3>\n<p><span style=\"font-weight: 400\">In order to support hybrid deployment with Capella App Services, the <strong>Active Cluster<\/strong> which is the self-managed mobile cluster <\/span><b>MUST be running Sync Gateway versions v3.0.5 and or v2.8.4.<\/b><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-14142 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/03\/isgr-initial-state-1024x456.png\" alt=\"capella app service edge\" width=\"900\" height=\"401\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/isgr-initial-state-1024x456.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/isgr-initial-state-300x134.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/isgr-initial-state-768x342.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/isgr-initial-state-1536x684.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/isgr-initial-state-1320x588.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/isgr-initial-state.png 1976w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<h4>Self-Managed Cluster<\/h4>\n<p><span style=\"font-weight: 400\">This is the Sync Gateway database configuration on the self-managed side of the deployment as retrieved using <\/span><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/rest-api-admin.html#\/Database_Management\/get_database_information\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">GET db<\/span><\/a><span style=\"font-weight: 400\"> call.<\/span><\/p>\n<p><b>Request<\/b><\/p>\n<pre class=\"nums:false lang:sh decode:true \">curl --location --request GET 'https:\/\/on-prem-syncgateway:4985\/travel-sample\/_config' \\\r\n     --header 'Accept: application\/json' \\\r\n     --header 'Content-Type: application\/json' \\\r\n     --header 'Authorization: Basic c2d3X2FkbWluOnBhc3N3b3Jk'<\/pre>\n<p><b>Response<\/b><\/p>\n<pre class=\"nums:false lang:js decode:true\">{\r\n\u00a0\u00a0\u00a0\u00a0\"server\": \"couchbases:\/\/on-prem-couchbase-server\",\r\n\u00a0\u00a0\u00a0\u00a0\"bucket\": \"travel-sample\",\r\n\u00a0\u00a0\u00a0\u00a0\"username\": \"sgw_admin\",\r\n\u00a0\u00a0\u00a0\u00a0\"password\": \"xxxxx\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\": \"travel-sample\",\r\n\u00a0\u00a0\u00a0\u00a0\"sync\": \"\\nfunction sync(doc, oldDoc) {\\n\u00a0 if (doc.type) {\\n\u00a0 \u00a0 \u00a0 channel(\\\"channel.\\\"+doc.type);\\n\u00a0 }\\n\u00a0 else {\\n\u00a0 \u00a0 \u00a0 channel(\\\"!\\\");\\n\u00a0 }\\n}\",\r\n\u00a0\u00a0\u00a0\u00a0\"import_docs\": true,\r\n\u00a0\u00a0\u00a0\u00a0\"cache\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"rev_cache\": {},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"channel_cache\": {}\r\n\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\"unsupported\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"warning_thresholds\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"xattr_size_bytes\": 943718,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"channels_per_doc\": 50,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"access_and_role_grants_per_doc\": 50,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"channels_per_user\": 50000,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"channel_name_size\": 250\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\"enable_shared_bucket_access\": true,\r\n\u00a0\u00a0\u00a0\u00a0\"num_index_replicas\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\"delta_sync\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"enabled\": true\r\n\u00a0\u00a0\u00a0\u00a0}\r\n}\r\n<\/pre>\n<p>As you can see, the configuration is straightforward.<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">I have a Sync Gateway database named \u201c<\/span><i><span style=\"font-weight: 400\">travel-sample<\/span><\/i><span style=\"font-weight: 400\">\u201d backed up by a \u201c<\/span><i><span style=\"font-weight: 400\">travel-sample<\/span><\/i><span style=\"font-weight: 400\">\u201d bucket on Couchbase Server. The \u201ctravel-sample\u201d bucket is a sample bucket that is loaded into the server.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\u201c<\/span><i><span style=\"font-weight: 400\">sgw_admin<\/span><\/i><span style=\"font-weight: 400\">\u201d is the sync gateway user that is used for authenticating Sync Gateway to Couchbase server.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The sync function does the following:<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">All documents that have a &#8220;<\/span><i><span style=\"font-weight: 400\">type<\/span><\/i><span style=\"font-weight: 400\">&#8221; property are assigned to a corresponding channel corresponding to that document type. For example, documents that have a <\/span><i><span style=\"font-weight: 400\">&#8220;type&#8221;:&#8221;airline&#8221;<\/span><\/i><span style=\"font-weight: 400\"> are assigned to a channel named <\/span><i><span style=\"font-weight: 400\">&#8220;channel.airline<\/span><\/i><span style=\"font-weight: 400\">&#8220;, a document that has a <\/span><i><span style=\"font-weight: 400\">&#8220;type&#8221;:&#8221;airport&#8221;<\/span><\/i><span style=\"font-weight: 400\"> are assigned to a channel named <\/span><i><span style=\"font-weight: 400\">&#8220;channel.airport&#8221;<\/span><\/i><span style=\"font-weight: 400\"> and so on.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The documents that do not have a <\/span><i><span style=\"font-weight: 400\">&#8220;type<\/span><\/i><span style=\"font-weight: 400\">&#8221; property are assigned to a public channel.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">The rest of the configuration is default.<\/span><\/p>\n<h4>Capella App Services<\/h4>\n<p><span style=\"font-weight: 400\">This is the configuration on the Capella App Services side.<\/span><\/p>\n<p><span style=\"font-weight: 400\">I have an <\/span><b>App Endpoint <\/b><span style=\"font-weight: 400\">named \u201c<\/span><i><span style=\"font-weight: 400\">travel-sample<\/span><\/i><span style=\"font-weight: 400\">\u201d that is backed up by a \u201ctravel-sample\u201d database. In my example, the \u201c<\/span><i><span style=\"font-weight: 400\">travel-sample<\/span><\/i><span style=\"font-weight: 400\">\u201d database is <\/span><i><span style=\"font-weight: 400\">empty<\/span><\/i><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-14139 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/03\/app-endpoint-1024x296.png\" alt=\"capella App Endpoint\" width=\"900\" height=\"260\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/app-endpoint-1024x296.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/app-endpoint-300x87.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/app-endpoint-768x222.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/app-endpoint-1536x444.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/app-endpoint-2048x592.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/app-endpoint-1320x381.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p><span style=\"font-weight: 400\">The <\/span><b>Access Control Function <\/b><span style=\"font-weight: 400\">is identical to the Sync Function on the self-managed side.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-14138 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/03\/access-control-1024x589.png\" alt=\"capella access control\" width=\"900\" height=\"518\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/access-control-1024x589.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/access-control-300x172.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/access-control-768x441.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/access-control-1536x883.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/access-control-2048x1177.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/access-control-1320x759.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p><span style=\"font-weight: 400\">I have an <\/span><b>App User<\/b><span style=\"font-weight: 400\"> named \u201c<\/span><i><span style=\"font-weight: 400\">demo@example.com<\/span><\/i><span style=\"font-weight: 400\">\u201d who is granted access to &#8220;<\/span><i><span style=\"font-weight: 400\">channel.airline<\/span><\/i><span style=\"font-weight: 400\">&#8221; channel (in addition to the system public \u201c!\u201d channel).<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-14140 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/03\/app-user-1024x598.png\" alt=\"Capella App user\" width=\"900\" height=\"526\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/app-user-1024x598.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/app-user-300x175.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/app-user-768x448.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/app-user-1536x897.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/app-user-1320x771.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/app-user.png 2004w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<h3>Setting up Inter-Sync Gateway Replication<\/h3>\n<p><span style=\"font-weight: 400\">The self-managed Couchbase mobile cluster is the \u201cactive cluster\u201d and it is the cluster where replications <\/span><b>MUST<\/b><span style=\"font-weight: 400\"> be initialized.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-14143 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/03\/isgr-setup-replication-1024x451.png\" alt=\"capella to edge sync\" width=\"900\" height=\"396\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/isgr-setup-replication-1024x451.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/isgr-setup-replication-300x132.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/isgr-setup-replication-768x338.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/isgr-setup-replication-1536x677.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/isgr-setup-replication-1320x582.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/isgr-setup-replication.png 1974w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p><span style=\"font-weight: 400\">I will initialize a bi-directional, continuous replication named \u201c<\/span><i><span style=\"font-weight: 400\">pushandpull-with-target-continuou<\/span><\/i><span style=\"font-weight: 400\">s\u201d on the self-managed Sync Gateway using the <\/span><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/rest-api-admin.html#\/Replication\/upsert_replication\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">PUT _replication<\/span><\/a><span style=\"font-weight: 400\"> API.\u00a0<\/span><\/p>\n<p><b>Request<\/b><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14168 size-full aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/03\/image1-1.png\" alt=\"inter sync gateway replication setup\" width=\"624\" height=\"324\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/image1-1.png 624w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/image1-1-300x156.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/p>\n<h3>Validating Data Sync<\/h3>\n<p><span style=\"font-weight: 400\">Finally, since we have a bidirectional sync setup between Capella App Services and a self managed cluster, I can validate that document changes made on either endpoint are synced over to the other side.<\/span><\/p>\n<h4>Syncing from self-managed Couchbase Mobile cluster to Capella App Services<\/h4>\n<p><span style=\"font-weight: 400\">Changes to any document on self-managed are automatically synced over to the cloud as demonstrated below. This is because we do not have any filters set on the replication.\u00a0<\/span><\/p>\n<div id=\"attachment_14160\" style=\"width: 1792px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-14160\" class=\"wp-image-14160 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/03\/isgr-1-w-calloutarrow_sm.gif\" alt=\"\" width=\"1782\" height=\"1080\" \/><p id=\"caption-attachment-14160\" class=\"wp-caption-text\">Changes to document on self-managed Couchbase Server (right) are synced to Capella (left)<\/p><\/div>\n<h4>Syncing from capella App Services to self-managed Couchbase Mobile cluster<\/h4>\n<p><span style=\"font-weight: 400\">In contrast, only changes made to documents that have a property &#8220;<\/span><i><span style=\"font-weight: 400\">type<\/span><\/i><span style=\"font-weight: 400\">&#8221; of &#8220;<\/span><i><span style=\"font-weight: 400\">airline<\/span><\/i><span style=\"font-weight: 400\">&#8221; on Capella App Services are synced down to the self-managed cluster. The reason for this is because the App User on Capella App Services, \u201c<\/span><i><span style=\"font-weight: 400\">demo@example.com<\/span><\/i><span style=\"font-weight: 400\">\u201d is granted access to only the <\/span><i><span style=\"font-weight: 400\">\u201cchannel.airline<\/span><\/i><span style=\"font-weight: 400\">\u201d. So the App User can only read documents of &#8220;<\/span><i><span style=\"font-weight: 400\">type<\/span><\/i><span style=\"font-weight: 400\">&#8220;equal to&#8221;<\/span><i><span style=\"font-weight: 400\">airline<\/span><\/i><span style=\"font-weight: 400\">&#8220;.<\/span><\/p>\n<div id=\"attachment_14161\" style=\"width: 1792px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-14161\" class=\"wp-image-14161 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/03\/isgr-2-w-arrowcallout_sm.gif\" alt=\"\" width=\"1782\" height=\"1080\" \/><p id=\"caption-attachment-14161\" class=\"wp-caption-text\">Changes to document on Capella (left) are synced to self-managed Couchbase Server (right)<\/p><\/div>\n<h2>Monitoring Replications<\/h2>\n<p><span style=\"font-weight: 400\">Once your configurations are up and running, you can monitor it via the <\/span><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/rest-api-admin.html#\/Replication\/get__db___replicationStatus__replicationID_\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">replicationStatus<\/span><\/a><span style=\"font-weight: 400\"> endpoint.\u00a0<\/span><\/p>\n<h2>Resources<\/h2>\n<p><span style=\"font-weight: 400\">You can <\/span><a href=\"https:\/\/cloud.couchbase.com\/sign-in\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">try Capella App Services<\/span><\/a><span style=\"font-weight: 400\"> for free today and deploy hybrid topologies with self-managed edge clusters.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Be sure to deploy v3.0.5 or v2.8.4 versions of Sync Gateway which you can download from our <\/span><a href=\"https:\/\/www.couchbase.com\/downloads\/?family=sync-gateway\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">downloads page.<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400\">If you want to dive into the details, here\u2019s where you can find more information:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/learn\/icr-sgreplicate.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Documentation: inter-Sync Gateway Replication<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/www.couchbase.com\/solutions\/edge-computing\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Solutions Page: Edge Computing<\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">The <\/span><a href=\"https:\/\/www.couchbase.com\/forums\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Couchbase Forums<\/span><\/a><span style=\"font-weight: 400\"> is a great place to reach out with questions. Please leave a comment below or feel free to reach out to me via <\/span><a href=\"https:\/\/twitter.com\/rajagp\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Twitter<\/span><\/a><span style=\"font-weight: 400\"> or <\/span><span style=\"font-weight: 400\">email me<\/span><\/p>\n<h2>Acknowledgements<\/h2>\n<p><span style=\"font-weight: 400\">I would like to thank <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/author\/heymarkgamble\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Mark Gamble<\/span><\/a><span style=\"font-weight: 400\"> for his review and feedback on the blog post.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Capella App Services is a fully managed cloud backend for your mobile, desktop and IoT frontend applications. On the other end of the spectrum, the paradigm of \u201cEdge Computing\u201d has gained a lot of traction in recent years. Edge Computing [&hellip;]<\/p>\n","protected":false},"author":1423,"featured_media":14177,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[10130,2225,1810,7666],"tags":[1245,9792],"ppma_author":[8948],"class_list":["post-14167","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-app-services","category-cloud","category-couchbase-mobile","category-edge-computing","tag-cloud","tag-hybrid-topology"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Data Sync between Capella App Services and Mobile Deployments<\/title>\n<meta name=\"description\" content=\"Walkthrough how you can set up a hybrid deployment between a Capella managed App Services deployment and a self-managed Couchbase Mobile deployment.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Sync between Capella App Services and Self Managed Couchbase Mobile Deployments\" \/>\n<meta property=\"og:description\" content=\"Walkthrough how you can set up a hybrid deployment between a Capella managed App Services deployment and a self-managed Couchbase Mobile deployment.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-09T22:50:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T05:04:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1892\" \/>\n\t<meta property=\"og:image:height\" content=\"912\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rajagp\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/\"},\"author\":{\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c\"},\"headline\":\"Data Sync between Capella App Services and Self Managed Couchbase Mobile Deployments\",\"datePublished\":\"2023-03-09T22:50:44+00:00\",\"dateModified\":\"2025-06-14T05:04:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/\"},\"wordCount\":1343,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1.png\",\"keywords\":[\"cloud\",\"hybrid topology\"],\"articleSection\":[\"App Services\",\"Couchbase Capella\",\"Couchbase Mobile\",\"Edge computing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/\",\"name\":\"Data Sync between Capella App Services and Mobile Deployments\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1.png\",\"datePublished\":\"2023-03-09T22:50:44+00:00\",\"dateModified\":\"2025-06-14T05:04:25+00:00\",\"description\":\"Walkthrough how you can set up a hybrid deployment between a Capella managed App Services deployment and a self-managed Couchbase Mobile deployment.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1.png\",\"width\":1892,\"height\":912},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Sync between Capella App Services and Self Managed Couchbase Mobile Deployments\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c\",\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b50a54778b979d8c345b036ab138734\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"caption\":\"Priya Rajagopal, Senior Director, Product Management\"},\"description\":\"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.\",\"sameAs\":[\"https:\/\/x.com\/rajagp\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/priya-rajagopalcouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Data Sync between Capella App Services and Mobile Deployments","description":"Walkthrough how you can set up a hybrid deployment between a Capella managed App Services deployment and a self-managed Couchbase Mobile deployment.","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:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/","og_locale":"en_US","og_type":"article","og_title":"Data Sync between Capella App Services and Self Managed Couchbase Mobile Deployments","og_description":"Walkthrough how you can set up a hybrid deployment between a Capella managed App Services deployment and a self-managed Couchbase Mobile deployment.","og_url":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/","og_site_name":"The Couchbase Blog","article_published_time":"2023-03-09T22:50:44+00:00","article_modified_time":"2025-06-14T05:04:25+00:00","og_image":[{"width":1892,"height":912,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1.png","type":"image\/png"}],"author":"Priya Rajagopal, Senior Director, Product Management","twitter_card":"summary_large_image","twitter_creator":"@rajagp","twitter_misc":{"Written by":"Priya Rajagopal, Senior Director, Product Management","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/"},"author":{"name":"Priya Rajagopal, Senior Director, Product Management","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c"},"headline":"Data Sync between Capella App Services and Self Managed Couchbase Mobile Deployments","datePublished":"2023-03-09T22:50:44+00:00","dateModified":"2025-06-14T05:04:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/"},"wordCount":1343,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1.png","keywords":["cloud","hybrid topology"],"articleSection":["App Services","Couchbase Capella","Couchbase Mobile","Edge computing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/","url":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/","name":"Data Sync between Capella App Services and Mobile Deployments","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1.png","datePublished":"2023-03-09T22:50:44+00:00","dateModified":"2025-06-14T05:04:25+00:00","description":"Walkthrough how you can set up a hybrid deployment between a Capella managed App Services deployment and a self-managed Couchbase Mobile deployment.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/03\/cloud-edge-isgr-1.png","width":1892,"height":912},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/data-sync-capella-app-services-and-mobile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Data Sync between Capella App Services and Self Managed Couchbase Mobile Deployments"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c","name":"Priya Rajagopal, Senior Director, Product Management","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b50a54778b979d8c345b036ab138734","url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","caption":"Priya Rajagopal, Senior Director, Product Management"},"description":"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.","sameAs":["https:\/\/x.com\/rajagp"],"url":"https:\/\/www.couchbase.com\/blog\/author\/priya-rajagopalcouchbase-com\/"}]}},"authors":[{"term_id":8948,"user_id":1423,"is_guest":0,"slug":"priya-rajagopalcouchbase-com","display_name":"Priya Rajagopal, Senior Director, Product Management","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","author_category":"","last_name":"Rajagopal, Senior Director, Product Management","first_name":"Priya","job_title":"","user_url":"","description":"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/14167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/1423"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=14167"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/14167\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/14177"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=14167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=14167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=14167"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=14167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}