he story of my Helix implementations Presentation Discussion My experience with Helix Multisite with H elix architecture using Unicorn H abitat module for Sitecore Hackathlon ID: 646989
Download Presentation The PPT/PDF document "Build your own Habitat T" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Build your own Habitat
The story of my Helix implementations
Presentation
DiscussionSlide2
My experience
with Helix
Multisite with Helix architecture using Unicorn
Habitat module for Sitecore Hackathlon 2016
made
for
funMultisite with Helix & TDS built according to best practicesSitecore marketplace module using Helix architecture
which didn’t go well (standard n-tier application with habitat build process)Slide3
Number of d
ependencies vs Effort
What is Helix ArchitectureSlide4
Smart approach to create complex websites
Helix ArchitectureSlide5
First decission
: TDS or Unicorn?
Usually:
In Helix:
It’s
customer (budget) driven anyway
…
>>
>Slide6
Helix
on Unicorn
Hint which item belongs to which project is great
Projects dependencies in configuration works (and can be checked globally on unicorn.aspx page)Slide7
Helix
on Unicorn
Convenient deployment on
local machine with Habitat gulp scripts (deploy selected layer, auto-
deploy
CSS,
cshtml…) Can deploy selected configuration (like only features of particular website) using unicorn.aspx.
Rainbow
Code
Generation
is not as straightforward
as TDS
M
emory
issues
in
build script, if syncing whole solution with huge numer of items:
Change scripts/unicorn.js:var syncScript
=__dirname + "/Unicorn/./Sync.ps1 -secret " + secret + " -url
" + url;var options = { cwd: __
dirname
+ "/
Unicorn
/",
maxBuffer
: 1024 * 400
};
Orphant
items
in
sync
directorySlide8
Helix
on TDS
Even more projects - XXX.Feature.YYY, XXX.Feature.YYY.Master
, XXX.Feature.YYY.Core)Project dependencies can’t be displayed in single location (
you don’t want to open every project
…
)Not easy to sync selected layers or projects (only one or all). TdsGlobal.config + Deploy Solution
Sync
all
TDS
Projects
using
HistorySlide9
Helix
on TDS
Deployment is slow
. Hedhehog has solution for this - use one TDS project with rules http://www.hhog.com/blog/sitecore-helix-fxcop-rules) Problems with namespaces in code generation
U
se your own .
tt files. Header Transform File: using GlassMapper.Sc.Fields;
using
Sitecore.Data
….
using
SmartSitecore.Foundation.PageBase.Models
; //
location
of
GlassBase
class
Github sample without code gen and it’s not as supported as Unicorn code. No gulp
tasks usage – need to modify the one for Unicorn
. Anyway works surprisingly good Slide10
CI/CD deployment of
Helix with
Unicorn
CodeStandard way with Web Deploy
or
Octopus. If you keep the convention easy to deploy single site
only
in
multisite
solution
(
because
of
folders
separation).Items via Unicorn
Copy .yml from selected folders to synchronization directory on the server (possible via nuget package, or Octopus)Automatic sync of selected configuration
(layer or project) with Octopus script
: https://www.sitecorenutsbolts.net/2016/03/14/Octopus-Deploy-Step-for-Unicorn-Sync/ Slide11
CI/CD deployment of
Helix with TDS
Code
Same as UnicornItems via TDS
Aggregation project to improve performance and remove
not
needed content items. It will create single .update package file.
Deploy as usual with Sitecore Package Deployer or Sitecore.Ship
Nuget package with items:Slide12
Developer/
Architect’s
Helix ConcernsSlide13
Is
it a
Feature or Foundation?
If you know all
the
details
at startup, plan it.If not don’t care too much,
it
can
be
refactored
easily
. Slide14
Component =
Feature?
Feature
may be something bigger than single componentSlide15
But
if…
Feature
depends on another feature
Split
it
,
instead
of
moving
whole
feature to foundation layer
,
just because other features have reference to it
.Slide16
More
tips
Avoid too atomic features – you
will end with hundreds of .csprojIf you place too much code in Foundation
,
it become Feature
(remember: Foundation = stable code)Document your projects (after 3 months you may not remember what is your 58th
project about)
All official samples are without
Solr
,
Glass.Mapper
and auto-
generated
model
classesSlide17
Other Benefits
of Helix
architecture
Code merging (for fans of merging TDS .csproj with hundreds of items)Build your
VS
templates
for your projects or use https://marketplace.visualstudio.com/items?itemName=AndersLaublaubplusco.SitecoreHelixVisualStudioTemplatesArchitecture is well
known
,
easier
onboarding
proces for
new
developersSlide18
Implementing
helixed
sitecore module
Architecture is great for thisSingle Feature or Foundation .
csproj
= Module
Looks good on your github Slide19
Thanks!
Tomasz Juranekhttp://smartsitecore.com
https://www.linkedin.com/in/tjuranek