SharePoint Online 2013 ALM Practices
- Published on
- Reading time
- Authors
- Name
- Simon Waight
- Mastodon
- @simonwaight
SharePoint has always been a bit a challenge when it comes to structured ALM and developer practices which is something Microsoft partially addressed with the release of SharePoint and Visual Studio 2010. Deploying and building solutions for SharePoint 2013 pretty much retains most of the IP from 2010 with the noted deprecation of Sandbox Solutions (this means they'll be gone in SharePoint vNext).
As part of the project I'm leading at Kloud at the moment we are rebuilding an Intranet so it runs on SharePoint Online 2013 so I wanted to share some of the Application Lifecycle Management (ALM) processes we've been using.
Packaging
Most of the work we have been doing to date has leveraged existing features within the SharePoint core - we have, however, spent time utilising the Visual Studio 2012 SharePoint templates to package our customisations so they can be moved between multiple environments. SharePoint Online still provides support for Sandboxed Solutions and we've found that they provide a convenient way to deploy elements that are not developed as Apps. Designer packages can also be exported and edited in Visual Studio and produce a re-deployable package (which result in Sandboxed Solutions).
Powershell
At the time of writing, the number of Powershell Commandlets for managing SharePoint Online are substantially less those for on-premise. If you need to modify any element below a Site Collection you are pretty much forced to write custom tooling or perform the tasks manually - we have made a call in come cases to build tooling using the Client Side Object Model (CSOM) or to perform tasks manually.
Development Environment
Microsoft has invested some time in the developer experience around SharePoint Online and now provides you with free access to an "Office 365 Developer Site" which gives you a single-license Office 365 environment in which to develop solutions. The General Availability of Office 365 Wave 15 (the 2013 suite) sees these sites only being available for businesses holding enterprise (E3 or E4) licenses. Anyone else will need to utilise a 30 day trial tenant.
We have had each team member setup their own site and develop solutions locally prior to rolling them into our main deployment. Packaging and deployment is obviously key here as we need to be able to keep the developer instances in sync with each other and the easiest way to achieve that is with WSPs that can be redeployed as required.
One other item we have done around development is to utilise an on-premise setup in a VM to provide developers with a more rapid development experience in some cases (and more transparent troubleshooting). As you mostly stick to the SharePoint CSOM a lot of your development these days resides in JavaScript which means you shouldn't hit any snags in relying in on-premise / full-trust features in your delivered solutions.
Note that the Office 365 Developer Site is a single-license environment which means you can't do multi-user testing or content targeting. That's where test environments come into play!
Test Environment
The best way to achieve a more structured ALM approach with Office 365 is to leverage an intermediate test environment - the easiest way for anyone to achieve this is to register for a trial Office 365 tenant - while only technically available for 30 days this still provides you with the ability to test prior to deploying to your production environment.
Once everything is tested and good to go into production you're already in a position to know the steps involved in deployment!
As you can see - it's still not a perfect world for SharePoint ALM, but with a little work you can get to a point where you are at least starting to enforce a little rigour around build and deployment.
Hope this helps!
Useful Links
- Provision an Office 365 Developer Site. (Note: no longer valid with GA of Wave 15).
- Provision a Developer Site using your existing Office 365 subscription.
- View SharePoint Online Powershell Commandlets.