Workflow patterns for migrating between Dev/Prd for non-hosted features on ArcGIS Server

168
1
3 weeks ago
ClangDevGuy
New Contributor III

Hello,

I am just reaching out for some struggles with coming up with a nice deployment strategy for pushing data,  portal items between the Development and Production Enterprise. 

Current criteria and setup:

Geodatabase - Pretty much straightforward in two different SQL server instances in this case.

- Python scripts used for schema changes, copying data, etc. No real issues in getting two geodatabase sync'd nicely. I routinely do a dev "refresh" by replacing the dev database with prd to get the most up to date data. 

ArcGIS Portal - trying to keep two mirrored environment under a "Publisher" user for production applications. So, I use everything that is owned by that user to push portal items back and forth.

- This works well for already existing items and using the ArcGIS python api. I have everything using the same itemids, and only the reference URL changes (https://dev-gis.... to https://gis... ). This will overwrite most things that get updated in terms of layers in webmaps, popup configuration, forms, symbology etc. Net new items seem to work as well if the REST url does already exist.  

ArcGIS Server - This is the tricky one.

Ideally, we would have an aprx for both dev and prd that are similar but are just pointing to 2 different databases (dev or prd). But managing the services causes a lot of duplicated and repetitive work when the goal would be just to push the ready service from dev into prd without having to republish anything.

I've been trying to just publish to arcgis server without creating portal items because we want the same itemids for both dev/prd (that I get from cloning items in portal). I have a hacky way of publishing once, repointing the source and removing it so it stays on the arcgis server and the cloned portal item still works because it is only looking for the rest service URL.

Arcgis Experience builder Dev Edition: We have written all our production apps in ExB dev edition. 

- All this itemid matching, and having a complete mirrored environment is extremely important when trying to manage two environments for ExB apps. I find it a nightmare when trying to manage all the itemIDs, reference URLs, and the "hidden" layerIDs used in the webmaps, that is also referenced in the ExB JSON. ExB seems to be quite picky when trying to change the datasources without having to reconfigure all the widgets without manipulating the JSON. 

- I've been using GIT to manage the changes to ExB and simply trying to go through and find and replace with just the reference URLs. If everything is nicely mirrored it works nice, but as things grow and get more complicated, it feels like its only going to get worse.

I am just wondering if anyone else is running into similar issues or have any thoughts or ideas? In an ideal world I would probably look into ArcGIS Kubernetes and use it to create a local/dev environment just deploy each container when ready, but it still seems like ArcGIS Kubernetes is only meant to be for larger enterprises at this point. 

 

 

1 Reply
ZachBodenner
MVP Regular Contributor

Not an answer, but please Kudos my Idea regarding this ExB issue you talk about. It's so frustrating to have to redo so much to account for minor changes or swapping even identical layers:

https://community.esri.com/t5/arcgis-experience-builder-ideas/exb-should-recognize-identical-maps-sc...