UrbanCode Deploy Review

The ability to deploy as often as possible allows a number of people to work on it at the same time.


Valuable Features

The ability to deploy as often as possible allows a number of people to work on it at the same time.

Improvements to My Organization

It's provided us with more reliable and faster deployments, as well as the ability and flexibility to create and modify deployment applications to meet the needs of the ping.

Room for Improvement

We're running version 4.8.4, which isn't the latest version. This version lacks reporting, which may be improved in the latest version.

Use of Solution

I've used it for four years.

Stability Issues

It's been a very stable product. We've had a few performance issues, but they haven't been serious. I'd say we've been going for a couple of years without having any issues or needing any support or assistance.

Scalability Issues

It's absolutely scalable. We have gone from about 17 products to 32, maybe it was 42 since we've gotten uDeploy. Before it could take a couple of days and we could only do a few deployments, just barely a few in a month. Now we can do multiple deployments in a day, we can get hotfixes out very quickly, and we can easily modify and customize processes as the needs of the teams change. It scales very well for us. We also, for instance, have needed to improve our security and all that is there in uDeploy. We don't have to do anything other than figure out how to configure it.

Customer Service and Technical Support

Technical support is always very knowledgeable and proactive. In contacting different people, we've always had very good responses.

Previous Solutions

We weren't using anything before and we had to get something up and running quickly. It did take us a little longer to get the uDeploy up and running than we'd hoped, but once we did it certainly met all of our needs.

Initial Setup

It was complex at times. It took us a while to come up with the standard process that we needed, but then once we had it it also took a while to actually get all of our projects up and running. We didn't know how to use the CLI at that time. We might have been able to do better if we knew that.

Implementation Team

It was all done in-house. I'll add a comment that the learning curve for uDeploy is high. Even now there's a couple of us who know it well, but being able to bring somebody else on-board and explain it to them would take a little time. Of course, now that we know what we're doing, we have somebody so we can explain it to somebody else, but at the time when we started and since we didn't know what we were doing, and it took a lot of trial and error to figure out how to use it.

Other Advice

Standardize processes as much as possible so that you can re-use them. Don't be afraid to create multiple applications when that reduces the complexity. Don't make applications really complex to try and do all these things all at once. If you can, break it down into smaller apps because they're easier to manage. Generally the more independent things are then the fewer things break at any one time.

If you have problems, it doesn't affect more than just the particular instance that you're looking at. Our developers have done a lot to break down our projects into smaller and smaller pieces so that they help with that. We can deploy an application, but if it's only got three modules that are changed, then we only need to deploy three modules. Breaking it down into independent pieces and reusing them, I think, is really important.

Integrating it with an automated build system, I highly recommend that. We use Jenkins. We can easily connect our Jenkins artifacts and push them to uDeploy so that they can be deployed. We have some interaction between the two so that we have good auditing and knowing which build is the one that got deployed. In fact, using versions that relate to the build version, so that when you go into uDeploy and you look at a version then you can see that that version came from specific build and the build tool, that's really helpful.

It just changed my whole job and made it easier. I'm sure that some people might have different opinions on that, but coming from where we were and getting to where we are was just never could have been done without uDeploy and it's just incredibly powerful for us.

Disclosure: IT Central Station contacted the reviewer to collect the review and to validate authenticity. The reviewer was referred by the vendor, but the review is not subject to editing or approval by the vendor.
5 Comments
Architect IT at a tech company with 51-200 employeesVendor

The latest version improve performance and scalability, you may want to consider upgrading. We've been working with UC IBM team to improve it to support 4000+ apps. We're using side by side with uRelease to digitize release processes and accelerate governance.

29 February 16
Senior Release Engineer at a retailer with 501-1,000 employeesReal User

We've upgraded to 5.0.0.2 without problems. We are working on understanding 6.2 so we can upgrade to it.

18 July 16
Senior Release Engineer at a retailer with 501-1,000 employeesReal User

We have done a test upgrade to UCD6.2. We did this last Thursday and Friday. We had an IBM consultation on site to help us. This was a great idea since we got clear instructions, quick resolution of problems which were few, and we learned a lot.

My next several comments will cover the events of the upgrade. I'll add more as we uncover them. So far overall we've been doing OK.

It took 11 hours to do the DB migration. There were steps needed for each release from 4.8.4 (we started at 5.0.0.4 so there must have been a few more changes needed from 4.8.4). Don't let your version get that far behind :-).

Here are all of the changes that had to be applied. Some steps took a very long time, so be patient.

[upgrade] Applying 4.8 change: 52 - Adding support for HTTP property definitions
[upgrade] Applying 4.8 change: 53 - Indexing join column for finding latest versions by path/directory
[upgrade] Applying 4.8 change: 54 - Add placeholder property to ps_prop_def
[upgrade] Applying 4.8 change: 55
[upgrade] Applying 4.8 change: 56
[upgrade] Applying 5.0 change: 1 - Add type column to pl_plugin table
[upgrade] Applying 5.0 change: 2 - Add the pl_plugin_role table
[upgrade] Applying 5.0 change: 3 - Add role column to pl_plugin_command table
[upgrade] Applying 5.0 change: 4 - Migrate security schema from commons-security model to air-security
[upgrade] Applying 5.0 change: 5 - Migrate security schema from commons-security model to air-security
[upgrade] Applying 5.0 change: 6 - Migrate security schema from commons-security model to air-security
[upgrade] Applying 5.0 change: 7 - Load new security schema with pre-populated configuration
[upgrade] Applying 5.0 change: 8 - Remove role requirement columns from statuses
[upgrade] Applying 5.0 change: 9 - Updating mappings from live tasks to roles to use new security concepts
[upgrade] Applying 5.0 change: 10 - Incorporating user properties upgrade
[upgrade] Applying 5.0 change: 11 - Changing resource name uniqueness to be scoped by parent (1/2)
[upgrade] Applying 5.0 change: 12 - Changing resource name uniqueness to be scoped by parent (2/2)
[upgrade] Applying 5.0 change: 13 - Creating mapping table from environments to resources
[upgrade] Applying 5.0 change: 14 - Adding tags, converting existing resource roles to tags
[upgrade] Applying 5.0 change: 15 - Creating resource roles associated with components
[upgrade] Applying 5.0 change: 16 - Migrating resource groups to the new resource model
[upgrade] Applying 5.0 change: 17 - Changing all resource group security resources to resource resources
[upgrade] Applying 5.0 change: 18 - Convert various resource role usages to tag usage
[upgrade] Applying 5.0 change: 19 - Creating subresources with appropriate roles for all resources mapped to components
[upgrade] Applying 5.0 change: 20 - Removing resource groups
[upgrade] Applying 5.0 change: 21 - Removing join table between resources and roles
[upgrade] Applying 5.0 change: 22 - Adding a more defined relationship between resource roles and components
[upgrade] Applying 5.0 change: 23 - Adding ghosting to snapshots
[upgrade] Applying 5.0 change: 24 - Adding a path field to ds_resource
[upgrade] Applying 5.0 change: 25 - Populate the path field in ds_resource
[upgrade] Applying 5.0 change: 26 - Remove all references to task definition
[upgrade] Applying 5.0 change: 27 - Drop the task definition table
[upgrade] Applying 5.0 change: 28 - Adding resource templates
[upgrade] Applying 5.0 change: 29 - Reversing the direction of the relationship between resource roles and components
[upgrade] Applying 5.0 change: 30 - refactor unique constraints into indexes -- security
[upgrade] Applying 5.0 change: 31 - refactor unique constraints into indexes -- udeploy
[upgrade] Applying 5.0 change: 32 - refactor unique constraints into indexes -- property
[upgrade] Applying 5.0 change: 33 - Adding prepopulated resource roles
[upgrade] Applying 5.0 change: 34 - Adding ghosting of applications
[upgrade] Applying 5.0 change: 35 - Adding resource team inheritance
[upgrade] Applying 5.0 change: 36 - Adding environment blueprints
[upgrade] Applying 5.0 change: 37 - Adding a built-in role for agent placeholders
[upgrade] Applying 5.0 change: 38 - Removing Role Security Report
[upgrade] Applying 5.0 change: 39 - Ghost custom role reports in the database
[upgrade] Applying 5.0 change: 40 - removing licenses from agents
[upgrade] Applying 5.0 change: 41 - Adding cloud connections
[upgrade] Applying 5.0 change: 42 - Adding tracking of which blueprint was used to create an environment
[upgrade] Applying 5.0 change: 43 - refactor unique constraints into indexes -- security
[upgrade] Applying 5.0 change: 44 - Adding a built-in role for smartcloud logical nodes
[upgrade] Applying 5.0 change: 45 - Updating notification entries to work with new security model
[upgrade] Applying 5.0 change: 46 - Adding roles to statuses
[upgrade] Applying 5.0 change: 47 - Renaming Calendar Tab Action
[upgrade] Applying 5.0 change: 48 - Adding the processes action
[upgrade] Applying 5.0 change: 49 - Removing security from licenses
[upgrade] Applying 5.0 change: 50 - Adding tracking of a provisioned system ID in environments
[upgrade] Applying 5.0 change: 51 - Incorporate security upgrade to support licenses
[upgrade] Applying 5.0 change: 52 - removing the "not null" constraint from sec_user_property
[upgrade] Applying 5.0 change: 53 - Adding agentNamePatterns propdef to the Agent Placeholder resource role
[upgrade] Applying 5.0 change: 54 - Incorporating user session count change from security library
[upgrade] Applying 5.0 change: 55 - Adding missing entries to latest entry table
[upgrade] Applying 6.1 change: 1 - Add join table for Component tagging
[upgrade] Applying 6.1 change: 2 - Add join table for Agent tagging
[upgrade] Applying 6.1 change: 3 - Add join table for Application tagging
[upgrade] Applying 6.1 change: 4 - Add ghosting for inventory entries
[upgrade] Applying 6.1 change: 5 - Add table for cross process synchronization
[upgrade] Applying 6.1 change: 6 - Disable Deleted Security Resources
[upgrade] Applying 6.1 change: 7 - Adding property definitions to tasks
[upgrade] Applying 6.1 change: 8 - Add Source Config Plugin Table
[upgrade] Applying 6.1 change: 9 - Add support to specify integration agent on component
[upgrade] Applying 6.1 change: 10 - Add lock for auto integration
[upgrade] Applying 6.1 change: 11 - Add licensing info to Agent
[upgrade] Applying 6.1 change: 12 - Updating default inventory status colors
[upgrade] Applying 6.1 change: 13 - Remove old license table
[upgrade] Applying 6.1 change: 14 - Adding auth token tracking to source config execution
[upgrade] Applying 6.1 change: 15 - Reduce all 256 byte columns to 255 bytes
[upgrade] Applying 6.1 change: 16 - Reduce all 256 byte columns to 255 bytes in dependencies
[upgrade] Applying 6.1 change: 17 - Adding a sync row for creating security resources
[upgrade] Applying 6.1 change: 18 - Update sec_resource names
[upgrade] Applying 6.1 change: 19 - Add category column to sec_action
[upgrade] Applying 6.1 change: 20 - Adding a sync row for getting resource config entries
[upgrade] Applying 6.1 change: 21 - pl_plugin_command backwards compatibility
[upgrade] Applying 6.1 change: 22 - Make sec_action name index non-unique
[upgrade] Applying 6.1 change: 23 - Add missing indexed to foreign keys
[upgrade] Applying 6.1 change: 24 - Allow Desired Inventory without a request
[upgrade] Applying 6.1 change: 25 - Add artifact list permission
[upgrade] Applying 6.1 change: 26 - Add property context mapping index counter
[upgrade] Applying n1_6.0.2 change: 1 - Add dismiss attribute to license log entries
[upgrade] Applying n1_6.0.2 change: 2 - Adding integration failure tag to components
[upgrade] Applying n1_6.0.2 change: 3 - Add the "map to environment" resource permission
[upgrade] Applying n1_6.0.2 change: 4 - Add additional resource permissions
[upgrade] Applying n1_6.0.2 change: 5 - Add sub_tag column to pl_plugin_command
[upgrade] Applying n1_6.0.2 change: 6 - Changing status inactivation to status deletion
[upgrade] Applying n1_6.0.2 change: 7 - Changing config template inactivation to deletion
[upgrade] Applying n1_6.0.2 change: 8 - add component_tag_id column to ds_resource
[upgrade] Applying n1_6.0.2 change: 9 - Add copied activities
[upgrade] Applying n1_6.0.2 change: 10 - Removing database storage of server/agent messages
[upgrade] Applying n1_6.0.2 change: 11 - Adding sizeOnDisk column to Version to keep track of size.
[upgrade] Applying n1_6.0.2 change: 12 - Update numeric columns to integer
[upgrade] Applying n1_6.0.2 change: 13 - Add Component Type field to components
[upgrade] Applying n1_6.0.2 change: 14 - Setting artifact and WinRS agent settings to be ID instead of name references
[upgrade] Applying n1_6.0.2 change: 15 - Standardizing action names for cloud connections
[upgrade] Applying n1_6.0.2 change: 16 - Create lock table for ptr store
[upgrade] Applying n1_6.0.2 change: 17 - Make archived versions with size on disk to be 0
[upgrade] Applying n1_6.0.2 change: 18 - Create table for version upgrades
[upgrade] Applying n1_6.0.2 change: 19 - Adding a column for tracking errors encountered related to agents
[upgrade] Applying n1_6.0.2 change: 20 - Adding support for HTTP property definitions
[upgrade] Applying n1_6.0.2 change: 21 - Landscaper integration to create environments from blueprint
[upgrade] Applying n1_6.0.2 change: 22 - Splitting snapshot locked state into version and config locking
[upgrade] Applying n1_6.0.2 change: 23 - Adding index to pl_source_config_execution
[upgrade] Applying n1_6.0.2 change: 24 - Add ignorequalifiers column to components
[upgrade] Applying n1_6.0.2 change: 25 - Adding a table to track request performance
[upgrade] Applying n1_6.0.2 change: 26 - Adding ghosting support for authorization realms
[upgrade] Applying n1_6.0.2 change: 27 - Finding references to deleted users and setting them to admin.
[upgrade] Applying n1_6.0.2 change: 28 - Correcting references to resource roles from resource roles and components
[upgrade] Applying n1_6.0.2 change: 29 - Implementing timeouts for unacked plugin command requests.
[upgrade] Applying n1_6.0.2 change: 30 - Indexing audit records. (This update may take some time)
[upgrade] Applying n1_6.0.2 change: 31 - Updating Process Lock Tables
[upgrade] Applying n1_6.0.2 change: 32 - Making changes to support OAuth properties and scripted properties.
[upgrade] Applying n1_6.0.2 change: 33 - Disabling SSLv3
[upgrade] Applying n1_6.0.2 change: 34 - Adding IP address tracking to auditing
[upgrade] Applying n1_6.1.1 change: 1 - Adding a list of other permissible parent resource roles for resource roles
[upgrade] Applying n1_6.1.1 change: 2 - Allowing plugin commands to be associated with multiple resource roles
[upgrade] Applying n1_6.1.1 change: 3 - Adding a default resource name property setting to resource roles
[upgrade] Applying n1_6.1.1 change: 4 - Adding tracking of discovery commands executed on resources
[upgrade] Applying n1_6.1.1 change: 5 - Changing environment instance ID from integer to string
[upgrade] Applying n1_6.1.1 change: 6 - Add IPAS Logical Node resource role
[upgrade] Applying n1_6.1.1 change: 7 - Add default children for resource roles
[upgrade] Applying n1_6.1.1 change: 8 - Add foldername options for allowed parent roles
[upgrade] Applying n1_6.1.1 change: 9 - Adding resolveHttpValuesUrl to HttpPropInfo
[upgrade] Applying n1_6.1.1 change: 10 - Adding tracking of metadata associated with versioned objects
[upgrade] Applying n1_6.1.1 change: 11 - Remove extraneous allowed values
[upgrade] Applying n1_6.1.1 change: 12 - Moving Component Template tags to Component
[upgrade] Applying n1_6.1.1 change: 13 - Add tables for agent topology
[upgrade] Applying n1_6.1.1 change: 14 - Converting existing blueprints into resource templates
[upgrade] Applying n1_6.1.1 change: 15 - Adding prototype flag for resources in templates
[upgrade] Applying n1_6.1.1 change: 16 - Improving auth token cleanup (Adding index to DB, this may take a while)
[upgrade] Applying n1_6.1.1 change: 17 - Adding allowed resource names
[upgrade] Applying n1_6.1.1 change: 18 - Add Type to Discovery Execution Records
[upgrade] Applying n1_6.1.1 change: 19 - Add HATimer lock for LicenseCleaner
[upgrade] Applying n1_6.1.1 change: 20 - Adding indexes to cover some queries against calendars and component process requests
[upgrade] Applying n1_6.1.1 change: 21 - Adding indexes for trace ID on process requests
[upgrade] Applying n1_6.1.1 change: 22 - Adding more indexes for Source Config Plugin Executions
[upgrade] Applying n1_6.1.1 change: 23 - Track result of agent connection test
[upgrade] Applying n1_6.1.1 change: 24 - Add last modified time to snapshots, versions, applications, and components
[upgrade] Applying n1_6.1.1 change: 25 - Change data type of property context mapping index to facilitate use of timestamps instead of integers so we can avoid concurrency issues in HA setups.
[upgrade] Applying n1_6.1.1 change: 26 - Convert overlooked column from upgrade 25 to bigint.
[upgrade] Applying n1_6.1.1 change: 27 - Updated description of "Manage Resource Roles" option.
[upgrade] Applying n1_6.1.1 change: 28 - Add tables for halock
[upgrade] Applying n1_6.1.1 change: 29 - Adding tracking of stack execution for UCDP integration
[upgrade] Applying n1_6.1.1 change: 30 - Add missing foreign key indices
[upgrade] Applying n1_6.1.1 change: 31 - Change the column width of the blueprint and configuration in external environment table
[upgrade] Applying n1_6.2 change: 1 - Add security for Application Templates
[upgrade] Applying n1_6.2 change: 2 - Add security for Environment Templates
[upgrade] Applying n1_6.2 change: 3 - Add ability to set Application Template on Applications
[upgrade] Applying n1_6.2 change: 4 - Add ability to set Environment Template on Environments
[upgrade] Applying n1_6.2 change: 5 - Increase column length for object ID in the audit log
[upgrade] Applying n1_6.2 change: 6 - Add "Create From Template" permission for applications, components and environments
[upgrade] Applying n1_6.2 change: 7 - Fix workflow metadata trace ID collation
[upgrade] Applying n1_6.2 change: 8
[upgrade] Applying n1_6.2 change: 9 - Changes to indices to help with database performance
[upgrade] Applying n1_6.2 change: 10 - Adding indices from the security project
[upgrade] Applying n1_6.2 change: 11 - Adding indices from the inventory project
[upgrade] Applying n1_6.2 change: 12 - Adding indices from the property-sheets project
[upgrade] Applying n1_6.2 change: 13 - Give "Create From Template" permission for applications, components and environments to all roles that have "Create" permission for that type of entity
[upgrade] Applying n1_6.2 change: 14 - Changing environment instance ID from integer to string (DB2 only)
[upgrade] Applying n1_6.2.1 change: 1 - Add phone number field
[upgrade] Applying n1_6.2.1 change: 2 - Add locking mechanism for processes run upon version import
[upgrade] Applying n1_6.2.1 change: 3 - Add lock request creation date for FIFO ordering
[upgrade] Applying n1_6.2.1 change: 4 - Listing workflow traces for deletion
[upgrade] Applying n1_6.2.1 change: 5 - Add exec ack resend columns
[upgrade] Applying n1_6.2.1 change: 6 - Allow authentication realms to support multiple authorization realms
[upgrade] Applying n1_6.2.1 change: 7 - Cleaning API performance log
[upgrade] Applying n1_6.2.1 change: 8 - Adding ability to save information from Agent Relays
[upgrade] Applying n1_6.2.1 change: 9 - Adding last_contact field for Agent table
[upgrade] Applying n1_6.2.1 change: 10 - Adding index to improve resource tree performance (skipped in mysql)
[upgrade] Applying n1_6.2.1 change: 11 - Adding the ability to override cleanup settings on environment
[upgrade] Applying n1_6.2.1 change: 12 - Add new unique index for security performance
[upgrade] Applying n1_6.2.1 change: 13 - Adding relay_hostname field for Relay table
[upgrade] Applying n1_6.2.1 change: 14 - Adding index to relay_id field in Agent table

06 September 16
Senior Release Engineer at a retailer with 501-1,000 employeesReal User

The server did not start right away after the upgrade. We got the following error in the stdout log file (not deployserver.out).

2016-09-02 08:54:28,521 INFO main com.urbancode.ds.UDeployServer - Starting Versioned File Storage...
2016-09-02 08:54:28,535 WARN RecordMetadataService org.hibernate.util.JDBCExceptionReporter - SQL Error: 1665, SQLState: HY000
2016-09-02 08:54:28,535 ERROR RecordMetadataService org.hibernate.util.JDBCExceptionReporter - Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
2016-09-02 08:54:28,537 INFO main com.urbancode.ds.UDeployServer - done
Exception in thread "RecordMetadataService" org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
...... more java dump

Our DB team recognized this immediately and fixed the problem. The server started find after that.

06 September 16
Senior Release Engineer at a retailer with 501-1,000 employeesReal User

There has been one manual change I've needed to make so far. Some components reported having version import failures. Our artifacts are pushed from Jenkins and should not be imported automatically. I went to each component and unchecked the option to import versions automatically.

06 September 16
Guest
Sign Up with Email