Microservices Architecture (Module)

From Foss2Serve
(Difference between revisions)
Jump to: navigation, search
(Creating and naming the page. No actual content yet.)
 
(Add links to activities 8-14)
 
(5 intermediate revisions by one user not shown)
Line 10: Line 10:
 
''A series of activities and accompanying example code to teach students about the microservices architecture and how to implement simple one in Javascript''
 
''A series of activities and accompanying example code to teach students about the microservices architecture and how to implement simple one in Javascript''
 
|prerequisites=
 
|prerequisites=
''What topics and tools does the student need to know prior to beginning this module? ''
+
''Command line, version control with Git, intermediate coding ''
 
|objectives=
 
|objectives=
''What should the student be able to do after completing this module?''
+
''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=
 
|process skills=
 
''What process skills will the student practice while completing this module?''
 
''What process skills will the student practice while completing this module?''
 
}}
 
}}
 +
 +
[https://gitlab.com/LibreFoodPantry/training/microservices LibreFoodPantry Microservices Example and Activities]
  
 
=== Background ===
 
=== Background ===
Line 35: Line 37:
 
! Notes
 
! Notes
 
|-
 
|-
 +
| Introduction to the Domain: HFOSS, LibreFoodPantry, and Bear Necessitities Market OrderModule
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/01-Domain%20Introduction 01-Domain Introduction]
 
|  
 
|  
| ''Link to First Activity''
 
 
|  
 
|  
 +
| Stub only
 +
|-
 +
| Installing Docker
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/blob/master/02-Installing%20Docker 02-Installing Docker]
 +
| Docker installed and running on the student's machine
 +
|
 +
| Could be homework or in-class activity
 +
|-
 +
| Containerization with Docker
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/03-Containerization%20Docker 03-Containerization Docker]
 +
| Understanding of advantages of containerization over virtual machines
 +
|
 +
| In-class activity
 +
|-
 +
| Software Architectures from Monolith to Microservices
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/04-Microservices%20Architecture 04-Microservices Architecture]
 +
| Understanding of differences between monolith and microservices
 +
|
 +
| In-class activity
 +
|-
 +
| Introduction to REST API Calls
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/05-IntroductionRest 05-IntroductionRest]
 +
| Understanding how REST API calls are used to communicate with a backend
 +
|
 +
| In-class activity
 +
|-
 +
| Exploring REST API Calls
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/06-Exploring%20REST 06-ExploringREST]
 +
| Using tools to make REST API calls to a backend
 +
|
 +
| In-class activity
 +
|-
 +
| Designing REST API Calls
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/07-Designing%20REST 07-Designing REST]
 +
| Understanding the OpenAPI Specification for a backend
 +
|
 +
| In-class activity
 +
|-
 +
| Exploring REST API Implementation
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/08-Exploring%20REST%20Implementation 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
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/09-Exploring%20Persistence 09-Exploring Persistence]
 +
|
 +
|
 +
| Stub only
 +
|-
 +
| Exploring the Implementation of Persistence using a Document Database
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/10-Exploring%20Persistence%20Implementation 10-Exploring Persistence Implementation]
 
|
 
|
|
+
|  
 +
| Stub only
 
|-
 
|-
 +
| Implementing New REST API Calls
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/11-Implementing%20REST 11-Implementing REST]
 +
| Add the implementation of new REST API calls
 
|  
 
|  
| ''Link to Second Activity''
+
| In-class or homework. These problems need to be updated for the new example.
 +
|-
 +
| Exploring the Implementation of a Simple REST API Front End
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/12-Simple%20Front%20End 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
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/13-Exploring%20Front%20End 13-Exploring Front End]
 +
|
 +
|
 +
| Stub only
 +
|-
 +
| Implementing New Functionality for a Front End
 +
| [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-activities/-/tree/master/14-Implementing%20Front%20End 14-Implementing Front End]
 
|  
 
|  
 
|  
 
|  
|}
+
| Stub only
 +
|-}
  
 
=== Comments ===
 
=== Comments ===
  
 +
* These activities use the [https://gitlab.com/LibreFoodPantry/training/microservices/microservices-example Microservices Example] code.
 
* What should the instructor know before using this module?
 
* What should the instructor know before using this module?
 
* What are some likely difficulties that an instructor may encounter using this module?
 
* What are some likely difficulties that an instructor may encounter using this module?

Latest revision as of 18:00, 2 April 2021

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

CC license.png



For this blank format: This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License

CC license.png

Personal tools
Namespaces
Variants
Actions
Events
Learning Resources
HFOSS Projects
Evaluation
Navigation
Toolbox