Adobe.com Learnings with Edge Delivery AEM

In this session, you will hear about the challenges, learnings, and benefits adobe.com team discovered while migrating the website onto Edge Delivery AEM.

We will focus on topics that are familiar to every large-scale AEM project, including:

puradawid

How did you deal with content migration?

Lars

You can migrated content with https://www.aem.live/developer/importer

puradawid

I mean the smaller migration, when you introduce a new component/model that handles different data structure, and eventually you need to change jt

Mariia Lukianets

If we need a different structure we usually enhance the code to support both structures (always backward compatible)

Tomasz Sobczyk

Spoke to Maria about it at greater length. Generally there is no solution for that in EDS apart from being backward compatible forever (Hi Java!)

Beo

How to govern that developers dont publish "foobar" content to adobe.com?

Mariia Lukianets

We have a 'drafts' folder and it is the only location where we modify documents. If I want to experiment with photoshop DE page, I would copy it to /drafts/de/mariia/* and do my experiments there. Content Authors additionally use SharePoint ACLs & document locking to protect their content. But devs normally have full access to all docs

Learning regarding other git repos than github? Selfhosted gitlab/bitbucket?

Mariia Lukianets

For adobe.com we were happy with GitHub, so I am not sure if other repos are supported. I'd ask this question either in https://discord.gg/aem-live where the Engineering could answer it or address it to your Adobe contact person

Nilesh Mali

How can we get the AEM cloud pipeline checks on GitHub/Gitlab ?

Sanket Dixit

What's the time to live for a feature with this setup?

Mariia Lukianets

it depends, but in the most regular scenario: 1-2 days code review/addressing comments 1-2 days you team QA validation -> marking 'Ready for Stage' If Stage batch is not locked yet - it gets in, if locked you'll need to wait for the next batch another day or two 1-2 days for the batch to be validated and merged

How do you cherry pick features when some are not approved at stage?

Mariia Lukianets

Let's say 5 PRs are merged in Stage branch. PR #3 has a bug. We just revert PR with GitHub UI. Worse situation, PR #3 can't be reverted easily because PR#4 touched same files and we have a conflict? We revert both, first PR#4 and PR#3. The PRs should be tested very well before they reach stage to avoid risks&delays. And Stage batch handling is unmerciful to keep it efficient, no waiting for fixes :)

Tomek Niedzwiedz

Have you considered using automated visual comparison tests, e.g. Percy? I find that approach really neat when it comes to picking up unexpected changes, but it does require relatively stable content and I'm wondering how well it would work in a document based approach.

Mariia Lukianets

Automated visual or screenshot check is something I want to have (we don't have it yet, at least in my subteam :) ) It will save time for sure, but IMO still can't replace that last check on prod pages. Our prod content is changing rapidly so for autotest we would unlikely be able to use it, it would rather be some defined test pages. Those pages could also serve as documentation of all the supported features/blocks you have. But it still makes a lot of sense since you can catch UI regressions early.

Tomasz Sobczyk

Maria - you could have that still - snapshot pages before and after deployment :) We recommend visual regression tools - they save a lot of time

How do you handle SEO data?

Mariia Lukianets

In the page & bulk metadata

Remo Liechti

When you have 3 PRs accumulated in stage, and for some reason one of those cannot be merged to main, how do you ensure to not block the other 2 from being merged to main?

(see answer in talk video)

nicoleh

How is the workflow when you have a bug on main?

Mariia Lukianets

If it's a critical bug that was introduced by last batch merged in the main - we would revert the whole batch & notify the devs they need to reopen their PRs again. However, I can't remember this scenario ever happening. More realistic is that there is some critical bug that was introduced a few batches ago but somehow wasn't noticed. Hotfix branch is created and will be merged to Stage for validation (nothing goes to prod directly). However depending on the urgency other PRs already present in Stage could be reverted, but mostly we just combine hotfix with regular PRs and ask for an urgent validation. To be fair we don't have many of high urgency bugs due to extensive testing happening prior to merge

Are you implementing feature flags? if yes, can you tell about the usecase and how its acheived with EDS

Mariia Lukianets

feature flags could be implemented using bulk metadata. Since all your logic is executed in JS on the client you can read the feature flag value from the meta tag (or check for its existence) to toggle your feature. When the time comes you can add a flag to the metadata sheet & specify the scope with grep expression. Then re-publish the metadata - AEM will flush the catch on all related pages and your feature is on. I don't have a pure feature flag example at hand but in this session i talk about using metadata to schedule some content on the website, it might be helpful https://www.youtube.com/watch?v=AJ0N_qJfgbw

Beo

what if someone enters "fault" data into a sheet... how to debug?

Mariia Lukianets

someone did something wrong in metadata and you noticed means: 1. you know on which page it happens 2. you know what is wrong since you can check in the markup meta tags and see an issue to fix: 1. check page first to see if it's page metadata 2. if not. locate the bulk metadata file, filter by page URL (you might start with the full URL and keep removing the last part to find the exact row if the grep expression is used) 3. fix or ask an author to fix 4. republish - cache will be flushed automatically

Jurgen Brouwer - AmeXio

How are hotfixes handled? Can you bypass steps to speed up the process if really necessary?

(see answer in talk video)

Tomasz Sobczyk

Where can I find the docs for the events that are Sent to github after page publish?

Mariia Lukianets

https://www.aem.live/developer/github-actions 'resource-previewed' is not mentioned in the docu, but if you need it just ask the admin to enable it for your repo. 'resource-published' should be enabled by default

puradawid

So, the index spreadsheet can have the same number of rows as the number of pages in the entire website?

Mariia Lukianets

yes

Masoud Rozati

Bulk metadata can be split into several files (https://www.aem.live/docs/bulk-metadata). Why not do the for redirect, because redirects are usually managed by different teams

Mariia Lukianets

Do you mean why can't the redirects file can't be split? I haven't tried, but if it's the case I would address this as a feedback/question to the Engineering team. They might just implement it once it's reported, this is how it worked with splitting the metadata, it was added once people asked for it

Dominik Suess

The language root docs setup looks very much like MSM / languagecopies. This is supported by sharepoint / google docs with workflows?

Dominik Suess

I think she answered it in the next slide :)

Beo

How do you deal with l18n of currency, dates, etc. pp? eg DE_de != CH_de (64,33 for DE, 64.33 for CH)

Mariia Lukianets

We (the website) are requesting pricing from the internal service and specify for which country/language we need it, so in the response, we get the price value and format with currency. pricing information is not included in the word document, it's a dynamic link to the latest price and gets resolved on the client to always reflect the latest updates. That internal service is responsible for proper formats and the website is just one of their consumers, together with apps like creative cloud desktop etc