[Report]Create a scalable mobile service for enterprise success #reinvent #chalktalk
This year i got a chance to visit las vegas to attend Re:invent 2022 held from 28/11/2022 to 2/12/2022
I participated in a chalk talk where people with different background and views share there experience use case and problems regarding a Perticular Topic for 1 hour
Overview
As your workload grows, it needs effective and ready-to-apply practices, strategies, and patterns applied at each stage of development to keep it highly available and reliable. In this chalk talk, learn about the architectural journey from monoliths to cloud-native mobile apps that serve a large number of users, how to apply pattern-based architecture and purpose-built databases, a serverless approach, and AI/ML features.
Session Detail
Speaker:
Piljoong Kim, Solutions Architect, Amazon Web Services
HYUNGIL KIM, Solutions Architect, Amazon
Session Type: Chalk Talk
Level:
200 - Intermediate
Report
In this session, participants learned
- what scalability means in mobile services and how to reflect it in service creation.
- Learn proven solutions as patterns based on APIs, data, events, and streams.
Customer journey
Customers begin their mobile service journey by pivoting ("pivoting" usually means a significant change in a company's product or service offering). Then, in the second phase, the number of users begins to grow and the size of servers and number of compute units must be increased to meet the requirements of the user base..The 3rd face optimizes performance to make better use of compute and storage and improve the user experience. 4th face Service Integration is the integration of additional functionality into an application.
Capabilities of a scalable mobile service
- Elasticity: The ability to automatically scale up or down in response to changes in demand. This allows the mobile service to handle sudden spikes in usage or traffic without impacting performance.
- Resilience: The ability to withstand and recover from failures or disruptions without losing data or functionality. This ensures that the mobile service remains available and reliable even in the face of unexpected challenges.
- Modular: Modular design, or modularity in design, is a design principle that subdivides a system into smaller parts, called modules, that can be independently created, modified, replaced, and exchanged among other modules and different systems.
- Security: The ability to protect user data and ensure that only authorized users are able to access the mobile service. This is essential for maintaining the trust and confidence of users and ensuring that their data is safe and secure.
Journey from monoliths to cloud-native mobile apps
Initialy we have a monolithic architecture with Radis for caching and oracle for database
Speaker displayed how and what services we can use to make microservices series of steps to transform our monolith to microservice architecture step by step and how
we can split payment by crating a seperate api for it using http reverse proxy
Some practices for pivoting:
- new services should not i pact an existing architecture
- Expose the function to both internal and external parties
- Control who , which service and which function can access your API
- new service should be release 1 by 1 instead of all at once
we can use private link and endpoint to expose api to internal function
Scalability:
we should seperate static content to S3 Bucket and Dynamic to different microservices for better Scalabilty
Speaker displayed a reinvent mobile app and shared how Different part of the Screen has differen different micro services
Final Architecture Diagram is bellow
CQRS Pattern: CQRS stands for Command and Query Responsibility Segregation, a pattern that separates read and update operations for a data store
Spatial Locality Pattern: all those instructions which are stored nearby to the recently executed instruction have high chances of execution.
Pre Calculation Pattern: A technique used to increase the processing speed of a program by calculating and storing the results of a burdensome calculation in advance so that the results can be quickly retrieved without having to redo the calculation later.
Event-based Async Pattern: A design pattern used to achieve asynchronous behavior in event-driven systems. In this pattern, a central event loop is used to manage and coordinate the flow of control in the program, and callback functions and other mechanisms are used to handle events as they occur.
Multiple Receiver pattern: it allows one object to send messages or events to multiple other objects. This pattern creates a central receiving object that holds a list of other objects interested in receiving messages and events, and routes messages and events to these objects as needed.
Pub-Sub Pattern: It allows for loose coupling between objects and components in the system. This pattern uses a message broker or other intermediary to route messages and events between publishers and subscribers.
Orchestration Pattern: It Enables the coordination and management of multiple tasks and processes within a system. This pattern creates an orchestrator object or component that is responsible for managing the flow of control and execution of tasks within the system.
Workflow orchestration Using Step Function
Summary
This session spotlights on useful strategies for transforming monolithic architectures into microservice ,event-based architectures.
Learning with people who think differently is truly a wonderful experience.