Blog posts by John Håkansson2022-11-15T13:16:50.0000000Z/blogs/john-hakansson/Optimizely World7 reasons to migrate to CMS12 (.NET Core)/blogs/john-hakansson/dates/2022/11/7-reasons-to-migrate-to-netcore/2022-11-15T13:16:50.0000000Z<p>In 2020 Optimizely made the call to move from the old and dated .NET Framework to the new and future-looking <a href="/link/92d9b1c0a0b14f5abe8d9c0f32b47fcc.aspx">.NET Core</a>. And since the launch of CMS 12 and Commerce 14 on .NET Core in 2021 we’ve been at the forefront of versions from Microsoft … <a href="/link/c6bc57aaf7fb4b8b929e167534282e47.aspx">now with .NET7 support</a>!</p>
<p><img src="/link/9c8ecd8389314fe5a35857b70bc57574.aspx" /></p>
<p>We feel the difference at Optimizely. Our OMVPs have recognized the shift, and so do our partners and customers that have made the move.</p>
<p>As of today (Nov22) 25% of our customer base on DXP Cloud are building and running their websites and apps on .NET Core. And since we launched the migration tooling this summer, we’ve also helped dozens of customers to migrate their projects from CMS11/Commerce13 and .NET Framework to CMS12/Commerce14 and .NET Core.</p>
<p>Some systems are difficult to replace, especially those that handle vital processes. But legacy technology can seriously harm your organization - higher costs, a small talent pool, and limited innovation are just a few of the downsides. Today, the .NET Framework is one of those legacy technologies, and moving to .NET Core is the best option.</p>
<p>But what does it mean for your business? How does it impact your daily operations?</p>
<p>We’ve listed 7 reasons to upgrade for you:</p>
<h2>1. Lower costs</h2>
<p>Every month you postpone upgrading puts you back a month in tech debt. As a customer, you probably do not want to stay on a framework that is marked as obsolete by Microsoft and Optimizely. You will likely face higher support costs from outdated solutions, especially if you use third-party components that could discontinue support even sooner.</p>
<p>Starting in November 2021, major Microsoft provided components used in web applications, such as ASP.NET MVC or Web API, will be retired. No bug fixing will be made available and efforts toward security patches will start to phase out. For third-party components, the cliff may be even more pronounced.</p>
<p>There is no end-of-support planned for CMS 11 at this point, see our <a href="/link/8f22a58ddc4348299ca9e583df57b49d.aspx">list of discontinued products</a>. We will continue providing patches for CMS 11 for important security issues and severe defects with no reasonable workaround that is reproducible in an unmodified instance of the software. But CMS 11 is not where innovation is happening and not where new features are released.</p>
<p>Yes, there’s a migration cost to move over the code from .NET Framework to .NET Core which is small for some customers and bigger for others. At Optimizely we’ve tried to make it as frictionless as possible for a customer to migrate with a .Net Upgrade Assistant and a Cloud Migration tooling including new environments at no extra cost, and feature parity of the core CMS/Commerce application (as of Oct-22).</p>
<p>In the DXP Management Portal, you’ll be greeted with a new tab called Project Migration. This will act as your main hub for <a href="/link/9ad349875f794bcfa2f04d747549c91f.aspx">administrating the migration process</a>. </p>
<p><img src="/link/260d72a14ea64f649ecce4bba087f578.aspx" width="706" alt="dxp-migration---begin.gif" height="245" /></p>
<p> </p>
<h2>2. Increased talent pool and happier developers</h2>
<p>.NET Core makes development much faster and light weight and adds tons of quality-of-life improvements that allow a faster and more productive inner development loop. It is also where all the new features are added, not in .NET Framework.</p>
<p>At the end of the day developers just want to be creative and productive in solving customer problems. With .NET Core you get more, and better things built faster, and what you build is also faster for end users. But not only does it make your day to day and customers' lives better now, it is also what you want on your resumé for the future. And by Microsoft embracing Open source and cross platform development with .NET Core, its great features finds more and more fans outside the traditional Microsoft developer community.</p>
<p>Today the talent pool for .NET Framework is bigger compared to the .NET Core’s, but that is changing rapidly as most developers are more interested in working with new technologies than anything scheduled for sunset. In <a href="https://insights.stackoverflow.com/survey/2021#section-most-loved-dreaded-and-wanted-other-frameworks-and-libraries">this survey by Stackoverflow</a> .NET Core is ranked as the most loved Framework with 72,67% loving it, where .NET Framework is second to last with 42,14%.</p>
<p> </p>
<h2>3. More innovation</h2>
<p>Money, talent, and obsolescence are big concerns for companies today, and they can be made worse if the migration process from a legacy technology to a new one is delayed. Waiting too long will make the leap too big and will likely cause instability issues, which are only addressed in a timely manner when migrating between consecutive releases, as all attention is focused on it and results in relevant updates and fixes.</p>
<p>Access to new features from Optimizely will happen on CMS12 and Commerce14. Since it’s running on .Net Core this is also where you get access to the latest innovation from Microsoft with .NET7 and beyond, a future path you get out-of-the-box with CMS12 and Commerce14.</p>
<p>CMS 11 is not where innovation is happening and not where new features are released, so you must upgrade to get access to the nice new stuff.</p>
<p>Our OMVPs:<br /><img src="/link/1392797abad34420a189fb38d9711d5f.aspx" /></p>
<p>Recent releases on CMS12 (Nov22):</p>
<ul>
<li>Content Marketing<a href="/link/8c7807ea45b444048bfeb74b735fadde.aspx"> <span>DAM integration</span></a></li>
<li><a href="/link/f2ac25ef2a8744f5b95880ec61b83a79.aspx">Headless editing</a></li>
<li>Optimizely Data Platform integration</li>
<li>Liquid templates support (Labs)</li>
<li>Advanced admin functionalities</li>
<li><a href="/link/9580d799b12a4c50bea29799a664f85c.aspx">Improved accessibility</a></li>
<li>Content Marketing Structured Content integration (Private Beta)</li>
<li><a href="/link/386fb3fd598c4978aaf6906a1bbc1505.aspx">Content Graph</a> (Open Beta)</li>
</ul>
<p>In development (Nov22):</p>
<ul>
<li>Tag helpers</li>
<li>List property support</li>
<li>Single-Sign-On (SSO) across DXP services (H1 2023)</li>
<li>TinyMCE6 upgrade</li>
<li>Out-of-the-box CMS dashboard</li>
</ul>
<p> </p>
<h2>4. Better performance</h2>
<p>Improved SEO is a result of better performance, that’s an old truth that is more valid today than ever since users demand a fast digital experience wherever they are. And being found is the first concern of many organizations, search engine rankings are directly impacted by load times. On top of that you’ve your users behavior where it’s key to ensure high engagement, satisfaction to increase conversions and the perception of your brand.</p>
<p>When we upgraded our own website <a href="http://www.optimizely.com">www.optimizely.com</a> to CMS12 the response times improved 3x, and some pages became 10x faster. A Nordic customer in the financial sector who migrated dropped their response times by more than 70%.</p>
<p>CMS12 and Commerce14 on .NET Core can handle 3x more server requests which means much better scalability and efficiencies. At the same time, Optimizely makes sure that customers migrating are also set up on the latest blueprint of performant infrastructure in Azure that scales faster and higher.</p>
<p>Finally, you also get a lovelier CMS admin experience that is much more responsive and easier to use. Our global customers see clear improvement among their content editors with a more democratized experience despite where you’re located in the world.</p>
<p> </p>
<h2>5. Improved headless capabilities</h2>
<p>Although headless Content Management Systems have been around for several years, many solutions focus purely on how content is retrieved, and leave content creators and editors with difficult to use, unintuitive editorial interfaces.</p>
<p>Content Cloud is often used as a headless or hybrid CMS, and we receive a lot of feedback on extending upon our capability to best support these use cases. From the extended RESTful APIs in CMS12 to our Content Graph service (<a href="/link/386fb3fd598c4978aaf6906a1bbc1505.aspx">GraphQL API in Open Beta</a>), we are continuously improving the ways in which content can be consumed.</p>
<p>To support (and differentiate) headless and hybrid content creation in the UI we have launched a Multi-Channel Content gadget in CMS12 enabling <a href="/link/f2ac25ef2a8744f5b95880ec61b83a79.aspx">more intuitive Headless content creation</a>.</p>
<p> </p>
<h2>6. Increased security</h2>
<p>Most companies choose to keep legacy systems because they contain historical information stored on them and the very idea of updating them is perceived as an unnecessary investment of time and money. Yes, some systems are difficult to replace, especially those that handle vital business processes, but the truth is that legacy technology can have a damaging impact. That impact can range from customer perception to actual security threats to your organization. Today, the .NET Framework, unfortunately, is now one of those legacy technologies.</p>
<p>ASP.NET Core provides many tools and libraries to secure ASP.NET Core apps such as built-in identity providers and third-party identity services, plus that it offers several approaches to store app secrets.</p>
<p>.NET Core provides significant improvement in:</p>
<ul>
<li>threat modeling</li>
<li>cryptography</li>
<li>defense in depth mitigations.</li>
<li>added support for OpenSSL 3 (Linux)</li>
<li>new runtime security mitigation roadmap</li>
</ul>
<p> </p>
<h2>7. Cross-platform support</h2>
<p>Product innovation is critical for business innovation, how to enable growth, scale or other wanted outcomes. But lack of innovation can affect your budget too.</p>
<p>.NET Core is cross-platform, so it is compatible with Windows, Linux and Mac operating systems. Your developers can choose the tools they’re most productive with to build applications that work across popular platforms. Our engineering team at Optimizely uses a mix of Linux, Mac and Windows machines working on the same products.</p>
<p> <img src="/link/14f46fcc69a64fe09c2b271432bc775f.aspx" /></p>
<p>That's the list. So what's the next step then? <span>Visit our </span><a href="https://docs.developers.optimizely.com/content-cloud/v12.0.0-content-cloud/docs/upgrading-to-content-cloud-cms-12">developer docs</a><span> to learn about the three phases we recommend for your migration journey.</span> </p>
<p> <a href="#_msoanchor_1"></a></p>Let me introduce Content Graph {beta}/blogs/john-hakansson/dates/2022/8/let-me-introduce-content-graph/2022-08-29T09:04:58.0000000Z<p>Today is not any day, it’s the launch day of <span>the </span>Content Graph <span>Open Beta </span>in Optimizely DXP!</p>
<p>Launching a new service or product, it’s not something you do everyday as a product team. We’re very excited to announce the open beta for this new service paving ground for agile organizations to create more value, and to make this beta service available to all our Content Cloud and B2C Commerce Cloud customers to try out.</p>
<p> </p>
<h3><strong>What’s Content <span>G</span>raph<span>?</span></strong></h3>
<p>Content Graph empowers customers to search and deliver content anywhere using a GraphQL API.</p>
<p>It’s a GraphQL API to our CMS that allows developers to interact and leverage content in new ways. Every great digital experience starts with content at its center - it is what differentiates your brand and engages users with you. Enabling, distributing, and delivering that content is key to create digital experiences and with Content Graph we’re providing an intuitive and flexible way to not only search your content using a personal search engine, but also deliver the relevant content to your users.</p>
<p><strong> <img src="/link/a18c488a679a4f68bbb54d9e0cf06726.aspx" width="696" alt="" height="181" /></strong></p>
<p><strong></strong></p>
<p><strong>Three reasons you should try out Content Graph</strong></p>
<ol>
<li>Time to value is extremely low, as a customer you can get started 100% self-service, synchronize content and immediately start developing applications consuming your content using GraphQL from anywhere in the world.</li>
<li>GraphQL is exceptionally advantageous to providing a superior developer experience. As a descriptive query language for APIs, GraphQL can be written in any language you want as long as it delivers the payload as expected.</li>
<li>We need <a href="https://feedback.optimizely.com/?project=PGQL">your feedback</a> and real-life scenarios to bring this service out of beta-status to a General Availability.</li>
</ol>
<p> </p>
<h3><strong>Why we buil<span>t</span> Content Graph</strong></h3>
<p><span> We are committed to strengthening our Content Cloud Headless offering and we’re always reviewing customer feedback to understand your needs and discover opportunities for enhancement.</span> <span>Since o</span><span>ur customers are focus</span><span>ed on</span> becom<span>ing</span> more agile organizations<span>, </span>GraphQL<span> becam</span><span>e</span><span> a key capability</span> to facilitate content delivery and extend the capabilities of our Content Cloud offering. It began <span>with</span> research <span>in </span>late 2020 and we had the first working prototype <span>in </span>early 2021 where we also announced a closed alpha program inviting our Optimizely MVPs <span>to try it out</span>.</p>
<p>We love GraphQL and its ability to be specific and prevent over-fetching of content, strongly typed and self-documenting schema, and the wealth of clients available for a plethora of modern JavaScript frameworks. Therefore, we’ve created this new service based on GraphQL to provide the flexibility to deliver content to any touchpoint, ensure users can find the content they’re interested in and relevant to them, and accomplish all this in a way that maintains a fast and responsive user experience.</p>
<p>We buil<span>t</span> this service with three design goals<span>:</span></p>
<ul>
<li>Easy to get started creating great experiences</li>
<li>Flexible and developer friendly</li>
<li>Amazing performance</li>
</ul>
<p><strong> </strong></p>
<h3><strong>How it is Easy to get started creating great experiences</strong></h3>
<p>As a customer you can Self-service provision in the Management (PaaS) portal, and it’s kind of Self-explained since GraphQL’s readability is vastly superior compared to just about everything and can be easily picked up by any developer.</p>
<p>Here’s a little competition for you<span>:</span> <span>C</span>omment on this post with how long it took you from provisioning to delivering content (there might be some Optimizely swag in the prize pot for fastest time)<span>.</span></p>
<p><strong> </strong></p>
<h3><strong>How it is Flexible and developer friendly</strong></h3>
<p>Content Graph enables advanced headless capabilities - a GraphQL API to your already existing content. And it’s actually developer friendly, since GraphQL schemas are strongly typed and predictable, it is a query language which allows for expression of queries on a graph or relationships.</p>
<p>To limit complexity and avoid <span>h</span>assle, we have been very focused on making it as easy as possible to focus on the exciting part – leveraging Content Graph to create great experiences. To make this happen, we’ve decoupled Content Graph from the CMS and run it as a separate service altogether. Much like Search & Navigation, content will be synchronized from the CMS to our backend services. But unlike Search & Navigation, content can be queried from any source and delivered directly to the clients.</p>
<p><img src="/link/7877294fee0f44f1af13e0f4e6352a80.aspx" width="367" alt="" height="399" /></p>
<h3><strong>How to enable Amazing performance</strong></h3>
<p>We’ve prioritized performance and scalability above features initially – and will be obsessed on maintaining a performant user experience. It’s also buil<span>t</span> on the latest most modern technologies using global serverless Edge computing, autoscaling microservices and latest search engine – all properly abstracted behind a future proof API (GraphQL).</p>
<p>GraphQL provides the flexibility aspect and efficiency by preventing over-fetching, the separation of duties from CMS limits complexity and allows developers to quickly start leveraging the API. But how do we tackle the aspect of performance? This part is probably what we’re most excited about. The backend services are running in public clouds, but the GraphQL server itself is running serverless at the edge using Cloudflare Workers. Even the schema that’s dynamically generated is stored at the edge for quick access. Not only does that come with a very geographically distributed server, but it also allows us great performance benefits leveraging cache, including tiered cache, and smart routing capabilities of the Content Delivery network.</p>
<p><span>Because this feature</span><span> is currently in open beta, </span>we <span>expect to </span>continuously tweak and optimize for even better performance<span>.</span> <span>You can help us prepare </span><span>Gra</span><span>p</span><span>hQL for general availability by </span><span>testing</span><span> and validating</span><span> it</span><span>,</span><span> and sharing</span> <a href="https://feedback.optimizely.com/?project=PGQL">your feedback</a>.</p>
<p><strong> </strong></p>
<h3><strong>All customers can participate in the beta</strong></h3>
<p>The beta is open for any Content <span>Cloud or</span> B2C Commerce Cloud customer running in our DXP Cloud Services, and our documentation here outlines how to get API keys and get started after provisioning the service in the DXP Management portal, <a href="https://optimizely-parent.readme.io/digital-experience-platform/v1.4.0-content-graph/docs/project-graphql">https://docs.developers.optimizely.com/digital-experience-platform/v1.4.0-content-graph/docs/getting-started </a></p>
<p><em>Step 1. Synchronize content</em></p>
<p>Once content is available in the CMS, it can easily be synchronized to Content Graph using an indexing job. See our docs here for more in-depth information around synchronization <a href="https://docs.developers.optimizely.com/digital-experience-platform/v1.4.0-content-graph/docs/scheduled-synchronization">https://docs.developers.optimizely.com/digital-experience-platform/v1.4.0-content-graph/docs/scheduled-synchronization</a></p>
<p><em>Step 2. Generate the schema</em></p>
<p>An important step of any GraphQL API is defining the schema as it’ll define the data developers are interacting with. In Content Graph, the schema is dynamically generated based on the content that’s synchronized from the site. Once synchronization is done, you can start exploring the schema <a href="https://docs.developers.optimizely.com/digital-experience-platform/v1.4.0-content-graph/docs/graphql-schema">https://docs.developers.optimizely.com/digital-experience-platform/v1.4.0-content-graph/docs/graphql-schema</a></p>
<p>And that’s it – you can now start querying your content using GraphQL!</p>
<p><strong> </strong></p>
<h3><strong>We want your feedback</strong></h3>
<p>We’re really excited to get this in the hands of developers, and as this is a beta we are very keen to hear your feedback and use cases. If you have suggestions for us, please use our<a href="https://feedback.optimizely.com/?project=PGQL"> feedback portal </a>to get in touch with us and post, comment or vote on ideas.</p>
<p>For bugs and support issues, please reach out to our <a href="https://www.optimizely.com/support/">support team</a>.</p>
<p>Have in mind there are specific <a href="/link/c6294f540c574fe7a8da480c7a9430f6.aspx">terms and conditions</a> (see section #22) for beta products and services. In short:</p>
<ul>
<li>Free during Open Beta, part of DXP Content Cloud and B2C Commerce Cloud</li>
<li>Non-production use with no SLA (yet)</li>
<li>You cannot buy it (yet)</li>
<li>We’ve the right to revoke and change the service</li>
<li>Just published content</li>
</ul>
<p> </p>
<h3><strong>What happens next</strong></h3>
<p>Stay tuned for more blog posts where we will dive into details on the <span>s</span>tory of Content Graph <span>s</span>o <span>f</span>ar, how to build a website with a single query, why Content Graph is also a Search Engine as a Service etc. We also have a demo site coming up plus some test content you can try out the GraphQL API with.</p>
<p>When we have updates on future plans of the service we will update you here, <span>and </span>reach out to active beta users and communicate this in the regular roadmap updates.</p>
<p>At launch we’ve enabled Content Graph to about 25% of the customers on our platform. If it’s not immediately available in the portal there’s a short instruction that you can follow on how to get access to it, and we will swiftly help you out. In 2022 we’re rolling Content Graph out to all customers accounts as open beta.</p>
<p> </p>
<p>Have a wonderful day!</p>
<p>John and the entire Content Graph team<br /><br /></p>
<h3><strong>FAQ<br /></strong></h3>
<p><strong>Question: Will Optimizely charge for it?</strong></p>
<p>Answer: Content Graph is free during the beta-phase, and the commercial model for a future LA/GA release will be evaluated during the beta-phase. See <a href="/link/c6294f540c574fe7a8da480c7a9430f6.aspx">terms and conditions</a> (section #22).</p>
<p><strong>Question: Is there a minimum CMS version requirement?</strong></p>
<p>Answer: CMS11 is minimum. We have package for both CMS11 and CMS12.<span style="-webkit-font-smoothing: antialiased; box-sizing: border-box; font-size: 14px; font-style: inherit; font-weight: inherit;"><br /></span></p>Every DXP website just got faster/blogs/john-hakansson/dates/2021/11/every-dxp-website-just-got-faster-with-dynamic-site-acceleration/2021-11-11T09:22:02.0000000Z<p>We’re happy to announce that we’ve just enabled another performance improvement to Optimizely DXP boosting the web performance of your websites and apps.</p>
<h2>What’s new?</h2>
<p>We have enabled <a href="https://en.wikipedia.org/wiki/Dynamic_site_acceleration">Dynamic Site Acceleration (DSA)</a> for every website on Optimizely DXP, which means we’re speeding up the dynamic (not cached) content between point A and B over Internet. Typically interactive and personalized websites spread over more than one region will benefit greatly from this, along with APIs. From early this week 90% of the dynamic content on DXP is loading on average 30% faster thanks to Dynamic Site Acceleration.</p>
<p><img src="/link/b85f898d244d4525a52943c57f1743e5.aspx" width="766" alt="Dynamic Site Acceleration (DSA) overview" height="373" style="border-style: solid; border-width: 1px;" /></p>
<div class="">
<div class="markdown-block  ">
<p>End-user experiences need to be immersive, interactive, and fast – regardless of the user's location, device, or current network conditions. With Dynamic Site Acceleration (DSA) Optimizely enables:</p>
<ul>
<li>Congestion Avoidance, with routing decisions informed by real-time network conditions</li>
<li>Tiered Caching, with content served from adjacent data centers to reduce cache-miss rates, server load, and latency</li>
<li>TCP Optimizations to further minimize latency for non-cacheable content</li>
<li>Global coverage, with network routes across the entire world</li>
</ul>
</div>
</div>
<h2>How does this relate to the existing CDN caching in DXP?</h2>
<p>Content Delivery Networks (CDNs) are great to speed up sites by caching files geographically close to the end-user, speeding up delivery of static files. However, in an era of an interactive and hyper-personalized web, a larger percent of content than ever is dynamic that is difficult or impossible to cache. At the same time, users expect a fast and reliable browsing experience.</p>
<p><span>By leveraging real-time network analytics of the internet and utilizing the CDNs backbone, we are able to </span><span>also </span><span>route </span><span>requests </span><span>smarter and avoid congestion</span><span> beyond just caching content</span><span>. This results in decreased load times, improved reliability, and because the points of presence in the CDNs backbone are mutually authenticated and provides end-to-end encryption, improved security that protects against interception, tampering and eavesdropping.</span><span> <br /></span></p>
<h2>Can you prove the effect?</h2>
<p>We can let the numbers speak for themselves (in case you already didn’t notice that this very website response time was improved by 44%).</p>
<p>Here are three examples:</p>
<h3><strong>1. Load times of a Reference website</strong></h3>
<p>This is an example using our Alloy reference site with a user in Singapore and origin servers in EU:</p>
<p><img src="/link/3aef98ae5b0a44a7b681e2f49140d366.aspx" width="809" alt="" height="309" style="border-style: solid; border-width: 1px;" /></p>
<p>Both examples benefit from cached content, but the DSA-version on the left also have accelerated dynamic content making it load and render faster.</p>
<p><strong> </strong></p>
<h3><strong>2. Response time improvement of an actual website</strong></h3>
<p>Here’s an actual reference case using our own website <a href="http://www.optimizely.com">www.optimizely.com</a> as an example, the average response time was cut in half. But maybe the most important effect is what you see in the visual below, the overall experience is improved for almost every user due to more consistent response times and hence a more consistent (and democratic) user experience.</p>
<p><img src="/link/f0a5f4136a71406597ea5f906dd434cc.aspx" width="770" alt="" height="442" /></p>
<h3><strong>3. Aggregated numbers showing improvement across entire DXP</strong></h3>
<p>Across all hostnames on DXP we can see a clear pattern between Time to First Byte (TTFB) and the improvements from DSA. Here’s an overview where we aggregated hostnames by top-level domains.</p>
<p><img src="/link/c2efde10aff34a7a9c4fc49ef66c6f85.aspx" width="645" alt="" height="440" style="border-style: solid; border-width: 1px;" /></p>
<p>Examples from the graph on median improvements.</p>
<ul>
<li>India (.in) improved 58%</li>
<li>Australia (.au) improved 35%</li>
<li>.com improved 32%</li>
<li>Sweden (.se) improved 25%</li>
</ul>
<h2><span>What do you need to do to leverage DSA?</span><span> </span></h2>
<p><span>Absolutely nothing – from today, this is part of our standard deployment in the DXP Cloud Service. </span><span>Every new website on DXP will get it automatically, and every existing website have it from November 8-9th 2021. We did the job for you, it’s on!</span></p>
<h2><span>What does it cost?</span></h2>
<p>It’s included in Optimizely DXP, so all new and existing customers have it today without any additional costs.</p>
<p> </p>
<p>Please comment and share your experiences and feedback below. Maybe you’ve some examples on e.g. SpeedIndex improvements you want to share. Enjoy!</p>
<p><strong>John & Elias</strong></p>
<p>Product Managers of the DXP Cloud Platform at Optimizely</p>How to load test your sites at DXP /blogs/john-hakansson/dates/2021/4/how-to-load-test-your-sites-at-dxp-/2021-04-22T07:37:21.0000000Z<p><span>What is</span> the best load-testing strategy - to invest in a realistic test or take a quick-and-dirty approach? Exactly where to cut away complexity in your load testing depends on your situation, but you may want to use a simplistic version of user behavior when designing your load test.</p>
<p><span>The simulated user in your test might be more static in its behavior than a real user, perhaps just accessing a set sequence of pages or content with no randomization. Or your simulated users access a ra</span><span>ndomly selected page on your site, choosing to ignore the fact that some pages are much more heavily visited than others.</span><span> <br /></span></p>
<p><span><img src="/link/fee779f2271a415eb69f9a33f1be04e9.aspx" /></span></p>
<h3><strong>Why should you load test your sites?</strong></h3>
<p>At Optimizely, load tests are something that represent an accurate customer journey on your website. Simulated user volume should align with historical or expected site traffic including historical ramp up and down times such as visiting the home page, navigating to another page, searching, adding items to carts, and so on.</p>
<h3><strong>When should you do your first load test?</strong></h3>
<p><span>Load testing your solution is also something you do before you go live with Optimizely DXP for the first time. </span>You, <span>the client, or your partner, or a third party of your choice should complete load performance testing at least two weeks before Go Live. Ideally earlier than two weeks, </span>as soon as dependent apps are integrated it is a good point too, as it will pick up any bottlenecks in the overall solution long before you get near the go live date. <span>Two weeks is the time to either <a href="/link/91dd22ccb12342b4a2eb20b041064b21.aspx">optimize and resolve identified problem</a> on the platform or the application from load testing results, or to make necessary decisions about whether the planned Go Live date must be postponed.</span> </p>
<h3><strong>When should you do your second load test?</strong></h3>
<p>Well, after the first one. The important thing is that you don’t stop at test #1. We see that customers that continuously test and iterate their code have more healthy applications which means better user experience, web performance, SEO and security. For most customers and partners is <a href="/link/cecd04dddeea47f89a14d7f163913728.aspx">Continuous Integration/Deployment (CI/CD) </a>the path forward to overcome concern around deployments. Load testing is often times just another step to the process.</p>
<p>In our DXP platform you’ve three environments, the <a href="/link/711ca6bfaba841aebcb2978b052fb510.aspx">pre-production environment is ideal for load tests</a> without impacting your production website. We scale up your pre-production environment to mimic your production environment setup for testing purposes, to later scale it back when the testing is done.</p>
<h3><strong>What scenarios should you test?</strong></h3>
<p>A test can measure the following scenarios, depending on your expected traffic to your website:</p>
<ul>
<li>A gradual increase of traffic that tests auto-scaling.</li>
<li>A burst of traffic that tests a planned campaign where you know that you will receive increased traffic during a period of time. Optimizely Support pre-scales the environments so it does not have to fully rely on the auto-scaling feature.</li>
</ul>
<p><em><strong>Note:</strong> Testing unusual loads – for example, 1500 virtual users visiting 15 different pages, refreshing all of them every second for 10 minutes – should be reserved for testing a site against an attack; not typical load scenarios.</em></p>
<p>Test end-to-end simulations (not just test one part of a site), especially on a commerce site; user checkout needs to be withing scope. For example, it is not an accurate simulation to test only triggering APIs on the site. All dependencies should be within the scope of the test, such as Search & Navigation, external dependencies, and so on..</p>
<h3><strong>Consider the following test criteria</strong></h3>
<ul>
<li>Perform a discovery or inventory of what is in and out of scope for your test.</li>
<li>Iterative testing improves results by looking for bottlenecks either in the infrastructure or application code.</li>
<li>A real user scenario should have sleep timers between each action.</li>
<li>Virtual users should not do the same action at the same second.</li>
<li>Each virtual user should have its own set of cookies. If virtual users share the same cookies, they will hit the same app service instance which guarantees a crash.</li>
<li>Use Azure Application Insights to examine the telemetry of requests and traffic from the load test.</li>
<li>Make sure to warm up the CDN cache to not get skewed results from uncached content (that will be cached in reality)</li>
</ul>
<h3><strong>How should you act on the results?</strong></h3>
<p><span>You can realize performance improvements by </span>maximizing your use of <a href="/link/f2555bbb4fd74dff83a6b643536fe570.aspx"><span>CDN caching</span></a> <span>and</span> specifying the number of results returned from Search & Navigation or how often a search can be used. If the first load testing did not “meet the bar,” then iterate with improvements and do it again.<span> </span></p>
<p><span>When working on improving performance in complex applications, there is rarely one big change that you can make that will make everything immediately faster or scale better. Many small incremental changes built up over time are usually required to achieve your goals, make use of <a href="/link/cecd04dddeea47f89a14d7f163913728.aspx">Continuous Integration/Deployment (CI/CD)</a> to achieve this way of working. Those changes can have hidden trade-offs and it’s not always clear how much a given change will improve things. <a href="https://blog.optimizely.com/2019/07/19/using-experimentation-to-measure-and-validate-backend-performance-improvements/">Experimentation can tell you with certainty</a> that you are making things better, also when doing backend improvements.</span></p>
<p><span>Consider automatic scaling of the DXP platform as a factor, because short high-intensity load tests will not test the DXP platform’s ability to scale the application under a growing load. The DXP platform scales out instances based on resource use over an aggregate period. DXP-specific considerations are scaling, caching, CDN, warm-up/code initialization when a new instance is spun up, and dependencies (such as Search & Navigation).</span><span> </span></p>
<p>Another important step is to involve our <a href="/link/7ecb44851f5d45228180dea39dfc573a.aspx">support team</a> for scaling down auto-scaled instances in case they want to re-run a test immediately instead of having to wait for instances to scale-in to minimum value (can take hours).</p>
<p><span>Do not</span> hesitate to <a href="/link/7ecb44851f5d45228180dea39dfc573a.aspx"><span>engage the Optimizely teams</span></a><span> </span>for questions around load testing. <span> </span></p>
<h3><strong>More reading on the subject.</strong></h3>
<p>The following blog posts describe other tools to enhance your understanding and preparedness for scaling, using feature flags and rollout tests.</p>
<ul>
<li><a href="https://blog.optimizely.com/2019/06/26/feature-flags-how-to-integrate-them-into-your-development-cycle/">Feature Flags: 3 Use Cases for your Development Cycle</a> - by Optimizely</li>
<li><a href="https://blog.optimizely.com/2019/07/19/using-experimentation-to-measure-and-validate-backend-performance-improvements/">Using Experimentation to Measure and Validate Backend Performance Improvements</a> - by Optimizely</li>
<li><a href="https://k6.io/blog/the-easiest-way-to-create-realistic-load-test-scripts/">The easiest way to create realistic load testing scrips</a> - by K6, a load testing tool we use ourselves at Optimizely</li>
<li><a href="https://www.geeksforgeeks.org/difference-between-load-testing-and-stress-testing/">Difference between Load Testing and Stress Testing</a> - by GeeksforGeeks</li>
</ul>
<p> </p>
<p>Feel free to share your experiences and best practices in the comments section below.</p>
<p>Happy testing!</p>
<p><strong>John Håkansson</strong></p>
<p>Global VP Product Management for CMS & Cloud Platform at Optimizely</p>Now you can Deploy Smoothly to Content Cloud/blogs/john-hakansson/dates/2021/4/content-cloud-smooth-deploy-/2021-04-19T16:54:55.0000000Z<p>Zero downtime you say? Smooth Deploy we say. During the last year we have been working on a feature for Content Cloud called Smooth deploy that solve the problem of applying database updates without having to take the site offline. After running a multi-month beta program with many active beta testers we’ve now decided it’s ready for the entire customer base as a general availability capability.</p>
<p>This diagram visualizes how the setup works during a deployment:</p>
<p><img src="/link/83b90c3790b74b54b5b6de2f118b7eb8.aspx" /></p>
<h2><span>Why is this a big deal?</span></h2>
<p><span>When you are building functionality for your digital experience, often there are changes to core capabilities – and these would sometimes require a database change, requiring an application restart. Smooth Deploy automates this process, making it easy to use in deployment processes.</span></p>
<h2><span>Wow, no downtime sounds awesome. When do we get it?</span></h2>
<p><span>All Optimizely/Episerver DXP Content Cloud customers have this available now (Apr 19th, 2021) in the deployment API and the PaaS portal.</span></p>
<p><span><img src="/link/82b2a59519284b4b917dae5ad741cb66.aspx" /></span></p>
<h2><span>So, what am I waiting for?</span></h2>
<p><span>We’ve literally no idea. Go ahead and try it out, and check out our documentation at </span><a href="/link/016387a70e524ec4beb5c25ba936b2b9.aspx"><span>https://world.episerver.com/documentation/developer-guides/digital-experience-platform/deploying/deployment-process/smooth-deploy/</span></a></p>
<p><span> </span></p>
<p><span>Happy deploying! </span></p>
<p><strong><span>John Håkansson </span></strong></p>
<p><span>AVP Product Management for Cloud Platform at Optimizely</span></p>
<p><span> </span></p>How to address web performance and security in China/blogs/john-hakansson/dates/2021/4/how-to-address-dxp-web-performance-in-china-with-and-without-cdn/2021-04-15T15:03:39.0000000Z<p>Selecting the best solution to optimize the web user experience for users located in China can be a daunting task. I will give some advice and ideas below on how to optimize your web performance in China.</p>
<h2>Why China is important to you</h2>
<p>Well if you started to read this blog post you probably already know how important China is or will become to your organization. China is home to the world’s largest Internet population with <a href="http://www.Internetlivestats.com/Internet-users/china/">720 million people online</a>, that’s more than twice as many as in United States. This staggering number of web users still has capacity to double in size as China is only just passing 50% Internet penetration. However, tapping into this market can be difficult with regulatory requirements, malicious attacks and quite unique Internet infrastructure challenges.</p>
<h2>Is using CDN with China presence a silver bullet? (spoiler: it’s not)</h2>
<p>To help customers overcome these hurdles and streamline the process of website optimization in China, Episerver/Optimizely offers an extended CDN service into China improving global performance and security. Customers using our China CDN service have shaved off seconds of latency and seen site availability improve by over 30%.</p>
<p>But is it always that simple to get perfect web performance? No, it is not. China CDN is not a silver bullet for every use case. But we can help you as a customer to navigate and find a solution that works best for your unique use case and budget.</p>
<h2>Web performance in China is a unique problem to solve</h2>
<h3>Challenge #1: The ICP license</h3>
<p>Tapping into China’s lucrative and growing Internet economy can be difficult. First, to serve online content inside China, companies need to obtain an Internet Content Provider (ICP) license from China’s Ministry of Industry and Internet Technology. This can be a daunting and long process for foreign companies entering the market. The ICP process is not something we at Episerver/Optimizely help with, but there are companies specializing on that. And you need an ICP license to get access to China CDN in Episerver/Optimizely DXP.</p>
<h3>Challenge #2: The great firewall of China</h3>
<p>Cloud vendors face performance and availability challenges posed by China’s unique and complex infrastructure. China has three connections with the outside world (located in Beijing, Shanghai, and Guangzhou), a limitation that often results in severe bottlenecks for web traffic coming into the country. Back in 2014 Mehdi Daoudi, CEO of Catchpoint systems, shared some telling data that local websites were twice as fast as those served from outside China. This kind of difference between inside or outside the firewall is true also today. If you can cache your content in China using a CDN, you’re seeing <a href="https://itm.cloud.com/country-reports/?report=cdn_response_time&amp;amp;amp;amp;country=CN&amp;amp;amp;amp;date=2021-03-18">5-10x better performance</a> and better availability.</p>
<p>China is one of the few places in the world where accelerating dynamic websites using a CDN is not a guarantee to improve the web performance. Citrix (former Cedexis) Country Reports is a great tool used over many years by colleagues in the web industry, and the <a href="https://itm.cloud.com/country-reports/?report=dsa&amp;amp;amp;amp;country=CN&amp;amp;amp;amp;date=2021-03-18">“Dynamic Object Delivery” report for China</a> explains with data why this is a problem. Whatever CDN you use, your dynamic content is probably better served directly from an origin in Asia (for example Singapore) than via a CDN using the usual best practices.</p>
<p>Serving your content inside of China and avoiding these choke points is critical to achieving really high web performance in the country. Furthermore, increasing the performance of your site improves SEO rankings. China CDN in DXP helps you serve cached content from within China improving the user experience. But again, China CDN won’t necessary improve performance for dynamic or non-cached content.</p>
<h3>Challenge #3: China’s unique infrastructure</h3>
<p>Even if companies host their websites within mainland China, there are further internal infrastructure complications to overcome. There are only three major ISPs that control the network inside of China: China Telecom, China Unicom, and China Mobile. Due to limited interconnection (peering) and the incredibly high volume of traffic in China, these networks are frequently congested, resulting in high latency and packet loss.</p>
<h3>Challenge #4: Security</h3>
<p>Security is also a major concern in China as websites see a constant bombardment of attacks. Not only have large botnet attacks been seen coming from the country, but over <a href="https://securelist.com/ddos-attacks-in-q4-2020/100650/">59% of the world’s Distributed Denial of Service (DDoS) attacks</a> target China. Furthermore, these DDoS attacks are on the rise, making China’s Internet increasingly more unreliable for websites without protection.</p>
<h2>Key takeaways on how to improve your performance in China</h2>
<h3>1. Use China CDN to improve Content Delivery Latency Issues by caching</h3>
<p>First make sure you know if you’re able to cache the necessary content in the CDN despite geographical location. Then caching with China CDN will help in China. Using for example the private cache-control header at the origin for gated content will severely decrease your chances to get most out of CDN caching, unless you authenticate the gated content at the CDN edge and serve it from there. Test and verify your use cases before you move ahead with the ICP license and decide on what solution works best for you. Learn <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching">HTTP Cache-headers 101</a> if in doubt how this works across Internet and specifically use of <a href="https://www.cloudflare.com/learning/cdn/glossary/what-is-cache-control/">cache-headers in CDNs</a>.</p>
<h3>2. To get access to China CDN you need to obtain an ICP License</h3>
<p>The ICP process is not something we at Episerver/Optimizely help with, but there are companies specializing on that. And you need an ICP license to get access to China CDN in DXP.</p>
<h3>3. Consider combining In-China CDN with Near-China origin</h3>
<p>To minimize latency for your dynamic content you’ll benefit from an origin close to the end-users. China is one of the few places in the world where accelerating dynamic websites using a CDN is not a guarantee to improve the web performance. And Episerver/Optimizely do not offer in-china origins for DXP. However, we do offer near-China presence with the South-East Asia (Singapore) Episerver/OptimizelyDXP region that was launched in 2020. Our own performance tests serving a site to Beijing showed a 30% load time improvement when using a Singapore origin vs a North Europe origin, this without considering the impact of caching more content on top of that.</p>
<p> </p>
<p>Please comment and share your experiences and feedback below. Happy caching!</p>
<p><strong>John Håkansson</strong></p>
<p>Associate VP Product Management for the DXP Cloud Platform at Optimizely</p>Develop on DXP like it’s 2020/blogs/john-hakansson/dates/2020/4/develop-on-dxp-like-its-2020/2020-04-28T05:46:27.0000000Z<p>Do you belong to the growing list of customers and partners using our Deployment API? If yes, congrats! We’ve some exclusive and very awaited news for you. If no, now you’ve got another reason. Get your hands on some API-first features in Episerver Customer-Centric Digital Experience Platform. </p>
<p>When we released the API as beta back in November 2019, we made it possible for you to integrate Epi with your CI/CD pipeline, and we enabled an efficient new way to deploy using code packages. We’ve been overwhelmed by the positive response and usage of the API since then. And we’ve been fortunate to barely spend any time on bugs, so we decided to raise the bar and add some new features for the General Availability release. </p>
<p>Today every third deployment on Episerver DXP is via our API. On average a customer project using the API is 3x as active than the average customer, which means faster innovation and a more friction free developer experience. </p>
<p>We’ve seen the API making a difference during the ongoing Covid-19 pandemic. Some emergency projects with society impacting websites went live in record time, using the API extensively. Thanks <a href="https://e24.no/naeringsliv/i/9v45JM/coop-tar-opp-kampen-med-kolonial-og-meny-paa-nettmat">Coop Norway</a> and the other new customers, we’re humbled of your trust in the platform and its capabilities. </p>
<p>So “what’s the fuzz about” you probably wonder by now. What’s the news? By using the API you can not only deploy directly up to any environment, now you can also sync-down content from the production environment to any other environment. And you can get a copy of the production database without the need to raise support tickets. What goes up, can now also go down! <a href="/link/c7599dd1067949dca7708e6c2a121d13.aspx">Check out some of the capabilities in more detail</a> in this related blog post by Anders.</p>
<p><img src="/link/e517fc2610c849b6860d7557f8e9b9cc.aspx" width="729" height="327" /><br />This General Availability release of the Deployment API opens a new chapter for deployment tools at Episerver DXP. Next we’ll be harmonising functionality in the self-service portal and the API, and enable even more functionality like Smooth Deployments and rich telemetry and some CDN-related stuff. Learn more about our beta-programs etc in <a href="/link/b65125e7212142059e425ee2d086c652.aspx">Product & Service Lifecycle</a> section. </p>
<p>Let us know in the comments field below what other capabilities you would like to see next. </p>
<p>Stay safe!<br />/John </p>
The journey ahead for Search & Navigation (A.K.A. Find)/blogs/john-hakansson/dates/2020/3/the-journey-ahead-for-search--navigation-a-k-a--find/2020-03-02T13:07:26.0000000Z<p>Hi dear customer, partner and colleague.</p>
<p>Today marks 365 days since I joined Epi as Product Director for DXP. During my first 11 months at this company the Find product and service was managed by a colleague of mine, but its whereabouts was always on the radar of several reasons. The main reason was (and still is) that Find is a corner stone in our Customer-Centric Digital Experience Platform (DXP). It needs to operate as a clockwork and allow customers and partners to innovate and deliver a great end-user experience.</p>
<p>What happened last year:</p>
<ul>
<li>Release of a new backend which improved our capabilities to provision more capacity and new service clusters (internal name is version 3.0)</li>
<li>Development started of next generation Search & Navigation service (we call it version 4.0)</li>
</ul>
<p>Listening to you, our customers and partners, in January and early February helped us put new spotlight on our plans and current efforts. The focus on delivering a great customer-experience 24/7/365 had to improve. Of that reason the roadmap for Episerver Search & Navigation (the name Find has from now on) has just been updated.</p>
<p>Here’s summary of the changes we have made, and decisions taken since January 2020:</p>
<ul>
<li>Since Mid February we have been working version 3.5 of the service to provide further stability improvements for existing customers, improved incident management and enable rich analytics and telemetry for us internally and for you as a user of the service. This is our focus in Q1-Q2 2020.</li>
<li>As a developer you probably know <a href="https://find.episerver.com/">find.episerver.com</a> (AKA the Find Demo service) and one thing is clear, it’s more than “a demo service” despite its name. It’s where many developers get their indexes for development projects. It must work, otherwise our partners and customers can’t work. So, we have after recent issues tripled its capacity and will work on improving the developer experience going forward. Any feedback on how to update this service and how it relates to the paid Developer Indexes is greatly appreciated!</li>
<li>The exciting work on the next generation Search & Navigation service (version 4.0) will continue in Q2, enabling the service to run on a totally new modern architecture with improved functionality around individualization, performance and search accuracy. Keep an eye open for the beta program that will be announced mid-2020.</li>
</ul>
<p>Improving the customer experience is crucial, and I promise that we will be even more transparent with you going forward. If you’re a customer to the Digital Experience Platform, you will soon see your daily Search & Navigation usage, uptime and performance in the DXP Management portal in Q2 together with other interesting usage data.</p>
<p>Thanks for reading this and I would love to get your feedback in the comments field below. I'll get back to you with a new update on our progress in month or so.</p>
<p>Best, John</p>
<p>Product Director for Episerver Search & Navigation (Find), and the Digital Experience Platform</p>