AZ-400 exam notes

Some months missing between my last update!

I must say I have been quite busy with the new position and the massive change that has impacted my previous knowledge but overall, I am pretty happy with it!

Therefore, let’s move to the point! So I just want to share some notes of the AZ-400 exam which I recently passed and I hope that can be useful to someone.

Certification details

This exam (AZ-400) is the second one of the path to the specific “Microsoft Certified: DevOps Engineer Expert” certification:

Last month I passed the Azure Administrator Associate exam (AZ-104) so I had the prerequisite already.

You can check the objectives measured in detail for the exam here but as a summary, this is what the official documentation states:

  • Develop an instrumentation strategy (5-10%)
  • Develop a Site Reliability Engineering (SRE) strategy (5-10%)
  • Develop a security and compliance plan (10-15%)
  • Manage source control (10-15%)
  • Facilitate communication and collaboration (10-15%)
  • Define and implement continuous integration (20-25%)
  • Define and implement a continuous delivery and release management strategy (10-15%)

 

Notes and resources for the exam

  • Be sure to try Azure DevOps lab where you’ll be able to use Azure DevOps for free and with many guided Hands-on labs (https://github.com/microsoft/azuredevopslabs) → MUST
  • Study the majority of the Azure Products that can be related to any process within a pipeline, therefore, applications, web apps, secrets, repositories, VMs, etc.
  • Of course, I suggest you read and try Azure DevOps and the many of the integrations that can have with Github (remember that it’s owned by MS) within a pipeline.
    • This includes things like Azure boards, App Configuration, Azure feeds, Key Vault, Artifacts Credential Provider, etc.
  • Monitoring tools within Azure…you know, the ones that you already know if you have taken the AZ-104, things like Application Map (within App Insights), Security Center, Data Explorer, App Configuration, Hosted agents, etc.
  • Knowledge about 3rd party products like Helm, Sonarqube, Terraform, Yeoman, and many other tools that analyze code or vulnerabilities will be helpful.
  • Git basics is a must, knowing things like (init, Pull, push, commit, add, clone. etc.) but more “advanced” things like (prune, gc, pull –rebase, stash).
  • Branching with Git (Main, Develop, Feature, etc) and deployment (Rolling, A/B, canary, blue/green, etc.) strategies will be key to understand as one of the main things used in pipelines.
  • Software testing as well: Smoke, flaky, unit, acceptance, etc.
  • Container basics with Docker (Dockerfiles, build/scan images process, etc.), AKS (Install, RBAC, configure), Azure Container instances, etc.

 

There can be more of course but I think you can get an idea of what can I think it can be useful and probably I missed many things I already know that I haven’t studied.

 

Exam and opinion

As for now, there aren’t simulations in the exam but be prepared to answer multi-choice, single, hot-area, and drag & drop questions plus case studies.

There are about 60 questions in the exam and 150 minutes for non-native speakers (if I am not wrong) so plenty of time to answer each question.

Some questions are quite specific and not very related to general knowledge or even outdated which I don’t like it but that’s how certifications work in many cases.

Most of them are related to Azure, DevOps, and the integration with 3rd party applications so be sure to check them and don’t hesitate to make a list of third-party applications and the usage of them within different languages.

I studied for a month or so but I do have a certain experience with Azure and I think a great knowledge of many of the processes, 3rd party tools (Jenkins, Sonarqube, Helm), and strategies used in pipelines within CI/CD.

Be sure to test and experiment with Azure DevOps as it is obvious that it will appear in the exam 🙂

Conclusion

I found it fair but not easy for someone who just got introduced to Azure Dev and has a general knowledge of the “DevOps world” (I hate to say it like this).

It requires a bit of experience with many of the Azure products, how are they correlated/integrated within a pipeline and many other tools.

I hope this can be useful to anyone willing to take this but in my case, I did it so can you!

We're Survivors GIF - Survivors Wearesurvivors HouseOfCards GIFs

 

 

 

Finishing a Computer Engineering degree with DevOps stuff

It’s been more than one month since I published something here but I’ve been changing quite a lot my focus learning and I changed now from CCNA to DevOps things.

TL;DR  I will be building an automated CI/CD pipeline for my final assignment focusing on tools installed and configured on-premise although there will be cloud services like the front-end.

Also, I forgot to mention that last month I started the last semester of my Computer Engineering degree that I started back in 2014 (oh my!), and I expect to finish it (if I pass the last “subject”) next January 2021!.

And now let’s move to the point.

In this last semester, I have to deliver the “final assignment” which consists of a project of my own that will be documented and then defended (virtually as per the current circumstances) against university judges.

In my case, I finally decided to get into the DevOps world and my assignment is Building a production CI/CD pipeline.

Some sort of introduction…

I suppose you’re currently aware of the trending topic regarding Containers and Container Orchestrators, in particular (you know them), Docker and Kubernetes.

Those two are the most used technologies in the DevOps world because they work great in conjunction although there are alternatives that could work as good as them.

So regarding DevOps, you probably know is a culture and it follows a set of practices where the software development world and the IT operations are combined in order to speed up and improve the process of application delivery (a.k.a. SDLC).

Continuing with DevOps, there is a pipeline or process which combines the practices of CI (Continuos Integrity) and CD (Continuous Delivery) and that’s the process that I am going to describe and build for my final assignment.

But…why this topic?

Good question… I know almost nothing about that world which is a good approach for many enterprises but not for all of them.

And, the same thing with containers, all the applications shouldn’t be always in containers but if you can re-code your app to split it into micro-services to make it better would you do it (That probably means spending large amounts of money)?

Anyway, why I am choosing this topic?

I think it’s a great opportunity to finally take a look into this area where developers need to push updates to production apps in the faster way possible. We saw that even VMware focused on Kubernetes in their product catalog so maybe you should take a look as well…

But not because VMware did it nevertheless, we are moving to a faster and automated world where everything is becoming more and more automatized. 

Just deploying containers and building micro-services will make you the coolest guy in the world but in my opinion, knowing the use cases and some tools to provision and automate lots of items will make you smarter.

I believe that this will help me to gain knowledge in those areas and advance in my career, therefore, I will be sharing all the useful information I researched during the entire project.

How?

It is known that there many ways to build a CI/CD pipeline and many tools that you can use for each phase but in this project, I will try to start with the “foundation” of the main tools used (Container runtime, Container Orchestrator, Configuration and provision management, etc.).

All of them would be hosted in on-premise infrastructure, instead of going to the cloud where there are a lot of tools that integrates many things and will help you to avoid problems and headaches.

So basically, I am aiming to build everything on-premise except the service itself (which will be a web application) that would be hosted in the cloud, in order to achieve a better service in terms of availability, resiliency, etc.

Therefore, a mix of on-premise and cloud CI/CD pipeline is the objective with the main focus on the process and not the code of the application.

That doesn’t mean that the process where the developer has to push code to a repository (CI) will be neglected, in fact, probably some tools for the developer will be cloud-based due to the simplicity that adds but can’t ensure that this will be my final approach

 

Summary

In short, I am aiming to gain knowledge about this new area where developers and operations meet, and “everything” is automated (or at least a great part of it).

Although there are many tools to build a CI/CD pipeline, learning which tools to use on each phase, how and why are chosen will be key in order to understand clearly the whole process from a technical perspective.

I forgot to mention that, there are other things like IaC (Infrastructure as Code) and Control Version which are handy everywhere but especially in this environment as with code you can have different versions and avoid more errors than provisioning resources manually.