SlideShare a Scribd company logo
1 of 50
Download to read offline
Sitecore Development
Approach Evolution –
Destination Helix
Peter Nazarov
Sitecore Development and Delivery Consultant
Enterprise Software
What is undercover?
Modern Non-Functional
Enterprise Software
Requirements
• Fast Time to Market
• ROI
• Cost of Delay Risk Mitigation
• Total Cost of Ownership
Consistency
Maintainability
Resilience
Reliability
Scalability
Time to Market
• It is important to have an ability to put a new feature to production fast
• Fast enough to make customers happy
• Faster than competitors
ROI
• The money we invest in software should come back as “Profit” (a benefit for
the business) after a reasonable period
Cost of Delay
• If the software delivery is delayed it causes extra direct and indirect costs to
the business, which may be expensive and put a feasibility of the software
solution development under the question.
Total Cost of Ownership
• It is important to understand overall cost of software solution for the period
starting Requirement Gathering till the End of Life.
Maintainability (Software Code)
• Software solution maintenance and evolution costs should be reasonable –
should be in order lower than the cost of replacing the solution with a new one.
• Regular Approach to Maintainability (Software Code)
• Follow Software Architecture and Software Design Principles
• Perform Solution Code Review Regularly
• Monitor Code Metrics
• Maintainability Index
• Coupling
• Cohesion
• Cyclomatic complexity
Scalability
• Modern software needs to have an ability to scale vertically and horizontally
to support a dynamic change to performance and storage capacity
requirements.
• Regular Approach to Scalability
• Azure and other cloud bases systems
• Private Cloud is still an option
Resilience
• Software solution should be resilient to the hardware and software faults
• Regular Approach to Resilience:
• Use resilient underlying platforms and systems
• Resilient hosting infrastructure like Azure
• SQL Server and SQL Azure
• MongoDB
• Azure Search
• Solr
• Azure Web Apps
Reliability
• The business and the customers need to trust that to the software solution.
• Regular Approach to Reliability:
• Test Automation
• Regression Testing
• Unit Tests
• Integration Tests
• Spec Flow
• Selenium
• Live System Monitoring
Consistency
The investment may become
a waste if the solution design
or implementation is
inconsistent.
Sitecore Development
Approach Retrospective
How did we approach it?
Development Approach Evolution
0
2
4
6
8
10
12
14
16
2011 2013 2015 2017
Code is Separated from Sitecore Instance
Sitecore Items Serialisation
CI
N-Tier Architecture
DVCS with Branching Strategy
Continuous Deployment
No Downtime Deployments
FakeDB
Unit Tests
DDD
Automated Regression Testing
Dynamic Scalability
Modular Architecture
Coud-First Approach
Sitecore Helix
Helix is a set of overall design
principles and conventions for
Sitecore development
Does Helix Solve a Business Problem?
• Helix principles help the business, indeed.
• Increase ROI
• Mitigate Cost of Delay associated risks
• Reduce Time to Market Cycle
• Decrease Total Cost of Ownership
What is the Magic?
• Modular Architecture that focuses on key principles:
• Flexibility
• Extensibility
• Simplicity
Modular Architecture
Is it just as simple as splitting a monolithic solution into modules?
Uncontrolled Dependencies, High Coupling
Uncontrolled Dependencies, High Coupling
What does it mean to the business?
Modular Architecture
• Controlled Dependencies, Low Coupling
Controlled Dependencies, Low Coupling
What does it mean to the business?
Sitecore Habitat
Habitat is a real Sitecore project
implementation example that
allows developers to see how
Helix is applied and lets
developers experience a project
based on these principles
Using Habitat As a Starting Point
• Enables Sitecore Code Solution to have a consistent
structure that makes any Sitecore project look familiar
to all Sitecore developers
• Provides existing features that can be reused to boost
your software delivery
• Would help to reduce Sitecore Support Team response
time
Is There a Quick Start?
• Read the guidelines at http://helix.sitecore.net
• Setup Habitat-based solution
Source Code and Sitecore Instance
• Option 1:
• Clone Habitat Source code from https://github.com/Sitecore/Habitat/
• Install local Sitecore instance
• Use the version Habitat currently supports.
• Option 2:
• Use Generator Habitat: https://github.com/kamsar/generator-habitat
• Install node.js with Node Package Manger (NPM)
• Install generator-habitat using PowerShell:
npm install -g yo
npm install -g generator-habitat
• Create new Habitat based solution:
• Install new Sitecore instance in a separate location (e.g.: C:websitesmy-solution-website)
• Use the version Habitat currently supports
• In the directory where you like to create your new solution source code (e.g.: C:codemy-solution-code):
• Run: yo habitat
• Follow prompts to create a connect the source code to the installed Sitecore instance website
Adjust Habitat solution
• Rename Solution
• Use “Habitat” Project module example to create a Project module for
your website(s).
• Then delete “Habitat” Project.
• Remove Habitat modules that you don’t need
• Feature Modules
• You may like to delete all modules and create your solution specific ones
• Tips: Keep a separate instance of a complete Sitecore Habitat solution to use for
references or for bring back some Habitat modules later on
• Foundation Modules
• There are a few well-designed modules that would be useful to keep
• You should consider whether to keep or remove the other Foundation Modules
Deploy Your Code
• Open Solution Directory and run npm install using PowerShell
• In Visual Studio open Tools > Other Windows > Task Runner Explorer and
run default task
WFFM
• You may have Unicorn Sync issues because of WFFM
• Consider removing Habitat features related WFFM
• If you need a form builder upgrade to Sitecore 9
Adding new Feature and Foundation Modules
• Create the corresponding solution folder
• In the source cooed root directory use PowerShell to run
yo habitat:feature or yo habitat:foundation to generate
module code and test projects.
• Add code and test projects to your solution.
• Example: Adding “Accounts” Feature module:
Mind Dependency Direction
Key Pillars of Good Modular Architecture
• High Cohesion of Modules
• What should reside in the same module?
• What works together should live tougher (Functional Cohesion)
• Low Coupling Modules
• Minimise dependency between modules
Broken Helix Solution
Proper Helix Solution
Sitecore Items Serialization
• Unicorn (Default)
• https://github.com/kamsar/Unicorn
• TDS (Supported)
• https://www.teamdevelopmentforsitecore.com/
Is Anything Missing?
No ORM?
• Is Glass.Mapper.Sc part of Habitat?
• No, it is not. However it is easy to add it!
• Introduce “Orm” Foundation module
• Install Glass.Mapper.Sc to it
• If may also like to add Sitecore item base
interface and class models. E.g.:
• ISitecoreItemBase.cs
• SitecoreItemBase.cs
ORM - Generate Models Code
for Sitecore Templates
• You can use free T4 code generation tools
• T4 Sitecore Code Generator by Robin Hermanussen (https://github.com/hermanussen)
• https://github.com/hermanussen/sitecore.codegenerator/blob/master/README.md
• You need to install T4 Toolbox Visual Studio to run T4 templates:
• https://marketplace.visualstudio.com/items?itemName=OlegVSych.T4ToolboxforVisualStudio2017
• To enable T4 template code syntax highlight install T4 Editor:
• https://www.devart.com/t4-editor/download.html
Yes, we are good to go now!
Are there some other tips?
Some Other Tips…
Number of Modules Complexity Challenge
• Large Sitecore Solution may contain about 35-50 modules – about 70-100
projects (Code and Test)
• However, it does not need to be big without a reason
The Beauty of Module Independence
Separate Sitecore Instance from Code
• You need to have an ability to make a “fresh” deployment to Sitecore
instance
• You would need to have an ability to remove you customizations from Sitecore
instance and apply new customization. You can use the following techniques to
roll-back the file-system state:
• Version Control System (e.g. Git)
• SIM
• PowerShell (Sitecore 9)
FE Development for Sitecore
• Like to like FE and BE partial structure
• For example: Handlebars Mark-up + JSON Data Models would allow to replicate
Sitecore multi-layer partials nesting: Layout, Sublayout, Rendering, Nested
Rendering.
• Integration to BE: Replaced with Handlebars syntax with .NET + Sitecore ORM code.
• http://handlebarsjs.com/partials.html
• You may consider separating out FE code into Git branch or Repo
• Use Separate FE QA Environment and FE-only Testing process (no back-end)
• FE development without a need to make a manual mark-up integration to
Sitecore?
• Consider using Sitecore JSS (In Preview)
• React.js
• Other FE framework support is upcoming…
CI Run and Deployment
• Build the code (e.g. TeamCity)
• Quickest option – use the same Habitat provided Gulp build script
• Deploy (e.g. Octopus Deploy)
• Changes you may like to make
• Replace Gulp MSBuild based Configuration Files Transformation task with a call to
“Microsoft.Web.XmlTransform.dll”
• Call PowerShell script file directly to run Unicorn Sync
Does it Work in Real Life?
Any success stories?
Real Experience with Habitat-Based Software Delivery
• Small Solution - 8 weeks from scratch
• A content website with Sitecore Search features and lightweight third party
integration (including CI and CD).
• Agile Team:
• 1 UI/UX
• 1 FE Dev
• 1 Sitecore BE Dev
• Large Solution– International multi-country ongoing programme
(2 years+ roadmap) for large international business
• Consistent Brand Presentation
• Separated Code Base for EU and USA
• Variety of Back-end Systems Integration
• Distributed Agile Teams: 20-30 people
Habitat Related Articles and Tools
• Helix Modules
• Helix Guidelines: http://helix.sitecore.net
• Cohesion: https://en.wikipedia.org/wiki/Cohesion_(computer_science)#Types_of_cohesion
• Coupling: https://en.wikipedia.org/wiki/Coupling_(computer_programming)
• Alan Coates’s Blog
• https://blog.coates.dk/2017/01/17/helix-and-modular-architecture/
• https://blog.coates.dk/2017/04/18/sitecore-helix-modules-that-need-to-reference-another-module-in-the-same-layer-part-1/
• https://blog.coates.dk/2017/04/26/sitecore-helix-modules-that-need-to-reference-another-module-in-the-same-layer-part-2/
• https://blog.coates.dk/2017/04/08/sitecore-helix-modules-that-need-to-reference-another-module-in-the-same-layer-part-3/
• T4 Tools
• https://github.com/hermanussen/sitecore.codegenerator/blob/master/README.md
• Sitecore Unicorn
• https://github.com/kamsar/Unicorn/releases/tag/4.0.0
• Glass.Mapper.Sc
• http://www.glass.lu/Mapper/Sc/Tutorials
• Node Package Manager
• https://www.npmjs.com/get-npm
• Gulp
• https://gulpjs.com/
• Sitecore Fake Database
• https://github.com/sergeyshushlyapin/Sitecore.FakeDb
• JSS: https://jss.sitecore.net/
Thank You
Staying in Touch
LinkedIn: linkedin.com/in/peternazarov
Slack: sitecorechat.slack.com
Your Software Solution + Helix & Habitat $u¢¢€$$=
Q&A
Staying in Touch
LinkedIn: linkedin.com/in/peternazarov
Slack: sitecorechat.slack.com
Your Software Solution + Helix & Habitat $u¢¢€$$=

More Related Content

What's hot

Grails At Linked
Grails At LinkedGrails At Linked
Grails At LinkedLinkedIn
 
O365Con18 - SharePoint Framework for Administrators - Waldek Mastykarz
O365Con18 - SharePoint Framework for Administrators - Waldek MastykarzO365Con18 - SharePoint Framework for Administrators - Waldek Mastykarz
O365Con18 - SharePoint Framework for Administrators - Waldek MastykarzNCCOMMS
 
Java APIs - the missing manual
Java APIs - the missing manualJava APIs - the missing manual
Java APIs - the missing manualHendrik Ebbers
 
Getting started with Office 365 SharePoint 2010 online development
Getting started with Office 365 SharePoint 2010 online developmentGetting started with Office 365 SharePoint 2010 online development
Getting started with Office 365 SharePoint 2010 online developmentJeremy Thake
 
SOA Suite 12c Customer implementation
SOA Suite 12c Customer implementationSOA Suite 12c Customer implementation
SOA Suite 12c Customer implementationMichel Schildmeijer
 
Introduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator TitaniumIntroduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator TitaniumAaron Saunders
 
JIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesJIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesAtlassian
 
Big ideas in small packages - How microservices helped us to scale our vision
Big ideas in small packages  - How microservices helped us to scale our visionBig ideas in small packages  - How microservices helped us to scale our vision
Big ideas in small packages - How microservices helped us to scale our visionSebastian Schleicher
 
Mainframe, the fast PHP framework
Mainframe, the fast PHP frameworkMainframe, the fast PHP framework
Mainframe, the fast PHP frameworkbibakis
 
VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...
VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...
VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...VMworld
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the CloudRyan Cuprak
 
Adobe Experience Manager - Replication deep dive
Adobe Experience Manager - Replication deep diveAdobe Experience Manager - Replication deep dive
Adobe Experience Manager - Replication deep divemwmd
 
10 Tips to Pump Up Your Atlassian Performance
10 Tips to Pump Up Your Atlassian Performance10 Tips to Pump Up Your Atlassian Performance
10 Tips to Pump Up Your Atlassian PerformanceAtlassian
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Hannes Lowette
 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with JenkinsJadson Santos
 
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...Bartosz Chrabski
 
OSH01 - Developing SharePoint Framework Solutions for the Enterprise
OSH01 - Developing SharePoint Framework Solutions for the EnterpriseOSH01 - Developing SharePoint Framework Solutions for the Enterprise
OSH01 - Developing SharePoint Framework Solutions for the EnterpriseEric Shupps
 
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemBruno Borges
 

What's hot (20)

Grails At Linked
Grails At LinkedGrails At Linked
Grails At Linked
 
O365Con18 - SharePoint Framework for Administrators - Waldek Mastykarz
O365Con18 - SharePoint Framework for Administrators - Waldek MastykarzO365Con18 - SharePoint Framework for Administrators - Waldek Mastykarz
O365Con18 - SharePoint Framework for Administrators - Waldek Mastykarz
 
Java APIs - the missing manual
Java APIs - the missing manualJava APIs - the missing manual
Java APIs - the missing manual
 
Getting started with Office 365 SharePoint 2010 online development
Getting started with Office 365 SharePoint 2010 online developmentGetting started with Office 365 SharePoint 2010 online development
Getting started with Office 365 SharePoint 2010 online development
 
SOA Suite 12c Customer implementation
SOA Suite 12c Customer implementationSOA Suite 12c Customer implementation
SOA Suite 12c Customer implementation
 
Introduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator TitaniumIntroduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator Titanium
 
JIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesJIRA Performance After 300,000 Issues
JIRA Performance After 300,000 Issues
 
Big ideas in small packages - How microservices helped us to scale our vision
Big ideas in small packages  - How microservices helped us to scale our visionBig ideas in small packages  - How microservices helped us to scale our vision
Big ideas in small packages - How microservices helped us to scale our vision
 
Mainframe, the fast PHP framework
Mainframe, the fast PHP frameworkMainframe, the fast PHP framework
Mainframe, the fast PHP framework
 
VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...
VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...
VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
 
Adobe Experience Manager - Replication deep dive
Adobe Experience Manager - Replication deep diveAdobe Experience Manager - Replication deep dive
Adobe Experience Manager - Replication deep dive
 
10 Tips to Pump Up Your Atlassian Performance
10 Tips to Pump Up Your Atlassian Performance10 Tips to Pump Up Your Atlassian Performance
10 Tips to Pump Up Your Atlassian Performance
 
Java Desktop 2019
Java Desktop 2019Java Desktop 2019
Java Desktop 2019
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with Jenkins
 
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
 
OSH01 - Developing SharePoint Framework Solutions for the Enterprise
OSH01 - Developing SharePoint Framework Solutions for the EnterpriseOSH01 - Developing SharePoint Framework Solutions for the Enterprise
OSH01 - Developing SharePoint Framework Solutions for the Enterprise
 
Top modules
Top modulesTop modules
Top modules
 
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
 

Similar to Sitecore development approach evolution – destination helix

New life inside monolithic application
New life inside monolithic applicationNew life inside monolithic application
New life inside monolithic applicationTaras Matyashovsky
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationXPDays
 
Acing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointAcing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointJeremy Thake
 
Sitecore - what to look forward to
Sitecore - what to look forward toSitecore - what to look forward to
Sitecore - what to look forward tojinto77
 
GCP Deployment- Vertex AI
GCP Deployment- Vertex AIGCP Deployment- Vertex AI
GCP Deployment- Vertex AITriloki Gupta
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAdam Getchell
 
Why real integration developers ride Camels
Why real integration developers ride CamelsWhy real integration developers ride Camels
Why real integration developers ride CamelsChristian Posta
 
Best Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsBest Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsTaylor Lovett
 
An Overview of Hedgehog’s Tools and Modules
An Overview of Hedgehog’s Tools and ModulesAn Overview of Hedgehog’s Tools and Modules
An Overview of Hedgehog’s Tools and ModulesSean Holmesby
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableComsysto Reply GmbH
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Anupam Ranku
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud RoadGert Drapers
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studyGaetano Giunta
 
Visual studio 2012 - What's in it for me?
Visual studio 2012 - What's in it for me?Visual studio 2012 - What's in it for me?
Visual studio 2012 - What's in it for me?Jeff Bramwell
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Henry S
 
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...Perficient, Inc.
 
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023Vadym Kazulkin
 
Beyond Domino Designer
Beyond Domino DesignerBeyond Domino Designer
Beyond Domino DesignerPaul Withers
 
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the EnterpriseEnvision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the EnterpriseEnvision IT
 

Similar to Sitecore development approach evolution – destination helix (20)

New life inside monolithic application
New life inside monolithic applicationNew life inside monolithic application
New life inside monolithic application
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Acing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointAcing application lifecycle management in SharePoint
Acing application lifecycle management in SharePoint
 
Sitecore - what to look forward to
Sitecore - what to look forward toSitecore - what to look forward to
Sitecore - what to look forward to
 
Desert Code Camp Presentation
Desert Code Camp PresentationDesert Code Camp Presentation
Desert Code Camp Presentation
 
GCP Deployment- Vertex AI
GCP Deployment- Vertex AIGCP Deployment- Vertex AI
GCP Deployment- Vertex AI
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
 
Why real integration developers ride Camels
Why real integration developers ride CamelsWhy real integration developers ride Camels
Why real integration developers ride Camels
 
Best Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsBest Practices for Building WordPress Applications
Best Practices for Building WordPress Applications
 
An Overview of Hedgehog’s Tools and Modules
An Overview of Hedgehog’s Tools and ModulesAn Overview of Hedgehog’s Tools and Modules
An Overview of Hedgehog’s Tools and Modules
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuable
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud Road
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case study
 
Visual studio 2012 - What's in it for me?
Visual studio 2012 - What's in it for me?Visual studio 2012 - What's in it for me?
Visual studio 2012 - What's in it for me?
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
 
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
 
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
 
Beyond Domino Designer
Beyond Domino DesignerBeyond Domino Designer
Beyond Domino Designer
 
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the EnterpriseEnvision IT - Application Lifecycle Management for SharePoint in the Enterprise
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
 

Recently uploaded

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 

Recently uploaded (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 

Sitecore development approach evolution – destination helix

  • 1. Sitecore Development Approach Evolution – Destination Helix Peter Nazarov Sitecore Development and Delivery Consultant
  • 3. Modern Non-Functional Enterprise Software Requirements • Fast Time to Market • ROI • Cost of Delay Risk Mitigation • Total Cost of Ownership Consistency Maintainability Resilience Reliability Scalability
  • 4. Time to Market • It is important to have an ability to put a new feature to production fast • Fast enough to make customers happy • Faster than competitors
  • 5. ROI • The money we invest in software should come back as “Profit” (a benefit for the business) after a reasonable period
  • 6. Cost of Delay • If the software delivery is delayed it causes extra direct and indirect costs to the business, which may be expensive and put a feasibility of the software solution development under the question.
  • 7. Total Cost of Ownership • It is important to understand overall cost of software solution for the period starting Requirement Gathering till the End of Life.
  • 8. Maintainability (Software Code) • Software solution maintenance and evolution costs should be reasonable – should be in order lower than the cost of replacing the solution with a new one. • Regular Approach to Maintainability (Software Code) • Follow Software Architecture and Software Design Principles • Perform Solution Code Review Regularly • Monitor Code Metrics • Maintainability Index • Coupling • Cohesion • Cyclomatic complexity
  • 9. Scalability • Modern software needs to have an ability to scale vertically and horizontally to support a dynamic change to performance and storage capacity requirements. • Regular Approach to Scalability • Azure and other cloud bases systems • Private Cloud is still an option
  • 10. Resilience • Software solution should be resilient to the hardware and software faults • Regular Approach to Resilience: • Use resilient underlying platforms and systems • Resilient hosting infrastructure like Azure • SQL Server and SQL Azure • MongoDB • Azure Search • Solr • Azure Web Apps
  • 11. Reliability • The business and the customers need to trust that to the software solution. • Regular Approach to Reliability: • Test Automation • Regression Testing • Unit Tests • Integration Tests • Spec Flow • Selenium • Live System Monitoring
  • 12. Consistency The investment may become a waste if the solution design or implementation is inconsistent.
  • 14. Development Approach Evolution 0 2 4 6 8 10 12 14 16 2011 2013 2015 2017 Code is Separated from Sitecore Instance Sitecore Items Serialisation CI N-Tier Architecture DVCS with Branching Strategy Continuous Deployment No Downtime Deployments FakeDB Unit Tests DDD Automated Regression Testing Dynamic Scalability Modular Architecture Coud-First Approach
  • 15. Sitecore Helix Helix is a set of overall design principles and conventions for Sitecore development
  • 16. Does Helix Solve a Business Problem? • Helix principles help the business, indeed. • Increase ROI • Mitigate Cost of Delay associated risks • Reduce Time to Market Cycle • Decrease Total Cost of Ownership
  • 17. What is the Magic? • Modular Architecture that focuses on key principles: • Flexibility • Extensibility • Simplicity
  • 18. Modular Architecture Is it just as simple as splitting a monolithic solution into modules?
  • 20. Uncontrolled Dependencies, High Coupling What does it mean to the business?
  • 21. Modular Architecture • Controlled Dependencies, Low Coupling
  • 22. Controlled Dependencies, Low Coupling What does it mean to the business?
  • 23. Sitecore Habitat Habitat is a real Sitecore project implementation example that allows developers to see how Helix is applied and lets developers experience a project based on these principles
  • 24. Using Habitat As a Starting Point • Enables Sitecore Code Solution to have a consistent structure that makes any Sitecore project look familiar to all Sitecore developers • Provides existing features that can be reused to boost your software delivery • Would help to reduce Sitecore Support Team response time
  • 25. Is There a Quick Start? • Read the guidelines at http://helix.sitecore.net • Setup Habitat-based solution
  • 26. Source Code and Sitecore Instance • Option 1: • Clone Habitat Source code from https://github.com/Sitecore/Habitat/ • Install local Sitecore instance • Use the version Habitat currently supports. • Option 2: • Use Generator Habitat: https://github.com/kamsar/generator-habitat • Install node.js with Node Package Manger (NPM) • Install generator-habitat using PowerShell: npm install -g yo npm install -g generator-habitat • Create new Habitat based solution: • Install new Sitecore instance in a separate location (e.g.: C:websitesmy-solution-website) • Use the version Habitat currently supports • In the directory where you like to create your new solution source code (e.g.: C:codemy-solution-code): • Run: yo habitat • Follow prompts to create a connect the source code to the installed Sitecore instance website
  • 27. Adjust Habitat solution • Rename Solution • Use “Habitat” Project module example to create a Project module for your website(s). • Then delete “Habitat” Project. • Remove Habitat modules that you don’t need • Feature Modules • You may like to delete all modules and create your solution specific ones • Tips: Keep a separate instance of a complete Sitecore Habitat solution to use for references or for bring back some Habitat modules later on • Foundation Modules • There are a few well-designed modules that would be useful to keep • You should consider whether to keep or remove the other Foundation Modules
  • 28. Deploy Your Code • Open Solution Directory and run npm install using PowerShell • In Visual Studio open Tools > Other Windows > Task Runner Explorer and run default task
  • 29. WFFM • You may have Unicorn Sync issues because of WFFM • Consider removing Habitat features related WFFM • If you need a form builder upgrade to Sitecore 9
  • 30. Adding new Feature and Foundation Modules • Create the corresponding solution folder • In the source cooed root directory use PowerShell to run yo habitat:feature or yo habitat:foundation to generate module code and test projects. • Add code and test projects to your solution. • Example: Adding “Accounts” Feature module:
  • 32. Key Pillars of Good Modular Architecture • High Cohesion of Modules • What should reside in the same module? • What works together should live tougher (Functional Cohesion) • Low Coupling Modules • Minimise dependency between modules
  • 35. Sitecore Items Serialization • Unicorn (Default) • https://github.com/kamsar/Unicorn • TDS (Supported) • https://www.teamdevelopmentforsitecore.com/
  • 37. No ORM? • Is Glass.Mapper.Sc part of Habitat? • No, it is not. However it is easy to add it! • Introduce “Orm” Foundation module • Install Glass.Mapper.Sc to it • If may also like to add Sitecore item base interface and class models. E.g.: • ISitecoreItemBase.cs • SitecoreItemBase.cs
  • 38. ORM - Generate Models Code for Sitecore Templates • You can use free T4 code generation tools • T4 Sitecore Code Generator by Robin Hermanussen (https://github.com/hermanussen) • https://github.com/hermanussen/sitecore.codegenerator/blob/master/README.md • You need to install T4 Toolbox Visual Studio to run T4 templates: • https://marketplace.visualstudio.com/items?itemName=OlegVSych.T4ToolboxforVisualStudio2017 • To enable T4 template code syntax highlight install T4 Editor: • https://www.devart.com/t4-editor/download.html
  • 39. Yes, we are good to go now! Are there some other tips?
  • 41. Number of Modules Complexity Challenge • Large Sitecore Solution may contain about 35-50 modules – about 70-100 projects (Code and Test) • However, it does not need to be big without a reason
  • 42. The Beauty of Module Independence
  • 43. Separate Sitecore Instance from Code • You need to have an ability to make a “fresh” deployment to Sitecore instance • You would need to have an ability to remove you customizations from Sitecore instance and apply new customization. You can use the following techniques to roll-back the file-system state: • Version Control System (e.g. Git) • SIM • PowerShell (Sitecore 9)
  • 44. FE Development for Sitecore • Like to like FE and BE partial structure • For example: Handlebars Mark-up + JSON Data Models would allow to replicate Sitecore multi-layer partials nesting: Layout, Sublayout, Rendering, Nested Rendering. • Integration to BE: Replaced with Handlebars syntax with .NET + Sitecore ORM code. • http://handlebarsjs.com/partials.html • You may consider separating out FE code into Git branch or Repo • Use Separate FE QA Environment and FE-only Testing process (no back-end) • FE development without a need to make a manual mark-up integration to Sitecore? • Consider using Sitecore JSS (In Preview) • React.js • Other FE framework support is upcoming…
  • 45. CI Run and Deployment • Build the code (e.g. TeamCity) • Quickest option – use the same Habitat provided Gulp build script • Deploy (e.g. Octopus Deploy) • Changes you may like to make • Replace Gulp MSBuild based Configuration Files Transformation task with a call to “Microsoft.Web.XmlTransform.dll” • Call PowerShell script file directly to run Unicorn Sync
  • 46. Does it Work in Real Life? Any success stories?
  • 47. Real Experience with Habitat-Based Software Delivery • Small Solution - 8 weeks from scratch • A content website with Sitecore Search features and lightweight third party integration (including CI and CD). • Agile Team: • 1 UI/UX • 1 FE Dev • 1 Sitecore BE Dev • Large Solution– International multi-country ongoing programme (2 years+ roadmap) for large international business • Consistent Brand Presentation • Separated Code Base for EU and USA • Variety of Back-end Systems Integration • Distributed Agile Teams: 20-30 people
  • 48. Habitat Related Articles and Tools • Helix Modules • Helix Guidelines: http://helix.sitecore.net • Cohesion: https://en.wikipedia.org/wiki/Cohesion_(computer_science)#Types_of_cohesion • Coupling: https://en.wikipedia.org/wiki/Coupling_(computer_programming) • Alan Coates’s Blog • https://blog.coates.dk/2017/01/17/helix-and-modular-architecture/ • https://blog.coates.dk/2017/04/18/sitecore-helix-modules-that-need-to-reference-another-module-in-the-same-layer-part-1/ • https://blog.coates.dk/2017/04/26/sitecore-helix-modules-that-need-to-reference-another-module-in-the-same-layer-part-2/ • https://blog.coates.dk/2017/04/08/sitecore-helix-modules-that-need-to-reference-another-module-in-the-same-layer-part-3/ • T4 Tools • https://github.com/hermanussen/sitecore.codegenerator/blob/master/README.md • Sitecore Unicorn • https://github.com/kamsar/Unicorn/releases/tag/4.0.0 • Glass.Mapper.Sc • http://www.glass.lu/Mapper/Sc/Tutorials • Node Package Manager • https://www.npmjs.com/get-npm • Gulp • https://gulpjs.com/ • Sitecore Fake Database • https://github.com/sergeyshushlyapin/Sitecore.FakeDb • JSS: https://jss.sitecore.net/
  • 49. Thank You Staying in Touch LinkedIn: linkedin.com/in/peternazarov Slack: sitecorechat.slack.com Your Software Solution + Helix & Habitat $u¢¢€$$=
  • 50. Q&A Staying in Touch LinkedIn: linkedin.com/in/peternazarov Slack: sitecorechat.slack.com Your Software Solution + Helix & Habitat $u¢¢€$$=