Microservices Architecture (Module)
THIS MODULE IS CURRENTLY UNDER CONSTRUCTION
Overview
Title |
Microservices Architecture (Module). |
---|---|
Overview |
A series of activities and accompanying example code to teach students about the microservices architecture and how to implement simple one in Javascript |
Prerequisites |
Command line, version control with Git, intermediate coding |
Learning Objectives |
After successfully completing this activity, the learner should be able to:
Modify existing system to add new endpoint specs in OpenAPI, implement endpoints in NodeJS/Express, simple MongoDB operations, implement frontend modifications in Angular |
Process Skills Practiced |
What process skills will the student practice while completing this module? |
LibreFoodPantry Microservices Example and Activities
Background
- Is there background reading/video/website content?
- What is the expected knowledge level of the student?
- What is the rationale for this module?
- Include helpful hints to faculty here.
Sequence/Sub-Path
Include the sequence of activities.
Comments
- These activities use the Microservices Example code.
- What should the instructor know before using this module?
- What are some likely difficulties that an instructor may encounter using this module?
Suggestions for Open Source Community
Suggestions for an open source community member who is working in conjunction with the instructor.
Additional Information
Topic | Activity | Deliverable | Length | Notes |
---|---|---|---|---|
Introduction to the Domain: HFOSS, LibreFoodPantry, and Bear Necessitities Market OrderModule | 01-Domain Introduction | Stub only | ||
Installing Docker | 02-Installing Docker | Docker installed and running on the student's machine | Could be homework or in-class activity | |
Containerization with Docker | 03-Containerization Docker | Understanding of advantages of containerization over virtual machines | In-class activity | |
Software Architectures from Monolith to Microservices | 04-Microservices Architecture | Understanding of differences between monolith and microservices | In-class activity | |
Introduction to REST API Calls | 05-IntroductionRest | Understanding how REST API calls are used to communicate with a backend | In-class activity | |
Exploring REST API Calls | 06-ExploringREST | Using tools to make REST API calls to a backend | In-class activity | |
Designing REST API Calls | 07-Designing REST | Understanding the OpenAPI Specification for a backend | In-class activity | |
Exploring REST API Implementation | 08-Exploring REST Implementation | Understanding of the backend implementation code written in NodeJS/Express | In-class activity | |
Exploring the Persistence Layer using a Document Database | 09-Exploring Persistence | Stub only | ||
Exploring the Implementation of Persistence using a Document Database | 10-Exploring Persistence Implementation | Stub only | ||
Implementing New REST API Calls | 11-Implementing REST | Add the implementation of new REST API calls | In-class or homework. These problems need to be updated for the new example. | |
Exploring the Implementation of a Simple REST API Front End | 12-Simple Front End | Understanding the implementation of a simple frontend using Angular | In-class activity. This activity needs to be rewritten to use VueJS. | |
Designing Components for a Front End | 13-Exploring Front End | Stub only | ||
Implementing New Functionality for a Front End | 14-Implementing Front End | Stub only |
ACM BoK Area & Unit(s) |
What ACM Computing Curricula 2013 knowledge area and units are covered? |
---|---|
ACM BoK Topic(s) |
What specific topics are addressed? |
Difficulty |
Is this module easy, medium, or hard? |
Estimated Time to Complete |
How long should a typical student take to complete the module? |
Environment / Materials |
What does the student need? (e.g. Internet access, IRC client, Git Hub account, LINUX machine, etc.) |
Author(s) |
Karl R. Wurst and Stoney Jackson |
Source |
Is there another module on which this module is based? If so, please provide a link to the original resource. |
License |
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License |
For this blank format: This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License