SlideShare a Scribd company logo
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

Recommended for you

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

This document discusses getting started with application development for SharePoint 2010 Online. It covers the application development platform, sandboxed solutions, application lifecycle management, and migrating applications. The key points are that development should occur in a sandboxed environment using Visual Studio, source control is important, and third party tools can help migrate applications between environments.

office 365developmentsharepoint
SOA Suite 12c Customer implementation
SOA Suite 12c Customer implementationSOA Suite 12c Customer implementation
SOA Suite 12c Customer implementation

This document discusses the implementation of an Oracle SOA Suite 12c project. It describes the customer's need to migrate from a custom system to SOA to improve stability and integrate other systems. A proof of concept was completed using SOA 11g. The project team implemented SOA 12c on WebLogic 12c. They built the infrastructure platform, developed OSB and BPEL services, integrated continuous integration, and worked to integrate the system into operations.

oracle weblogic serversoa
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

VIDEO: http://bit.ly/P1UlGr starts at 1:13 Overview of creating modules with Appcelerator Titanium. We integrate SkyhookWireless location SDK and Card.io mobile card sdk Source: Source code for ios cardio module presented at @codestrong http://bit.ly/PQlsW9 Source code for android skyhookwireless module presented at @codestrong http://bit.ly/z4zfdl

cardioiosappcelerator
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

Recommended for you

JIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesJIRA Performance After 300,000 Issues
JIRA Performance After 300,000 Issues

Learn how Autodesk broke the 300,000 issues barrier without impacting performance, keeping excellent uptime, with more than 3000 registered users and average of 1800 concurrent users. In this session you will discover the hardware architecture, system settings and other interesting data from Autodesk experience in the field.

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

Blinkist started as a monolith application but transitioned to microservices as the business scaled. This allowed each part of the application to scale independently and improved development speed. Key learnings included only migrating existing features if it provided value, embracing AWS vendor lock-in while acting wisely, and building new features as microservices adhering to standards like JSON API. The monolith validated their product vision while microservices helped scale the business through a stable, automated infrastructure.

microserviceadidasmonolith
Mainframe, the fast PHP framework
Mainframe, the fast PHP frameworkMainframe, the fast PHP framework
Mainframe, the fast PHP framework

This document provides an overview of MainframePHP, a PHP framework based on CodeIgniter. It discusses Mainframe's focus on web apps and inclusion of popular open source tools. The speaker then covers several case studies that use Mainframe, how Mainframe improves productivity over CodeIgniter, its performance capabilities even on low-powered servers, ease of learning for new developers familiar with CodeIgniter, its theme system, asset management features, plugin support via HMVC, and organization of libraries.

phpcodeigniterweb
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.

Recommended for you

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 ...

This document discusses best practices for developing extensions for the vSphere Web Client using the SDK. It provides an overview of the Web Client architecture and extensibility framework, including extension points, templates, filtering and packaging. The SDK 5.5 changes are covered, such as new features, compatibility and the roadmap for transitioning to an HTML5 platform. Demo code is presented and challenges encountered by plugin developers are discussed.

vmworld 2013vspherevmware
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud

Configuring and maintaining a continuous integration environment is quite a bit of work. It requires ongoing resources both in terms of manpower and hardware infrastructure. As an application evolves so does the number of ongoing projects. The challenge is creating a scalable continuous integration environment which does not impede development and can handle the complexities of Java EE testing. This session covers how to setup and configure a cloud-based continuous integration environment for Java EE applications. The presentation will focus on demonstrating how to use Atlassian Bamboo running on AWS to build and test a Maven/Gradle Java EE project that uses Arquillian for testing. Topics that will be covered include creating a custom AWS VM for use with Bamboo, creating an Amazon VPC (Virtual Private Cloud) along with test database using Amazon RDS. The presentation will delve into the specifics of testing EJBs, WebSocket endpoints, RESTful web services, as well as performing load testing in this environment. Security, cost control, and build monitoring will be covered as well.

atlassianjavaaws
Adobe Experience Manager - Replication deep dive
Adobe Experience Manager - Replication deep diveAdobe Experience Manager - Replication deep dive
Adobe Experience Manager - Replication deep dive

Slides presented at the Circuit14 conference in Chicago 6/4/14. Topic was the replication framework of Adobe Experience Manager (AEM) and how it can get customized to address various use cases. Demonstrated sample code is accessible at GitHub: https://github.com/mwmd/circuit14-aem-replication

 
by mwmd
aem cq5 adobe experience replication dispatcher
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

Recommended for you

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

Hans and Franz are here to pump YOU up. Well, pump your Atlassian tools up, that is. Has your JIRA slowed down? Does your Confluence fall over and can't get back up? We're here to give you some tactical tips on how to take your performance to the next level. We'll reveal best practices from Atlassian support's secret arsenal, teach you how to configure JIRA, Confluence, and other products to get the most out of your system, and focus on small and easy changes that you can implement quickly.

Java Desktop 2019
Java Desktop 2019Java Desktop 2019
Java Desktop 2019

Some years ago development of Java Desktop applications was easy: We just downloaded Java 8 from Oracle and got a set of useful tools and framework to develop Java desktop applications: AWT & Swing WebStart JavaFX JFX Packager If you now download a Java version from Oracle (or any other vendor) several of the mentioned tools and frameworks are gone. Some JDKs only contain AWT & Swing for desktop development and miss all the newer tools. But even if they include such tools or frameworks you have sometimes no idea about their state. In this session I will give an overview about the differences between JDKs that you can use today and how frameworks like JavaFX are really supported by the vendors. Next to this we will have a look at all the tools that are important for building and installing desktop development. Since some like WebStart are gone you can find quite good alternatives.

javajavafxdesktop
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®

If you have ever played with LEGO®, you will know that adding, removing or changing features of a completed castle isn’t as easy as it seems. You will have to deconstruct large parts to get to where you want to be, to build it all up again afterwards. Unfortunately, our software is often built the same way. Wouldn’t it be better if our software behaved like a bag of marbles? So you can just add, remove or replace them at will? Most of us have taken different approaches to building software: a big monolith, a collection of services, a bus architecture, etc. But whatever your large scale architecture is, at the granular level (a single service or host), you will probably still end up with tightly couple code. Adding functionality means making changes to every layer, service or component involved. It gets even harder if you want to enable or disable features for certain deployments: you’ll need to wrap code in feature flags, write custom DB migration scripts, etc. There has to be a better way! So what if you think of functionality as loose feature assemblies? We can construct our code in such a way that adding a feature is as simple as adding the assembly to your deployment, and removing it is done by just deleting the file. We would open the door for so many scenarios! In this talk, I will explain how to tackle the following parts of your application to achieve this goal: WebAPI, Entity Framework, Onion Architecture, IoC and database migrations. And most of all, when you would want to do this. Because… ‘it depends’.

.netpluginsonion architecture
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?

Recommended for you

Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with Jenkins

The document provides an overview of continuous integration and continuous delivery practices. It discusses continuous integration, which involves integrating code changes frequently and verifying them through automated builds and tests. Continuous delivery is described as building software in a way that allows release to production at any time, while continuous deployment means any change is automatically deployed to production. Jenkins, an open source automation server, is introduced as a tool that enables continuous integration and deployment through jobs, credentials, scheduling, build steps, and post-build actions. Pipelines in Jenkins are discussed as dividing deployment into stages to provide quick feedback. The Blue Ocean plugin is highlighted as providing a simplified user interface for Jenkins pipelines.

continuous deliverycdci
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...

Are your teams using Git along with your corporate software configuration management tools like Rational ClearCase and Rational Team Concert? Come learn about which tools will be the best fit for which teams, and how to balance the requirements of your existing enterprise tools while providing your user community the freedom to use the tools they want.

git clearcase ibm rtc rationalteamconcert scm ccm
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

The SharePoint Framework provides a modern development platform for cloud-first solutions using popular web technologies. But integrating the new model in a structured enterprise development environment can be quite challenging, from toolset integration to application lifecycle maintenance, SPFx creates a number of challenges that can inhibit adoption. In this session you will learn how to overcome these challenges by using popular Microsoft tools such as Visual Studio and Team Foundation Services to deliver well-managed projects that plug easily into existing enterprise development patterns.

sharepointsharepoint frameworkspfx
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

Recommended for you

Top modules
Top modulesTop modules
Top modules

The document summarizes and ranks the top 73 contributed modules for Drupal. It provides a brief description for each module including whether it is considered a "must have", "often needed", "sometimes needed", or for "beginners only". It also notes when some modules are deprecated or part of Drupal core in version 7. The modules cover a wide range of functions including content creation, image handling, user management, forms, layout, and more.

drupalmodules
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

This document outlines Bruno Borges' presentation on technologies from Oracle in Docker containers. The presentation agenda includes discussing Docker overview, Oracle's strategy and positioning with Docker, Docker on Oracle Cloud, and Oracle technology running in Docker containers. The document provides information on Docker concepts, how Docker works, building Docker images and running Docker containers, and the Docker ecosystem. It also discusses Oracle's support for Docker and options for deploying containers on Oracle Cloud, including using Compute Cloud Service for a DIY approach or using Oracle-managed Container Cloud Service or Application Container Cloud Service.

cloudcontainersdocker
New life inside monolithic application
New life inside monolithic applicationNew life inside monolithic application
New life inside monolithic application

This presentation will be useful to those who would like to get acquainted with lifetime history of successful monolithic Java application. It shows architectural and technical evolution of one Java web startup that is beyond daily coding routine and contains a lot of simplifications, Captain Obvious and internet memes. But this presentation is not intended for monolithic vs. micro services architectures comparison.

dismantling the monolithmonolithinternal quality
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

Recommended for you

Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration

XP teams try to keep systems fully integrated at all times, and shorten the feedback cycle to minutes and hours instead of weeks or months. The sooner you know, the sooner you can adapt. Watch our record for the webinar "Continuous Integration" to explore how Azure DevOps helps us in achieving continuous feedback using continuous integration.

agilecontinuous_integrationxpdays
Acing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointAcing application lifecycle management in SharePoint
Acing application lifecycle management in SharePoint

This document discusses application lifecycle management (ALM) in SharePoint. It defines ALM and its three aspects of governance, development, and operations. It then discusses approaches to ALM including source control, coding standards, testing, tracking, and release management. It presents an ALM maturity model and provides recommendations for getting started with ALM in SharePoint using tools like Visual Studio and Team Foundation Server. A case study is also presented of implementing ALM on a SharePoint site using Mercurial and DocAve.

almdevelopmentsharepoint
Sitecore - what to look forward to
Sitecore - what to look forward toSitecore - what to look forward to
Sitecore - what to look forward to

Explains some of the new capabilities and upcoming features in the Sitecore product, based on learning from Sitecore Symposium 2016

publishing servicexconnectsitecore
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

Recommended for you

Desert Code Camp Presentation
Desert Code Camp PresentationDesert Code Camp Presentation
Desert Code Camp Presentation

Using Visual Studio 2019 with code automation to auto-generate customized service layers in a Contract-Driven Architecture #WeFixUglyCode #CodeFactory

#codefactory#lifecycledelivery#codeautomation
GCP Deployment- Vertex AI
GCP Deployment- Vertex AIGCP Deployment- Vertex AI
GCP Deployment- Vertex AI

Vertex AI is a managed machine learning platform that helps you build, deploy, and scale machine learning models faster and easier. GitHub: https://github.com/TrilokiDA/Vertex-AI/tree/main

gcpvertexaimachine learning
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management

IT Security Symposium 2011 talk. A discussion of leveraging Agile Development + Cloud Computing, and various tools which have worked for us.

agile developmentcloud
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?

Recommended for you

Why real integration developers ride Camels
Why real integration developers ride CamelsWhy real integration developers ride Camels
Why real integration developers ride Camels

This document provides an agenda and summaries of key points from a presentation on integrating systems using Apache Camel. The presentation discusses how Apache Camel is an open-source integration library that uses enterprise integration patterns to connect disparate systems. It highlights features of Camel including components, data formats, and testing frameworks. Customer examples are presented that demonstrate large returns on investment and cost savings from using Camel for integration projects. The presenters argue that Camel provides flexibility, reusability and rapid development of integrations.

eclipseintegrationcamel
Best Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsBest Practices for Building WordPress Applications
Best Practices for Building WordPress Applications

This document provides best practices for WordPress applications, covering topics like caching, database reads/writes, search queries, maintainability, security, third-party code, teams, and workflows. It recommends tools and techniques to optimize performance, including using Redis for caching, Elasticsearch for complex queries, feature plugins, documentation, testing, linting, and managing dependencies with Composer.

wordpressphpmysql
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

This document provides an overview and agenda for a strategic design, technology and marketing meeting. The agenda includes presentations on Helix concepts and modules, the latest version of Team Development for Sitecore (TDS), Hedgehog's shared source modules and freebies, the Feydra tool for front end developers, Sitecore Experience Accelerator (SXA), the Sitecore Package Deployer and Placeholder Fallback modules, and the Razl comparison tool.

feydrahedgehogdevelopment tools
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…

Recommended for you

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

The document discusses several cases where architecture decisions hurt software teams. It provides lessons learned from each case: - Overly sharing code across domains can cause dependencies and fragility. Architectural boundaries should separate domains. - Attempting to satisfy all use cases with a single highly configurable solution often satisfies no one. Specific solutions may be preferable. - Microservices are not a universal solution and will not improve a flawed design alone. Modules should only be split across microservices at domain boundaries. - Systems need to be designed to evolve dynamically over time as requirements change. Centralized control hinders this.

architecture
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...

Office 365 Saturday Event: https://www.meetup.com/O365-Saturday/events/238372859/ Other speakers: https://www.meetup.com/O365-Saturday/pages/23487743/2017_Speaker_Presentations/

sharepoint frameworkspospfx
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud Road

Moving to the cloud isn’t easy, transforming your engineering team to adopt to the cloud and services lifestyle is therefore crucial. It all starts with creating a common understanding of the engineering and development principles which are important in the cloud, which are different then building regular applications. This session will take you on a road trip based on the presenters experience developing and more importantly operating Azure Active Directory, SQL Server Azure and most recently the Xbox Live Services to support Xbox One.

cloudsoftware engineeringtechdays2014
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…

Recommended for you

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

This document discusses the rejuvenation of the legacy eZPublish content management system through adoption of the Symfony full-stack framework. Key aspects of the migration included maintaining backwards compatibility, integrating the legacy codebase through a dual-core architecture, refactoring the front controller, integrating routing, adopting Symfony caching practices, building a REST API, using the Doctrine database abstraction layer, improving performance through caching, and replacing the legacy templating language with Twig. The migration aimed to balance maintaining the existing system functionality while modernizing the codebase and architecture.

refactoringsymfonyezpublish
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?

Visual Studio 2010 was released two years ago. Since then Microsoft was working hard to deliver Visual Studio "11" and Team Foundation Server "11". This session will take a look at the myriad features that have been incorporated into the latest version of Visual Studio and Team Foundation Server including some great planning features, Team Foundation Service (on Windows Azure), a revamped look and feel for Visual Studio, and more. Some of these features are also available for use within Visual Studio 2010 if you know where to look. If you want to get an overview of what's new in Visual Studio "11", then check out this session. ***NOTE: "Visual Studio 11" and "Team Foundation Server 11" are code names. The official name will be announced in the near future. At that time, I will need to modify the names within the description.

visual studi 2012
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

First Session on Learning to Code for Startup MVP's using Ruby on Rails. This session covers the web architecture, Git/GitHub and makes a real rails app that is deployed to Heroku at the end. Thanks, Henry

startupbeginnercode
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/

Recommended for you

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...

During the 2015 IBM Digital Experience, Mark Polly, Perficient Director, Strategic Advisors for Portal, Social, Web Content, demonstrated how you can dart past your competition by getting your digital experience into market faster than ever before.

digital transformationperficientibm
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

The document compares GitHub Copilot, Amazon CodeWhisperer, and ChatGPT for Java developers. It provides an overview of each tool, compares their programming language support, IDE support, and pricing. It demonstrates their abilities for general tasks, simple functions, more complex algorithms, JUnit testing, and Spring Boot web development. It concludes that while the tools provide helpful suggestions, developers are still needed to ensure correctness and efficiency. GitHub Copilot and ChatGPT benefit from OpenAI, while Amazon CodeWhisperer needs quality improvements for Java but may leverage AWS services.

aicode complitionjava
Beyond Domino Designer
Beyond Domino DesignerBeyond Domino Designer
Beyond Domino Designer

Presentation on JavaDocs, EMF, Plugin development, Java agent debugging, SourceTree and Perforce P4Merge at DanNotes November 2013

xpagessource controldannotes
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 Linked
LinkedIn
 
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
NCCOMMS
 
Java APIs - the missing manual
Java APIs - the missing manualJava APIs - the missing manual
Java APIs - the missing manual
Hendrik 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 development
Jeremy Thake
 
SOA Suite 12c Customer implementation
SOA Suite 12c Customer implementationSOA Suite 12c Customer implementation
SOA Suite 12c Customer implementation
Michel 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 Titanium
Aaron Saunders
 
JIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesJIRA Performance After 300,000 Issues
JIRA Performance After 300,000 Issues
Atlassian
 
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
Sebastian Schleicher
 
Mainframe, the fast PHP framework
Mainframe, the fast PHP frameworkMainframe, the fast PHP framework
Mainframe, the fast PHP framework
bibakis
 
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 Cloud
Ryan Cuprak
 
Adobe Experience Manager - Replication deep dive
Adobe Experience Manager - Replication deep diveAdobe Experience Manager - Replication deep dive
Adobe Experience Manager - Replication deep dive
mwmd
 
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
Atlassian
 
Java Desktop 2019
Java Desktop 2019Java Desktop 2019
Java Desktop 2019
Hendrik Ebbers
 
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 Jenkins
Jadson 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 Enterprise
Eric Shupps
 
Top modules
Top modulesTop modules
Top modules
jhamiltoorion
 
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
Bruno 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 application
Taras Matyashovsky
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
XPDays
 
Acing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointAcing application lifecycle management in SharePoint
Acing application lifecycle management in SharePoint
Jeremy Thake
 
Sitecore - what to look forward to
Sitecore - what to look forward toSitecore - what to look forward to
Sitecore - what to look forward to
jinto77
 
Desert Code Camp Presentation
Desert Code Camp PresentationDesert Code Camp Presentation
Desert Code Camp Presentation
LifeCycle Delivery
 
GCP Deployment- Vertex AI
GCP Deployment- Vertex AIGCP Deployment- Vertex AI
GCP Deployment- Vertex AI
Triloki Gupta
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
Adam Getchell
 
Why real integration developers ride Camels
Why real integration developers ride CamelsWhy real integration developers ride Camels
Why real integration developers ride Camels
Christian Posta
 
Best Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsBest Practices for Building WordPress Applications
Best Practices for Building WordPress Applications
Taylor 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 Modules
Sean 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 valuable
Comsysto 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 Road
Gert 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 study
Gaetano 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 1
Henry 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 2023
Vadym Kazulkin
 
Beyond Domino Designer
Beyond Domino DesignerBeyond Domino Designer
Beyond Domino Designer
Paul 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 Enterprise
Envision 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

Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
Matthew Sinclair
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
BookNet Canada
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
ArgaBisma
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
ScyllaDB
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
Safe Software
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
Adam Dunkels
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
Andrey Yasko
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
Eric D. Schabell
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
Tatiana Al-Chueyr
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 

Recently uploaded (20)

Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 

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¢¢€$$=