08_machine learning software architecture and model workflow a case of Django REST Framework
08_machine learning software architecture and model workflow a case of Django REST Framework
Literature Reviews
Article history Abstract: The purpose of this study was to find out the challenges facing
Received: 15-02-2021 Machine Learning (ML) software development and create a design
Revised: 24-05-2021 architecture and a workflow for successful deployment. Despite the promise
Accepted: 04-06-2021 in ML technology, more than 80% of ML software projects never make it to
Corresponding Author:
production. As a result, majority of companies around the world with
Kennedy Ochilo Hadullo investments in ML software are making significant losses. Current studies show
Institute of Computing and that data scientists and software engineers are concerned by the challenges
Informatics, Technical involved in these systems such as: Limited qualified and experienced ML
University of Mombasa, software experts, lack of collaboration between experts from the two
Mombasa, Kenya domains, lack of published literature in ML software development using
Email: [email protected] established platforms such as Django Rest Framework, as well as
existence of cloud software tools that are difficult use. Several attempts
have been made to address these issues such as: Coming up with new
software models and architectures, frameworks and design patterns.
However, with the lack of a clear breakthrough in overcoming the
challenges, this study proposes to investigate further into the conundrum
with the view of proposing an ML software design architecture and a
development workflow. In the end, the study gives a conclusion on how
the remedies provided helps to meet the objectives of study.
© 2021 Kennedy Ochilo Hadullo and Daniel Makini Getuno. This open access article is distributed under a Creative
Commons Attribution (CC-BY) 4.0 license.
Kennedy Ochilo Hadullo and Daniel Makini Getuno / American Journal of Applied Sciences 2021, Volume 18: 152.164
DOI: 10.3844/ajassp.2021.152.164
153
Kennedy Ochilo Hadullo and Daniel Makini Getuno / American Journal of Applied Sciences 2021, Volume 18: 152.164
DOI: 10.3844/ajassp.2021.152.164
ii) Integrate a Machine Learning Software Deployment software deployment, machine learning engineering,
Workflow based on the software architecture created machine learning web applications, data science
in objective (i) engineering, machine learning software architecture,
machine learning software workflow, Django REST
In order to answer the study objectives, we propose to
framework and the challenges of deploying machine
come up with a Software Design Architecture (SDA) to
learning models.
better understand the basic structure of a ML software and
To capture as many relevant articles as possible, a
a Software Deployment Workflow (SDW) to guide the
range of journals, books and grey literature in the
development and deployment of ML software and help
mentioned areas were searched extensively to identify
overcome the challenges identified in the study.
whether they contained articles having these key words.
In total, twenty-five journals (25), sixteen books (16) and
Literature Review thirteen (13) grey literature were scoped. Out of these,
The study reviewed the literature relevant to the study only 18 journals, 15 books and 8 grey literature were
by using the Framework by proposed by Murad (2020) found to be relevant for review
and illustrated in Fig. 1. By applying this framework, Some of journals included were: Journal of Systems
we decided to use a systematic literature review and and Software, SSRN Electronic Journal, International
scoped the existing literature on ML software to help Journal for Research in Applied Science and Engineering
us define the Research Problem (RP). Once this was Technology, Journal of Data Warehousing and Journal of
done, the RP was specified in a clear and structured Systems, Software and Willy online Library. The review
manner by framing it using specific keywords. enabled us to identify some of the processes, models,
Some of the keywords used included machine frameworks and related work within the scope of the study
learning software development, machine learning topic as described in the next sections.
Select your
resources:
databases and
grey literature
Submit manuscript Stop
for publication
Choose your
search terms:
Keywords and
Write up your subject heading
findings
Test
Make a note of results:
Title and abstract how many results have you
screening are found from found all
Yes the No
each resource
records?
154
Kennedy Ochilo Hadullo and Daniel Makini Getuno / American Journal of Applied Sciences 2021, Volume 18: 152.164
DOI: 10.3844/ajassp.2021.152.164
Machine Learning as a Model (MLaaM) and advanced ML algorithms (Geron, 2019; Zhang and
Tsai, 2005; Zhang et al., 2019; Singh, 2021).
MLaaM is the output of writing ML algorithms that MLaaS providers normally guarantee to their clients
run on data and represents what was learned by the all stages of the machine learning process, including data
algorithm on training data. An algorithm in ML is a storage and management, model development and
procedure that is run on data to create a machine learning deployment, performance monitoring and support and
model. Examples of ML algorithms include: K-nearest ensuring maximum efficiency of the whole machine learning
neighbors for classification, linear regression for process (Zhang and Tsai, 2005; Zhang et al., 2019).
regression and k-means for clustering (McClendon and Different providers may vary slightly in their cloud
Meghanathan, 2015). services, however most of them offer environments that
The model is a file that is saved after running the can be used to: Prepare data, train, test, deploy and
algorithm and represents the data, the rules and the provide performance monitoring. Some of the popular
procedures for using the data to make a prediction (Geron, providers include Amazon Web Services (Bankar,
2019). The most popular programming language for 2018), Google (Sanderson, 2012), IBM (Miller, 2019),
MLaaM is Python while Tensor Flow (TS) is the most Microsoft Azure (Ranjeetsingh, 2014) and Uber
preferred software framework by developers for both DL (Oppegaard, 2021).
and ML (Jaxenter, 2018).
ML models can be created using three techniques: ML Model Software Deployment
Supervised learning, unsupervised learning and Software deployment is all of the activities that
reinforced learning. Supervised learning algorithms make a software system available for use. It is the
which are the most common are trained using labeled
mechanism through which applications modules are
examples, such as an input where the desired output is
delivered from developers to users. The methods used
known, while unsupervised learning is used against
by developers to build, test and deploy new code will
data that has no historical labels (Sharma, 2020).
impact how fast a product can respond to changes in
customer preferences or requirements and the quality
Machine Learning as a Service(MLaaS) of each change (Fitzgerald and Stol, 2017).
Machine learning as a service (MLaaS) refers to a In the context of ML, the process of taking a trained
number of services that offer machine learning tools as model and making its predictions available to users is
part of cloud computing services (Singh, 2021; Geron, known as deployment. As such, ML deployment is not
2019). The main benefits of these tools is that very well understood amongst data scientists who lack
customers can get started with machine learning backgrounds in software engineering. Alternatively,
applications quickly without installing specific most software engineers are not good in ML model
software or provisioning their own servers. MLaaS development. Plonski (2019) highlighted the four
providers offer services for the development and methods of deployment, outlining the requirements,
deployment of ML software projects that allow: Data merits and the demerits of each. The methods are
transformation, predictive analytics, data visualization summarized in Table 1.
155
Kennedy Ochilo Hadullo and Daniel Makini Getuno / American Journal of Applied Sciences 2021, Volume 18: 152.164
DOI: 10.3844/ajassp.2021.152.164
Django REST Framework (DRF) for deployment by putting the trained model in a code
repository (Singh, 2021). The software engineers deploy the
Django Representational State Transfer (REST) model as a prediction service using a micro service
Framework is a free and open source high-level Python architecture with REST APIs. The workflow of this process
web framework that encourages rapid development and is illustrated in Fig. 2.
clean, pragmatic design. DRF is a powerful and flexible
toolkit used for rapidly building web applications based Related Work
on Django database models (Jordon, 2019; Bajpai, 2020)
with the following advantages: Secure, scalable, A study by Runyu (2020) to create a design pattern for
customizable application with serialization that supports ML deployment ascertained that although data scientists
both the Object Relational Mapping (ORM) and non- have come up with many good algorithms and trained
ORM data sources (Jordon, 2019; Bajpai, 2020). models, putting those models is still a challenge. The key
Given that most ML models are created using Python obstacles hindering ML software production are: Lack of
programing language makes DRF a preferred platform for a clear methodology for moving ML models to
ML software development. production, use of monolithic programming or lack of
modularization when writing ML code and obscure best
ML Model Software Architecture (MMSA) practices in ML software development.
Runyu (2020) developed a system design pattern
The ML software application building process is a named Model-Service-Client + Retraining (MSC/R) in
complex process that brings together several components order to overcome these challenges (Fig. 3). This design
constituting the software engineering life cycle: Requirement pattern incorporates the principles of modularization and
engineering, analysis, design, development, testing separation of concerns and uses a micro service RESTful
deployment and maintenance (McGovern et al., 2004).
API architecture. Figure 3 illustrates the architecture.
Thus, there is need for a software architecture that
The MSC/R design pattern works by using three teams
supports the ML model component and the web
of distinct developers: Data scientists-working on the
application components and without negatively affecting
the performance of the software (Binge, 2020). model, MLOps engineers-working on the service and
IEEE CS (2000) defines Software Architecture (SA), client developers-working on the front end. Then the next
SA as the fundamental organization of a software important part of the design illustrates connectors linking
embodied in its components, their relationships to each the four main system components: Model, service,
other and the principles guiding its design and evolution. retraining and client. The connectors main function is to
The SA for this study will consist of the following provide guidelines for collaborations between the system
components: The architectural pattern which defines the components during development.
granularity of a component, system Interaction which defines In a related study by O’Leary and Uchida (2020) to
how the components communicate with each other and identify the common problems with creating ML
software quality attributes such as: Scalability, extensibility, pipelines from existing code, data was collected via face
maintainability, portability, adaptability and resilience, etc. to face meetings in coding workshop settings averaging
However, it is important to note that the type of 100 companies, data scientists, researchers, ML platform
architecture used in a software is normally determined by owners and software engineers. The companies
the project objectives, the proposed budget, the developer interviewed were in the process of transforming their
team skillset, infrastructure limits and the stakeholders business through the use of ML.
interest (Binge, 2020). The projects involved migrating existing ML models
to MLaaS using Kube Flow Pipelines (KFP) and Tensor
Machine Learning Operations Flow Extended (TFX). The study identified three problems:
Firstly, due to the highly iterative nature of ML model
Machine Learning Operations or “MLOps” is defined
development, the coding does not usually follow object
as the practice for collaboration between data scientists
oriented principles such as modularization and code re-
and software engineers in automatically managing the
deployment of ML and DL software lifecycles (Wang, use making it unsuitable for deployment using software
2019). MLOps can be manual or automatic engineering principles. As a result, engineers often
The manual MLOps processes as illustrated by Fig. 2 is need to re-implement the model from scratch into a
an entirely manual process that includes data analysis, data deployable software. During the re-implementation,
preparation, model training and validation in Jupiter many of the implicit assumptions made by data
Notebook by data scientists. The data scientists hand over a scientists for modeling get lost, resulting in unexpected
trained model as an artifact to the software engineering team inconsistencies and issues in production.
156
Kennedy Ochilo Hadullo and Daniel Makini Getuno / American Journal of Applied Sciences 2021, Volume 18: 152.164
DOI: 10.3844/ajassp.2021.152.164
Secondly, most ML model developments use and infrastructure. Repayment can be done via:
“monolithic programming approaches” i.e., building Automation, re-writing, refactoring, re-engineering, re-
applications that are “single-tiered” in nature. Single-tier packaging, bug fixing and improving documentation.
architecture when used in ML combines data with Repayment results into an improved software quality. ML
business logic and user interface codes in a single logical systems have a tendency for incurring technical debts
structure. This results into a tightly coupled application because of the already stated problems related to the
that becomes inefficient to run and difficult to maintain. domains of ML and software engineering.
In a related study by Sculley et al. (2015) that set Another study that set out to identify the challenges in
out to explore the several specific design risk factors to
deploying DL software by Chen et al. (2020), proposed
account for in ML software deployment, the output was
the Technical Debt Framework (TDF) illustrated in an ML deployment process consisting of four phases: DL
Fig. 4. Technical debt is an analogy used to describe a data collection, DL model training, Model conversion and
situation in software development where a workaround exportation to TS and Platform configuration and
is used to solve a software problem (Kruchten et al., deployment (Fig. 5).
2012; Zazworka et al., 2011). Several technical The DDDM has two facets: DL software
problems (debts) and potential workarounds development and DL software Deployment. The first
(repayment approaches) were identified and used to facet makes use of TF and Keras to integrate models
create the TDF (Fig. 4). into software applications for real usage after
Default in payment of technical debts may hinder validation and testing. The second facet involves
successful deployment. The debts include issues related deploying the model on a cloud-based server platform
to: Design, coding, testing, documentation, versioning such as AWS Sage Maker or Google Cloud.
Offline
Data
ML Ops
Data Model
Extraction Data Model Evaluation Trained Model
and Preparation Training and Model Serving
Analysis Validation
Experimentation/Development/Test
Model
Staging/Preproduction/Production Registry
Prediction
Service
MS SC
Model Connector
Service Connector
Client
Retraining
Fig. 3: The Model-Service-Client + Retraining (MSC/R) design pattern. Source (Adopted from Runyu, 2020)
157
Kennedy Ochilo Hadullo and Daniel Makini Getuno / American Journal of Applied Sciences 2021, Volume 18: 152.164
DOI: 10.3844/ajassp.2021.152.164
Fig. 4: The technical debt framework source: Adopted from Li et al. (2015)
The deployment challenges identified include: and MYSQL as the database server. The front layer of the
Converting models to platform formats, configuration application was built using HTML CSS and JavaScript.
errors encountered during integration, limited skills in ML The study used Automated testing approaches to ensure
software development and data processing challenges the following: Making sure the application is working as
when converting raw data into the input format needed by expected before deployment, ensuring that new
the model software. To obtain the data relevant for the functionalities do not change the behavior of application in
study, over 3,023 posts from (Stack Overflow, 2020), unexpected way, finding and fixing bugs and testing the
specifically from TS serving, Google cloud ML and performance of the application under heavy loads.
Amazon sageMaker were collected and analyzed. Washizaki et al. (2019) embarked on a study with
In another related study, Esmaeilzadeh (2017), the purpose of collecting, classifying and discussing
designed an architecture and developed a testable,
the best practices for designing quality and complex
scalable and efficient web-based application that
models and implements machine learning applications ML systems (Fig. 7).
in cancer prediction. The main components that formed The study set out to collect good and bad design
the architecture of the system included a server, a patterns for ML software so as to provide developers
database, a programming language, Django web with a comprehensive classification of such patterns.
framework, front-end design, testability, scalability, By using a questionnaire-based survey, the study
performance and design pattern (Fig. 6). established that there is a lack of expertise by ML
The data set for the study’s application was a subset of engineers on the development of the architectures and
the Surveillance, Epidemiology and End Results (SEER) design patterns. The study formulated a design pattern
Program of the National Cancer Institute. The application based on the Model View Controller (MVC) pattern
was implemented with Python as the back-end having three layers: Presentation Layer, the Logic
programming language, Django as the web framework Layer and the Data Layer.
158
Kennedy Ochilo Hadullo and Daniel Makini Getuno / American Journal of Applied Sciences 2021, Volume 18: 152.164
DOI: 10.3844/ajassp.2021.152.164
Fig. 5: DL software Development and Deployment Model (DDDM). Source (Adopted form: Chen et al., 2020)
Interface Logic
Data Data
Data Lake
Machine
Learning
Specific
Collection Processing
Business Logic
Data Flow
Inference
ML Runtime Data Flow
Engine
Architectural Layers
Fig. 7: Software engineering design pattern ML software systems. Adopted from Washizaki et al. (2019)
159
Kennedy Ochilo Hadullo and Daniel Makini Getuno / American Journal of Applied Sciences 2021, Volume 18: 152.164
DOI: 10.3844/ajassp.2021.152.164
160
Kennedy Ochilo Hadullo and Daniel Makini Getuno / American Journal of Applied Sciences 2021, Volume 18: 152.164
DOI: 10.3844/ajassp.2021.152.164
From this table, there are six factors which we turned into six code into the GitHub Repository (GHR). This is in
phases: Start, build ML Model, Build Django App, integrate preparation for the software engineering part of the project.
Model into Application or App, Make Predictions and test
user response tests using two variants: Variant A vs variant Phase 2: Build ML Model
B, also known as A/B testing (Fig. 9).
During this phase, an ML engineer or a data
Phase 1: Start scientist installs Jupiter Notebook and installs and
During this phase, the software engineer is supposed to loads all the initial packages required for the project.
start by setting up a GitHub account, installing the Python This is followed by the loading and pre-processing of
virtual environment, creating a Django project and adding the data file, writing, training and saving the algorithms
applications files into the project followed by committing the before adding the code into the GHR.
Serialisation/De-serialization Server/Repository
IPYNB PKL ML Algorithm
Heroku Cloud
File Object Registry
Deploy
Admin static
models.py admin.py forms.py
Panel Folder
Admin
apps.py tests.py migrations
Client templates
Side Folder
Git
views.py urls.py serialisers.py
User Repository
Phase 4
Phase 2 Phase 3 Phase 5 Phase 6
Phase 1 Integrate
Build ML Build Make A/B
Start Model into
Model Django App Predictions Testing
App
161
Kennedy Ochilo Hadullo and Daniel Makini Getuno / American Journal of Applied Sciences 2021, Volume 18: 152.164
DOI: 10.3844/ajassp.2021.152.164
162
Kennedy Ochilo Hadullo and Daniel Makini Getuno / American Journal of Applied Sciences 2021, Volume 18: 152.164
DOI: 10.3844/ajassp.2021.152.164
Fitzgerald, B., & Stol, K. J. (2017). Continuous software Miller, J. (2019). Hands-on machine learning with IBM
engineering: A roadmap and agenda. Journal of Watson: Leverage IBM Watson to implement
Systems and Software, 123, 176-189. machine learning techniques and algorithms using
doi.org/10.1016/j.jss.2015.06.063 Python. Packt Publishing Ltd.
Grayson, J. E. (2000). Python and Tkinter https://www.amazon.com/Hands-Machine-
programming. Manning Publications Co. Learning-IBM-Watson/dp/1789611857
Greenwich. Moroney, L. (2020). Ai and machine learning for coders.
http://117.239.19.55:8080/jspui/handle/12345678 O'Reilly Media, Incorporated.
9/230 https://www.oreilly.com/library/view/ai-and-
Geron, A. (2019). Hands-on machine learning with Scikit- machine/9781492078180/
Learn, Keras and TensorFlow: Concepts, tools and Murad, D. F. (2020). Systematic Literature Review (SLR)
techniques to build intelligent systems. O'Reilly Approach. doi.org/10.31219/osf.io/v7239.
Media. ISBN-10:1492032611. O'Leary, K., & Uchida, M. (2020). Common Problems
Hull, J. C. (2020). Machine Learning in Business: An with Creating Machine Learning Pipelines from
Introduction to the World of Data Science. Existing Code. https://storage.googleapis.com/pub-
Independently Published. tools-public-publication-
https://www.amazon.com/Machine-Learning- data/pdf/b50bc83882bbd29c50250d1e59fbc3afda3f
Business-Introduction-Science/dp/B088B8162S b5e5.pdf
IEEE CS. (2000). Recommended Practice for Architectural Oppegaard, S. M. N. (2021). Regulating Flexibility:
Description for Software-Intensive Systems. Uber’s Platform as a Technological Work
doi.org/10.1109/ieeestd.2000.91944 Arrangement. Nordic Journal of Working Life
Jaxenter. (2018). ML trends in stack overflow developer Studies. doi.org/10.18291/njwls.122197
survey 2018. https://jaxenter.com/ml-trends-stack- Pathak, N. (2017). Artificial Intelligence for. NET:
overflow-145870.html Speech, language and search: Building smart
Keshari, K. (2020, December 02). Top 10 applications of
Applications with Microsoft Cognitive Services
machine learning: Machine learning applications in
APIs. Apress. ISBN-10: 1484229495.
daily life. https://www.edureka.co/blog/machine-
Plonski, P. (2019). December 31. Deploy Machine
learning-applications
Learning Models with Django.
Jordon, W. (2019). Python django web development: The https://www.deploymachinelearning.com/
ultimate django web framework guide for Beginners. Ranjeetsingh, S. S. (2014). Microsoft windows azure:
Independently Published. Developing applications for highly available Storage
https://www.amazon.com/Python-Django-Web- of cloud service. International Journal of Science
Development-framework/dp/1688542817 and Research (IJSR), 4(12), 662-665.
Kruchten, P., Nord, R. L., Ozkaya, I., & Visser, J. (2012). doi.org/10.21275/v4i12.nov151864
Technical debt in software development. ACM Redapt Marketing. (2019). Why do ML projects fail?
SIGSOFT Software Engineering Notes, 37(5), 36-38. https://www.redapt.com/blog/why-90-of-machine-
doi.org/10.1145/2347696.2347698 learning-models-never-make-it-to-
Li, Z., Avgeriou, P., & Liang, P. (2015). A systematic production#:~:text=During%20a%20panel%20at%20l
mapping study on technical debt and its management. ast,actually%20make%20it%20into%20production
Journal of Systems and Software, 101, 193-220. Runyu, Xu. (2020). A design pattern for deploying
doi.org/10.1016/j.jss.2014.12.027 machine learning models to production.
McClendon, L., & Meghanathan, N. (2015). Using https://csusm-
Machine Learning Algorithms to Analyze Crime dspace.calstate.edu/bitstream/handle/10211.3/21717
Data. Machine Learning and Applications: An 6/XuRunyu_Summer2020.pdf?sequence=1
International Journal, 2(1), 1-12. Sanderson, D. (2012). Programming Google App Engine.
doi.org/10.5121/mlaij.2015.2101 Sebastopol, CA: O'Reilly.
McGovern, J., Ambler, S. W., Stevens, M. E., Linn, J., Jo, https://www.oreilly.com/library/view/programming-
E. K., & Sharan, V. (2004). A practical guide to google-app/9781449314095/
enterprise architecture. Prentice Hall Professional. Sculley, D., Holt, G., Golovin, D., Davydov, E., Phillips,
ISBN-10: 0131412752. T., Ebner, D., ... & Dennison, D. (2015). Hidden
Mikut, R., & Reischl, M. (2011). Data mining tools. Wiley technical debt in machine learning systems. Advances
Interdisciplinary Reviews: Data Mining and in Neural Information Processing Systems, 28,
Knowledge Discovery, 1(5), 431-443. 2503-2511. http://papers.nips.cc/paper/5656-
doi.org/10.1002/widm.24 hidden-technical-debt-in-machine-learning-systems
163
Kennedy Ochilo Hadullo and Daniel Makini Getuno / American Journal of Applied Sciences 2021, Volume 18: 152.164
DOI: 10.3844/ajassp.2021.152.164
Sharma, R. (2020). Study of supervised learning and Washizaki, H., Uchida, H., Khomh, F., & Guéhéneuc, Y. G.
unsupervised learning. International Journal for (2019, December). Studying software engineering
Research in Applied Science and Engineering patterns for designing machine learning systems.
Technology, 8(6), 588-593.
In 2019 10th International Workshop on Empirical
doi.org/10.22214/ijraset.2020.6095
Schröer, C., Kruse, F., & Gómez, J. M. (2021). A Systematic Software Engineering in Practice (IWESEP)
Literature Review on Applying CRISP-DM Process (pp. 49-495). IEEE.
Model. Procedia Computer Science, 181, 526-534. https://ieeexplore.ieee.org/abstract/document/8945075/
https://doi.org/10.1016/j.procs.2021.01.199 Zazworka, N., Shaw, M. A., Shull, F., & Seaman, C.
Singh, P. (2021). Deploy machine learning models to (2011, May). Investigating the impact of design debt
production: With flask, streamlit, docker and on software quality. In Proceedings of the 2nd
kubernetes on google cloud platform. Apress.
Workshop on Managing Technical Debt (pp. 17-23).
http://103.7.177.7/handle/123456789/207519
Stack Overflow. (2020). We <3 people who code. doi.org/10.1145/1985362.1985366
https://stackoverflow.com/never make it into Zhang, D., & Tsai, J. J. (Eds.). (2005). Machine
production? learning applications in software engineering
https://venturebeat.com/2019/07/19/why-do-87-of- (Vol. 16). World Scientific.
data-science-projects-never-make-it-into- doi.org/10.1142/9789812569271_0001
production/ Zhang, T., Gao, C., Ma, L., Lyu, M., & Kim, M. (2019,
Wang, Q. (2019). Machine learning applications in October). An empirical study of common
operations management and digital marketing challenges in developing deep learning
(Doctoral dissertation, Universiteit van Amsterdam).
applications. In 2019 IEEE 30 th International
https://abs.uva.nl/binaries/content/assets/subsites/am
sterdam-business- Symposium on Software Reliability Engineering
school/research/dissertations/thesis-q.-wang---abs- (ISSRE) (pp. 104-115). IEEE.
2019.pdf doi.org/10.1109/issre.2019.00020
164