Skip to main content

Tools, templates and assessments for the Manage phase of CAF (Microsoft Cloud Adoption Framework)

 Microsoft is offering an excellent framework to support cloud migration and adoption process –Microsoft Cloud Adoption Framework (CAF) 

The framework defined an iterative process with the following phases:

  1. Define Strategy
  2. Plan
  3. Ready
  4. Adopt
  5. Govern
  6. Manage

For each of them, Cloud Adoption Framework (CAF) provides us a list of templates, tools, and assessment mechanisms that can help us to improve the adoption and migration process. Let's take a look at the ones for Manage.

Azure Well-Architected Review


It enables us to analyze and assess our current cloud architecture from Azure best practices point of view. For each area where there is space for improvements, the tool provides us a list of recommendations that can be used to improve our cloud solution. 

The architecture dimensions that can be assessed are:

  • Cost Optimization: An effective architecture achieves business goals and ROI requirements while keeping costs within the allocated budget.
  • Operational Excellence: To ensure that your application is running effectively over time, consider multiple perspectives, from both an application and infrastructure angles. Your strategy must include the processes that you implement so that your users are getting the right experience.
  • Performance Efficiency: Prioritize scalability as you design and implement phases. Scalability leads to lower maintenance costs, better user experience, and higher agility.
  • Reliability: In a cloud environment you scale out rather than buying higher-end hardware to scale up. While it's always desirable to prevent all failure, focus your efforts in minimizing the effects of a single failing component.
  • Security: Security is one of the most important aspects of any architecture. It provides confidentiality, integrity, and availability assurances against deliberate attacks and abuse of your valuable data and systems. Losing these assurances can negatively impact your business operations and revenue, as well as your organization's reputation in the marketplace. In the following series of articles, we'll discuss key architectural considerations and principles for security and how they apply to Azure.
What is great about this assessment tool is how accessible is. In less than 20 minutes you can fill the review survey and have the results available for you.

Automation Best Practices
The ability to follow best practices needs to be at all levels, including at the configuration, templates, and automation level. A collection of resources that are aligned with Azure best practices are available, that can be used to define the way of working with cloud services.
They can play a good foundation on top of which to build your solution.

Operations management workbook
We need the ability to plan cloud management, taking into account all the processes involved. This workbook contains a mapping between different operational and management activities and Azure tools that enable us to do tracking and monitoring. 
It enables us to do commitment alignment, taking into account cost vs risks and outage cost in the case of a failure. Having this information available helps the operational team to define priorities and operational plan.


Popular posts from this blog

ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded

Today blog post will be started with the following error when running DB tests on the CI machine: threw exception: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See for more information. at System.Data.Entity.Infrastructure.DependencyResolution.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName) This error happened only on the Continuous Integration machine. On the devs machines, everything has fine. The classic problem – on my machine it’s working. The CI has the following configuration: TeamCity .NET 4.51 EF 6.0.2 VS2013 It see

Entity Framework (EF) TransactionScope vs Database.BeginTransaction

In today blog post we will talk a little about a new feature that is available on EF6+ related to Transactions. Until now, when we had to use transaction we used ‘TransactionScope’. It works great and I would say that is something that is now in our blood. using (var scope = new TransactionScope(TransactionScopeOption.Required)) { using (SqlConnection conn = new SqlConnection("...")) { conn.Open(); SqlCommand sqlCommand = new SqlCommand(); sqlCommand.Connection = conn; sqlCommand.CommandText = ... sqlCommand.ExecuteNonQuery(); ... } scope.Complete(); } Starting with EF6.0 we have a new way to work with transactions. The new approach is based on Database.BeginTransaction(), Database.Rollback(), Database.Commit(). Yes, no more TransactionScope. In the fol

GET call of REST API that contains '/'-slash character in the value of a parameter

Let’s assume that we have the following scenario: I have a public HTTP endpoint and I need to post some content using GET command. One of the parameters contains special characters like “\” and “/”. If the endpoint is an ApiController than you may have problems if you encode the parameter using the http encoder. using (var httpClient = new HttpClient()) { httpClient.BaseAddress = baseUrl; Task<HttpResponseMessage> response = httpClient.GetAsync(string.Format("api/foo/{0}", "qwert/qwerqwer"))); response.Wait(); response.Result.EnsureSuccessStatusCode(); } One possible solution would be to encode the query parameter using UrlTokenEncode method of HttpServerUtility class and GetBytes method ofUTF8. In this way you would get the array of bytes of the parameter and encode them as a url token. The following code show to you how you could write the encode and decode methods.