ESIEA Microservices & Cloud Computing 2024-11 PDF
Document Details
Uploaded by Deleted User
ESIEA
2024
ESIEA
Tags
Summary
These are module notes for ESIEA's Microservices and Cloud Computing module from November 2024. The content covers various aspects of cloud computing and microservices utilizing different technologies.
Full Transcript
MICROSERVICES & CLOUD COMPUTING 20/11/2024 – 21/11/2024 ESIEA – 4a Kevin Navarri Thomas Desrut Julien Trouillet Agenda Four presentations about Cloud Concepts 1. Introduire la notion de SI 2....
MICROSERVICES & CLOUD COMPUTING 20/11/2024 – 21/11/2024 ESIEA – 4a Kevin Navarri Thomas Desrut Julien Trouillet Agenda Four presentations about Cloud Concepts 1. Introduire la notion de SI 2. Microservices & Cloud Computing 3. Les Archi Cloud 4. Scalabilité du Cloud Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 2 AGENDA 1 About Us 2 Introduction to Microservices 3 Essential Microservices Patterns 4 Securing Microservices 5 Deploying and Maintaining Microservices 6 Logging 7 Monitoring 8 Introduction to Cloud Computing Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 3 OUR STORY A business and WHO technology transformation WE ARE partner Capgemini is a global leader in partnering with companies to transform and manage their business by harnessing the power of technology. The Group is guided everyday by its purpose of unleashing human energy through technology for an inclusive and sustainable future. It is a responsible and diverse organization of over 360,000 team members in more than 50 countries. As we leverage cloud, data, AI, connectivity, software, digital engineering, and platforms to address the entire breadth of business needs, this passion drives a powerful commitment. To unlock the true value of technology for your business, our planet, and society for a more inclusive, sustainable future. Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 4 CAPGEMINI AT-A-GLANCE UNLOCKING THE VALUE OF TECHNOLOGY We are fortunate to work at the heart of today’s major transformations, to Work with 1.9 million contribute to development in 85% benefited from digital of the 200 largest public inclusion initiatives every industry, and to help companies on the Forbes since 2018 Global 2000 list simply make our planet a Capgemini Research better place. And we do this as 10 Institute ranked we have always done at consecutive years named one of the World’s Most #1 Capgemini: with passion and six years in a row Ethical Companies by the for the quality of its energy, and all together.“ Ethisphere Institute research by Source Global Research Aiman Ezzat Contribute to Chief Executive Officer 11 of the UN’s Sustainable Development Goals Presentation Title | Author | Date Company Confidential Public © Capgemini 2023. All rights reserved | 5 JT : Mon parcours Licence Mathématiques parcours mathématiques fondamentales, Université d’Avignon. Master Mathématiques : Data-Mining & Recherche Opérationnelle, Université d’Aix-Marseille Parcours professionnel : - 4 ans dans start-up éditeur de logiciel : Data-scientist : développement JAVA, R - 3 ans dans une première ESN : Ingénieur R&D dans l’industrie Spatial-Défense : JAVA, Matlab, R - Depuis 8 ans chez Capgemini Financial Services : Architecte Solutions / Team Lead Architecte Solution / Team Lead / Architecte Fonctionnel Coordinateur Technique Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 6 JT : Mon rôle Architecte Solution / Architecte Fonctionnel Cadrage des besoins métiers. Team Lead / Cadrage de l’architecture de la solution. Chef de projet Technique Encadrement d’équipe. Coordination d’équipes. Consultant / Manager Capgemini Rôle de Delegate Présentations Ecole Recrutements de consultants Avants ventes Animer / Suivre des formations. Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 7 TD : Mon parcours Licence Sciences et Technologies de l’Information et de la Communication, Université d’Orléans Master Méthodes Informatiques Appliquées à la Gestion d’Entreprise, spécialité Réseaux Distribués, Université d’Orléans Parcours professionnel : - 6 ans chez Capgemini Apps - Développeur Java, C++, Graphtalk,... - 3 ans chez Capgemini PER - Team Lead, Project Manager - 5 ans chez Capgemini Financial Services - Architecte Solutions, Référent Technique Move to Cloud Architecte Solution / Tech Lead / Architecte Fonctionnel Architecture Applicative Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 8 TD : Mon rôle Architecte Solution / Architecte Fonctionnel Cadrage des besoins métiers Tech Lead / Cadrage de l’architecture de la solution Architecture Applicative Apporter et partager les connaissances techniques clefs Traduire l’architecture de la solution en composants techniques Consultant / Manager Capgemini Recrutements de consultants Avants ventes Coaching carrière Animation des communautés architecte et DevOPS Corporate Social Responsabilities Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 9 KN : Mon parcours Master Génie Biotechnologique et management en agro-industries, Université de La Rochelle Reconversion en développement informatique Parcours professionnel : - 2 ans en tant que responsable de production en industrie agro-alimentaire - 6 ans chez Capgemini Financial Services - Développeur Java, Api Management, architecture applicative... Architecte Solution / Tech Lead / Architecte Fonctionnel Architecture Applicative Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 10 TD : Mon rôle Architecte Solution / Architecte Fonctionnel Cadrage des besoins métiers Tech Lead / Cadrage de l’architecture de la solution Architecture Applicative Apporter et partager les connaissances techniques clefs Traduire l’architecture de la solution en composants techniques Consultant / Manager Capgemini Recrutements de consultants Avants ventes Coaching carrière Animation de la communauté API Génération de formations Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 11 Qui êtes-vous ? Rapide tour de table : Qui êtes-vous ? Quel poste vous attire ? Qu’attendez-vous de cette présentation ? Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 12 AGENDA 1 About Us 2 Introduction to Microservices 3 Essential Microservices Patterns 4 Securing Microservices 5 Deploying and Maintaining Microservices 6 Logging 7 Monitoring 8 Introduction to Cloud Computing Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 13 Monoliths and Their Limitations A monolithic application is a single-tiered software application in which different modules are combined into a single program. Benefits : - deployment ease : one piece of software to merge in and ship out - managed complexity : centralized services with end to end testing capability - low dependency : proper infrastructure not shared Limitations : - costly scalability : ability to scale if the code base permits it but at a high delay and infrastructure cost - update frequency : has to be deployed as a unified package regardless of content update. No continuous deployment - rollback or die : difficult to fix a failing component quickly and safely, usually rollback is mandatory if a critical failure is exposed after and update. The rollback itself exposes to failure. - size : monolith tend to grow oversize with added features over time, aggravating limitations Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 14 Definition and Properties of a Microservice A microservice typically implements a set of distinct features or functionality. Each microservice is a mini- application that has its own architecture and business logic Highlight key properties: - Modularity: Each microservice represents a specific business function. - Autonomy: Each service is independent, allowing flexibility in development and deployment. - Data Decentralization: Each microservice may have its own database, ensuring data isolation. Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 15 Benefits of Microservices Scalability: Ability to scale only what’s needed, reducing resource waste. i.e. : Instead of spooling multiple instances of the whole monolith (chunks if its architecture allows it) you only have to spool instances of critical services then free up the resources afterwards, Development Speed: Smaller, independent services allow teams to deploy faster. Optimization/Compatibility : Allows multiple concurrent languages to be used to get the maximum performance or reliability from a dedicated technology. Although multiplying technologies can lead to an overwhelming complexity Fault Isolation: Failures in one service don’t bring down the entire application. Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 16 “Decentralized” Architecture : Governance & Catalog The shift from centralized to decentralized governance in microservices - Monoliths : centralized governance that ensured the deployment of a single application - Micro Services : per service governance, each team- follows its on schedule and roadmap The Service Catalog is a repository listing all available services, making it easy for teams to discover, reuse, and monitor services. Pitfalls : - microservice architectures are more complex than previously monolith : proper cataloging is as key as service designs, if not more - Distributed transactions aka business transactions taking place in multiple services require synchronization and sequencing. Rollback can be tricky - End to End management, testing and monitoring Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 17 Notable Example: Netflix with AWS « Locked in massive Databases » « Javaweb - An application that does it all » « Very difficult to diagnose like a memory leak because of the multiple code base changes at once » « Network Latencey, congestion, failure, logical or scaling failure » Source :Mastering Chaos - A Netflix Guide to Microservices « Zuul – Proxy Layer » « API Gateway that centralizes all API Catalog » Although you can notice that Edge and Paltform zones can talk directly without the Gateway Hystrix created to avoid cascading failure = SPOF Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 18 AGENDA 1 About Us 2 Introduction to Microservices 3 Essential Microservices Patterns 4 Securing Microservices 5 Deploying and Maintaining Microservices 6 Logging 7 Monitoring 8 Introduction to Cloud Computing Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 19 Business-Driven Orientation : What is DDD Domain-Driven Development (DDD) is a software approach focused on aligning software design with the core business domain. It emphasizes collaboration with domain experts to create a shared language and model that represent business concepts and rules. Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 20 Business-Driven Orientation : What is DDD By dividing complex systems into subdomains and bounded contexts, DDD enables flexible and scalable applications. This ensures software solutions stay closely connected to business needs. Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 21 Circuit Breaker In software architecture, a Circuit Breaker is a design pattern used to prevent cascading failures in a system. When a service experiences repeated failures, the circuit "opens," stopping requests to that service and allowing time for recovery. Once stability is checked, the circuit "closes," resuming normal operations. This pattern improves system resilience and avoids overwhelming faulty services. Popular implementations : Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 22 Circuit Breaker Behavior of a circuit breaker Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 23 Retry Pattern Strategies for implementing Retry mechanism : 1. Fixed Delay: Setting a fixed interval to send retry requests every time we get an error. For example, RetryDelay(i) = 100 [ms] for each subsequent retry. 2. Incremental Delay: Incrementally increasing the delay with each retry. For example, RetryDelay(i) = 100*i [ms] which increases for subsequent requests. 3. Exponential BackOff: Exponentially setting the delay based on the requirement of the system. For example, RetryDelay(i) = t = 100 * 2 ^(i-1) [ms] Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 24 Event Broker Pattern The Event Broker Pattern in software architecture is a design pattern where an intermediary, known as the event broker, manages and distributes events between producers (event publishers) and consumers (event subscribers). The event broker decouples producers and consumers, enabling asynchronous, event-driven communication without requiring them to know about each other directly. Key Features of the Event Broker Pattern: Event Routing: The broker receives events from producers and delivers them to the appropriate consumers based on rules, such as subscriptions or topics. Scalability: It allows multiple consumers to receive events in parallel, scaling the system easily as new consumers join. Loose Coupling: Producers and consumers are decoupled, making it easier to add or remove components without impacting the system. Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 25 AGENDA 1 About Us 2 Introduction to Microservices 3 Essential Microservices Patterns 4 Securing Microservices 5 Deploying and Maintaining Microservices 6 Logging 7 Monitoring 8 Introduction to Cloud Computing Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 26 Authentication vs. Authorization Authentication : Authentication is the process of confirming a user's identity through credentials such as passwords, tokens, or biometrics. It answers the question, "Who are you?" This step is essential for securing access to systems. Authorization : Authorization determines the permissions granted to an authenticated user, defining what actions they can perform or resources they can access. It answers the question, "What are you allowed to do?" Authorization typically follows authentication. Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 27 SSO and JWT Patterns SSO (Single Sign-On) : Enables users to log in once and access multiple applications or services without re-authenticating. OAuth 2.0 : An authorization protocol that grants third-party applications limited access to user resources without exposing user credentials. OIDC (OpenID Connect) : An identity layer built on top of OAuth 2.0, used to verify user identity and access profile information, often in SSO contexts. In summary : SSO = Single login across multiple services. OAuth = Authorization (access to resources). OIDC = Authentication + Authorization (identity verification + access to resources). Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 28 OAuth Pattern Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 29 OIDC Pattern Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 30 AGENDA 1 About Us 2 Introduction to Microservices 3 Essential Microservices Patterns 4 Securing Microservices 5 Deploying and Maintaining Microservices 6 Logging 7 Monitoring 8 Introduction to Cloud Computing Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 31 Importance of CI/CD and DevOps Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 32 Simple CI/CD for a Java project REX Orange Bank | September 2019 © Capgemini 2019. All rights reserved | 33 Complex CI for a bank Partners & Fintechs Agile Project management ecosystem DEV Source code repository Orchestrator Build application 1 2 Commit code Unit tests Quality Build Deploy app. 4 7 6 Deploy environment Launch tests System configuration Tests Binaries repository 3 Store application artefacts Deployment automation 5 Deploy configuration ENVIRONMENTS (G2S) APPSTORES QA PROD G2S Monitoring INT REC HOMOL IT MAC PREPROD Pain points Link to build MAC PROD END USERS REX Orange Bank | September 2019 © Capgemini 2019. All rights reserved | 34 AGENDA 1 About Us 2 Introduction to Microservices 3 Essential Microservices Patterns 4 Securing Microservices 5 Deploying and Maintaining Microservices 6 Logging 7 Monitoring 8 Introduction to Cloud Computing Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 35 Centralized Logging Tools (ELK Stack) Introduce centralized logging tools like ELK Stack (Elasticsearch, Logstash, Kibana) and Fluentd for aggregating logs across services. Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 36 Importance of Logs for Diagnostics and Issue Resolution 2024-11-12 11:30:00 INFO [http-nio-8080-exec-1] com.example.demo.controller.UserController - Received request for user data, correlationId=abcd-1234 2024-11-12 11:30:01 INFO [http-nio-8080-exec-2] com.example.demo.controller.OrderController - Received order creation request, correlationId=wxyz-5678 2024-11-12 11:30:02 DEBUG [http-nio-8080-exec-3] com.example.demo.controller.AnalyticsController - Starting analytics process, correlationId=mnop-6789 2024-11-12 11:30:03 INFO [http-nio-8080-exec-1] com.example.demo.service.UserService - Fetching user data for ID 1, correlationId=abcd-1234 2024-11-12 11:30:04 DEBUG [http-nio-8080-exec-2] com.example.demo.repository.OrderRepository - Persisting new order, correlationId=wxyz-5678 2024-11-12 11:30:05 INFO [http-nio-8080-exec-4] com.example.demo.controller.InventoryController - Checking inventory, correlationId=qrst-1122 2024-11-12 11:30:06 INFO [http-nio-8080-exec-1] com.example.demo.repository.UserRepository - Fetching user with ID 1, correlationId=abcd-1234 2024-11-12 11:30:07 DEBUG [http-nio-8080-exec-3] com.example.demo.service.AnalyticsService - Querying database for analytics, correlationId=mnop-6789 2024-11-12 11:30:08 INFO [http-nio-8080-exec-2] com.example.demo.service.OrderService - Order created successfully, correlationId=wxyz-5678 2024-11-12 11:30:09 WARN [http-nio-8080-exec-4] com.example.demo.service.InventoryService - Inventory low for product ID 1001, correlationId=qrst-1122 2024-11-12 11:30:10 DEBUG [http-nio-8080-exec-5] com.example.demo.integration.EmailService - Sending confirmation email, correlationId=wxyz-5678 2024-11-12 11:30:11 INFO [http-nio-8080-exec-6] com.example.demo.controller.PaymentController - Initiating payment, correlationId=wxyz-5678 2024-11-12 11:30:12 DEBUG [http-nio-8080-exec-7] com.example.demo.controller.UserController - Received request for user profile, correlationId=abcd-1234 2024-11-12 11:30:13 INFO [http-nio-8080-exec-4] com.example.demo.controller.InventoryController - Inventory check completed, correlationId=qrst-1122 2024-11-12 11:30:14 ERROR [http-nio-8080-exec-6] com.example.demo.integration.BankingService - Payment processing failed, correlationId=wxyz-5678 2024-11-12 11:30:15 INFO [http-nio-8080-exec-3] com.example.demo.controller.AnalyticsController - Analytics process completed, correlationId=mnop-6789 2024-11-12 11:30:16 DEBUG [http-nio-8080-exec-8] com.example.demo.controller.ShippingController - Shipping request initiated, correlationId=wxyz-5678 2024-11-12 11:30:17 INFO [http-nio-8080-exec-5] com.example.demo.controller.NotificationController - Sending notification, correlationId=ijkl-2345 2024-11-12 11:30:18 DEBUG [http-nio-8080-exec-1] com.example.demo.repository.UserRepository - Updating user profile, correlationId=abcd-1234 2024-11-12 11:30:19 INFO [http-nio-8080-exec-2] com.example.demo.service.PaymentService - Payment retry scheduled, correlationId=wxyz-5678 2024-11-12 11:30:20 INFO [http-nio-8080-exec-3] com.example.demo.controller.AnalyticsController - Sending analytics data, correlationId=mnop-6789 2024-11-12 11:30:21 WARN [http-nio-8080-exec-6] com.example.demo.controller.PaymentController - Retrying payment, correlationId=wxyz-5678 2024-11-12 11:30:22 DEBUG [http-nio-8080-exec-8] com.example.demo.integration.ShippingProvider - Sending shipment request, correlationId=wxyz-5678 2024-11-12 11:30:23 INFO [http-nio-8080-exec-7] com.example.demo.controller.UserController - Profile update complete, correlationId=abcd-1234 2024-11-12 11:30:24 INFO [http-nio-8080-exec-5] com.example.demo.service.NotificationService - Notification sent, correlationId=ijkl-2345 2024-11-12 11:30:25 DEBUG [http-nio-8080-exec-3] com.example.demo.repository.AnalyticsRepository - Persisting analytics data, correlationId=mnop-6789 2024-11-12 11:30:26 INFO [http-nio-8080-exec-4] com.example.demo.controller.OrderController - Received order status request, correlationId=wxyz-5678 2024-11-12 11:30:27 DEBUG [http-nio-8080-exec-2] com.example.demo.repository.OrderRepository - Checking order status, correlationId=wxyz-5678 2024-11-12 11:30:28 INFO [http-nio-8080-exec-1] com.example.demo.controller.UserController - Fetching updated profile data, correlationId=abcd-1234 2024-11-12 11:30:29 INFO [http-nio-8080-exec-6] com.example.demo.controller.PaymentController - Payment processed successfully, correlationId=wxyz-5678 2024-11-12 11:30:30 WARN [http-nio-8080-exec-7] com.example.demo.service.UserService - Profile data incomplete, correlationId=abcd-1234 Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 37 Importance of Logs for Diagnostics and Issue Resolution 2024-11-12 11:30:00 INFO [http-nio-8080-exec-1] com.example.demo.controller.UserController - Received request for user data, correlationId=abcd-1234 2024-11-12 11:30:01 INFO [http-nio-8080-exec-2] com.example.demo.controller.OrderController - Received order creation request, correlationId=wxyz-5678 2024-11-12 11:30:02 DEBUG [http-nio-8080-exec-3] com.example.demo.controller.AnalyticsController - Starting analytics process, correlationId=mnop-6789 2024-11-12 11:30:03 INFO [http-nio-8080-exec-1] com.example.demo.service.UserService - Fetching user data for ID 1, correlationId=abcd-1234 2024-11-12 11:30:04 DEBUG [http-nio-8080-exec-2] com.example.demo.repository.OrderRepository - Persisting new order, correlationId=wxyz-5678 2024-11-12 11:30:05 INFO [http-nio-8080-exec-4] com.example.demo.controller.InventoryController - Checking inventory, correlationId=qrst-1122 2024-11-12 11:30:06 INFO [http-nio-8080-exec-1] com.example.demo.repository.UserRepository - Fetching user with ID 1, correlationId=abcd-1234 2024-11-12 11:30:07 DEBUG [http-nio-8080-exec-3] com.example.demo.service.AnalyticsService - Querying database for analytics, correlationId=mnop-6789 2024-11-12 11:30:08 INFO [http-nio-8080-exec-2] com.example.demo.service.OrderService - Order created successfully, correlationId=wxyz-5678 2024-11-12 11:30:09 WARN [http-nio-8080-exec-4] com.example.demo.service.InventoryService - Inventory low for product ID 1001, correlationId=qrst-1122 2024-11-12 11:30:10 DEBUG [http-nio-8080-exec-5] com.example.demo.integration.EmailService - Sending confirmation email, correlationId=wxyz-5678 2024-11-12 11:30:11 INFO [http-nio-8080-exec-6] com.example.demo.controller.PaymentController - Initiating payment, correlationId=wxyz-5678 2024-11-12 11:30:12 DEBUG [http-nio-8080-exec-7] com.example.demo.controller.UserController - Received request for user profile, correlationId=abcd-1234 2024-11-12 11:30:13 INFO [http-nio-8080-exec-4] com.example.demo.controller.InventoryController - Inventory check completed, correlationId=qrst-1122 2024-11-12 11:30:14 ERROR [http-nio-8080-exec-6] com.example.demo.integration.BankingService - Payment processing failed, correlationId=wxyz-5678 2024-11-12 11:30:15 INFO [http-nio-8080-exec-3] com.example.demo.controller. AnalyticsController - Analytics process completed, correlationId=mnop-6789 2024-11-12 11:30:16 DEBUG [http-nio-8080-exec-8] com.example.demo.controller.ShippingController - Shipping request initiated, correlationId=wxyz-5678 2024-11-12 11:30:17 INFO [http-nio-8080-exec-5] com.example.demo.controller. AnalyticsController - Sending notification, correlationId=ijkl-2345 2024-11-12 11:30:18 DEBUG [http-nio-8080-exec-1] com.example.demo.repository.UserRepository - Updating user profile, correlationId=abcd-1234 2024-11-12 11:30:19 INFO [http-nio-8080-exec-2] com.example.demo.service.PaymentService - Payment retry scheduled, correlationId=wxyz-5678 2024-11-12 11:30:20 INFO [http-nio-8080-exec-3] com.example.demo.controller. AnalyticsController - Sending analytics data, correlationId=mnop-6789 2024-11-12 11:30:21 WARN [http-nio-8080-exec-6] com.example.demo.controller.PaymentController - Retrying payment, correlationId=wxyz-5678 2024-11-12 11:30:22 DEBUG [http-nio-8080-exec-8] com.example.demo.integration.ShippingProvider - Sending shipment request, correlationId=wxyz-5678 2024-11-12 11:30:23 INFO [http-nio-8080-exec-7] com.example.demo.controller.UserController - Profile update complete, correlationId=abcd-1234 2024-11-12 11:30:24 INFO [http-nio-8080-exec-5] com.example.demo.service. AnalyticsController - Notification sent, correlationId=ijkl-2345 2024-11-12 11:30:25 DEBUG [http-nio-8080-exec-3] com.example.demo.repository.AnalyticsRepository - Persisting analytics data, correlationId=mnop-6789 2024-11-12 11:30:26 INFO [http-nio-8080-exec-4] com.example.demo.controller.OrderController - Received order status request, correlationId=wxyz-5678 2024-11-12 11:30:27 DEBUG [http-nio-8080-exec-2] com.example.demo.repository.OrderRepository - Checking order status, correlationId=wxyz-5678 2024-11-12 11:30:28 INFO [http-nio-8080-exec-1] com.example.demo.controller.UserController - Fetching updated profile data, correlationId=abcd-1234 2024-11-12 11:30:29 INFO [http-nio-8080-exec-6] com.example.demo.controller.PaymentController - Payment processed successfully, correlationId=wxyz-5678 2024-11-12 11:30:30 WARN [http-nio-8080-exec-7] com.example.demo.service.UserService - Profile data incomplete, correlationId=abcd-1234 Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 38 Importance of Logs for Diagnostics and Issue Resolution 2024-11-12 11:30:02 DEBUG [http-nio-8080-exec-3] com.example.demo.controller.AnalyticsController - Starting analytics process, correlationId=mnop-6789 2024-11-12 11:30:15 INFO [http-nio-8080-exec-3] com.example.demo.controller. AnalyticsController - Analytics process completed, correlationId=mnop-6789 2024-11-12 11:30:17 INFO [http-nio-8080-exec-5] com.example.demo.controller. AnalyticsController - Sending notification, correlationId=ijkl-2345 2024-11-12 11:30:20 INFO [http-nio-8080-exec-3] com.example.demo.controller. AnalyticsController - Sending analytics data, correlationId=mnop-6789 2024-11-12 11:30:24 INFO [http-nio-8080-exec-5] com.example.demo.service. AnalyticsController - Notification sent, correlationId=ijkl-2345 MNOP-6789 AnalyticsController ijkl-2345 Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 39 Importance of Logs for Diagnostics and Issue Resolution 2024-11-12 11:30:00 INFO [http-nio-8080-exec-1] com.example.demo.controller.UserController - Received request for user data, correlationId=abcd-1234 2024-11-12 11:30:01 INFO [http-nio-8080-exec-2] com.example.demo.controller.OrderController - Received order creation request, correlationId=wxyz-5678 2024-11-12 11:30:02 DEBUG [http-nio-8080-exec-3] com.example.demo.controller.AnalyticsController - Starting analytics process, correlationId=mnop-6789 2024-11-12 11:30:03 INFO [http-nio-8080-exec-1] com.example.demo.service.UserService - Fetching user data for ID 1, correlationId=abcd-1234 2024-11-12 11:30:04 DEBUG [http-nio-8080-exec-2] com.example.demo.repository.OrderRepository - Persisting new order, correlationId=wxyz-5678 2024-11-12 11:30:05 INFO [http-nio-8080-exec-4] com.example.demo.controller.InventoryController - Checking inventory, correlationId=qrst-1122 2024-11-12 11:30:06 INFO [http-nio-8080-exec-1] com.example.demo.repository.UserRepository - Fetching user with ID 1, correlationId=abcd-1234 2024-11-12 11:30:07 DEBUG [http-nio-8080-exec-3] com.example.demo.service.AnalyticsService - Querying database for analytics, correlationId=mnop-6789 2024-11-12 11:30:08 INFO [http-nio-8080-exec-2] com.example.demo.service.OrderService - Order created successfully, correlationId=wxyz-5678 2024-11-12 11:30:09 WARN [http-nio-8080-exec-4] com.example.demo.service.InventoryService - Inventory low for product ID 1001, correlationId=qrst-1122 2024-11-12 11:30:10 DEBUG [http-nio-8080-exec-5] com.example.demo.integration.EmailService - Sending confirmation email, correlationId=wxyz-5678 2024-11-12 11:30:11 INFO [http-nio-8080-exec-6] com.example.demo.controller.PaymentController - Initiating payment, correlationId=wxyz-5678 2024-11-12 11:30:12 DEBUG [http-nio-8080-exec-7] com.example.demo.controller.UserController - Received request for user profile, correlationId=abcd-1234 2024-11-12 11:30:13 INFO [http-nio-8080-exec-4] com.example.demo.controller.InventoryController - Inventory check completed, correlationId=qrst-1122 2024-11-12 11:30:14 ERROR [http-nio-8080-exec-6] com.example.demo.integration.BankingService - Payment processing failed, correlationId=wxyz-5678 2024-11-12 11:30:15 INFO [http-nio-8080-exec-3] com.example.demo.controller.AnalyticsController - Analytics process completed, correlationId=mnop-6789 2024-11-12 11:30:16 DEBUG [http-nio-8080-exec-8] com.example.demo.controller.ShippingController - Shipping request initiated, correlationId=wxyz-5678 2024-11-12 11:30:17 INFO [http-nio-8080-exec-5] com.example.demo.controller.NotificationController - Sending notification, correlationId=ijkl-2345 2024-11-12 11:30:18 DEBUG [http-nio-8080-exec-1] com.example.demo.repository.UserRepository - Updating user profile, correlationId=abcd-1234 2024-11-12 11:30:19 INFO [http-nio-8080-exec-2] com.example.demo.service.PaymentService - Payment retry scheduled, correlationId=wxyz-5678 2024-11-12 11:30:20 INFO [http-nio-8080-exec-3] com.example.demo.controller.AnalyticsController - Sending analytics data, correlationId=mnop-6789 2024-11-12 11:30:21 WARN [http-nio-8080-exec-6] com.example.demo.controller.PaymentController - Retrying payment, correlationId=wxyz-5678 2024-11-12 11:30:22 DEBUG [http-nio-8080-exec-8] com.example.demo.integration.ShippingProvider - Sending shipment request, correlationId=wxyz-5678 2024-11-12 11:30:23 INFO [http-nio-8080-exec-7] com.example.demo.controller.UserController - Profile update complete, correlationId=abcd-1234 2024-11-12 11:30:24 INFO [http-nio-8080-exec-5] com.example.demo.service.NotificationService - Notification sent, correlationId=ijkl-2345 2024-11-12 11:30:25 DEBUG [http-nio-8080-exec-3] com.example.demo.repository.AnalyticsRepository - Persisting analytics data, correlationId=mnop-6789 2024-11-12 11:30:26 INFO [http-nio-8080-exec-4] com.example.demo.controller.OrderController - Received order status request, correlationId=wxyz-5678 2024-11-12 11:30:27 DEBUG [http-nio-8080-exec-2] com.example.demo.repository.OrderRepository - Checking order status, correlationId=wxyz-5678 2024-11-12 11:30:28 INFO [http-nio-8080-exec-1] com.example.demo.controller.UserController - Fetching updated profile data, correlationId=abcd-1234 2024-11-12 11:30:29 INFO [http-nio-8080-exec-6] com.example.demo.controller.PaymentController - Payment processed successfully, correlationId=wxyz-5678 2024-11-12 11:30:30 WARN [http-nio-8080-exec-7] com.example.demo.service.UserService - Profile data incomplete, correlationId=abcd-1234 Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 40 Importance of Logs for Diagnostics and Issue Resolution 2024-11-12 11:30:00 INFO [http-nio-8080-exec-1] com.example.demo.controller.UserController - Received request for user data, correlationId=abcd-1234 2024-11-12 11:30:03 INFO [http-nio-8080-exec-1] com.example.demo.service.UserService - Fetching user data for ID 1, correlationId=abcd-1234 2024-11-12 11:30:06 INFO [http-nio-8080-exec-1] com.example.demo.repository.UserRepository - Fetching user with ID 1, correlationId=abcd-1234 2024-11-12 11:30:12 DEBUG [http-nio-8080-exec-7] com.example.demo.controller.UserController - Received request for user profile, correlationId=abcd-1234 2024-11-12 11:30:18 DEBUG [http-nio-8080-exec-1] com.example.demo.repository.UserRepository - Updating user profile, correlationId=abcd-1234 2024-11-12 11:30:23 INFO [http-nio-8080-exec-7] com.example.demo.controller.UserController - Profile update complete, correlationId=abcd-1234 2024-11-12 11:30:28 INFO [http-nio-8080-exec-1] com.example.demo.controller.UserController - Fetching updated profile data, correlationId=abcd-1234 abcd-1234 UserService abcd-1234 UserController abcd-1234 abcd-1234 UserRepository Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 41 AGENDA 1 About Us 2 Introduction to Microservices 3 Essential Microservices Patterns 4 Securing Microservices 5 Deploying and Maintaining Microservices 6 Logging 7 Monitoring 8 Introduction to Cloud Computing Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 42 Introduction to Monitoring Tools (Prometheus, Grafana, Splunk) Grafana: Grafana is an open-source tool for data visualization and monitoring. It allows users to create interactive dashboards and graphs from various data sources (Prometheus, InfluxDB, Elasticsearch, etc.). Used for performance tracking and system analysis, it enhances real-time observability. es of logs and real-time events. Grapfana Splunk: Splunk is a data analytics platform specializing in collecting, indexing, and visualizing machine data generated by applications, servers, and other IT systems. It enables users to analyze and monitor data for security, IT operations, and business intelligence. Splunk excels at managing large volumes of logs and real-time events. Splunk Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 43 Introduction to Monitoring Tools (Prometheus, Grafana, Splunk) System / API Monitoring Prometheus Grapfana Log4J Splunk Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 44 Importance of Observability: Metrics, Alerts, Performance Tracking Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 45 Importance of Observability: Metrics, Alerts, Performance Tracking Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 46 AGENDA 1 About Us 2 Introduction to Microservices 3 Essential Microservices Patterns 4 Securing Microservices 5 Deploying and Maintaining Microservices 6 Logging 7 Monitoring 8 Introduction to Cloud Computing Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 47 I HEARD ABOUT PUBLIC AND PRIVATE CLOUD, IAAS, PAAS & SAAS, … Public Public Cloud ❍ Private Private Cloud ❍ Cloud Solution within a private datacenter, with its own service catalog Hybrid Cloud ❍ Combination of On-Premise Datacenter Hybrid with Private and/or Public Cloud Cognito Amazon CloudWatch Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 48 WHERE IS THE CLOUD? Cloud is not vague – you can pinpoint exactly where your workloads and data will reside Worldwide Cloud providers generally offer different Regions, isolated from one another. No data or workload leaves its Region (unless instructed to by you). You must choose which one(s) to use. Each Region consists of typically three Availability Zones. These are separate data centres in close proximity, offering redundancy together with low latency. For low level services you can choose which one(s) to use. Everything is connected via provider owned dedicated networking. Each large Cloud provider has 5x-10x more AWS, January 2022 vs June 2021, https://www.infrastructure.aws/ global network capacity than the whole public internet. https://aws.amazon.com/about-aws/global-infrastructure/ 30 Regions (+15%) This infrastructure often is complemented by additional 96 Availability Zones (+8%) Edge Locations (for data ingress/egress, caching, >400 Edge Locations (+33%) preprocessing, direct connect) and can be even be extended several 10.000 km fiber network with multiple 100 Gbps links onto your premises with dedicated appliances. Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 49 A CLOUD SERVICE IS… 1. AN ON DEMAND IT SERVICES 2. BASED ON AUTOMATISED DEPLOYMENT 3. ALLOWING ELASTICITY 4. IN A “PAY PER USE” MODEL Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 50 DIFFERENCES BETWEEN NON-CLOUD AND CLOUD PROJECTS (FROM ARCHITECT‘S AND ENGINEER‘S PERSPECTIVE) Non-Cloud Projects Cloud Projects “Pets” “Cattle” Are given names Are given numbers Are unique, lovingly hand raised, and cared for Are almost identical to other cattle You feel the need to have exactly this one It is sufficient to have enough of that kind (no matter which one) When they get ill, you nurse them back to health When they get ill, you “shoot them and get a new one” Are deeply integrated into your home environment Have very few to no dependency on your environment – you just care for the result Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 51 LIABILITIES (CLOUDER VS CLIENT) https://aws.amazon.com/compliance/shared-responsibility-model/ Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 52 MERCI ! Thomas Desrut Architecte Solution Kevin Navarri Julien Trouillet Architecte Solution Architecte Solution Digital Customer Experience Financial Services SBU Practice Cloud & Custom Application Practice Cloud & Custom Application [email protected] Financial Services SBU Financial Services SBU [email protected] [email protected] Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 53 To Go Further : How to build microservices from a monolith ? How to build a microservice? The first step in building a microservice is breaking down an application into a set of services. Analyze the Monolith: Understand the existing monolithic application thoroughly, including its architecture, dependencies, and functionality. 1.Identify Business Capabilities: Determine the monolith's distinct business capabilities or functionalities. These could be features, modules, or services that can be separated logically. 2.Define Service Boundaries: Establish clear boundaries for each microservice. Identify what each microservice will be responsible for and ensure that these responsibilities are cohesive and well-defined. 3.Data Decoupling: Examine data dependencies and decide how data will be shared between microservices. You may need to introduce data replication, data synchronization, and separate databases for each microservice. 4.Communication Protocols: Define communication protocols and APIs between microservices. RESTful APIs, gRPC, or message queues are commonly used for inter-service communication. 5.Separate Codebases: Create different codebases for each microservice. This may involve extracting relevant code and functionality from the monolith into individual repositories or as packages in a monorepo strategy. 6.Decompose the Database: If the monolithic application relies on a single database, you may need to split the database into smaller databases or schema within a database for each microservice. 7.Implement Service Logic: Develop the business logic for each microservice. Ensure that each microservice can function independently and handle its specific responsibilities. 8.Integration and Testing: Create thorough integration tests to ensure that the microservices can communicate and work together as expected. Use continuous integration (CI) and automated testing to maintain code quality. 9.Documentation: Maintain comprehensive documentation for each microservice, including API documentation and usage guidelines for developers who will interact with the services. Presentation Title | Author | Date Company Confidential © Capgemini 2023. All rights reserved | 54 GET THE FUTURE YOU WANT capgemini.com About Capgemini Capgemini is a global leader in partnering with companies to transform and manage their business by harnessing the power of technology. The Group is guided everyday by its purpose of unleashing human energy through technology for an inclusive and sustainable future. It is a responsible and diverse organization of over 360,000 team members more than 50 countries. With its strong 55-year heritage and deep industry expertise, Capgemini is trusted by its clients to address the entire breadth of their business needs, from strategy and design to operations, fueled by the fast evolving and innovative world of cloud, data, AI, connectivity, software, digital engineering and platforms. The Group reported in 2022 global revenues of €22 billion. facebook LinkedIn SlideShare Twitter YouTube Get The Future You Want | www.capgemini.com This presentation contains information that may be privileged or confidential and is the property of the Capgemini Group. Copyright © 2023 Capgemini. All rights reserved.