|
Apr 27, 2024
|
|
|
|
CSC 5201 - Microservices and Cloud Computing4 lecture hours 0 lab hours 4 credits Course Description This course introduces the concepts, architectural, and practical techniques needed to design and implement cloud-native microservices. Students will design, implement, deploy, and operate a microservice using widely used technologies and current best practices. Emphasis will be placed on scalable web and machine learning services. Students will apply what they learn in a series of hands-on lab exercises and complete a final project using a distributed computing platform. This course is open to qualified undergraduates. (prereq: CSC 5120 or instructor consent based on equivalent software design experience) Course Learning Outcomes Upon successful completion of this course, the student will be able to:
- Leverage containerization to package and run software
- Design and implement a basic microservice that interacts through REST APIs, implements access control, uses distributed storage systems, and is deployed in a containerized form
- Apply access control patterns using authentication and authorization following security best practices
- Analyze and identify potential throughput, scalability, reliability, and consistency issues with distributed microservice architectures
- Create and manage continuous integration and deployment to automate software related to microservices and pipelines
- Deploy a multi-service distributed application using a container orchestration tool
Prerequisites by Topic
- Version control/Git
- Proficiency in a high-level object-oriented programming language including use of data structures, designing classes, and applications of software design techniques
- Introductory knowledge of database languages (e.g., SQL) for querying, manipulating, and basic management of databases
- Design and implementation of simple relational database applications
- Introductory knowledge of client-server and event-driven programming paradigms, including an example of networked communication
- Use of web application programming interfaces
- Design and implementation of simple web services using server-side technologies
- Familiarity with the Linux command-line or similar
Course Topics
- Virtual machines and containers and associated best practices for writing containerized, stateless applications
- Microservice architectures and implementation patterns including event-driven architectures and designing and implementing REST APIs
- Distributed storage systems (e.g., key-value stores, columnar stores, object stores, distributed file systems, and relational databases), tradeoffs between consistency, availability, and partition tolerance, and efficient access patterns
- Continuous integration and deployment technologies and usage patterns
- Tooling for orchestration and deployment of multi-service systems
- Software, Function, Platform, and Infrastructure as service paradigms and implementing systems
- Discussion of public cloud services and comparisons of their offerings
Coordinator Dr. RJ Nowling
Add to Portfolio (opens a new window)
|
|