Course Introduction and guidelines
Course overview
This course explores an emerging paradigm for enabling distributed systems and applications at scale, Microservices.
Course objectives
Lay a strong foundation on which you can build a successful career as a software architect.
- Develop a basic understanding of software architectural styles.
- Develop an in-depth understanding of service architectures.
- Look at what possibilities service architectures brings to the software industry.
Participants to this course will be able to look at current and future developments in service architectures with enough background to be able to judge :
- Which service architecture to choose for your system.
- How much of a contribution service architectures offer.
- What is the true potential of service architectures.
What this course will cover ?
In this lecture, we are mainly concerned with service-based architectural styles. In particular, we will focus on :
-
Service Oriented Architecture (SOA)
-
Microservice Architecture (MSA)
Prerequisites
- Web Programming
- Database fundamentals
- Object oriented modeling
- Students must familiarise themselves with the following technologies :
GITplatform.XMLstandards.
Course content
-
Chapter 1, Demystifying Software Architecture, begins the course by providing a definition of software architecture. This chapter lists and details a number of software architecture styles classifications. We will also present different object-oriented distributed computing technologies, such as Common Object Request Broker Architecture (CORBA), the Distributed Component Object Model (DCOM), and Remote Method Invocation (RMI) and list their limitations that led to service architectural styles emergence. Several examples of each type of architectural style will be also provided. -
Chapter 2, Service-Oriented Architecture (SOA), demystifies the popular service-oriented architecture (SOA) patterns that produce service-oriented applications. This chapter provides details on the principles and key concepts of SOA. From this chapter, students will understand the purpose of SOA, the technologies and protocols (web services) used for SOA, and the typical use cases of SOA. Ultimately, students will get to know the deployment difficulties associated with SOA applications. -
Chapter 3, Web Services-Core functionality and standardswill go through the WS-* standards, technologies and APIs that are commonly used to implement a service-oriented application. Bottom-up and top-down service implementations approaches are explored. This chapter introduces also two service integration and composition techniques, namely service orchestration and choreography for composing individual services so as to achieve useful business processes. By the end of this chapter, students will come to know about service implementation,testing, discovery, publication and invocation platforms. Basic concepts of orchestration and choreography, with orchestration and choreography readily available orchestration platforms and workflow engineslike BPEL are also explained. -
Chapter 4 REST Architectureintroduces the concepts related to the programmable Web, shows how HTTP and Web services are related to each other, introduces the principles behind REST Architectural Style, explains how HTTP verbs are used in REST applications and explains the need for RESTFul web services. By the end of this chapter, students will learn the core architectural elements that form a RESTful system and will get introduced to some frameworks and tools that can be used to work with REST. -
Chapter 5 Microservice Architecture (MSA) : key architectural elements. The objective of this chapter is to introduce the essentials of MSA as an architecture that breaks down an application into microservices, each of which can be independently, as well as frequently, deployed and thus facilitate continuous delivery of the application to customers. By the end of the chapter, students will understand the need for MSA, how MSA meets the modern business requirements, and typical use cases, benefits, drawbacks, how MSA differs from SOA. Furthermore, students will learn key architectural elements involved in developing an MSA-based application: the communication models of MSA, microservice discovery and the role of the API gate way in discover. He will understand how services interact with one another synchronously and asynchronously using standard architectures, protocols, and message brokers and how clients discover and access different services using service discovery mechanisms and the API gateway. -
Chapter 6, Docker: a Defacto Platform for Microservices Architecture. To leverage the benefits of the microservices architectural style, one needs to use technologies aligned with the characteristics of microservices. Containerization has become a popular deployment format for microservices, and Docker is the leading container platform that packages everything needed to deploy and run microservices (i.e., code, libraries, settings, etc.) .With a lot of advantages, Docker become the best fit to implementing microservices architecture. In this Chapter we will dive deep in Docker to see how Docker can effectively help in leveraging microservices architecture.
Grading
This course will consist of Lab assignments, quizzes, lectures, chapter readings, presentations and discussions, – each will contribute to your grades.
- Chapter reading and Quizzes :
25% - In-class Labs :
25% - At-home Labs:
50%
Due to the many code examples in the this lecture we opted to maintain the materials in a GitHub repository. The access to the course examples code will be provided with every lecture.
Workload
Students should be prepared to spent 2-5 hours each week. While the course may initially start out demanding fewer hours, towards the middle, it will require more as many coding assignments will be published when we will reach Web service and Docker platform Labs.
Assignments submission
-
Assignments will be due at
11:59PMon the day of the deadline. -
Chapter/Paper reading summaries (if requested) are due at
11:59PMthe night before class. Late summaries will not be accepted. Appropriate information on submission tool will be provided later. -
Every Chapter reading might be subject to a quiz.
-
Students are advised to read lecture slides content and download them before the lecture starting time.
-
Each unsubmitted Lab assignment results in a loss of
5%.
Lecture attendance regulations
Each student must adhere with the following lecture attendance regulations:
Before lecture time :
-
Download lecture material files.
-
Download Lab assignments files and folders.
-
Download and install @home necessary software and tools.
-
Download and read assigned book chapters and papers. Students must read assigned book chapter before attending lecture.
During Lecture :
-
Don’t be late. No more than
10minutes delay will be accepted to attend lecture. -
As major part of the lecture will require an internet access, - specially when we will reach the service invocation and Docker platform chapter, students are advised to have their own internet access as some parts of the course require heavy internet access.
Assignments : ToDo | ToRead | ToCode
Every lecture will be subject to Homework ToDo, book Chapters/Papers ToRead and Labs ToCode.
-
ToDoare essential for understanding lecture content and doing in-class labs. e.g., prerequisite tools installation, platform learning… They must be done before attending the lecture. -
ToReadare book chapters and papers to read before attending course. They are subject to quizzes and sum-up to be done during the coming lecture. -
ToCodeare Labs to be submitted after the lecture. Submission process and deadlines are to be defined (TBD) with every Lab.
Textbooks
Several textbooks are required for this class. They are made available online on the course folder :
- Chellammal Surianarayanan, Gopinath Ganapathy, Raj Pethuru,
Essentials of Microservices Architecture Paradigms, Applications, and Techniques, Taylor & Francis; 1st Edition 2019. - Poulton, Nigel.
Docker Deep Dive. JJNP Consulting Limited, 2018. - Nickoloff, Jeff. And Kuenzli, Stephen.
Docker in action. Manning Publications Co., 2019. - Nickoloff, Jeff.
Docker in action. Manning Publications Co., 2016. - Miell, Ian, and Aidan Hobson Sayers.
Docker in practice. Manning Publications, 2019. - Miell, Ian, and Aidan Hobson Sayers.
Docker in practice. Manning Publications, 2016. - Kane, Sean P., and Karl Matthias.
Docker: Up & Running: Shipping Reliable Containers in Production. O’Reilly Media, 2018. - Chelladhurai, Jeeva S., Vinod Singh, and Pethuru Raj.
Learning docker. Packt Publishing Ltd, 2017. - Schenker, Gabriel Nicolas.
Learn Docker-Fundamentals of Docker 19. x.Packt Publishing, 2020. - Richards, Mark. Ford, Neal .
Fundamentals of Software Architecture(O’Reilly). 2020. - Ingeno, Joseph.
Software Architect’s Handbook. Packt Publishing Ltd, 2018. - Michael P. Papazoglou,
Web services: Principles and Technology, Pearson Education Limited, second edition, 2012. - Michael P. Papazoglou,
Web Services and SOA: Principles and Technology, 2nd Edition. Prentice Hall, Pearson Education, 2011. - Douglas K. Barry,
Web Services, Service-Oriented Architectures, and Cloud Computing: The Savvy Manager's Guide, Morgan Kaufmann; 2nd Edition, 2013. - James Bean.
SOA and Web Services Interface Design: Principles, Techniques, and Standards, Morgan Kaufmann Publishers 2010. - Steve Graham and Al.
Building Web Services with Java: MAKING SENSE OF XML, SOAP, WSDL, AND UDDI. Second Edition Sams Publishing; 2nd Edition, 2004. - Bogunuva Mohanram Balachandar.
RESTful Java Web Services : A pragmatic guide to designing and building RESTful APIs using Java. Packt Publishing, third edition 2017.