microsoft / MCW-App-modernization

MCW App modernization
MIT License
175 stars 264 forks source link

Exercise Flow (re: Github Exercise No.4) #83

Closed manasvin closed 1 year ago

manasvin commented 3 years ago

I looked at the background scenario and suggested solution. I also tested and ran the lab for an interactive workshop. (App Mod Immersion experience in a day)

I think the lab exercises flow better if the azure functions exercise (No.5) is done prior to the Github Actions Exercise (No.4). Hence I suggest we change the flow.

Also, simplifying the Github exercise by providing a prior created yml file would greatly help as the impression gets confusing / overwhelming for users new to Github (including who are used to Azure DevOps)

daronyondem commented 3 years ago

H @manasvin Thanks for the feedback.

Do you mind me asking why the flow would be improved when Ex.4 and Ex.5 are switched?

There is a final YAML file provided in Ex.4 Task.3 Step.13. Didn't that help? I doubt we can remove the Deployment Center out of the picture. One of the highlights was that the YAML can be auto-generated from the Deployment Center.

I hope this makes sense. Thanks for letting us know about your experience with the lab. Keep it coming.

manasvin commented 3 years ago

As minor point, if swapped it would align better with the problem scenario presented (readme), but the main reason, in my view, would be that the subject matter flows better considering the audience and type / depth of activities covered in these respective Exs. Bear in mind that many attendees sometimes don't have exposure to Azure itself let alone Azure SQL/App services. For them these workshops in a few hours give them to this exposure and, in case of this workshop, on how to modernise their existing IIS/on prem SQL workloads

Ex 2-3 takes them through large using Azure tooling to work on App Services + Azure SQL. Following the Azure function ex for another 20-30mins wherein they again re-use SQL connection details (amongst other things), keeps it relevant and on familiar ground (I feel)

The github ex is longer ... 55 + 75 mins - Github pushes a new type of understand i.e. working with git repos in Github. hence I feel dealing with that would be easier as Ex 5 after the success of the Azure func backoffice solution.

re: YAML

I had to advise specifically not to use the full file (the secrets file reference will bomb). Most attendees made mistakes in amending the details but eventually go through. The initial deployment failure before the yaml amendments also throws out the non-clunky experience we hope to take them through in these workshops

Happy to explain with more clarity over an IM (teams) call if required

daronyondem commented 3 years ago

Hi @manasvin

I still don't fully understand how switching Ex5 and Ex4 will help achieve the goals you have listed. Let's say we move Ex4 after Ex5. In that case, we have to make sure the function app is in a repo and part of the CI/CD pipeline. Otherwise, just part of the solution will be deployed through the CI/CD pipeline at that point. Having Ex4 before Ex5 and positioning Ex5 as a Next step improvement kind of saves the day with the right-click deploy approach. We can move the function into the CI/CD pipeline, but I'm not sure if that serves your goals.

If they use the YAML file at the right step in the HOL, the secrets file reference will not bomb. Why did they skip the previous tasks of the lab? Any ideas?

The error of the .NET Core version you mentioned is part of the learning process about the migration of the path. That was planned.

Hope this makes sense.

manasvin commented 3 years ago

Actually, it doesn't.

for the 1st part, we should let CI/CD to come after Az funcs are done in Azure i.e. the modernisation of the solution completed and then the pipeline Exercise with github to follow after. That I think makes more sense, in terms of the objective flow.

For the 2nd part, I think your described learning objective makes sense for a self paced lab but in a time bound Immersion workshop, running for a few hours, with a mixed capabilities audience, I believe this level of complexity + troubleshooting is an overkill.

daronyondem commented 3 years ago

Lovely. Your suggested changes require:

  1. Including Azure Functions into the CI/CD Pipeline.
  2. Migrating the current Parts Unlimited website to a supported LTS .NET version that is listed in the Deployment Center so that no further configurations are needed.
  3. Removing the concept of migrating a non-LTS version of an application to Azure.

Do these action items capture your requirements?

manasvin commented 3 years ago

I think my request is simpler

  1. swap Ex4 with 5 - Az Functions Ex steps work without any dependency to CI/CD pipelines activity
  2. Migrate to a support .net version - ideally 5 so the version riff/raff is not needed.
daronyondem commented 3 years ago

Deploying Azure Functions manually before the CI/CD exercise and then implementing CI/CD just for the website and leaving Functions out sounds incomplete to me. That's me, though. Content decisions are bound to product groups. I'm just gathering feedback.

Thanks for the discussion.

manasvin commented 3 years ago

CD/CD (as per the exercise a it stands) is only for the website. Azure functions are not covered with the current Ex5 due to the solution file name injected covering only web solution files.

I get that in the real word scenario you would anyways cover Azure function source within CI/CD but this way the learning objective is still achieved whilst having workshop flowing smoother. That's my take anyways.

daronyondem commented 3 years ago

Correct. Currently, Azure Function is introduced after the CI/CD setup is complete. That's the reason it is left out. Considering the HOL timeline the moment CI/CD is set up there is no Azure Function in the solution.

Just changing the solution file name in the pipeline or adding the functions project into the same solution would not be enough. The CI/CD pipeline has to be configured to deploy the Function App to a Linux App Service set to Consumption tier. This addition would not come out of the box with the current Deployment Center functionality for the combination of two App Services in two different pricing tiers.

With that said, leaving the functions out of the CI/CD pipeline is definitely an option. Thanks again for the feedback. I think this thread does explain both the suggestions you offered and the reasoning, background. Appreciated.

timahenning commented 3 years ago

Hi @manasvin,

We will review this enhancement during our next update. Thank you for taking the time to provide your feedback.

Tim