Previous post about the Symposium Day 1 keynotes

Day 1 - Sessions

Tuesday 9 October

A quick talk about how sessions are organized on the Symposium. As mentioned, there are 2 hotels where sessions were held and they can be divided in several tracks.
The Dophin was for all keynotes and sessions about E-Commerce Experience, Getting Started and Optimization.
The Swan hotel housed the sessions for Development & IT and Marketing.
Several sessions are held at the same time, this means that you have to make a decision!
And also not every session will be as good. Some speakers are better prepared or just have more experience talking. So sometimes, you end up in a session that is not really what you expected.

All the sessions I followed were in the Swan hotel. So expect more technical summaries in this blog.

Topic overview:

Session 1: Now containing 50% more Azure

Presented by Tamas Varga & Ciaran McAuliffe (both from Sitecore)

This session was all about the improvements done for Sitecore 9.1 on the Azure part and also mentioned some upcoming improvements to Azure.

What's new
  • Along with 9.1 comes expanded geography and supported data centers
  • Improved setup of Azure Search and Solr
    Azure Search will not be setup anymore when a Solr connection string is passed in.
    And the WDP packages now accept a "Search Provider" flag which can be set to Azure or Solr.
    Azure on Solr
  • Application Insights can be disabled in 9.1 during setup.
  • Azure Application Insights and Log Analytics
    Azure Log Analytics can now be used together with alerts. Some default ARM templates for log analytics are available.

Warning: rules setup in alerts do cost money every time they are run. So you'll need to find the right balance of informational/critical alerts and how much money you are willing to spend.
Log Analytics
Log Analytics

  • In 9.1 you can now optionally use Azure CDN
    The media library has been updated to better handle the CDN integration.
  • New packages available
    • Standalone module package for Sitecore JavaScript Services
    • Standalone module package for Sitecore Publishing Service
    • XM only package which was previously possible but now doesn't contain resources that are not necessary. This will also increase the start up time of your Sitecore website.
  • Revised resource sizings
    For PaaS they expect all sizes to be increased to Pv2
  • You will be able to use Azure WAF on CD (does not work on CM)
Upcoming features to Azure
  1. Alternative for Azure App Service Environments (ASE): service endpoints
  2. Easier ASE scaling
  3. Support for Azure front door service

The Session I didn't attend... Sitecore 9.1 overview

Presented by Mark Groves & Pieter Brinkman (both from Sitecore)

So first session, first choice I had to make. A lot of people attended this session so you'll easily find blog posts about this topic.
During the Symposium, Sitecore also released a press statement which also gives an overview. So if you look for more information, I suggest you to read that too :-)
Here are the key take-aways from the press release:

  • Sitecore JavaScript Services (JSS)
    JSS will be available and supports a native developer experience for React, Angualr and Vue frameworks.
  • Sitecore Cortex
    Adding Machine Learning functionalities to the Experience Platform.
  • Enhancements to Experience Analytics
    Availability of Universal Tracker to better track user behavior in non-Sitecore websites and apps.
  • Enhancements to EXM and Marketing Automation
  • A more accessible Experience Accelerator
    Support for WCAG 2.0 accessibility guidelines on the components of SXA.
  • Preview of "Project Horizon"
    A new user experience tool.
  • Improvement of Core Technology Platform
    Including better availability across Azure regions.

Session 2: The Sitecore headless revolution

Presented by Mark van Aalst (from Sitecore)

This presentation started with the history of Sitecore itself.
How it evolved from the initial Sitecore 1 version (created by Pentia) which already had the concept of a 'Content Tree'.
Sitecore version 1

In this session, Sitecore Omni was introduced. It's the collection of tools and services that Sitecore offers to implement Headless content applications with complete personalization options.
Sitecore Omni
The 5 parts that are contained in Sitecore Omni:

  • Sitecore GraphQL

The Sitecore GraphQL API is an implementation of a GraphQL server on top of Sitecore. It is is designed to be a generic GraphQL service platform - meaning it's designed to host your and present it via GraphQL queries. The API also supports real-time data using GraphQL subscriptions. [Source JSS website]

  • Sitecore Services Client
    Use this service when you need non-personalized content. It supports CORS and api keys.
  • Sitecore Experience Accelerator
    SXA can also be used to create customized json feeds. And personalization through that feed is also possible.
    There are 2 ways to output JSON:
    • Dedicated JSON data modeling or
    • by using the Layout Service
      SXA ways to output JSON
  • Universal Tracker
    The Universal Tracker is a service that runs independently and not in Sitecore and thus can also be scaled separately.

Important to know that the tracker is - currently - only used to send interactions to. Its purpose is to track events/outcomes in applications outside of Sitecore.
It is not used for personalization. You cannot receive personalized content from the Universal Tracker.
Sitecore Universal Tracker

  • Sitecore JSS
    Sitecore JSS will become available in November, together with the Sitecore 9.1 release. And will consist out of 2 components:
    • An open source sdk for front-end development in which you can develop in a disconnected mode.
    • A package for the Sitecore back-end

You don't have to have Sitecore installed to create your Sitecore Headless website!
When doing it this way, you'll need to import
the jss application into Sitecore.

The supported SDK's are: Angular, Vue and React.

Sitecore JSS provides an endpoint that your headless application can consume to create its website. The JSS Layout Service.

Sitecore JSS Layout Service
Take note of the following:

  • The JSON format of JSS Layout Service is different of the SXA Layout Service
  • Output caching in the JSS Layout Service is still applied!

If you want to have a look at a website made with JSS, have a look at the https://symposium.sitecore.com website which is completely react based!

Session 3: World's fastest deployment pipeline for Sitecore on Azure

Presented by Bas Lijten (Achmea)

His blog website will eventually contain all the necessary information you need to setup your own fully automated deployment pipeline.
https://blog.baslijten.com/automate-your-pipeline-part-1-worlds-fastest-delivery-pipeline-for-sitecore-on-azure/

How Bas does a deploy in only 6 minutes has been achieved mainly by creating custom packages for each Sitecore role separately and deploying them in parallel.

The presentation was split up into 2 different parts. The first part focused on the development itself and what to take into account when deploying Sitecore.
Interesting to know is that they don't use Gulp for building tasks, everything is done with msbuild.

The 2nd part focused more on how to decrease the deploy time.
Create custom packages for each role by using several solution configurations.
Once you have those packages, you can also merge them with the packages that contain your Baseline Sitecore and any custom packages like SPE. So instead of deploying several packages per role, you only have to deploy 1.

Task groups in your Release pipeline support Parallelism. You have to define which Multipliers you should use. In the example of Bas, he used region and role which are 2 pipeline variables defined in the 'Variables tab'.
Azure DevOps Parallelism
The same task group contains all the different web deploys. By using a custom condition, you can define for which parameters this deploy will be started. And since each web deploy task has its own package configured, you will deploy the correct one.
Azure DevOps Custom conditions

I'm looking forward to the blog posts regarding this functionality :-)

Session 4: Measure if you want to go faster

Presented by Jeremy Davis (Kagool)
I was interested by this topic, because who doesn't want to have code that runs smoothly and have a good pagespeed?
What Jeremy talked about

Although some of the content would be considered basic Sitecore/Developer knowledge, I know a lot of people who would learn from this session.

  • Sitecore Debug mode
    You can always use the Sitecore Debug mode to get insights on how your code is affecting page load speeds. You can spot bad code by checking the debug mode and looking at the number of items that get fetched.
    It will also tell you which renderings take a long time to load so when trying to speed things up, look at those renderings.
    There is also a column called 'Physical reads' which shows how many times the database was queried.

Rule of thumb: Query only the items you need and prevent descendant queries as much as possible.

  • Visual Studio Profiler
    Use this to learn more about how your code is performing.
    When using the profiler, always use a release build with pdb files.
    Attach the profiler to a session, refresh a few times, press stop and wait a bit for the report.
    This is time consuming, but you'll reap the benefits afterwards.
    Best is to change the view from Summary to Models and check the functions that take a lot of time.

Your target should be to get your dlls as low as possible in the list of all dlls used.
Visual Studio Profiler

  • Visual Studio Debugger
    The debugger can be used to check the memory consumption. While debugging, check the Memory Usage tab. You can take snapshots to compare with each other.

Try to have a smooth memory consumption, if you see a lot of peaks and lows, you garbage collection is doing too much.

Visual Studio Debugger In the example that Jeremy showed, there was a giant static list that consumed memory.
You can learn more about analyzing memory usage on the microsoft documentation website.

Further take-aways
  • Sitecore patterns
    • When searching a lot of Sitecore items, use the Sitecore Search API. Reduce that count of items you try to fetch from Sitecore directly!
    • Slow components need to be investigated. Do they use a lot of memory? High CPU count?
    • Are there UI components without output cache? Can they benefit from adding output cache?
  • CPU and memory usage patterns
    • CPU maxed out? Check if you can precompute, or call less methods.
    • CPU graph looks like a castle wall? CPU sometimes needs to wait. Can you move calls to the front end so that they don't block on server CPU?
    • Rising memory graph?
      Custom caching on top of Sitecore can be a code smell.
      Creating and changing a lot of strings can also be a code smell.
      Are you using DI correctly?
  • Your development process
    • Measure regularly, measure early
    • Make it a day to day habit
    • Use test content as early as possible! Otherwise certain problems will be discovered too late.
      You can use PowerShell for example to create dummy Sitecore items and pages for easier testing larger number of Sitecore items.

You can download the complete presentation from his blog post!


All Sitecore Symposium 2018 blog posts

I'll update this section with links to all related posts regarding the 2018 Sitecore Symposium.