Amazon Web Services
AWS Official Site — Build, Deploy, and Manage Websites, Apps or Processes On AWS Secure, Reliable Network. Sign Up for a Free Account & Experience AWS Secure, Reliable, Scalable Services. In-Memory Caching. Easily Manage Clusters. Performance At Scale.
Three Types of Offers
More than 100 AWS products are available on AWS Free Tier today. Three different types of free offers are available
depending on the product used. Click an icon below to explore our offers.
Learn more about AWS Free Tier Products
Browse through our collection of videos to learn more about the AWS Free Tier, and how to setup and monitor your account.
Sign up for a Free AWS account
Creating an AWS account is free and gives you immediate access to the AWS Free Tier
Start building in the console
Build your production solution quickly and easily once you’re ready
Getting Started with AWS
Start your journey with AWS
Amazon Web Services (AWS) is the world’s most comprehensive and broadly adopted cloud that includes infrastructure as a service (IaaS) and platform as a service (PaaS) offerings. AWS services offer scalable solutions for compute, storage, databases, analytics, and more. Learn how to launch and configure different AWS services across a broad range of categories with our onboarding experience.Amazon Web Services
Learn best practices to set up your account and environment
Get to know the AWS Management Console
Learn to control your AWS costs
Continue your journey with AWS
AWS Developer Center
Explore topics, Learn tutorials, Download tools, and Join us at an AWS Developer event
Explore What Is Possible
Learn About AWS Databases
What are databases?
Every application needs a place to store data from users, devices, and the application itself. Databases are important backend systems that are used to store, manage, update, and analyze data for all types of applications, from small back-office systems to mobile and consumer web applications with global scale.
Learn AI
Build in-demand AI skills with courses, tutorials, and resources
Generative AI training, curated by AWS experts
Unlock a comprehensive range of digital generative AI training resources including interactive labs, video tutorials, and hands-on lab experiences—all designed to equip learners with the skills and knowledge necessary to effectively leverage generative AI services from AWS.
Learn by doing
Learn the fundamental concepts for leveraging AI by getting hands-on with these fun and interactive tools from AWS
Architecture Best Practices for Containers
Featured topic: Containerized Microservices
Understanding and implementing micro-frontends on AWS
As organizations strive for agility and scalability, the conventional monolithic architecture often becomes a bottleneck, hindering rapid development and deployment. Micro-frontends mitigate this by breaking down complex user interfaces into smaller, independent components that can be developed, tested, and deployed autonomously. This approach enhances the efficiency of development teams and facilitates collaboration between backend and frontend, fostering an end-to-end alignment of distributed systems.
This prescriptive guidance is tailored to help IT leaders, product owners, and architects across diverse professional domains to understand micro-frontend architecture and build micro-frontend applications on Amazon Web Services (AWS).
Overview
Micro-frontends are an architecture built on the decomposition of application frontends into independently developed and deployed artifacts. When you split large frontends into autonomous software artifacts, you can encapsulate business logic and reduce dependencies. This supports faster and more frequent delivery of product increments.
Micro-frontends are similar to microservices. In fact, the term micro-frontend is derived from the term microservice, and it aims to convey the notion of a microservice as a frontend. While a microservices architecture typically combines a distributed system in the backend with a monolithic frontend, micro-frontends are self-contained distributed frontend services. These services can be set up in two ways:
- Frontend-only, integrating with a shared API layer behind which runs a microservices architecture
- Full-stack, meaning that each micro-frontend has its own backend implementation.Amazon Web Services
The following diagram shows a traditional microservices architecture, with a frontend monolith that uses an API gateway to connect to backend microservices.
The following diagram shows a micro-frontend architecture with different implementations of microservices.
As shown in the previous diagram, you can use micro-frontends with client-side rendering or server-side rendering architectures:
- Client-side rendered micro-frontends can directly consume APIs exposed by a centralized API Gateway.
- The team can create a backend-for-frontend (BFF) inside the bounded context to reduce the chattiness of the frontend toward the APIs.
- On the server side, micro-frontends can be expressed with a server-side approach augmented on the client side by using a technique called hydration. When a page is rendered by the browser, the associated JavaScript is hydrated to allow interactions with UI elements, such as clicking a button.Amazon Web Services
- Micro-frontends can render on the backend and use hyperlinks to route toward a new part of a website.
Micro-frontends are a great fit for organizations that want to do the following:
- Scale with multiple teams working on the same project.
- Embrace decentralization of decision making, empowering developers to innovate inside the identified systems boundaries.
This approach significantly reduces the cognitive load on teams, because they become responsible for specific parts of the system. It boosts business agility because modifications can be made to one part of the system without disrupting the rest.Amazon Web Services
Micro-frontends are a distinct architectural approach. Although there are different ways to build micro-frontends, they all have common traits:
- A micro-frontend architecture is composed of multiple independent elements. The structure is similar to the modularization that happens with microservices on the backend.
- A micro-frontend is completely responsible for the frontend implementation within its bounded context, which comprises the following:
- User interface
- Data
- State or session
- Business logic
- Flow
A bounded context is an internally consistent system with carefully designed boundaries that mediate what can enter and exit. A micro-frontend should share as little business logic and data with other micro-frontends as possible. Wherever sharing needs to happen, it takes place through clearly defined interfaces such as custom events or reactive streams. However, when it comes to some cross-cutting concerns such as a design system or logging libraries, intentional sharing is welcome.Amazon Web Services
A recommended pattern is to build micro-frontends by using cross-functional teams. This means that each micro-frontend is developed by the same team working from the backend to the frontend. Team ownership is crucial, from coding to the operationalization of the system in production.
This guidance does not intend to recommend one particular approach. Instead, it discusses different patterns, best practices, trade-offs, and architectural and organizational considerations.Amazon Web Services
Cloud design patterns, architectures, and implementations
This guide provides guidance for implementing commonly used modernization design patterns by using AWS services. An increasing number of modern applications are designed by using microservices architectures to achieve scalability, improve release velocity, reduce the scope of impact for changes, and reduce regression. This leads to improved developer productivity and increased agility, better innovation, and an increased focus on business needs. Microservices architectures also support the use of the best technology for the service and the database, and promote polyglot code and polyglot persistence.
Traditionally, monolithic applications run in a single process, use one data store, and run on servers that scale vertically. In comparison, modern microservice applications are fine-grained, have independent fault domains, run as services across the network, and can use more than one data store depending on the use case. The services scale horizontally, and a single transaction might span multiple databases. Development teams must focus on network communication, polyglot persistence, horizontal scaling, eventual consistency, and transaction handling across the data stores when developing applications by using microservices architectures. Therefore, modernization patterns are critical for solving commonly occurring problems in modern application development, and they help accelerate software delivery.
This guide provides a technical reference for cloud architects, technical leads, application and business owners, and developers who want to choose the right cloud architecture for design patterns based on well-architected best practices. Each pattern discussed in this guide addresses one or more known scenarios in microservices architectures. The guide discusses the issues and considerations associated with each pattern, provides a high-level architectural implementation, and describes the AWS implementation for the pattern. Open source GitHub samples and workshop links are provided where available.
The guide covers the following patterns:
- Anti-corruption layer
- API routing patterns:
- Hostname routing
- Path routing
- HTTP header routing
- Circuit breaker
- Event sourcing
- Hexagonal architecture
- Publish-subscribe
- Retry with backoff
- Saga patterns:
- Saga choreography
- Saga orchestration
- Scatter-gather
- Strangler fig
- Transactional outbox
Targeted business outcomes
By using the patterns discussed in this guide to modernize your applications, you can:
- Design and implement reliable, secure, operationally efficient architectures that are optimized for cost and performance.
- Reduce the cycle time for use cases that require these patterns, so you can focus on organization-specific challenges instead.
- Accelerate development by standardizing pattern implementations by using AWS services.
- Help your developers build modern applications without inheriting technical debt.