{"id":2923,"date":"2025-03-04T12:55:32","date_gmt":"2025-03-04T11:55:32","guid":{"rendered":"https:\/\/www.ituziast.com\/?p=2923"},"modified":"2025-05-12T13:39:10","modified_gmt":"2025-05-12T12:39:10","slug":"migration-to-azure-patterns-and-ant-ipatterns","status":"publish","type":"post","link":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/","title":{"rendered":"Migration to Azure: Patterns and Anti-patterns"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As it turns out migrating your infrastructure to Azure is more than simply re-hosting your applications. It\u2019s an opportunity to transform the way the organization operates by leveraging cloud-native capabilities. Furthermore, its a set of patterns and anti-patterns during migration to Azure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Drawing from multiple migration projects, I will try to convene some &#8220;lessons learned&#8221;, some &#8220;Aha!&#8221;, &#8220;Doh!&#8221; moments from the process. I will probably need more &#8220;paper&#8221; for this article to convene everything. (I feel that it&#8217;s moving towards an actual event session, as we speak) \u2060?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this article, we explore both the effective strategies (patterns) and the common pitfalls (anti-patterns) encountered during an Azure migration journey. Furthermore, when identifying these \u201cred flags\u201d early in the process, organizations can avoid costly missteps and ensure a smoother, more efficient transition to the cloud.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Laying the Groundwork for Migration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">So, where do we start? This is the time I always refer to my old friends &#8211; <a href=\"https:\/\/learn.microsoft.com\/azure\/cloud-adoption-framework\/overview?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Cloud Adoption Framework (CAF)<\/a>, <a href=\"https:\/\/learn.microsoft.com\/azure\/architecture\/framework?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Well-Architected Framework (WAF)<\/a>, and <a href=\"https:\/\/learn.microsoft.com\/azure\/azure-resource-manager\/management\/azure-subscription-service-limits?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Azure subscription and service limits, quotas, and constraints<\/a>. That&#8217;s where all the fun is. This is the way to Cloud adoption Plan!<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Note:<\/p>\n<cite>I always talk about the above, and some more &#8230;. Check out some of the previous articles, related to them, in the <a href=\"https:\/\/www.ituziast.com\/index.php\/category\/cloud\/azure\/\" target=\"_blank\" rel=\"noreferrer noopener\">Azure section<\/a>.<\/cite><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Now, we can debate for a long time on this topic. But, let&#8217;s set some grounding first. Ultimately, for any process of embarking on Cloud journey, we need to do a proper preparation and assessment. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Begin by inventorying your existing infrastructure and applications. Understand dependencies, performance baselines, and security needs. Then, consider which migration strategies fit best:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Lift-and-Shift (Re-hosting):<\/strong> This produces quick results, but it comes with baggage.<\/li>\n\n\n\n<li><strong>Re-platforming:<\/strong> Requires no or minimal changes to the applications, and a step towards true cloud-native applications.<\/li>\n\n\n\n<li><strong>Refactoring\/Re-architecture:<\/strong> At this point, you go back to the &#8216;drawing board&#8217;, and go for the cloud-native application\/service environment.<\/li>\n\n\n\n<li><strong>Hybrid:<\/strong> Kind of &#8216;best of both worlds&#8217; scenario. There might be various reasons, but it is a rather common approach..<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/learn.microsoft.com\/en-us\/azure\/cloud-adoption-framework\/strategy\/media\/caf-strategy-overview.svg\" alt=\"A flowchart with five blue boxes connected by arrows in a loop. The boxes contain the following text: 'Assess your strategy,' 'Define your motivations, mission, and objectives,' 'Define your team,' 'Prepare your organization,' and 'Inform your strategy.'&quot;\n\nThe image illustrates a continuous process for strategic planning and organizational preparation. It visually represents the cyclical nature of strategic planning, emphasizing the importance of reassessment and continuous improvement.\" class=\"no-lazyload\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Remember, we start with identifying key objectives for migration to Azure (e.g., cost savings, scalability, improved performance) and ensure that technical decisions align with business goals. Always keep detailed documentation of the current state. Inadequate documentation is a red flag that could lead to unforeseen challenges later. Hence, we follow the patterns, and identify the anti-patterns.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Patterns for Migration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Having all of the above in mind, what constitutes as effective patterns in this process? In all fairness, there might be quite a lot, but I will focus on just a few that I have experienced. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Phased and Iterative Migration<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Rather than a Big-Bang approach, break the migration into manageable phases. Frankly, the Big-Bang approach was much more on the table, than I would have liked it to be. I see the tendency of doing everything in &#8220;one-shot&#8221; in small\/mid-size organizations. All in all, its related to cost-time rations, but in other is to the experiences and knowledge on the teams. Meaning, they know their current environment and the feeling is that Azure is the same. And, this is the problem that causes migration failures, delays, and increased cost-time ratios. Hey, ultimately this can lead to success or failure of the migration process itself.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Security by Design<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Implement strong security measures from the outset. I always reference this as Security baseline. It&#8217;s not just something that used to be (on-premises), it is enhancing it with built-in capabilities of the Azure services. Furthermore, it&#8217;s related to the migration strategy chosen in the begging. The more we are leaning towards cloud-native, the we rely on built-in security principles and models. For everything else, we have the Well-Architected Framework, and <a href=\"https:\/\/learn.microsoft.com\/security\/adoption\/mcra?WT.mc_id=AZ-MVP-5002880\">Microsoft Cybersecurity Reference Architectures (MCRA)<\/a>. Early signs of breaches or non-compliance should prompt immediate review of security practices.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Resilience and Scalability<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Design for fault tolerance by leveraging availability zones, load balancers, and disaster recovery planning.  These enhancements come with the built-in capabilities of Azure services. It helps organizations improve operations and embed these capabilities within their application portfolio. Sounds easy enough, but these are important design decisions that are made at the begging. For some of them, like availability zones, we need to be careful. For example, if we change our mind later in the project, that might imply re-deployment of the whole environment. At that point, phased approach really seems like a good idea. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Cost Management and Optimization<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Monitoring spending is something that needs to be planned since the begging. From choosing the initial operation model, to any design\/architecture decision made it will affect it. It is our fail safe when there is something wrong &#8211; issues with architecture, scalability, resiliency, updates, attack on the services. A spike in costs post-migration may indicate inefficient resource use or misconfiguration. It is a never ending story, once you get your workloads in the cloud!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Monitoring and Logging<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Pretty much all of the above items, as well as the one bellow are connected with this one. Implement robust monitoring using Azure Monitor and Application Insights to track performance, detect anomalies, and optimize resource usage. Inconsistent performance metrics or unexplained downtime can signal that the migration strategy requires reevaluation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Anti-patterns for Migration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Unfortunately, there is no web page or a &#8220;big book&#8221; outlining the anti-patterns. It&#8217;s something that becomes obvious, during the embarked cloud journey process. It is a natural occurrence, between the stakeholders &#8211; Business and IT Operations teams. They can appear in different phases of the adoption process (Plan, Ready, Manage, Govern, Organize).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/learn.microsoft.com\/en-us\/azure\/cloud-adoption-framework\/_images\/ready\/fiefdom-and-silo.png\" alt=\"The image shows three different organizational structures of IT teams within an IT organization, illustrating the concepts of a Healthy IT Team, IT Silo, and Fiefdoms. Each structure is depicted with a central IT organization block connected to business functions and internal teams. The Healthy IT Team structure shows all teams integrated and collaborating. The IT Silo structure shows one team isolated from the others. The Fiefdoms structure shows one team isolated and another team disconnected from the central collaboration.\" class=\"no-lazyload\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">I&#8217;ve seen this happen ever before the begging of the project. As I always tell people, embarking on the Cloud Journey, is a disruptive process fore every organization. It&#8217;s not just connected to the size or the complexity of their environment. It affects the people as well, since it affect the organizational structure and alignment.<\/p>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img decoding=\"async\" width=\"1024\" height=\"536\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2025\/03\/ComfortZone-1024x536.jpg\" alt=\"\" class=\"wp-image-2991 size-full no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2025\/03\/ComfortZone-1024x536.jpg 1024w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2025\/03\/ComfortZone-300x157.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2025\/03\/ComfortZone-768x402.jpg 768w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2025\/03\/ComfortZone-1536x804.jpg 1536w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2025\/03\/ComfortZone.jpg 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">All things considered, we tend to keep within our so called comfort zones. And we are very territorial about that. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">How fast and efficient are we in dealing with it, as an organization, depends on the alignment model chosen. Hence, the results might vary, as well as the timeline for achieving the goals. <\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">In other words, let&#8217;s dig in into some of the anti-patterns I observed in various migrations to Azure.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Blind Lift-and-Shift<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Migrating without revisiting the architecture can lock you into inefficiencies. Simply \u201clifting and shifting\u201d legacy architectures might prevent you from capitalizing on cloud-native benefits like scalability and managed services. Likewise, it just brings old problems into the new environment.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Underestimating Complexity<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Failing to account for inter-dependencies, regulatory constraints, or data gravity can derail timelines and budgets. A thorough initial assessment is key to understanding hidden complexities. Rationalization of your digital estate matters. If you notice undocumented dependencies or gaps in system documentation, it\u2019s a red flag. These issues can lead to integration problems post-migration. Always remember, You are moving on-premises services to distributed and asynchronous environment!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Loose Security<\/strong> (or putting too much fate in the built in capabilities)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Identity management, encryption, and network segmentation need to be interwoven. Now, that might create security gaps.  Look at already established models, architectures and\/or recommendations for Azure. Never assume that you have figured everything out. Hybrid solutions brings benefits, but can also create gaps. The standards are there, there best practices as well (i.e. <a href=\"https:\/\/learn.microsoft.com\/azure\/well-architected\/security\/?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Well-Architected Framework &#8211; Security Pillar<\/a>, <a href=\"https:\/\/learn.microsoft.com\/security\/adoption\/mcra?WT.mc_id=AZ-MVP-5002880\">Microsoft Cybersecurity Reference Architectures (MCRA)<\/a>). Do not lower Your gard, just because there are built-in capabilities.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Ignoring Governance<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Without proper policies and tagging strategies, you risk cloud sprawl, resource mismanagement, and unexpected costs. Establish a governance framework early in the migration. It&#8217;s the Governance baseline for everything that follows. Not establishing benchmarks before migration, can make it hard to measure success or pinpoint issues later.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Inadequate Testing and Validation<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Rushing trough the migration phases without proper testing can lead to disruptions. Implement staged rollout, validate components in a production-like environment. Explore different environment design areas. After all, it is your conceptual architecture!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Poor Change Management<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Ignoring the human side of migration, such as inadequate training, resistance to change or not knowing the technology enough. This can cause delays or impede progress of the cloud journey. Knowledge transfer and training is important. This gives a change to the subject matter experts (SMEs) to get to know the environment. In that way, they can support the process of design\/architecture, and operations in the new environment. Catch 22: Not all organizations go trough the training before the start of the journey to the cloud.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">L<strong>ack of Stakeholder Buy-In<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Resistance from IT teams or key business units can be a red flag that the change management process needs more attention. It can be related to falling for the buzz words, miscommunication between stakeholders, poorly defined strategy, and\/or fear of the unknown (comfort zone).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Recommendations<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">So what can we add, as things to be considered in this process? I will try to summarize then in just a few points, such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Phased Approach:<\/strong> Break the process into phases. Try to establish clear milestones and think of feedback loops. This allows you to learn from Your mistakes (patterns, anti-patterns), and adjust as you progress.<\/li>\n\n\n\n<li><strong>Rely on the Cloud-Native Capabilities:<\/strong> Instead of &#8216;playing it safe&#8217; and just use on-premises setups, adapt to Azure\u2019s native capabilities. This will enhance the IT Operations, in areas such as security, scalability, and performance.<\/li>\n\n\n\n<li><strong>Continuous Learning (The never ending story):<\/strong> Again, we are talking about a very dynamic environment. Cloud services, capabilities and features are constantly changing. We need to keep up, as much as possible.<\/li>\n\n\n\n<li><strong>Go Beyond organizational boundaries:<\/strong> Don&#8217;t expect that you will have all the necessary SMEs in the organization. Fill in the gaps by reaching out to experts, outside of the organization. This will help fill in the knowledge\/expertise gaps, while Your team gets the hang of the new technology. No matter if it is short, mid or long term.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Useful links<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Github repo with useful links: <a href=\"https:\/\/github.com\/grozdanovd\/UsefulLinks\/blob\/0680c9f6932a8a94c4af145440a25876d4e268cd\/Migrating%20Infrastructure%20to%20MS%20Azure%20using%20CAF\/AzMigrCAF.md\" target=\"_blank\" rel=\"noreferrer noopener\">Migrating Infrastructure to Microsoft Azure using Cloud Adoption Framework (CAF)<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\">Introduction As it turns out migrating your infrastructure to Azure is more than simply re-hosting your applications. It\u2019s an opportunity to transform the way the organization operates by leveraging cloud-native capabilities. Furthermore, its a set <a class=\"mh-excerpt-more\" href=\"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/\" title=\"Migration to Azure: Patterns and Anti-patterns\">[&#8230;]<\/a><\/div>\n","protected":false},"author":2,"featured_media":3015,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[152,173,48,204],"coauthors":[],"class_list":["post-2923","post","type-post","status-publish","format-standard","has-post-thumbnail","category-azure","tag-azure-finops","tag-azure-migrate","tag-cloud-adoption-framework","tag-governance"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\r\n<title>Migration to Azure: Patterns and Anti-patterns - ITuziast<\/title>\r\n<meta name=\"description\" content=\"Introduction As it turns out migrating your infrastructure to Azure is more than simply re-hosting your applications. It\u2019s an opportunity to transform the\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Migration to Azure: Patterns and Anti-patterns - ITuziast\" \/>\r\n<meta property=\"og:description\" content=\"Introduction As it turns out migrating your infrastructure to Azure is more than simply re-hosting your applications. It\u2019s an opportunity to transform the\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/\" \/>\r\n<meta property=\"og:site_name\" content=\"ITuziast\" \/>\r\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ITuziast\" \/>\r\n<meta property=\"article:author\" content=\"https:\/\/bsky.app\/profile\/grozdanovd.bsky.social\" \/>\r\n<meta property=\"article:published_time\" content=\"2025-03-04T11:55:32+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2025-05-12T12:39:10+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2025\/03\/AzSpringClean2025Cover.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\r\n\t<meta property=\"og:image:height\" content=\"960\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"Dimitar Grozdanov\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:creator\" content=\"@grozdanovd\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dimitar Grozdanov\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/\"},\"author\":{\"name\":\"Dimitar Grozdanov\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#\\\/schema\\\/person\\\/8596bb127b83987935c0355c8ed6130c\"},\"headline\":\"Migration to Azure: Patterns and Anti-patterns\",\"datePublished\":\"2025-03-04T11:55:32+00:00\",\"dateModified\":\"2025-05-12T12:39:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/\"},\"wordCount\":1682,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/AzSpringClean2025Cover.jpg\",\"keywords\":[\"Azure FinOps\",\"Azure Migrate\",\"Cloud Adoption Framework\",\"Governance\"],\"articleSection\":[\"Azure\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/\",\"name\":\"Migration to Azure: Patterns and Anti-patterns - ITuziast\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/AzSpringClean2025Cover.jpg\",\"datePublished\":\"2025-03-04T11:55:32+00:00\",\"dateModified\":\"2025-05-12T12:39:10+00:00\",\"description\":\"Introduction As it turns out migrating your infrastructure to Azure is more than simply re-hosting your applications. It\u2019s an opportunity to transform the\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/AzSpringClean2025Cover.jpg\",\"contentUrl\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/AzSpringClean2025Cover.jpg\",\"width\":1600,\"height\":960},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2025\\\/03\\\/04\\\/migration-to-azure-patterns-and-ant-ipatterns\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.ituziast.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migration to Azure: Patterns and Anti-patterns\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#website\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/\",\"name\":\"ITuziast\",\"description\":\"Bits and Bytes of Technology\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.ituziast.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#organization\",\"name\":\"ITuziast\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/ituziast-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/ituziast-logo.png\",\"width\":512,\"height\":512,\"caption\":\"ITuziast\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/ITuziast\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#\\\/schema\\\/person\\\/8596bb127b83987935c0355c8ed6130c\",\"name\":\"Dimitar Grozdanov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/970f950d69334bef706f381f8022be295b3e85d8d3214f8b5cd6fcc0e7cad338?s=96&d=mm&r=gb1156e7caf65275f1df79df9ad892041\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/970f950d69334bef706f381f8022be295b3e85d8d3214f8b5cd6fcc0e7cad338?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/970f950d69334bef706f381f8022be295b3e85d8d3214f8b5cd6fcc0e7cad338?s=96&d=mm&r=g\",\"caption\":\"Dimitar Grozdanov\"},\"description\":\"Engineer. 25+ years \u201cin the field\u201d. Cloud Solution Architect. Microsoft 365 MVP. Trainer. Co-founder\\\/Supporter of Tech Communities. Speaker. Blogger. Parent. Passionate about craft beer and hanging out with family and friends.\",\"sameAs\":[\"https:\\\/\\\/mvp.microsoft.com\\\/en-us\\\/PublicProfile\\\/5002880?fullName=Dimitar%20Grozdanov\",\"https:\\\/\\\/bsky.app\\\/profile\\\/grozdanovd.bsky.social\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/dimitar-grozdanov\\\/\",\"https:\\\/\\\/x.com\\\/grozdanovd\",\"https:\\\/\\\/www.youtube.com\\\/@dimitargrozdanov\"],\"url\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/author\\\/grozdanovd\\\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Migration to Azure: Patterns and Anti-patterns - ITuziast","description":"Introduction As it turns out migrating your infrastructure to Azure is more than simply re-hosting your applications. It\u2019s an opportunity to transform the","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/","og_locale":"en_US","og_type":"article","og_title":"Migration to Azure: Patterns and Anti-patterns - ITuziast","og_description":"Introduction As it turns out migrating your infrastructure to Azure is more than simply re-hosting your applications. It\u2019s an opportunity to transform the","og_url":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/","og_site_name":"ITuziast","article_publisher":"https:\/\/www.facebook.com\/ITuziast","article_author":"https:\/\/bsky.app\/profile\/grozdanovd.bsky.social","article_published_time":"2025-03-04T11:55:32+00:00","article_modified_time":"2025-05-12T12:39:10+00:00","og_image":[{"width":1600,"height":960,"url":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2025\/03\/AzSpringClean2025Cover.jpg","type":"image\/jpeg"}],"author":"Dimitar Grozdanov","twitter_card":"summary_large_image","twitter_creator":"@grozdanovd","twitter_misc":{"Written by":"Dimitar Grozdanov","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/#article","isPartOf":{"@id":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/"},"author":{"name":"Dimitar Grozdanov","@id":"https:\/\/www.ituziast.com\/#\/schema\/person\/8596bb127b83987935c0355c8ed6130c"},"headline":"Migration to Azure: Patterns and Anti-patterns","datePublished":"2025-03-04T11:55:32+00:00","dateModified":"2025-05-12T12:39:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/"},"wordCount":1682,"commentCount":0,"publisher":{"@id":"https:\/\/www.ituziast.com\/#organization"},"image":{"@id":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2025\/03\/AzSpringClean2025Cover.jpg","keywords":["Azure FinOps","Azure Migrate","Cloud Adoption Framework","Governance"],"articleSection":["Azure"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/","url":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/","name":"Migration to Azure: Patterns and Anti-patterns - ITuziast","isPartOf":{"@id":"https:\/\/www.ituziast.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/#primaryimage"},"image":{"@id":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2025\/03\/AzSpringClean2025Cover.jpg","datePublished":"2025-03-04T11:55:32+00:00","dateModified":"2025-05-12T12:39:10+00:00","description":"Introduction As it turns out migrating your infrastructure to Azure is more than simply re-hosting your applications. It\u2019s an opportunity to transform the","breadcrumb":{"@id":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/#primaryimage","url":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2025\/03\/AzSpringClean2025Cover.jpg","contentUrl":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2025\/03\/AzSpringClean2025Cover.jpg","width":1600,"height":960},{"@type":"BreadcrumbList","@id":"https:\/\/www.ituziast.com\/index.php\/2025\/03\/04\/migration-to-azure-patterns-and-ant-ipatterns\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.ituziast.com\/"},{"@type":"ListItem","position":2,"name":"Migration to Azure: Patterns and Anti-patterns"}]},{"@type":"WebSite","@id":"https:\/\/www.ituziast.com\/#website","url":"https:\/\/www.ituziast.com\/","name":"ITuziast","description":"Bits and Bytes of Technology","publisher":{"@id":"https:\/\/www.ituziast.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.ituziast.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.ituziast.com\/#organization","name":"ITuziast","url":"https:\/\/www.ituziast.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.ituziast.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2020\/09\/ituziast-logo.png","contentUrl":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2020\/09\/ituziast-logo.png","width":512,"height":512,"caption":"ITuziast"},"image":{"@id":"https:\/\/www.ituziast.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ITuziast"]},{"@type":"Person","@id":"https:\/\/www.ituziast.com\/#\/schema\/person\/8596bb127b83987935c0355c8ed6130c","name":"Dimitar Grozdanov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/970f950d69334bef706f381f8022be295b3e85d8d3214f8b5cd6fcc0e7cad338?s=96&d=mm&r=gb1156e7caf65275f1df79df9ad892041","url":"https:\/\/secure.gravatar.com\/avatar\/970f950d69334bef706f381f8022be295b3e85d8d3214f8b5cd6fcc0e7cad338?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/970f950d69334bef706f381f8022be295b3e85d8d3214f8b5cd6fcc0e7cad338?s=96&d=mm&r=g","caption":"Dimitar Grozdanov"},"description":"Engineer. 25+ years \u201cin the field\u201d. Cloud Solution Architect. Microsoft 365 MVP. Trainer. Co-founder\/Supporter of Tech Communities. Speaker. Blogger. Parent. Passionate about craft beer and hanging out with family and friends.","sameAs":["https:\/\/mvp.microsoft.com\/en-us\/PublicProfile\/5002880?fullName=Dimitar%20Grozdanov","https:\/\/bsky.app\/profile\/grozdanovd.bsky.social","https:\/\/www.linkedin.com\/in\/dimitar-grozdanov\/","https:\/\/x.com\/grozdanovd","https:\/\/www.youtube.com\/@dimitargrozdanov"],"url":"https:\/\/www.ituziast.com\/index.php\/author\/grozdanovd\/"}]}},"_links":{"self":[{"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/posts\/2923","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/comments?post=2923"}],"version-history":[{"count":76,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/posts\/2923\/revisions"}],"predecessor-version":[{"id":3030,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/posts\/2923\/revisions\/3030"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/media\/3015"}],"wp:attachment":[{"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/media?parent=2923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/categories?post=2923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/tags?post=2923"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/coauthors?post=2923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}