Sign In Start Free Trial
Account

Add to playlist

Create a Playlist

Modal Close icon
You need to login to use this feature.
  • Book Overview & Buying Machine Learning in Microservices
  • Table Of Contents Toc
Machine Learning in Microservices

Machine Learning in Microservices

By : Mohamed Osam Abouahmed, Omar Ahmed
4.7 (10)
close
close
Machine Learning in Microservices

Machine Learning in Microservices

4.7 (10)
By: Mohamed Osam Abouahmed, Omar Ahmed

Overview of this book

With the rising need for agile development and very short time-to-market system deployments, incorporating machine learning algorithms into decoupled fine-grained microservices systems provides the perfect technology mix for modern systems. Machine Learning in Microservices is your essential guide to staying ahead of the curve in this ever-evolving world of technology. The book starts by introducing you to the concept of machine learning microservices architecture (MSA) and comparing MSA with service-based and event-driven architectures, along with how to transition into MSA. Next, you’ll learn about the different approaches to building MSA and find out how to overcome common practical challenges faced in MSA design. As you advance, you’ll get to grips with machine learning (ML) concepts and see how they can help better design and run MSA systems. Finally, the book will take you through practical examples and open source applications that will help you build and run highly efficient, agile microservices systems. By the end of this microservices book, you’ll have a clear idea of different models of microservices architecture and machine learning and be able to combine both technologies to deliver a flexible and highly scalable enterprise system.
Table of Contents (18 chapters)
close
close
1
Part 1: Overview of Microservices Design and Architecture
5
Part 2: Overview of Machine Learning Algorithms and Applications
10
Part 3: Practical Guide to Deploying Machine Learning in MSA Systems

DevOps in MSA

DevOps revolves around a set of operational guidelines in the software development and release cycles. The traditional development engineer is no longer living in their confined environment where all the focus is to convert functional specifications into code; rather, they should have an end-to-end awareness of the application.

A DevOps engineer would oversee, understand, and be involved in the entire pipeline from the moment the entire application is planned out, converting business functions into code, building the application, testing it, releasing it, monitoring its operations, and coming back with the feedback necessary for enhancements and updates.

That does not necessarily mean that a DevOps engineer would be responsible for all development and operational task details. Individual responsibilities within the application team may vary in a way to guarantee a smooth continuous integration and continuous deployment (CI/CD) pipeline of the application:

Figure 1.11: DevOps CI/CD pipeline

Figure 1.11: DevOps CI/CD pipeline

One of the main objectives of DevOps is to speed up the CI/CD pipeline; that’s why there is a lot of emphasis on automation in DevOps. Automation is essential to efficiently perform the pipeline.

Automation can help at every step of the way. In DevOps, many test cases that are part of your QA plan are automated, which significantly speeds up the QA process. The release management and monitoring of your application are also automated to provide high visibility, continuous learning, and quick fixes whenever needed. All of this will help organizations improve productivity, predictability, and scalability.

DevOps is a holistic view of how the application is developed and managed. It is not a function for only the development team or operational team to adopt; rather, the entire organization should adopt it. It is therefore imperative for the organizational structure and the organization’s vision and goal to all align with the set of procedural and functional changes necessary to shift from the traditional way of developing software.

Just to give you a gist of how traditional and DevOps models differ in terms of application development and release cycles, take a look at the following comparison table:

Traditional

DevOps

Planning

Months

Long time to plan due to the large application size and tight coupling between different application components

Days to weeks

Very short planning time since the application is broken down into small individual loosely coupled services

Development

Months

Days to weeks, and even shorter in the case of patches and fixes

Testing

Weeks to months

Mostly manually intensive QA use case testing, which may sometimes jeopardize the reliability of the test’s outcome

Days

Mostly automated QA use case execution that brings high reliability to the application

Release, Deploy

Days

Usually long manual work and more susceptible to human errors

Hours

Mostly automated

Operate, Monitor

Metrics reporting is mostly manually pulled and analyzed

Metrics are monitored and analyzed automatically and can even fix the problem in seconds. Moreover, machine learning (ML) tools can be used to enhance operations even further.

Table 1.2: Traditional operational style versus DevOps

In traditional development environments, you have a big piece of code to write, maintain, and change when needed. Because of the code size, it is only normal to have a long release cycle, and it can only be feasible to deploy patches or new releases when only major changes or high-severity fixes are needed, as illustrated in the following diagram:

Figure 1.12: Traditional development environment versus MSA DevOps

Figure 1.12: Traditional development environment versus MSA DevOps

In MSA, teams are separated based on applications that do not function. That big chunk of code is split into a collection of much smaller code (microservices), and since teams are split to work independently for each team to focus on a specialized microservice, the development and release cycles are much shorter.

Similarly, in DevOps, the application is broken down into smaller pieces to enable the CI/CD pipeline, which makes DevOps the perfect model that fits MSA.

Why ML?

Using ML tools and algorithms in your MSA enterprise system can further enhance and accelerate your DevOps CI/CD pipeline. With ML, you can find patterns in your tests, monitor phases of your pipeline, automatically analyze where the faults may be, and suggest a resolution or automatically fix operational issues whenever possible.

ML can greatly shorten your MSA enterprise system’s TTM and make it more intelligent, self-healing, resilient, and supportable.

We will in this book discuss two aspects of ML: first, we’ll explain in detail how to add CI/CD pipeline intelligence to your MSA enterprise system, and second, we’ll look at how to build an ML enterprise system with MSA in mind:

Figure 1.13: Using ML in CI/CD pipeline

Figure 1.13: Using ML in CI/CD pipeline

CONTINUE READING
83
Tech Concepts
36
Programming languages
73
Tech Tools
Icon Unlimited access to the largest independent learning library in tech of over 8,000 expert-authored tech books and videos.
Icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Icon 50+ new titles added per month and exclusive early access to books as they are being written.
Machine Learning in Microservices
notes
bookmark Notes and Bookmarks search Search in title playlist Add to playlist font-size Font size

Change the font size

margin-width Margin width

Change margin width

day-mode Day/Sepia/Night Modes

Change background colour

Close icon Search
Country selected

Close icon Your notes and bookmarks

Confirmation

Modal Close icon
claim successful

Buy this book with your credits?

Modal Close icon
Are you sure you want to buy this book with one of your credits?
Close
YES, BUY

Submit Your Feedback

Modal Close icon
Modal Close icon
Modal Close icon