SharePoint 2013 Development on a Mac

SharePoint 2013 Development on a Mac

Posted by on Monday, July 29th, 2013  

 

My name is Jason Cribbet and I have a confession to make. I’m a SharePoint developer and I use a Mac… and I love it. Just to clear some things out up front, I’m not an Apple fanatic, though it might appear that way if you take inventory of my personal hardware rundown. I just like to have everything work together, easily. I write this post from my Macbook Pro and this machine has been, hands down, the most stable, lightweight, and dependable machine I’ve ever used.

So where does SharePoint development fit into this picture? Simple, it sits contained within buckets of virtual machines. My SharePoint development lives and dies through the use of VMs. In previous lives, I’ve had souped up Lenovos, Dells, and even HPs (did I just say that out loud?) as my hardware platform and none of them have had the responsiveness of my MacBook. So far, my rig has worked flawlessly with a number of different OSs and SharePoint configurations.


Full disclosure here, on not one of those previous platforms have I had 100% flash based memory. Spindles are no more for my current config… I do realize that this probably counts for much of the responsiveness and speed increases that I’ve experienced.

Um, I thought we were talking about development?

Yeah, so back to the topic of development. As I mentioned before, all of my development work is done on VMs running on my Mac. There are a couple of Mac options for VM software out there, notably VMFusion and Parallels. Since I spent most of my Windows world working with VMWare Workstation, it was only a natural segue to try VMFusion and see where it got me. Needless to say, I haven’t had a need to give Parallels a run so I don’t have much to say about it. VMFusion does the trick and gives me all the options and configuration modifications I need to make thing work as I need.  As for my recommendation, it would have to be for VMFusion. I neither know nor need anything more than what it offers.

For the development environments, there are a number of requirements that I have which will allow for me to bounce around to different environments as needed during my daily activities. Here are some of the primary ones:

  • Drive space is limited – With only 256 GB on my local drive, space is a premium. There will be use of external drives but the local drive is by far the quickest.
  • RAM is limited – The max RAM for my configuration is 8GB… not much I can do about that.
  • Support SharePoint 2013 – SP 2013 is a resource beast to say the least. I think we should all be aware of that by now.
  • Support legacy SP 2010 and 2007 development – We all need to be a little nostalgic every now and again.
  • Replicate actual farm deployments as much as possible
  • Only 2 USB 3.0 ports available

Ok, with all that in mind, here’s how the VM breakdown goes. I use just about all of the local drive storage that’s available, with a slight buffer of roughly 20GB, and two external USB 3.0 SSDs. The following is how everything is divvied out:

SharePoint 2013 Development on a Mac

Figure 1: Cribtoso Development Environment Architecture

MacBook Local Drive

In addition to the root Mac OS X instance that is running on the local drive, the following two virtual machines are present.

Windows 8.1 Preview VM

On my local drive, there are two main VMs, a Windows 8.1 instance and a Windows Server instance that is the basis for my Cribtoso domain. The Windows machine is there and available for whenever I need to jump into Windows to get something done. Whether it be that I need to get into Microsoft Project/Visio or if I need to jump into SharePoint Designer quickly. Basically, it allows me to do anything that I’m not able to do with my Mac.

Cribtoso AD VM

Here’s where the development environment starts to come into play. Additionally, on my local drive, I have a small Windows Server instance which acts as my Active Directory controller and DNS controller. The AD contains about 200 test accounts and the DNS manages all of the domain routing for my development environments. The Cribtoso AD machine has 2 virtual network cards, the 1st is shared with the MAC address of the root machine and provides a connection to the internet while the 2nd is connected to a private virtual network that is configured within VMFusion. This private network will allow for all of the domain mappings and routing within my development environment.

External SSD 1

The External SSD 1 houses all of my SharePoint VMs. To ensure that the VMs fit nicely, this drive is larger at 250GB but with it being an SSD over USB 3.0, it performs very well. There are 2 VMs hosted here.

SharePoint 2013 VM

As mentioned before, SharePoint 2013 can be a beefy installation when using all components. Combine that with the local installation of SQL Server and Visual Studio and the load on the machine can get heavy quickly. For my development VMs, though I have all services installed and configured within the SharePoint environment, I make sure that CPU intensive processes like search crawls are turned off to prevent any unnecessary load on the machine. This works out quite well.

Additionally, due to the limitations of VMFusion, the max RAM that can be applied to a VM is 8GB that SP 2013 and SQL Server 2012 gobble up pretty quickly. In all, the VM performs well enough for all my development needs. There’s never been a time there has been such a bad system lag that a quick IISRESET or system restart couldn’t correct it.

With regards to the Cribtoso.com domain, this VM is added to the domain using a static IP on the Cribtoso private network and within the Cribtoso AD VM, there are multiple mappings to the SharePoint 2013 web applications. This makes for pretty URLs within my development environments using host named web applications and host named site collections that all but eliminates the use of crazy port numbers for routing of traffic in my SharePoint environments. Everything comes across good ol’ port 80.

SharePoint 2010 VM

The SharePoint 2010 VM has an almost identical configuration as the SP 2013 VM though, due to the lower system requirements of SharePoint 2010, this VM really zips along. Again, like the SP 2013 VM, this machine is added to the Cribtoso domain and multiple host named web applications and host named site collections are routed through the Cribtoso AD VM’s DNS service for pretty URLs and web traffic over port 80.

External SSD 2

External SSD 2 houses all VMs for development outside of SharePoint. There are a number of sweet enhancements to Azure services over the last couple of months and the VMs on this SSD allow me to sandbox out prototypes without tarnishing my SharePoint VMs. Again, I’m working with an SSD over USB 3.0 so it’s pretty peppy.

Backups and Maintenance of VMs

I wish that I could say I had a more robust backup strategy for my VMs but it’s pretty primitive, though effective. SSD space is expensive, no doubt, but that doesn’t mean I have to live completely on the edge. My VMs are protected using a combination of the following:

  • Snapshots – I keep at most one snapshot of each VM so that I can always revert to a working instance in the event that something goes catastrophic. Snapshots are always good practice.
  • 2nd Virtual Drive – For every VM, there is an additional virtual drive that is marked as Persistent. I will be sure to map all my local folders to this persistent drive. This way, if I have to revert to a snapshot, the data on the persistent drive remains in its current state.
  • Source Control with Microsoft Team Foundation Server – Like every good developer, source code gets stored in a source code repository. If things get so bad such as a drive failure that a snapshot can’t help with, my code is always in TFS. At worst, I have to rebuild my VM from the ground up, connect up with TFS, and download a recent version (usually daily). Some time is still lost but it could be much much worse.

~Jason

Subscribe to RSS Feed

Sign Up for Newsletter

7

7

comments

    Oct 13
    2013

    Krista Weber

    I was wondering how to set this up on my Mac. I have used Bootcamp in the past, but don’t like having to restart all the time. I used Parallels and it was choppy and unresponsive. I will have to give VMware a try!

    Reply
      Oct 23
      2013

      jason.cribbet

      Krista, Thanks for the feedback! I’ve never had an issue with VMWare. Definitely my go to virtualization platform. Recently, I’ve been using Azure in some scenarios as a development and prototyping platform. It’s worked out well and is a good option if your system isn’t heavy on hardware resources or if you want to provide access to users outside of your organization. You should give it a try.

      Reply
    Feb 17
    2014

    Robin Thakur

    Thanks for your post, I think I have read it before, but nice to see somebody else doing what I do! I use a (purposely) couple gens old Macbook pro 15 which i upgraded the ram to 16GB and the harddisk to 750GB hybrid from Seagate. I will probably swap it for a RMBP soon but would need to get an enclosure for the SSDs. I use Virtual Box and the speed is pretty good. I might try VMware Fusion for my next build as Virtual box has its fair share of quirks.

    Reply
    May 05
    2014

    Bhanu

    Hi Jason,

    I was so happy to see your post and in with in last one week I have got all the necessary hardware and software to setup my SharePoint 2013 environment on my mid 2012 MacBook pro. I copied the existing VMs (which were created in hyper-v) and created new ones using those images in VMWare Fusion 6 Pro. I have one VM with Domain Controller and other with Sharepoint 2013 and SQL server 2012.

    When I try to create a web application I get “Unable to get domain DNS or forest DNS for domain”. I believe this is due to the fact that I haven’t properly configured the DNS in the SharePoint 2013 VM. I have used NAT as my network adapter in both the machines which is why I am not able to get the IP of DC VM and provide that as DNS server.

    Please let me know some tips on this.

    Reply
    May 05
    2014

    Bhanu

    Never mind I got what I did wrong. Thanks again for the post.

    Reply
    Sep 22
    2014

    SK

    Hi,

    Is your MBP only 8GB total memory?

    Reply
      Sep 22
      2014

      Jason Cribbet

      Hey SK,

      My MBP is 16GB total. The reference to the 8GB was in regards to the fact that for my development machines, the max that VM Fusion will allow for a VM is 8GB. Maxing out the 8GB for my SP VM allows it to be responsive enough to be usable but doesn’t tax the host OS to the point of becoming unusable.

      Thanks for the response.

      ~Jason

      Reply

Leave a Reply