CS504070 — Service-Oriented Architecture

Spring, 2023

Course Description

This course provides students with fundamental knowledge in software development based on service-oriented architecture. After completing this course, students can know how to classify services towards business processes; besides that, students can also program a small service-oriented-based information system, and understand types of message exchange, life cycle, performance and security of the service. Each semester, the lecturer will choose some specific topics and organize them into lecture and hands-on-practice sessions. This semester, we will organize the course into three parts. In the first part, we take one week to present some fundamental definitions of SOA and get familiar with the RESTful API through some example programs. In the second part, we will present Flask by taking a demonstration on a real-world application. We organize the third part as a self-study to present how to program APIs with Java programming language. We note that there are some prerequisites before registering and studying this course. You need to be familiar with programming languages such as Java and Python. You also need to have a good background in databases, either SQL or NoSQL.

  • No. of credits: 3(3,0)
  • Time allocation:
    • Theory + Practice (hours): 45
    • Self-study (hours): 90

Textbook

  1. Sam Newman. Building Microservices. O'Reilly Media, Inc., 2021. [PDF]
  2. Miguel Grinberg. Flask Web Development, Second Edition. O'Reilly Media, Inc., 2018.
  3. Bogunuva Mohanram Balachandar. RESTful Java Web Services, Third Edition. Packt Publishing, 2017.
  4. Nicloai M. Josuttis. SOA in Practice, First Edition. O'Reilly Media, Inc., 2007. [PDF]
  5. Antonio Melé. Django 3 By Example. Packt Publishing, 2020. [EPUB]
  6. Vaughn Vernon. Domain-Driven Design Distilled, 1/e. O'Reilly Media, Inc., 2016. [EPUB]
  7. Don Norman. The Design of Everyday Things: Revised and Expanded Edition. Basic Books, 2013. [EPUB]

Evaluation

Evaluation categories Weight (%) Types
Process evaluation 1 10 Process Exercise
Process evaluation 2 20 Essay
Mid-term project 20 Assignment
Final project 50 Report

Schedule

Group Day Classroom Room
4 (TC) Monday [2] | | D302
3 (CLC) Wednesday [2] | | C203
1 (CLC) Wednesday [3] | | C306

Syllabus

Weeks Topics Resources
1 Chapter 0: Course Introduction
Chapter 1: What Are Microservices?

Programming API with Java
ch00.pdf
ch01.pdf
read-01
read-02

Lesson 1
Homework 1
2 Chapter 2: How to Model Microservices

Flask Installation (Self-study)
Basic Application Structure
Templates
ch02.pdf

Lesson 2
Homework 2
3 Chapter 3: Splitting the Monolith

Web Forms
Databases
ch03.pdf

Lesson 3A
Homework 3
4 Chapter 4: Microservice Communication Styles

Email
Large Application Structure (Self-study)
Appendix A: Gmail with OAuth 2.0
ch04.pdf
async_sync

Lesson 3B
Appendix A
Homework 4
5 Chapter 5: Implement Microservice Communication (Part 1)

A Social Blogging Application
- Part 1: User Authentication
ch05a.pdf

Lesson 4A
Homework 5
6 Chapter 5: Implement Microservice Communication (Part 2)

User Authentication with OAuth 2.0
ch05b.pdf

Lesson 4B
Homework 6
7 Chapter 6: Workflow

A Social Blogging Application
- Part 2: User Roles
ch06.pdf

Lesson 4C
Homework 7
8 Chapter 7: Build

A Social Blogging Application
- Part 3: User Profile
ch07.pdf

Lesson 5A
Homework 8
9 Chapter 8: Deployment

A Social Blogging Application
- Part 4: Blog Posts
ch08.pdf

Lesson 5B
Homework 9
10 Chapter 9: Testing

A Social Blogging Application
- Part 5: Followers
- Part 6: User Comments
ch09.pdf

Lesson 6
Lesson 7
Homework 10A
Homework 10B
11 Chapter 10: From Monitoring to Observability

A Social Blogging Application
- Part 7: Application Programming Interfaces
ch10.pdf

Lesson 8
Homework 11
12 Chapter 11: Security

- Testing Flask Applications
- Measure Flask Application Performance
- Flask Application Deployment
ch11.pdf

Lesson 9
Homework 12
13 Mid-term Report

Read: Chapter 12, 13 [1]
Mid-term Exam
14 Final Project Report

Read: Chapter 14 [1]
15 Final Project Report

Read: Chapter 15, 16 [1]

Resources

  • ☕️ Self-study topics
  • Attendance Records:

Announcement

From the Spring, 2023 semester, the course's announcements have been moved to a dedicated page at /announcement.html.

Homework

Visit /homework.html to read homework descriptions and access submission links.

Staffs

  • Phuc H. Duong

Info I welcome everyone to become a teaching assistant for this course, do not hesitate to drop me an email at huuphucduong@gmail.com.

Policies

  • You are allowed to absent up to 3 lecture sessions.
  • Exercises, assignment and final project must be submitted by the due date. No late submission will be accepted.
  • All submissions in this semester will be done via Google Form belonging to my personal account, you thus should use your personal Google account to access the forms.
  • About collaboration, you may discuss with other students on the review reports. However, you must write up the reports on your own independently.
  • You need to be honest in all academic work and understanding that failure to comply with this commitment will result in disciplinary action.
  • For online class sections (if any), attendance and participation are determined by active interaction during the class and submission of exercises after class. Failure to complete at least 50% of the work each week will be deemed as lack of active participation in the course.

Contact

  • Work email: duonghuuphuc@tdtu.edu.vn
  • Personal email: huuphucduong@gmail.com

Mailing List

Sign up with your email address at this form to receive news and updates.

Archived

  • Recorded lecture videos
  • Spring, 2023 (Current)
  • Fall, 2022 | Spring, 2022