CS504070 — Service-Oriented Architecture

Fall, 2022

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 Google Classroom Google Meet
1 (TC) Tuesday [2] |
2 (CLC) Tuesday [3] |

Syllabus

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

Programming the first API with Java
ch00.pdf
ch01.pdf

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

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]
N/A
15 Final Project Report

Read: Chapter 15, 16 [1]
N/A

Resources

  • Teaching materials are presented in the Syllabus section.
  • You should refer to this tutorial to install Flask, setup virtual environment and download demo source code.
  • RUBRIC (Phiếu Chấm Điểm):
    • Phiếu Chấm Điểm Giữa Kỳ (Rubric with fillable fields) [PDF | Example]
    • Phiếu Chấm Điểm ĐAMH (Rubric with fillable fields) [PDF | Example]
    • Quy Trình Nộp Báo Cáo Giữa Kỳ & ĐAMH [PDF | Rubric Submission Form]

Announcement

  • Danh sách nhóm & Phân công báo cáo Giữa Kỳ, ĐAMH
  • Forum (hosted on Facebook Group): Nhóm 1 | Nhóm 2
  • Attendance Records:
  • Student email account provided by TDTU is required to access the attendance forms and other resources.

Staffs

  • Lecturer: Phuc H. Duong, M.Sc.
  • Teaching assistants:
    • Nguyen Dinh Nhat Minh (B.Sc.) - nguyendinhnhatminh [at] it.tdt.edu.vn
    • Luu Thanh Duy (B.Sc.) - luuthanhduy [at] it.tdt.edu.vn

Info If you are confident with your knowledge and want to become a teaching assistant for this course, please do not hesitate to drop me an email at dhp@dhpit.com.

Policies

  • You are allowed to absent up to 3 sessions of lecture hours.
  • Exercises, assignment and final project must be submitted by the due date. No late submission will be accepted.
  • For assignment and final project, all group members must submit the work together.
  • 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 in the weekly discussion forums and submission of on-class exercises/homeworks/assignments. Failure to complete at least 50% of the work each week will be deemed as lack of active participation in the course.

Contact

Mailing List

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

Archived

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