title
Microservices explained - the What, Why and How?

description
What are Microservices | Monolithic to Microservices Architecture | Monorepo vs Polyrepo | How Microservices connect with each other 💛 Follow me on IG for behind-the-scenes-content ► https://bit.ly/2F3LXYJ 💚 Become a DevOps Engineer - 6-month program: ► https://bit.ly/3ou15W0 🧡 GitLab Course with Microservices, K8s, Multi-Stage: ► https://bit.ly/3Ww1LXN #microservices #devops #techworldwithnana ► This video is sponsored by HashiCorp 🙌🏼 ► For more infos about their technologies: https://www.hashicorp.com/ In this video you will learn all you need to know about Microservices in 18 minutes. First, I will start with what a Monolithic Architecture is, what are some of its challenges and why the industry moved slowly towards the microservices architecture? Then we will see what microservices or a microservice architecture is exactly, the best practices, benefits and how the communication between microservices works. And finally we will also look at the downsides or challenges of a microservices architecture. We will also see different ways to manage code for microservices application and talk about the difference of monorepo and polyrepo and advantages and disadvantages of both! ▬▬▬▬▬▬ T I M E S T A M P S ⏰ ▬▬▬▬▬▬ 00:00 - Intro and Overview 00:43 - Monolith & its challenges 03:18 - What are Microservices exactly? 05:28 - How Microservices communicate with each other? 07:58 - Downsides of Microservices 10:40 - CI/CD Pipeline for Microservices 11:24 - Monorepo vs Polyrepo - How to manage the code for microservices application? 12:03 - Monorepo explained - Benefits and Disadvantages 14:46 - Polyrepo explained - Benefits and Disadvantages 17:17 - Which one to choose when? ▬▬▬▬▬▬ Want to learn more? 🚀 ▬▬▬▬▬▬ Full Python course ► https://youtu.be/t8pPdKYpowI Full Docker course ► https://youtu.be/3c-iBn73dDE Full K8s course ► https://youtu.be/X48VuDVv0do DevOps Tools explained ► https://bit.ly/2W9UEq6 ▬▬▬▬▬▬ Connect with me 👋 ▬▬▬▬▬▬ INSTAGRAM ► https://bit.ly/2F3LXYJ TWITTER ► https://bit.ly/3i54PUB LINKEDIN ► https://bit.ly/3hWOLVT FB group ► https://bit.ly/32UVSZP DEV ► https://bit.ly/3h2fqiO ▬▬▬▬▬▬ Courses & Ebooks & Bootcamp 🚀 ▬▬▬▬▬▬ ► Become a DevOps Engineer - full educational program 👉🏼 https://bit.ly/45mXaer ► High-Quality and Hands-On Courses 👉🏼 https://bit.ly/3BNS8Kv ► Kubernetes 101 - compact and easy-to-read ebook bundle 👉🏼 https://bit.ly/3Ozl28x

detail
{'title': 'Microservices explained - the What, Why and How?', 'heatmap': [{'end': 445.967, 'start': 352.958, 'weight': 0.763}], 'summary': 'Explains the challenges and benefits of transitioning to microservices from monolithic applications, emphasizing the drawbacks of monolithic applications including coordination challenges, scaling difficulties, higher costs, and longer release processes. it also highlights the concept of microservices architecture, focusing on breaking down applications into self-contained and independent microservices, leading to loose coupling and independent release cycles. additionally, it compares the advantages and disadvantages of monorepo and polyrepo approaches and provides guidance for managing microservices using gitlab groups based on project size and team structure.', 'chapters': [{'end': 193.125, 'segs': [{'end': 50.885, 'src': 'embed', 'start': 0.349, 'weight': 0, 'content': [{'end': 3.512, 'text': "In this video, I'm going to talk about microservices.", 'start': 0.349, 'duration': 3.163}, {'end': 8.637, 'text': "First, I'm going to start by explaining what a monolith application architecture is.", 'start': 4.193, 'duration': 4.444}, {'end': 17.966, 'text': 'What were some of the challenges of a monolith architecture and why the industry moved slowly towards the microservices architecture.', 'start': 9.218, 'duration': 8.748}, {'end': 25.771, 'text': 'Then we will see what microservices or microservice architecture is exactly, as well as best practices,', 'start': 18.366, 'duration': 7.405}, {'end': 29.973, 'text': 'benefits and how the communication between microservices actually works.', 'start': 25.771, 'duration': 4.202}, {'end': 41.941, 'text': 'We will also see different ways to manage code for microservices application and talk about mono repo versus poly repo and advantages and disadvantages of both.', 'start': 30.373, 'duration': 11.568}, {'end': 43.782, 'text': "So let's get started.", 'start': 42.401, 'duration': 1.381}, {'end': 50.885, 'text': 'before microservices, the standard way of developing applications was with a monolithic architecture.', 'start': 44.182, 'duration': 6.703}], 'summary': 'Exploring microservices vs. monolith architecture and their challenges, benefits, and best practices.', 'duration': 50.536, 'max_score': 0.349, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk349.jpg'}, {'end': 193.125, 'src': 'embed', 'start': 122.839, 'weight': 3, 'content': [{'end': 131.744, 'text': 'the coordination between teams became more difficult because the code was much bigger and parts of the application were more tangled into each other.', 'start': 122.839, 'duration': 8.905}, {'end': 141.329, 'text': 'also, if suddenly you had a usage spike in shopping cart, for example on holiday dates, and you would want to scale only that part of the application,', 'start': 131.744, 'duration': 9.585}, {'end': 142.63, 'text': "You can't do it.", 'start': 141.889, 'duration': 0.741}, {'end': 144.893, 'text': 'You need to scale the whole application.', 'start': 143.01, 'duration': 1.883}, {'end': 151.701, 'text': 'This in turn means higher infrastructure costs and less flexibility in scaling your application up and down.', 'start': 145.353, 'duration': 6.348}, {'end': 160.831, 'text': 'Another issue is, for example, if a payment functionally used a third party module with a version 1.8,', 'start': 152.281, 'duration': 8.55}, {'end': 164.976, 'text': 'while notifications feature needed the same module but required the version 1.7.', 'start': 160.831, 'duration': 4.145}, {'end': 168.74, 'text': 'instead, in a monolith application,', 'start': 164.976, 'duration': 3.764}, {'end': 175.488, 'text': "you would have to pick one or the other because it's a single application and you can only have one dependency of the same module.", 'start': 168.74, 'duration': 6.748}, {'end': 187.28, 'text': 'another major issue with monolith applications is that the release process of such applications takes longer because for changes in any part of the application,', 'start': 175.488, 'duration': 11.792}, {'end': 193.125, 'text': 'in any feature, you need to test and build the whole application to deploy those changes.', 'start': 187.28, 'duration': 5.845}], 'summary': 'Challenges with monolith app: scaling, flexibility, and deployment delays.', 'duration': 70.286, 'max_score': 122.839, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk122839.jpg'}], 'start': 0.349, 'title': 'Microservices architecture and monolithic applications challenges', 'summary': 'Discusses the transition to microservices, emphasizing challenges, benefits, and best practices. it also highlights the drawbacks of monolithic applications, including coordination challenges, scaling difficulties, higher costs, and longer release processes.', 'chapters': [{'end': 50.885, 'start': 0.349, 'title': 'Understanding microservices architecture', 'summary': "Discusses the transition from monolithic architecture to microservices, highlighting challenges, benefits, and best practices, emphasizing the industry's move towards microservices.", 'duration': 50.536, 'highlights': ['The industry moved slowly towards the microservices architecture, as the standard way of developing applications was with a monolithic architecture.', 'Explains the challenges of a monolith architecture and the benefits of microservices, providing insights into managing code for microservices applications.', 'Discusses the communication between microservices, best practices, and the comparison of mono repo versus poly repo, including their advantages and disadvantages.']}, {'end': 193.125, 'start': 50.885, 'title': 'Challenges of monolithic applications', 'summary': 'Discusses the drawbacks of monolithic applications, including the challenges of coordination between teams, difficulty in scaling specific parts, higher infrastructure costs, and longer release process.', 'duration': 142.24, 'highlights': ['Coordination between teams became more difficult because the code was much bigger and parts of the application were more tangled into each other. The growing size and complexity of monolithic applications made coordination between teams more challenging.', 'Difficulty in scaling specific parts of the application, leading to higher infrastructure costs and less flexibility in scaling. In a monolithic application, scaling specific parts, such as the shopping cart, is not feasible, resulting in increased infrastructure costs and reduced flexibility in scaling.', 'Longer release process due to the need to test and build the whole application for deploying changes in any feature. The release process for monolithic applications is prolonged as changes in any part of the application require testing and building the entire application for deployment.']}], 'duration': 192.776, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk349.jpg', 'highlights': ['Explains the challenges of a monolith architecture and the benefits of microservices, providing insights into managing code for microservices applications.', 'Discusses the communication between microservices, best practices, and the comparison of mono repo versus poly repo, including their advantages and disadvantages.', 'The industry moved slowly towards the microservices architecture, as the standard way of developing applications was with a monolithic architecture.', 'Difficulty in scaling specific parts of the application, leading to higher infrastructure costs and less flexibility in scaling. In a monolithic application, scaling specific parts, such as the shopping cart, is not feasible, resulting in increased infrastructure costs and reduced flexibility in scaling.', 'Longer release process due to the need to test and build the whole application for deploying changes in any feature. The release process for monolithic applications is prolonged as changes in any part of the application require testing and building the entire application for deployment.', 'Coordination between teams became more difficult because the code was much bigger and parts of the application were more tangled into each other. The growing size and complexity of monolithic applications made coordination between teams more challenging.']}, {'end': 864.875, 'segs': [{'end': 222.963, 'src': 'embed', 'start': 193.746, 'weight': 0, 'content': [{'end': 197.97, 'text': 'And the answer to all these issues was a microservices architecture.', 'start': 193.746, 'duration': 4.224}, {'end': 208.749, 'text': 'So what is microservices exactly? With microservices, we break down the application in essentially multiple smaller applications.', 'start': 198.971, 'duration': 9.778}, {'end': 216.297, 'text': 'So we have several small or micro applications that make up this one big application.', 'start': 209.27, 'duration': 7.027}, {'end': 221.282, 'text': 'Now we have a couple of very important questions when we create a microservices architecture.', 'start': 216.818, 'duration': 4.464}, {'end': 222.963, 'text': 'First of all,', 'start': 222.003, 'duration': 0.96}], 'summary': 'Microservices architecture breaks down application into smaller, micro applications.', 'duration': 29.217, 'max_score': 193.746, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk193746.jpg'}, {'end': 262.837, 'src': 'embed', 'start': 240.468, 'weight': 4, 'content': [{'end': 251.752, 'text': 'the best practice is to break down the application into components or into microservices based on the business functionalities and not technical functionalities.', 'start': 240.468, 'duration': 11.284}, {'end': 260.096, 'text': 'So the microservices of an online shop application will be products, shopping cart, user accounts, checkout and so on.', 'start': 252.252, 'duration': 7.844}, {'end': 262.837, 'text': 'Because all these are basically business features.', 'start': 260.336, 'duration': 2.501}], 'summary': 'Best practice: break down app into microservices based on business functionalities like products, shopping cart, user accounts, and checkout.', 'duration': 22.369, 'max_score': 240.468, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk240468.jpg'}, {'end': 314.144, 'src': 'embed', 'start': 289.575, 'weight': 2, 'content': [{'end': 298.8, 'text': 'This means each service must be able to be developed, deployed and scaled separately, without any tight dependencies on any other services,', 'start': 289.575, 'duration': 9.225}, {'end': 301.1, 'text': 'even though they are part of the same application.', 'start': 298.8, 'duration': 2.3}, {'end': 303.621, 'text': 'And this is called loose coupling.', 'start': 301.801, 'duration': 1.82}, {'end': 312.423, 'text': 'So, with this best practice approach, if you change something in the payment service, you will only build and deploy the payment service.', 'start': 304.201, 'duration': 8.222}, {'end': 314.144, 'text': 'nothing else will be affected.', 'start': 312.423, 'duration': 1.721}], 'summary': 'Best practice approach ensures each service can be developed, deployed, and scaled separately, maintaining loose coupling.', 'duration': 24.569, 'max_score': 289.575, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk289575.jpg'}, {'end': 445.967, 'src': 'heatmap', 'start': 352.958, 'weight': 0.763, 'content': [{'end': 358.445, 'text': 'So each service has an endpoint on which it accepts requests from other services.', 'start': 352.958, 'duration': 5.487}, {'end': 364.973, 'text': 'So services can talk to each other by sending each other HTTP requests on these endpoints.', 'start': 358.905, 'duration': 6.068}, {'end': 372.258, 'text': 'This is asynchronous communication where one service sends a request to another service and waits for the response.', 'start': 365.573, 'duration': 6.685}, {'end': 380.564, 'text': 'So the user account service can send an HTTP request to payment service on its API endpoint and vice versa.', 'start': 372.839, 'duration': 7.725}, {'end': 389.211, 'text': 'Another common way of communication between microservices is using a message broker with an asynchronous communication.', 'start': 380.925, 'duration': 8.286}, {'end': 399.395, 'text': 'Here services will send messages first to the intermediary message service or a broker, such as Rabbit MQ, for example,', 'start': 389.731, 'duration': 9.664}, {'end': 404.018, 'text': 'and then the message broker will forward that message to the respective service.', 'start': 399.395, 'duration': 4.623}, {'end': 412.201, 'text': 'So again, user account will send a message to the broker saying please pass this message on to the payment service and message.', 'start': 404.398, 'duration': 7.803}, {'end': 415.643, 'text': 'broker will then forward that message to the payment service.', 'start': 412.201, 'duration': 3.442}, {'end': 425.45, 'text': 'And a third way of communication between microservices, which is becoming pretty popular, especially in the field of Kubernetes,', 'start': 416.423, 'duration': 9.027}, {'end': 427.052, 'text': 'is using a service mesh.', 'start': 425.45, 'duration': 1.602}, {'end': 434.317, 'text': 'With service mesh, you have kind of a helper service which takes over the complete communication logic.', 'start': 427.552, 'duration': 6.765}, {'end': 443.006, 'text': "So you don't have to code this logic into the microservices and have this communication logic kind of delegated to this external service.", 'start': 434.798, 'duration': 8.208}, {'end': 445.967, 'text': 'So these are different communication options.', 'start': 443.686, 'duration': 2.281}], 'summary': 'Microservices communicate via http requests, message brokers, and service mesh, offering various asynchronous communication options.', 'duration': 93.009, 'max_score': 352.958, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk352958.jpg'}, {'end': 404.018, 'src': 'embed', 'start': 380.925, 'weight': 3, 'content': [{'end': 389.211, 'text': 'Another common way of communication between microservices is using a message broker with an asynchronous communication.', 'start': 380.925, 'duration': 8.286}, {'end': 399.395, 'text': 'Here services will send messages first to the intermediary message service or a broker, such as Rabbit MQ, for example,', 'start': 389.731, 'duration': 9.664}, {'end': 404.018, 'text': 'and then the message broker will forward that message to the respective service.', 'start': 399.395, 'duration': 4.623}], 'summary': 'Microservices communicate using message broker for asynchronous communication.', 'duration': 23.093, 'max_score': 380.925, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk380925.jpg'}, {'end': 522.769, 'src': 'embed', 'start': 495.384, 'weight': 5, 'content': [{'end': 502.389, 'text': 'When you break down the application into these multiple pieces, this introduces a lot of complexities and challenges.', 'start': 495.384, 'duration': 7.005}, {'end': 507.953, 'text': 'One of the main complexities may be configuring the communication part between the services.', 'start': 503.049, 'duration': 4.904}, {'end': 518.224, 'text': 'because a microservice may be down or unhealthy and not responding yet, while another service starts sending requests to its API,', 'start': 508.553, 'duration': 9.671}, {'end': 522.769, 'text': 'expecting a fulfilled response, in which case you may get unexpected results.', 'start': 518.224, 'duration': 4.545}], 'summary': 'Breaking down the application into multiple pieces introduces complexities and challenges, such as configuring communication between services and dealing with unexpected results.', 'duration': 27.385, 'max_score': 495.384, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk495384.jpg'}, {'end': 675.33, 'src': 'embed', 'start': 647.932, 'weight': 1, 'content': [{'end': 653.594, 'text': 'In fact, there are many companies with microservices applications that deploy multiple times a day.', 'start': 647.932, 'duration': 5.662}, {'end': 663.037, 'text': 'Companies like Amazon, Google, and Netflix, they have applications with hundreds of microservices that they deploy thousands of times per day.', 'start': 654.034, 'duration': 9.003}, {'end': 669.003, 'text': 'So you can imagine the complexity and the sophistication of their CI-CD pipelines.', 'start': 663.917, 'duration': 5.086}, {'end': 675.33, 'text': 'So in the modern world and workplace, you will be most probably working with microservices.', 'start': 669.523, 'duration': 5.807}], 'summary': 'Companies deploy microservices thousands of times daily, impacting ci-cd pipelines and shaping modern workplaces.', 'duration': 27.398, 'max_score': 647.932, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk647932.jpg'}], 'start': 193.746, 'title': 'Microservices architecture', 'summary': 'Explains the concept of microservices architecture, emphasizing the importance of breaking down applications into self-contained and independent microservices based on business functionalities, with each microservice performing one isolated task, leading to loose coupling and independent release cycles.', 'chapters': [{'end': 337.459, 'start': 193.746, 'title': 'Microservices architecture', 'summary': 'Explains the concept of microservices architecture, emphasizing the importance of breaking down applications into self-contained and independent microservices based on business functionalities, with each microservice performing one isolated task, leading to loose coupling and independent release cycles.', 'duration': 143.713, 'highlights': ['Microservices are small or micro applications that make up one big application, breaking down based on business functionalities rather than technical functionalities.', 'Each microservice should be self-contained and independent, capable of being developed, deployed, and scaled separately, leading to loose coupling and independent release cycles.', 'The best practice is to break down the application into components or microservices based on business functionalities, such as products, shopping cart, user accounts, and checkout, ensuring each microservice performs one isolated task.']}, {'end': 864.875, 'start': 337.82, 'title': 'Microservices communication and challenges', 'summary': 'Discusses different communication methods between microservices, such as api calls, message brokers, and service mesh, as well as the challenges of microservices architecture, including configuring communication, monitoring service health, and managing code in a monorepo.', 'duration': 527.055, 'highlights': ['Companies like Amazon, Google, and Netflix deploy applications with hundreds of microservices thousands of times per day, demonstrating the complexity and sophistication of their CI-CD pipelines. Companies like Amazon, Google, and Netflix deploy applications with hundreds of microservices thousands of times per day, showcasing the scale and complexity of their CI-CD pipelines.', 'Different communication options between microservices include API calls, message brokers, and service mesh, allowing for asynchronous communication and enabling services to be developed in different programming languages. Microservices can communicate through API calls, message brokers, or service mesh, enabling asynchronous communication and the use of different programming languages for each service.', 'Challenges of microservices architecture include configuring communication between services, monitoring service health, and managing code in a monorepo, which can lead to complexities and difficulties in the CI-CD pipeline. Microservices architecture presents challenges in configuring communication, monitoring service health, and managing code in a monorepo, leading to complexities in the CI-CD pipeline.']}], 'duration': 671.129, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk193746.jpg', 'highlights': ['Microservices are small or micro applications that make up one big application, breaking down based on business functionalities rather than technical functionalities.', 'Companies like Amazon, Google, and Netflix deploy applications with hundreds of microservices thousands of times per day, demonstrating the complexity and sophistication of their CI-CD pipelines.', 'Each microservice should be self-contained and independent, capable of being developed, deployed, and scaled separately, leading to loose coupling and independent release cycles.', 'Different communication options between microservices include API calls, message brokers, and service mesh, allowing for asynchronous communication and enabling services to be developed in different programming languages.', 'The best practice is to break down the application into components or microservices based on business functionalities, such as products, shopping cart, user accounts, and checkout, ensuring each microservice performs one isolated task.', 'Challenges of microservices architecture include configuring communication between services, monitoring service health, and managing code in a monorepo, which can lead to complexities and difficulties in the CI-CD pipeline.']}, {'end': 1109.09, 'segs': [{'end': 906.232, 'src': 'embed', 'start': 865.515, 'weight': 0, 'content': [{'end': 871.421, 'text': 'One more issue with a monorepo is that, since you have just one main branch because you have one repository,', 'start': 865.515, 'duration': 5.906}, {'end': 879.268, 'text': 'If developers of one of the services break the main branch, other services and their pipelines will be blocked as well.', 'start': 872.262, 'duration': 7.006}, {'end': 886.494, 'text': 'But there are a lot of companies, including very big ones like Google, who actually use monorepo for their applications.', 'start': 879.808, 'duration': 6.686}, {'end': 893.819, 'text': 'The second option, which is probably a bit more preferred one, is polyrepo or multiple repositories.', 'start': 887.253, 'duration': 6.566}, {'end': 899.185, 'text': 'With this approach, for each service, we create a separate Git project.', 'start': 894.56, 'duration': 4.625}, {'end': 901.587, 'text': 'So the code is completely isolated.', 'start': 899.865, 'duration': 1.722}, {'end': 906.232, 'text': 'You can clone and work on them separately because they are in separate repositories.', 'start': 901.627, 'duration': 4.605}], 'summary': 'Monorepo can block pipelines if main branch is broken. polyrepo isolates code in separate repositories.', 'duration': 40.717, 'max_score': 865.515, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk865515.jpg'}, {'end': 953.006, 'src': 'embed', 'start': 925.514, 'weight': 4, 'content': [{'end': 934.996, 'text': "you can use GitLab's feature of groups in order to group code for all the microservices that belong to the same application in one group.", 'start': 925.514, 'duration': 9.482}, {'end': 938.117, 'text': 'to make managing those repositories easier.', 'start': 935.836, 'duration': 2.281}, {'end': 945.662, 'text': 'So essentially, you would create a GitLab repository group for your application called My Online Shop.', 'start': 938.498, 'duration': 7.164}, {'end': 953.006, 'text': 'And inside this group, you can create a separate project for each microservice that belongs to that application.', 'start': 946.362, 'duration': 6.644}], 'summary': 'Use gitlab groups to manage microservice code for my online shop application.', 'duration': 27.492, 'max_score': 925.514, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk925514.jpg'}, {'end': 1067.952, 'src': 'embed', 'start': 1037.983, 'weight': 5, 'content': [{'end': 1041.768, 'text': 'So, as you see, both options have their advantages and disadvantages,', 'start': 1037.983, 'duration': 3.785}, {'end': 1047.093, 'text': 'but the general rule is that if you have a small project with just several microservices,', 'start': 1041.768, 'duration': 5.325}, {'end': 1054.22, 'text': 'you should stick to monorepo and save the overhead of creating and managing and checking out multiple repositories.', 'start': 1047.093, 'duration': 7.127}, {'end': 1061.066, 'text': 'On the other hand, if you have separate teams for each service, if you want to have complete isolation,', 'start': 1054.86, 'duration': 6.206}, {'end': 1067.952, 'text': 'smaller code base to clone on pipelines and so on, then of course the poly repo would be a better option.', 'start': 1061.066, 'duration': 6.886}], 'summary': 'For small projects with few microservices, use monorepo to save overhead. for separate teams and isolation, poly repo is better.', 'duration': 29.969, 'max_score': 1037.983, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk1037983.jpg'}], 'start': 865.515, 'title': 'Monorepo vs polyrepo and managing microservices with gitlab groups', 'summary': 'Compares the advantages and disadvantages of monorepo and polyrepo approaches, discussing big companies like google who use the monorepo approach and the guidance provided for managing microservices using gitlab groups based on project size and team structure.', 'chapters': [{'end': 925.514, 'start': 865.515, 'title': 'Monorepo vs polyrepo', 'summary': 'Compares the advantages and disadvantages of monorepo and polyrepo approaches, highlighting the potential issues with a monorepo and mentioning big companies like google who use this approach, and the preferred polyrepo approach for creating separate git projects for each service.', 'duration': 59.999, 'highlights': ['Monorepo can cause blockages for other services and their pipelines if the main branch is broken, impacting the development workflow.', 'Big companies like Google use monorepo for their applications, indicating its viability for large-scale projects.', 'Polyrepo involves creating separate Git projects for each service, allowing for complete code isolation and individual management of each service.', 'The polyrepo approach is a preferred option, offering the advantage of separate repositories for each service while still being part of a larger application.', 'Connecting separate application repositories in a polyrepo approach is essential for easy management and overview, especially if hosting on platforms like GitLab.']}, {'end': 1109.09, 'start': 925.514, 'title': 'Managing microservices with gitlab groups', 'summary': 'Discusses the use of gitlab groups for managing microservices, highlighting the advantages and disadvantages of monorepo and polyrepo approaches and providing guidance based on project size and team structure.', 'duration': 183.576, 'highlights': ['Using GitLab groups to manage microservices Explains the use of GitLab groups to group code for microservices belonging to the same application, making repository management easier.', 'Advantages and disadvantages of monorepo and polyrepo approaches Highlights the pros and cons of monorepo and polyrepo approaches, focusing on ease of managing multiple repositories and the challenges of working on projects as a whole in a polyrepo.', 'Guidance on choosing between monorepo and polyrepo Provides guidance on choosing between monorepo and polyrepo based on project size, team structure, and the need for isolation and smaller code base.']}], 'duration': 243.575, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/rv4LlmLmVWk/pics/rv4LlmLmVWk865515.jpg', 'highlights': ['Big companies like Google use monorepo for their applications, indicating its viability for large-scale projects.', 'Polyrepo involves creating separate Git projects for each service, allowing for complete code isolation and individual management of each service.', 'The polyrepo approach is a preferred option, offering the advantage of separate repositories for each service while still being part of a larger application.', 'Connecting separate application repositories in a polyrepo approach is essential for easy management and overview, especially if hosting on platforms like GitLab.', 'Using GitLab groups to manage microservices Explains the use of GitLab groups to group code for microservices belonging to the same application, making repository management easier.', 'Guidance on choosing between monorepo and polyrepo Provides guidance on choosing between monorepo and polyrepo based on project size, team structure, and the need for isolation and smaller code base.', 'Monorepo can cause blockages for other services and their pipelines if the main branch is broken, impacting the development workflow.']}], 'highlights': ['Companies like Amazon, Google, and Netflix deploy applications with hundreds of microservices thousands of times per day, demonstrating the complexity and sophistication of their CI-CD pipelines.', 'Each microservice should be self-contained and independent, capable of being developed, deployed, and scaled separately, leading to loose coupling and independent release cycles.', 'The best practice is to break down the application into components or microservices based on business functionalities, such as products, shopping cart, user accounts, and checkout, ensuring each microservice performs one isolated task.', 'Using GitLab groups to manage microservices Explains the use of GitLab groups to group code for microservices belonging to the same application, making repository management easier.', 'Polyrepo involves creating separate Git projects for each service, allowing for complete code isolation and individual management of each service.', 'Big companies like Google use monorepo for their applications, indicating its viability for large-scale projects.', 'Explains the challenges of a monolith architecture and the benefits of microservices, providing insights into managing code for microservices applications.', 'Difficulty in scaling specific parts of the application, leading to higher infrastructure costs and less flexibility in scaling. In a monolithic application, scaling specific parts, such as the shopping cart, is not feasible, resulting in increased infrastructure costs and reduced flexibility in scaling.', 'Longer release process due to the need to test and build the whole application for deploying changes in any feature. The release process for monolithic applications is prolonged as changes in any part of the application require testing and building the entire application for deployment.', 'Coordination between teams became more difficult because the code was much bigger and parts of the application were more tangled into each other. The growing size and complexity of monolithic applications made coordination between teams more challenging.']}