How to make Sitecore architecture
more powerful!

Architecture begins where engineering ends.
Walter Gropius

Architecture is as important in software
development as it is in building construction. No one breaks ground on a
building without any plans and good architect.

With the non-functional requirements
captured, the next step is to start thinking about how you’re going to solve
the problems set out by the stakeholders and define the architecture.

The architect should be very careful about
IA architecture and initial back grounding of the project. He/she should know
all the alternative and pros/cons of the technology and of course cost.
Architecture definition is about
introducing structure, guidelines, principles and leadership to the technical
aspects of a software project. So here I am adding some point that can help the
Sitecore architect to build a robust system.

There are total 24 points that every
Sitecore Architect Should Know:

1.      
Identify the scope of the project: scope
of the project must decide at the very begging  of the any project so accordingly we can
design/architect the application, below are some few sample questions that needs
to be asked for a customer for Sitecore applicable:
·        
How will the website use the
content?
·        
Scope of data migration?
·        
Scope of Web Forms?
·        
Scope of any third party
integration like CRM, Sales-force, Facebook
·        
Infrastructure requirement
would be on cloud or physical servers?
·        
Any specific performance
required?
·        
Any rapid development requires
like campaign etc.
·        
Scope of multi-lingual and multi-site?
·        
Scope of DMS, what type of
reporting they want?
·        
What kinds of content items
exist?
·        
What types of content elements
will appear consistently on multiple pages (also known as reusable content)?
·        
Where does the aforementioned,
reusable content come from?
·        
Does the reusable content
display different content on different pages?
·        
Does the system display content
from other systems?
·        
How do you integrate the
content from the other systems?
·        
Is the solution multilingual?
If so, does the content on the multilingual versions differ?
·        
What kinds of users will have
access to the CMS?
·        
What website regions or content
types will each user have access to?
2.       Choose the Right Sitecore
version:
Always choose the right
version of Sitecore, before project getting started. It’s not always good to
implement the latest version of Sitecore, it should be decided after
considering the factors below
·        
Team strength
·        
Product version maturity and
stability
·        
Cost
·        
Scope and timeline of the
Project.
3.       Selection of technology:
Web Forms and MVC are two
different approaches for building Sitecore application
Both can be excellent
choices, and both can be very bad choices,
Depending the requirements
of the application and the knowledge and experience of the team on technology.
4.       Setup Sitecore project and
code deployment methodology:
There are two ways to set up
the visual studio solution with Sitecore. Your solution is fully coupled with
the Sitecore web site. Your solution is outside of Sitecore’s website and you
use some post build process to deploy. For more information please visit at http://sitecoresolution.ashishbansal.digital/2015/02/setup-sitecore-development-environment.html
And it’s always
recommended to keep your project outside the root directory
5.       Identify the build
deployment process:
Architect need to be decided
which methodology should be used for deployment purpose, obviously the cost can
be the most important factor like TDS has license cost over serialization or
package creation methodologies.
6.      
Use of Sitecore Rocks: its need to be
decided that Sitecore rock would be used in the project or not. Sitecore itself
recommends using this tool for rapid development.
7.      
Responsive design framework:  RWD is very common now’s a day, it need to be
decided which framework would use for responsive design like bootstrap, htm5
etc. So, accordingly resource and design would be finalized.
8.      
Third party integration: It should be
proper planning for any third party integration with Sitecore application like
CRM, Sales force, etc., so, accordingly IA architecture and solution can be
designed.
9.      
Defining IA: Information architecture design can be as significant as the coding of a
CMS solution. Below are some important aspect that should be considered 
10.   Scope of DMS: Sitecore layout, template, DB design (Mongo-DB in Sitecore 7.5 or
later) must be designed based on the DMS scope like personalization, email
campaigning etc.
11.  
Search selection: search is the backbone
of any ECM system, so need to decide very carefully which search pattern or
framework should be implemented like Lucence, Solr, Coveo, custom search
pattern. You can find some  information
on Coveo search here http://sitecoresolution.ashishbansal.digital/2014/09/coveoindustrys-most-advanced-sitecore.html
12.   Setting multiple site
solution:
It is possible to have multiple sites in
the same solution in Sitecore, but there are a few pitfalls and issues which
need to be taken care while developing the solution.
13.   Identify the multi-lingual
solution:
Architect also needs to consider the
factor of multi-lingual solution while creating an IA including template,
layouts, presentation and standard value.
14.  
Publishing architecture: publishing is
very time consuming process in Sitecore application, sometime we required the
dedicated Sitecore instance for publishing task to avoid
long queue.
So here we need to decide
and set up the accordingly
15.   Setup multiple CM and CD: By default, each Sitecore instance provides both content management
(CM, for CMS users maintains the managed sites) and content delivery (CD, for
visitors to those managed sites). But we can separate the CM and CD facilities
into separate environments, typically involving separate servers. It’s always
recommended to keep separate the CM and CD environment. Below are some
advantage of separating CM and CD:
·        
Scalability
·        
Performance
·        
Security
·        
Administration
16.  
Handling media library: we can manage a
media library within Sitecore by two ways either in
Database or file system.
Both have pros and cons so, at the time of designing the project we need to
decide the best approach. Also, we need to consider some cloud based approaches
like DAM with Sitecore etc.
17.   Caching implementation: Cache plays very
important role in website performance. So, an understanding of all Sitecore
caches is really important before implemented. If we understand all of them,
then it would be easy to do performance tuning using cache settings.
18.   Web form implementation: architect also needs to identify the web form marketer scope and
find out how it compatible with MVC.
19.   Logging mechanism: Sitecore uses log4net for its logging purposes, but
in some situations we need to build a custom logging mechanism. One
of the most common scenarios would be a multi-site solution in which the
standard log will become huge and finding the exact trace
information becomes painful. so we need to consider this factor at the
time of designing the architecture of the application
.
20.  
Error handling in Sitecore: we need to
consider various levels of exception/error handling like Custom Errors, Try… Catch…
Finally Blocks, XSL Exception Management, Web Forms Exception Management, MVC
Exception Management, Application (Global) Exception Management, Error Pages, Managing
Exceptions. So after taking all error handling, need to decide the base
architecture where it should be forcefully implemented.
21.   Sitecore customization: architect needs to identify the scope of customization in Sitecore
like pipeline and some UI customization so accordingly template and project
should be modified from the very beginning of the project.
22.  
 Consider Sitecore performance:
Sitecore IA plays a very important role in
performance point of view, below are some points that need to be considered for
optimization purpose of the application:
·        
Avoid Item which has more than
100 items.
·        
Caching tuning
·        
Enable CSS, JS Caching,
Compression
·        
IA architecture (avoid creating
items with hundreds of children
·        
Optimization in publishing
wizard
·        
Prevent use of Get Descendants
·        
IIS level optimization
23.  
Sitecore security:  Sitecore provides a comprehensive security infrastructure that you
can use to secure any item in any Sitecore database. An architect should know
all the aspect of Sitecore security and should implement at the time of
designing the application. Sitecore also provides additional functionality that
enables you to use Microsoft Dynamics Customer Relationship Management (CRM)
and Active Directory (AD) for authentication.
Below are the some
security topics that need to be considered at the time of designing the site.
·        
Access rights
·        
Users
·        
User profile
·        
Roles (groups)
·        
Domains
·        
Security inheritance
24.  
 Scope of data migration: scope of data migration requirement should be handled from beginning
of the project here you can find the complete details on this topic.
I Hope this article will
help you.
Happy Sitecore !!

Leave a Reply

Your email address will not be published. Required fields are marked *