1
votes

We want to install Dynamics CRM 2013 for 10 users. We are thinking about 2 approaches:

  1. Install only one instance of CRM and SQL Server on two separate servers machines. CRM server machine will have front end server role and SQL Server machine will have back end server role. All 10 users will browse and work on same instance of CRM.
  2. Install SQL Server on a separate machine and install CRM on the machines of all the 10 users. All 10 CRM instances will point to the same organization created on SQL Server. Each users will use CRM installed on their own system but their customizations will be published on one organisation since all CRMs are pointing to the same organisation.

Could anyone let me know which approach will be better in terms of performance.

Update after the reply of Draiden and Kye:

All 10 machines will be used only for development and IFD or NLB will never be required. In one of our previous projects, we had used the approach of 1SQL-SSRS and 1CRM (Full server). During peak development periods when around 8 users were connected to CRM doing customization, memory usage of CRM server would go to around 85% - 95%. At this point, CRM used to become non-responsive.

In order to avoid the high memory usage, we are thinking of approach 2 where CRM memory usage will be distributed among multiple machines. Also if someone wants to debug a plugin, they will debug on their own CRM (and will not block others). Having one SQL Server in the backend will enable developers to share the same data. Also their customization changes will be published on one central organization.

3
Kye and Draiden: You both are in the favor of having developers their own CRM and SQL locally on their machines. This solution looks good to me with only one caveat: each developer's working solution (customizations) shall be merged on a central CRM (instead of TFS) at the end of the day. Wouldn't this CRM solution merge cause any problem like overriding others changes or some kind of conflict etc.?Indie.Dev

3 Answers

0
votes

The second solutions involves the creation of a front-end server for each user? I don't think that is a viable (really nice way) to install crm. Also If you will be in the situation of setup something else, like IFD you will need to install and setup a NLB and teach everyone to change the url. The first approach you are suggesting is the better one, but usually you go with 2 servers, 1 sql and 1 crm full installation. Performance wise shouldn't make much of a difference since the user using the system will be just 10 people.

So I would say that solution 1 doesn't help you much, because you still keep the db an the backend on the same machine, while solution 2 still has a bottleneck when you are doing SQL operations, plus CRM is quite demanding, and let run the server on a user machine will choke it.

Go with a more traditional approach. 1 SQL-SSRS and 1 CRM, or if you think that you will have performance issues go with 1 SQL-SSRS, 1 Back-End server a NLB and as many front-end you want/need. Again for 10 users having multiple front end server doesn't make much sense.

0
votes

Please refer to this TechNet article for supported configurations.

For best performance, you will want to use a multi-server architecture. Furthermore, in order to have the data be shared between the users, they would need to be using the same environment.

0
votes

Could anyone let me know which approach will be better in terms of performance.

I don't think option 2 is viable, as it means installing the CRM web server on 10 machines:

  • Running IIS on client machines will start using up memory your end users should be using for desktop applications.
  • If you ever need to scale up the front end machines, you'll need to do this 10 times.
  • Since your users may not be using CRM all day, IIS will eventually recycle, making the first time a user access the site seem slower then expected.

I would install the CRM webs server and database on separate machines, following the minimum recommended hardware requirements.

https://technet.microsoft.com/en-us/library/hh699840(v=crm.6).aspx

Update - If your requirement is around a development environment, I would use two servers for Production and two servers for Test (to mimic Production).

For the development environment - I'd ask developers to install CRM and SQL locally so that they can debug their own code, and then push their finished code to a central repository such as Github or TFS. It would then be someone's (or something's) role to pull down updated code, prepare and CRM solution and deploy to the next environment.