<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Victor Martinez</title>
    <description>The latest articles on Forem by Victor Martinez (@vamartinez).</description>
    <link>https://forem.com/vamartinez</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1037499%2Fff072944-c01b-4334-984c-1754d7effee7.jpeg</url>
      <title>Forem: Victor Martinez</title>
      <link>https://forem.com/vamartinez</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/vamartinez"/>
    <language>en</language>
    <item>
      <title>AWS + Google Cloud: A Step Toward True Multicloud—or Just a Convenient Patch?</title>
      <dc:creator>Victor Martinez</dc:creator>
      <pubDate>Wed, 03 Dec 2025 03:51:15 +0000</pubDate>
      <link>https://forem.com/vamartinez/aws-google-cloud-a-step-toward-true-multicloud-or-just-a-convenient-patch-578k</link>
      <guid>https://forem.com/vamartinez/aws-google-cloud-a-step-toward-true-multicloud-or-just-a-convenient-patch-578k</guid>
      <description>&lt;p&gt;For years we’ve circled around the same debate:&lt;br&gt;
Is it better to build multicloud architectures using agnostic technologies, or to fully embrace a single provider and optimize everything around it?&lt;/p&gt;

&lt;p&gt;The argument is familiar.&lt;br&gt;
On one side, you have cost efficiency and the power of deeply integrated cloud services.&lt;br&gt;
On the other, you have resilience—especially when outages like the well-known AWS Virginia incidents can ripple across a massive portion of the internet.&lt;/p&gt;

&lt;p&gt;Every re:Invent, my attention usually gravitates toward new features: better serverless capabilities, smarter managed services, or breakthrough technologies that unlock new design patterns.&lt;br&gt;
But this year, the announcement that stood out the most wasn’t a new product.&lt;br&gt;
It was the collaboration between AWS and Google Cloud to simplify multicloud networking.&lt;/p&gt;

&lt;p&gt;At a high level, it looks like a straightforward agreement: improve private connectivity between the two clouds, reduce complexity, and remove some historical pain points that made multicloud networking feel like a chore. Anyone who has tried to stitch AWS ↔ Google Cloud manually knows exactly what that pain feels like.&lt;/p&gt;

&lt;p&gt;However, the implications run deeper.&lt;/p&gt;

&lt;p&gt;This partnership opens the door to a possible future where cloud systems become increasingly agnostic, where architectural decisions are driven by capabilities—not by the limitations of network plumbing between providers.&lt;/p&gt;

&lt;p&gt;Yet there’s another way to read this move:&lt;br&gt;
Maybe this isn’t the birth of an open, collaborative multicloud era, but rather a strategic patch designed to satisfy current multicloud customers while strengthening a two-provider alliance.&lt;br&gt;
If that’s the case, we might be watching the formation of a new “default” recipe in enterprise architectures:&lt;br&gt;
AWS + Google Cloud as the dominant multicloud pair, quietly pushing other clouds to the periphery.&lt;/p&gt;

&lt;p&gt;Whether this collaboration becomes a turning point in cloud interoperability or simply a convenient handshake between two giants remains to be seen.&lt;/p&gt;

&lt;p&gt;What is certain is that the market has been demanding simpler, more stable, and less painful multicloud experiences—and this announcement suggests that the providers have finally started listening.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>discuss</category>
      <category>architecture</category>
    </item>
    <item>
      <title>AWS Lambda Durable Function: Is the Orchestration Problem Finally Solved?</title>
      <dc:creator>Victor Martinez</dc:creator>
      <pubDate>Wed, 03 Dec 2025 03:33:25 +0000</pubDate>
      <link>https://forem.com/vamartinez/aws-lambda-durable-function-is-the-orchestration-problem-finally-solved-1e60</link>
      <guid>https://forem.com/vamartinez/aws-lambda-durable-function-is-the-orchestration-problem-finally-solved-1e60</guid>
      <description>&lt;p&gt;The shift from monolithic architectures to microservices marked a historic inflection point in the evolution of cloud applications. When AWS Lambda arrived a few years later, it pushed this transformation even further by giving us a way to build extremely small, atomic services. A single request could now trigger a self-contained function that scaled independently, executed quickly, and required no infrastructure management. This simplicity changed how many teams approached software design.&lt;/p&gt;

&lt;p&gt;Small transactional workloads became the new norm. The more we decomposed logic into granular functions, the more we gained: near-infinite scalability, cost efficiency, and an explosion of database services designed for serverless elasticity. Lambda freed developers from boilerplate infrastructure concerns and encouraged architectures where business logic lived in short, sharp bursts of execution.&lt;/p&gt;

&lt;p&gt;Yet this victory came with a thorny side effect: orchestration complexity.&lt;/p&gt;

&lt;p&gt;Once functions became tiny building blocks, connecting them grew harder. A single business process often required chaining together many functions, coordinating state transitions, handling retries, ensuring idempotency, and managing failure states across distributed components. In other words, reducing the complexity inside each function multiplied the complexity between functions.&lt;/p&gt;

&lt;p&gt;For a while, AWS Step Functions emerged as the default answer. State machines offered a visual and declarative way to stitch Lambdas into workflows. It worked—up to a point. As real-world systems grew larger and more dynamic, developers ran into friction. State definitions became verbose, onboarding new engineers was difficult, and costs could rise quickly. Amazon itself acknowledged this challenge when Prime Video publicly described moving away from Step Functions due to cost and operational overhead.&lt;/p&gt;

&lt;p&gt;AWS responded with improvements like Express Workflows, designed to reduce cost and increase throughput for high-frequency orchestrations. This softened some of the pain, but not the core tension: workflows were either too rigid or too expensive for many scenarios involving large-scale, fine-grained functional decomposition.&lt;/p&gt;

&lt;p&gt;Now AWS is introducing Durable Function for Lambda, a fresh attempt to tackle the orchestration puzzle. The idea is simple but powerful: let developers write orchestrations in code, using familiar programming constructs, and let AWS handle state persistence, progress tracking, and retries behind the scenes. It is an effort to eliminate the complexity without abandoning the advantages of serverless decomposition.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtfk6jxi1vijks3tgdt6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtfk6jxi1vijks3tgdt6.jpg" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;br&gt;
The ambition here is bold. If durable orchestrators can become easy to adopt, cost-efficient, and flexible enough for a wide range of business processes, they might unlock the long-promised vision of cloud applications running almost entirely on Lambda—where containers become the exception, not the rule.&lt;/p&gt;

&lt;p&gt;My current take is cautiously optimistic. Durable Function is a move in the right direction, but we are still a few years away from seeing an orchestration model that fully matches the maturity, ergonomics, and predictability required for large-scale, Lambda-only architectures. Serverless compute is no longer the challenge; distributed workflow management is. The platform that solves orchestration cleanly, seamlessly, and affordably will define the next era of cloud-native development.&lt;/p&gt;

&lt;p&gt;Durable Function may be one more step toward that future—perhaps a meaningful one—but the journey isn’t over yet.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>aws</category>
      <category>microservices</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Modern Web Application Architecture on AWS: Patterns, Hosting, and APIs with GraphQL, WebSockets, and REST</title>
      <dc:creator>Victor Martinez</dc:creator>
      <pubDate>Fri, 08 Nov 2024 16:05:17 +0000</pubDate>
      <link>https://forem.com/vamartinez/modern-web-application-architecture-on-aws-patterns-hosting-and-apis-with-graphql-websockets-and-rest-2jii</link>
      <guid>https://forem.com/vamartinez/modern-web-application-architecture-on-aws-patterns-hosting-and-apis-with-graphql-websockets-and-rest-2jii</guid>
      <description>&lt;p&gt;Building web applications in the cloud is now standard, allowing developers to create robust, scalable, and easy-to-maintain systems. AWS offers a range of tools and architectures that simplify building and deploying these apps. In this post, we'll cover common architecture patterns, hosting options on AWS, and how to integrate with APIs like GraphQL, WebSockets, and REST to improve data access and interactivity.&lt;/p&gt;

&lt;p&gt;Model-View-Controller (MVC): This traditional architecture is excellent for monolithic applications where the server handles most of the work. It's easy to start with but can become challenging to scale as the app grows.&lt;br&gt;
Single-Page Applications (SPA): Using frameworks like Angular, React, or Vue, SPAs shift rendering to the client (browser), which reduces server load. However, they can be trickier to debug and deploy.&lt;br&gt;
Server-Side Rendering (SSR): Technologies like Next.js and Nuxt.js combine server-side and client-side rendering, providing a modular setup that scales well.&lt;/p&gt;

&lt;p&gt;AWS offers several hosting options to suit different architectures:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Static File Hosting:&lt;/strong&gt; Use Amazon S3 and CloudFront to host static assets like HTML, JavaScript, and CSS. This is perfect for SPAs that only need to serve content without heavy processing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dynamic Applications with Containers or Serverless Functions:&lt;/strong&gt;&lt;br&gt;
Containers: These are ideal for more complex, stable applications that need controlled scaling. AWS allows you to set up scaling metrics and adjust resources, helping you manage costs effectively.&lt;br&gt;
Serverless Functions (AWS Lambda): These functions automatically scale up or down and are cost-effective for apps with variable traffic. They're great for microservices, as AWS Lambda handles the infrastructure and scaling for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API Integrations&lt;/strong&gt; with GraphQL, WebSockets, and REST&lt;br&gt;
AWS makes using different API options that provide data management and real-time communication easy. Depending on your app's needs, you can choose from:&lt;/p&gt;

&lt;p&gt;GraphQL on AWS: AWS AppSync allows your apps to use GraphQL to fetch only the data they need in a single request. This reduces server interaction and is perfect for SPAs or SSRs that need to streamline data access.&lt;/p&gt;

&lt;p&gt;WebSockets: For apps that require real-time updates, such as live notifications or data feeds, WebSockets on AWS API Gateway offer a scalable, serverless solution that integrates easily with Lambda or containers.&lt;/p&gt;

&lt;p&gt;REST (Representational State Transfer): REST is a widely used standard for building APIs, and AWS provides the API Gateway REST API to connect your app to other services or backend logic using standard HTTP operations (GET, POST, PUT, DELETE). REST is great for apps that perform structured operations like creating, reading, updating, and deleting data.&lt;/p&gt;

&lt;p&gt;Benefits: REST APIs are simple, easy to understand, and compatible with most programming languages and platforms. They are ideal for apps that benefit from caching to speed up responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scalability and Cost Management Strategies&lt;/strong&gt;&lt;br&gt;
Container Scalability and Cost Efficiency: AWS helps optimize costs through features like Spot Instances and various CPU architectures, perfect for stable workloads.&lt;br&gt;
Cost Efficiency with Serverless: AWS Lambda only charges for what you use, making it a cost-effective choice for fluctuating workloads, allowing global deployment with minimal expenses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer Tools and Resources&lt;/strong&gt;&lt;br&gt;
AWS offers tools like the Lambda Web Adapter, making deploying web apps easier on AWS Lambda. This simplifies migrating apps and breaking them down into microservices.&lt;/p&gt;

&lt;p&gt;In summary, AWS provides a flexible set of tools and architecture patterns that, combined with APIs like REST, GraphQL, and WebSockets, enable developers to build interactive, scalable, and cloud-optimized applications. Your architecture, hosting, and API choice will depend on scalability needs, implementation complexity, real-time data requirements, and cost management.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Journey to Multi-Region Infrastructure[2]: Implementing Disaster Recovery Patterns</title>
      <dc:creator>Victor Martinez</dc:creator>
      <pubDate>Sat, 07 Sep 2024 01:32:54 +0000</pubDate>
      <link>https://forem.com/vamartinez/the-journey-to-multi-region-infrastructure2-implementing-disaster-recovery-patterns-6oc</link>
      <guid>https://forem.com/vamartinez/the-journey-to-multi-region-infrastructure2-implementing-disaster-recovery-patterns-6oc</guid>
      <description>&lt;p&gt;In our previous &lt;a href="https://dev.to/vamartinez/the-journey-to-multi-region-infrastructure-understanding-availability-and-business-needs-5a8m"&gt;post&lt;/a&gt;, we discussed the business implications of disaster recovery strategies. Let's investigate the technical aspects of implementing standard disaster recovery (DR) patterns. This post will focus on each pattern's architectural considerations, challenges, and implementation details.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flpsrxar6r54agqm9lug0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flpsrxar6r54agqm9lug0.png" alt="Image description" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Active/Passive&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbaon6tzaojyqjs0yxyz9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbaon6tzaojyqjs0yxyz9.png" alt="Image description" width="800" height="623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When it comes to the active/passive pattern, consider it to keep a complete backup of your production system ready to spring into action. The key here is maintaining a full copy of your data and application while patiently waiting in the wings.&lt;/p&gt;

&lt;p&gt;To make this work, you must set up regular data synchronization processes. This typically involves database backups, but don't stop there. Consider implementing infrastructure-as-code practices to ensure you can quickly deploy your passive environment when needed. It's like having a well-rehearsed understudy ready to take the stage at a moment's notice.&lt;br&gt;
However, this approach isn't without its challenges. Ensuring data consistency between your active and passive systems can be tricky.&lt;/p&gt;

&lt;p&gt;You'll need to minimize data loss during failover, which means keeping a keen eye on your Recovery Point Objective (RPO). Automating the failover process is crucial to reduce manual intervention and potential human errors. Monitoring and testing are your best friends in this scenario. Implement regular backup integrity checks to ensure your understudy knows its lines.&lt;/p&gt;

&lt;p&gt;Conduct periodic failover drills to validate your recovery procedures. Monitor your backup sizes and transfer times. This will help you optimize your Recovery Time Objective (RTO) and ensure you can return to recovery when disaster strikes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Active/Active&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp7f0waufm5wyga8kono1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp7f0waufm5wyga8kono1.png" alt="Image description" width="731" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Moving on to the Active/Active pattern, we discuss deploying your applications in two or more active regions. It's like having multiple stages for your performance, each capable of handling the whole show.&lt;br&gt;
To achieve this, it would be best to implement a load balancer or global traffic manager for request routing. Think of it as your stage manager, directing the audience to the correct performance. You'll also need to set up bidirectional data replication between your active systems to keep everything in sync.&lt;/p&gt;

&lt;p&gt;The technical challenges here are more complex. Ensuring data consistency across all active systems is like keeping multiple simultaneous performances perfectly synchronized. You'll also need to manage application versions and compatibility across regions, which can feel like coordinating costume changes across different time zones.&lt;br&gt;
When it comes to scaling, think asymmetrically. You might want to design for a 70/30 or 80/20 traffic split between your primary and secondary regions. &lt;/p&gt;

&lt;p&gt;Implement auto-scaling in your secondary regions to handle failover scenarios smoothly. And don't forget to consider multi-tenant architectures for efficient resource utilization - it's like optimizing your theatre seating for different types of performances.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Routing (Multi-region/Multi-cloud)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwnzpzkcp5pbpic50ouwz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwnzpzkcp5pbpic50ouwz.png" alt="Image description" width="800" height="552"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Routing pattern takes things global. Here, you're deploying your applications across multiple cloud providers or regions. It's like taking your show on a world tour, performing in different venues worldwide.&lt;br&gt;
You must implement global traffic management with intelligent routing to make this work. It's not just about directing traffic anymore; it's about understanding the nuances of each location and making intelligent decisions about where to send your customers.&lt;/p&gt;

&lt;p&gt;The challenges here are significant. You'll manage complex deployment pipelines across multiple environments, like coordinating opening nights in different countries simultaneously. Implementing efficient cross-region or cross-cloud data synchronization is crucial, and you'll need to ensure consistent application performance across diverse infrastructures.&lt;br&gt;
Monitoring and observability become even more critical in this scenario. Implement distributed tracing across regions to track your global performance. Set up centralized logging and monitoring solutions to give you a birds-eye view of your entire operation. You might even need to develop custom metrics for cross-region performance and availability to understand how your global system is performing truly.&lt;br&gt;
Implementation Strategies&lt;br&gt;
Your approach to data synchronization will depend on your chosen pattern. For Active/Passive setups, consider using database replication tools or backup/restore mechanisms. If you're going for Active/Active or Routing patterns, you'll want to implement real-time data replication or, eventually, consistent models, depending on your application requirements.&lt;/p&gt;

&lt;p&gt;Your deployment processes need to be rock-solid. Utilize blue/green deployment strategies for zero-downtime updates. It's like changing the set without interrupting performance. Implement canary releases for gradual rollouts across regions, letting you test the waters before diving in fully. Always have robust rollback procedures in place for multi-region deployments. Think of it as your safety net when things don't go according to plan.&lt;br&gt;
Testing and validation are non-negotiable. Automate your failover and failback processes to eliminate human error. Implement chaos engineering practices to validate your system's resilience. It's like stress-testing your performance under the most challenging conditions. And don't forget to conduct regular cross-region disaster recovery exercises. Practice makes perfect, after all.&lt;/p&gt;

&lt;p&gt;Technical Considerations Before Implementation&lt;br&gt;
Before you embark on implementing these patterns, there are several critical technical considerations to keep in mind.&lt;br&gt;
First, take a good, hard look at your application architecture. Evaluate how stateless your current application is and how tightly coupled your data is. You might want to consider refactoring towards microservices for improved modularity. It's like breaking down a complex orchestral piece into its individual instrument parts for easier management.&lt;br&gt;
Data management is another crucial aspect. Assess your data volume and change rates to determine the optimal replication strategies. For multi-region active systems, you might want to consider eventual consistency models. It's a balancing act between data freshness and system performance.&lt;/p&gt;

&lt;p&gt;Your network architecture needs careful planning, too—design for low-latency inter-region connectivity to keep your global system responsive. Implement secure VPN or direct connect solutions for data transfer to keep your information safe as it travels across regions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Journey to Multi-Region Infrastructure: Understanding Availability and Business Needs</title>
      <dc:creator>Victor Martinez</dc:creator>
      <pubDate>Thu, 29 Aug 2024 03:13:40 +0000</pubDate>
      <link>https://forem.com/vamartinez/the-journey-to-multi-region-infrastructure-understanding-availability-and-business-needs-5a8m</link>
      <guid>https://forem.com/vamartinez/the-journey-to-multi-region-infrastructure-understanding-availability-and-business-needs-5a8m</guid>
      <description>&lt;p&gt;When I decided to write about implementing a multi-region strategy, I quickly realized that this topic is far too complex to cover in a single blog post. Therefore, I've started a series of posts explaining the entire process for companies to achieve a successful infrastructure project with the highest possible availability in the cloud.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7s2l6h4zw2cj1uhdko7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7s2l6h4zw2cj1uhdko7.png" alt="Image description" width="800" height="730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To begin this extensive process, we need to start from the business perspective and understand why we need greater availability. It is crucial to recognize that multi-region implementation is not a business or technological goal. Talking about multi-region means increasing the complexity of the platform, its operation, and consequently, the cost of the platform to solve a higher need: availability.&lt;/p&gt;

&lt;p&gt;Let's shift the conversation to availability. Before diving into multi-region implementation, I recommend following this flow:&lt;br&gt;
Measuring availability involves various metrics that give us a 360-degree view of the organization's state. However, these metrics can be complex to measure and even more challenging to understand within an organization. An organization should focus on mastering two key metrics: Mean Time to Recovery (MTTR) and Service Level Agreement (SLA).&lt;/p&gt;

&lt;p&gt;When we talk about the availability percentage, we're referring to the SLA offered to our customers in the contract and the availability percentage we measure on our platform. These two values are intimately connected. To define SLAs within the company's offering, we must first separate the organization's domains or products. It's almost impossible to talk about all systems in a single value. Depending on the company's complexity, they can be divided geographically or by product (system).&lt;br&gt;
For example, if we have product A with 99% availability and product B with 96%, and we offer our customers an average of 97.5%, they will expect a 2.5% impact. This becomes a problem we'll have to justify when an incident brings us down to 96%. We can't simply respond to a customer with something like, "It's the average of all services." Additionally, clarifying availability in domains or products is not new and can be observed in both value propositions and status pages of major cloud providers:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/lambda/sla/" rel="noopener noreferrer"&gt;AWS Lambda SLA&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1" rel="noopener noreferrer"&gt;Microsoft Online Services SLAs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Distributing SLAs is normal practice for companies with clearly defined products, but it can be challenging in some cases when the company has yet to establish a product portfolio.&lt;/p&gt;

&lt;p&gt;Mean Time to Recovery (MTTR) is another crucial point. It establishes our offer to restore service in extreme cases, such as natural disasters or significant physical or cloud infrastructure failures. In these scenarios, we're talking about major failures like a data center without power, internet outrage, failure of the entire information storage layer due to cloud provider issues, latency exceeding our response time between provider services, etc.&lt;/p&gt;

&lt;p&gt;This time can be understood as the time to restore operational capabilities in the worst-case scenarios, from recovering information to the time for domain services to propagate the new public IP address.&lt;br&gt;
Once these two points are established, we can discuss high availability schemes and potential architectural challenges in each scenario. But I'll leave that for the next blog post on architectural changes.&lt;/p&gt;

&lt;p&gt;In conclusion, before jumping into multi-region implementation, it's crucial to understand your business needs, define clear SLAs for each product or domain, and establish realistic MTTR goals. These foundational steps will guide your journey towards a more resilient and available infrastructure.&lt;/p&gt;

&lt;p&gt;Stay tuned for the next post in this series, where we'll discuss the architectural changes necessary to implement a multi-region strategy.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Apply critical path on microservices architectures.</title>
      <dc:creator>Victor Martinez</dc:creator>
      <pubDate>Wed, 22 Mar 2023 19:33:09 +0000</pubDate>
      <link>https://forem.com/vamartinez/apply-critical-path-on-microservices-architectures-37p3</link>
      <guid>https://forem.com/vamartinez/apply-critical-path-on-microservices-architectures-37p3</guid>
      <description>&lt;p&gt;The Critical path method is a common step in project management. It is handy for a large or complex project because it keeps our focus and reduces the risk of project delays. Is it possible to use these project practices in software architecture?&lt;/p&gt;

&lt;p&gt;One of the goals of every software engineering team is to provide high availability. In other words, be up how much you can. So here is the opportunity to talk about the "Critical path." So let's transform this concept into good practice.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F725skm4rmlgpqimx4ofm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F725skm4rmlgpqimx4ofm.png" alt="Image description" width="768" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"Critical" means “most important or sensitive step” with it in mind. In a microservice architecture, we can identify the essential services for our customers. A simple example is a search service on a classified website or payment modules in e-commerce. Those services usually are the most transactional and require our users to go online. On the other hand, services that use queues and batch processes typically aren't critical. A good example is an invoice microservice; anybody loses their mind for receiving a receipt late.&lt;/p&gt;

&lt;p&gt;To put this into practice, you can follow these three guidelines:&lt;/p&gt;

&lt;p&gt;Keep it absurdly simple. We must scale these good practices and brake a couple of rules it is necessary. So, use only a few services, technologies, and program languages because everything increases the risk of failure.&lt;/p&gt;

&lt;p&gt;Last out, first priority. However, every new technology or update should start on other services, and more importantly, you must continually update your critical path services.&lt;/p&gt;

&lt;p&gt;Fewer microservices. Microservices mesh can produce a high level of Reusability. However, this increases the number of critical services. So a microservice bigger than the average could mean reduced communications and fewer essential services for us.&lt;/p&gt;

&lt;p&gt;In summary, identifying our critical path is a great way to reduce failure and increase availability. As a result, we can keep the focus on our most important service and create a safe way to innovate. Remember:&lt;/p&gt;

&lt;p&gt;If everything is important, then nothing is."&lt;/p&gt;

&lt;p&gt;― Patrick Lencioni.&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>aws</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
