Instrument Sitecore Solr Container for Prometheus

So far in this series I have provided a brief introduction to Prometheus and shown you how you can configure Prometheus to monitor Docker and the HostOS metrics and visualize performance metrics using Grafana. In this post I’ll show how to instrument the Sitecore Solr Container to expose performance metrics for Prometheus to scrape display those metrics in Grafana. I’ll go into a bit more detail on Solr metrics, than what I shared during my Sitecore Symposum presentation: Insufficient facts always invite danger, Captain!, which is still available on demand.

Continue reading

Build Coveo for Sitecore Docker image variants

I’ve been developing with Sitecore on Docker for almost a year now… WOW time flies when you are having fun! While the Sitecore Docker image repo is awesome and provides a range of Sitecore variants, you will probably discover the need for additional image variants, depending on your project. As you often require additional modules to be installed as your base Sitecore install, like the Coveo for Sitecore module! Rather than your team having to install this module manually when they docker compose up, it would much quicker and easier they have a variant image they can use with it already installed. In this post, I will show you how to can build a docker image variant for Coveo for Sitecore v5 using the Sitecore 9.3 images.

Continue reading

Tips for creating useful Release Notes

You’ve just come to the end of your sprint and it’s time to ship a new release to the QA environment for testing. But what about the release notes? In this post I’ll share some tips on creating useful release notes your team and customer will actually read and use. I explain why they are important and how they can help ensure a smoother release through to production.

Why do we create release notes?

Release notes are a way to convey to the business as well as the QA team what changes are included in the upcoming release. They are usually generated by Dev Team Lead as he/she is the gatekeeper for dev and responsible for what is allowed to leave development and go to higher environments.

Continue reading

Tips for Monitoring and Tuning Sitecore Cache

Utilizing caching improves Sitecore performance and there are plenty of posts on this topic. While doing some performance analysis on an inherited solution I was surprised to find that caching was not being utilized to its full potential. In this post, i’ll share some useful scripts and tools that make the task of monitoring and tuning cache settings easier.

Continue reading

Handy JMeter Script to crawl your site

JMeter is my tool of choice for load testing. This isn’t necessarily a load test but rather a useful script to crawl site urls using a sitemap. By hitting every accessible url allows Sitecore to populate all the various caches and provides you with a sense of the potential sizes of the various Sitecore caches and helps you identify any tuning that may be required.

Continue reading

Sitecore Publishing Service in a geo-distributed environment

If you’ve never used the publishing service before it’s an awesome opt-in for Sitecore to provide blazingly fast publishing by performing bulk publish operations. If you are needing to improve performance over your existing Sitecore publishing or reduce load on your Content Management Role then you should consider looking into setting up Publish service available since Sitecore 8.2. In this post I’ll share some discoveries while setting up Publish Service v4.2 on Sitecore 9.3 on Azure PaaS. It was pretty straightforward and painless! It just works really well!

image

Continue reading

Sitecore and Geo-Distribution

So I’ve been involved in several projects where I’ve had to setup geo-distributed Sitecore environments and/or scale the Sitecore Content Management and Content Delivery roles along with the plethora of roles XP Scaled provides. I’ll share some of those experiences here and some hurdles and how to overcome them.

Geo-Distributed Content Delivery

You can configure one or more content delivery servers for improved scalability and better performance. If you expect to have high numbers of visitors or want to configure servers in different geographic locations, ideally nearest to your customers.

In order to reduce latency you will want your web database in the same region as your CD. If you have multiple clusters in different regions you will need to consider how you plan to keep these web dbs up-to-date. Normally you would implement multiple publish targets, however Sitecore also supports geo-replication of the web database. See my post on Publish Targets vs Azure Geo replication for more details.

What other services and or roles do you need to support Content Delivery and where should these be located? More on this later… Continue reading

How to Profile Containerized Sitecore instance with dotTrace

Performance tools, like dotTrace profiler are really useful when trying identify potential bottlenecks in your Sitecore application. Normally, attaching to the w3wp.exe process and profiling your local Sitecore instance is relatively straightforward, however now that we are taking advantage of Docker and running our instances in containers the process is  slightly different. In this post I’ll show you how to profile your Sitecore instance running in containers.

dotTraceProfiling

Continue reading

Sitecore Publish Targets vs Azure Geo-Replication

When designing for a Geo-Distributed Sitecore implementation you have a decision to make on how you are going to handle updates to your Web databases located in different regions.

Traditionally you would set up a multiple publishing targets – one for each region and publish to each target. However, Sitecore supports Azure Active Geo-Replication of the read-only web database for Sitecore 9.0 and above. Which means you only need to publish to one web database and let Azure SQL replication update the other regions.

While this still experimental it offers faster publishing as you only publish to one target and let Azure handle the updating to the other regions.

Shared Web System DB

For this to work you need to setup a shared web system database to contain a copy of the EventQueue and Properties table, as these cannot be shared and must remain common amongst each Content Delivery role.

Sitecore provides information on how to configure the Content Delivery roles for separate EventQueue and Properties tables.

azurereplicatedwebdb

Continue reading