About This Course
Prerequisites
Who Should Attend
Contact

About This Course

Is your organization looking to break up large indivisible applications into microservices-based solutions? In this comprehensive 5-day bootcamp, developers, solutions architects, and technical team leads will learn how to use Spring Boot, Linux Containers, and Docker to meet your microservices goals to deploy, automate, and rapidly scale.

A combination of theoretical concepts and practical labs, this Microservices Development Bootcamp covers DevOps fundamentals, Git Flow, twelve-factor applications, microservice development, and much more. The course is designed as a practical solution so students can apply their knowledge at work right away.

Objectives

  • Introduction to DevOps practices and GitFlow
  • Breaking up Monoliths into Microservices
  • Build using Gradle
  • Creating RESTful services with Spring Boot
  • Using databases and JPA in Spring Boot
  • Security patterns and best practices in Spring Boot
  • Deploying resilient and scalable services
  • Traffic routing patterns
  • Metrics and tracing of Microservices

Chapter 1. DevOps Fundamentals

  • Why DevOps
  • What is DevOps?
  • Collaborative, Matrixed and Cross-Functional Teams
  • Key Components of Successful DevOps Teams
  • DevOps-ification
  • DevOps Vocabulary
  • DevOps Goals
  • Not DevOps – Crush Buzzwords
  • Driving Business Outcomes with DevOps
  • Technology-Enabled Business
  • DevOps Key Enabler for Digital Transformation
  • Core Values and Mission
  • Core Values – Culture
  • Core Values – Automation
  • Core Values – Measurement
  • Core Values – Sharing
  • Communication
  • Collaboration
  • Value Stream Mapping
  • Behavioral Patterns for Success
  • DevOps Org Structures
  • DevOps Team – Separate
  • DevOps Merged Organization
  • DevOps Overlapped Organization
  • Organizational Structure Leadership
  • What Does Continuous Delivery Mean?
  • Deployment Pipelines
  • Your Organization is Doing CD if …
  • Pipelining for CD
  • Continuous Integration
  • CI Pipeline
  • CD & CI Methodologies
  • Key Tool Categories for CI/CD
  • Summary
Chapter 2. Introduction to Git Flow
  • Why Use an SCM Workflow?
  • Why Use an SCM Workflow? (Cond.)
  • What is Git Flow
  • The Main Branch
  • Benefits
  • How Git Flow works?
  • How Git Flow works? (Contd.)
  • What is Git Flow? (Contd.)
  • How Git Flow works? (Contd.)
  • Git Flow Extension
  • Initializing Git Flow
  • Features
  • Release
  • Hotfixes
  • Git Flow and Continuous Integration
  • Git Flow – Summary
  • Git Flow – Pros and Cons
  • Git Flow – When it Works Best?
  • Git Flow – When it Doesn’t Work?
  • Git Flow Alternatives
  • Trunk-based Development
  • Trunk-based Development (Contd.)
  • Trunk-based Development – When it Works?
  • Trunk-based Development – When it Doesn’t Work?
  • GitHub Flow
  • GitHub Flow – Pros and Cons
  • GitLab Flow
  • GitLab Flow – Environment Branches
  • GitLab Flow – Release Branches
  • GitLab Flow – Release Branches (Contd.)
  • GitLab Flow – Pros and Cons
  • Summary
Chapter 3. Breaking Up Monoliths – Pros and Cons
  • Traditional Monolithic Applications and Their Place
  • Disadvantages of Monoliths
  • Developer’s Woes
  • Architecture Modernization
  • Architecture Modernization Challenges
  • Microservices Architecture is Not a Silver Bullet!
  • What May Help?
  • In-Class Discussion
  • Summary
Chapter 4. Twelve-factor Applications
  • Twelve-factor Applications
  • Twelve Factors, Microservices, and App Modernization
  • The Twelve Factors
  • Categorizing the 12 Factors
  • 12-Factor Microservice Codebase
  • 12-Factor Microservice Dependencies
  • 12-Factor Microservice Config
  • 12-Factor Microservice Backing Services
  • 12-Factor Microservice Build, Release, Run
  • 12-Factor Microservice Processes
  • 12-Factor Microservice Port Binding
  • 12-Factor Microservice Concurrency
  • 12-Factor Microservice Disposability
  • 12-Factor Microservice Dev/Prod Parity
  • 12-Factor Microservice Logs
  • 12-Factor Microservice Admin Processes
  • Kubernetes and the Twelve Factors – 1 Codebase
  • Kubernetes and the Twelve Factors – 2 Dependencies
  • Kubernetes and the Twelve Factors – 3 Config
  • Kubernetes and the Twelve Factors – 4 Backing Services
  • Kubernetes and the Twelve Factors – 5 Build, Release, Run
  • Kubernetes and the Twelve Factors – 6 Processes
  • Kubernetes and the Twelve Factors – 7 Port Binding
  • Kubernetes and the Twelve Factors – 8 Concurrency
  • Kubernetes and the Twelve Factors – 9 Disposability
  • Kubernetes and the Twelve Factors – 10 Dev/Prod Parity
  • Kubernetes and the Twelve Factors – 11 Logs
  • Kubernetes and the Twelve Factors – 12 Admin Processes
  • Summary
Chapter 5. Microservice Development
  • What are Microservices?
  • Microservices vs Classic SOA
  • Principles of Microservices Architecture Design
  • Domain-Driven Design
  • Domain-Driven Design – Benefits
  • Microservices and Domain-Driven Design
  • Designing for failure
  • Microservices Architecture – Pros
  • Microservices Architecture – Cons
  • Docker and Microservices
  • Microservice Deployment with Docker – Workflow
  • Writing Dockerfile
  • Kubernetes
  • What is OpenShift
  • OpenShift Architecture
  • Microservices and Various Applications
  • Web Applications
  • Web Applications – Reference Architecture
  • Web Applications – When to use?
  • Single Page Applications
  • Single Page Applications – Benefits
  • Traditional Enterprise Application Architecture
  • Sample Microservices Architecture
  • Serverless & Event-driven Microservice – AWS Lambda
  • Summary
Chapter 6. gRPC
  • What is gRPC?
  • Protocol Buffers
  • REST vs. gRPC
  • Protobuf vs. JSON
  • HTTP/2 vs. HTTP 1.1
  • HTTP/2 vs. HTTP 1.1 (Contd.)
  • Messages vs. Resources and Verbs
  • Streaming vs. Request-Response
  • Strong Typing vs. Serialization
  • Web Browser Support
  • REST vs. gRPC – In a Nutshell
Chapter 7. Introduction to Spring Boot
  • What is Spring Boot?
  • Spring Framework
  • How is Spring Boot Related to Spring Framework?
  • Spring Boot 2
  • Spring Boot Main Features
  • Spring Boot on the PaaS
  • Understanding Java Annotations
  • Spring MVC and REST Annotations
  • Example of Spring MVC-based RESTful Web Service
  • Spring Booting Your RESTful Web Service
  • Spring Boot Skeletal Application Example
  • Starters
  • Maven – The ‘pom.xml’ File
  • Spring Boot Maven Plugin
  • Gradle – The ‘build.gradle’ File
  • Spring Boot Gradle Plugin
  • HOWTO: Create a Spring Boot Application
  • Spring Initializr
  • Summary
Chapter 8. Overview of Spring Boot Database Integration
  • DAO Support in Spring
  • Spring Data Access Modules
  • Spring JDBC Module
  • Spring ORM Module
  • DataAccessException
  • @Repository Annotation
  • Using DataSources
  • DAO Templates
  • DAO Templates and Callbacks
  • ORM Tool Support in Spring
  • Summary
Chapter 9. Using Spring with JPA
  • Spring JPA
  • Benefits of Using Spring with ORM
  • Spring @Repository
  • Using JPA with Spring
  • Configure Spring Boot JPA EntityManagerFactory
  • Application JPA Code
  • Spring Boot Considerations
  • Spring Data JPA Repositories
  • Database Schema Migration
  • Database Schema Migration for CI/CD using Liquibase
  • How Liquibase Works?
  • Changelogs in Liquibase
  • Preconditions in Changelogs
  • Sample Empty Changelog
  • Sample Precondition in Changelog
  • Sample Changeset in Changelog
  • Running Liquibase
  • Liquibase Commands
  • Summary
Chapter 10. Spring REST Services
  • REpresentational State Transfer
  • Principles of RESTful Services
  • Understanding REST
  • REST Example – Create
  • REST Example – Retrieve
  • REST Example – Update
  • REST Example – Delete
  • REST Example – Client Generated ID
  • REST Example – JSON
  • @RestController Annotation
  • HTTP Request Method Mapping
  • Path Variables and Query Parameters
  • RequestBody and ResponseBody
  • JAX-RS vs Spring
  • Java Clients Using RestTemplate
  • RestTemplate Methods
  • RestTemplate Example
  • Testing with Postman
  • Summary
Chapter 11. Scripting in Postman
  • Postman Scripts
  • Organization
  • Execution Order
  • Pre-Request Scripts
  • Post-Request Scripts
  • Console Output
  • Tests
  • Sample Assertions
  • Multiple Test Example
  • Test Results
  • Variables
  • Variable Scope
  • Defining Global Variables
  • Defining GlobalVariables
  • Using Environment Variables
  • Dynamic Variables
  • Summary
Chapter 12. Spring Security
  • Securing Web Applications with Spring Boot 2
  • Spring Security
  • Authentication and Authorization
  • Programmatic vs Declarative Security
  • Adding Spring Security to a Project
  • Spring Security Configuration
  • Spring Security Configuration Example
  • Authentication Manager
  • Using Database User Authentication
  • LDAP Authentication
  • What is Security Assertion Markup Language (SAML)?
  • What is a SAML Provider?
  • Spring SAML2.0 Web SSO Authentication
  • Setting Up an SSO Provider
  • Adding SAML Dependencies to a Project
  • SAML vs. OAuth2
  • OAuth2 Overview
  • OAuth – Facebook Sample Flow
  • OAuth Versions
  • OAuth2 Components
  • OAuth2 – End Points
  • OAuth2 – Tokens
  • OAuth – Grants
  • Authenticating Against an OAuth2 API
  • OAuth2 using Spring Boot – Dependencies
  • OAuth2 using Spring Boot – application.yml
  • OAuth2 using Spring Boot – Main Class
  • OAuth2 using Spring Boot – Single Page Application Client
  • JSON Web Tokens
  • JSON Web Token Architecture
  • How JWT Works
  • JWT Header
  • JWT Payload
  • JWT Example Payload
  • JWT Example Signature
  • How JWT Tokens are Used
  • Adding JWT to HTTP Header
  • How The Server Makes Use of JWT Tokens
  • What are “Scopes”?
  • JWT with Spring Boot – Dependencies
  • JWT with Spring Boot – Main Class
  • Summary
Chapter 13. Docker Introduction
  • What is Docker
  • Where Can I Run Docker?
  • Installing Docker Container Engine
  • Docker Machine
  • Docker and Containerization on Linux
  • Linux Kernel Features: cgroups and namespaces
  • The Docker-Linux Kernel Interfaces
  • Docker Containers vs Traditional Virtualization
  • Docker Integration
  • Docker Services
  • Docker Application Container Public Repository
  • Competing Systems
  • Docker Command Line
  • Starting, Inspecting, and Stopping Docker Containers
  • Docker Volume
  • Dockerfile
  • Docker Compose
  • Using Docker Compose
  • Dissecting docker-compose.yml
  • Specifying services
  • Dependencies between containers
  • Injecting Environment Variables
  • runC Overview
  • runC Features
  • Using runC
  • Running a Container using runC
  • Summary
Chapter 14. Introduction to Kubernetes
  • What is Kubernetes
  • What is a Container
  • Container – Uses
  • Container – Pros
  • Container – Cons
  • Composition of a Container
  • Control Groups
  • Namespaces
  • Union Filesystems
  • Popular Containerization Software
  • Microservices
  • Microservices and Containers / Clusters
  • Microservices and Orchestration
  • Microservices and Infrastructure-as-Code
  • Kubernetes Container Networking
  • Kubernetes Networking Options
  • Kubernetes Networking – Balanced Design
  • Summary
Chapter 15. Traffic Routing Patterns
  • Edge Proxy Server
  • Request Handling
  • Filters
  • Filter Architecture
  • API Gateway for Routing Requests
  • API Gateway for Routing Requests (Contd.)
  • API Gateway – Example
  • Rate Limiting
  • Rate Limiting – Business Cases
  • Configuring Rate Limiting in NGINX
  • Circuit Breaker
  • Design Principles
  • Design Principles (continued)
  • Cascading Failures
  • Bulkhead Pattern
  • Circuit Breaker Pattern
  • Thread Pooling
  • Request Caching
  • Request Collapsing
  • Fail-Fast
  • Fallback
  • Circuit Breaker Solutions
  • Load Balancing in Microservices
  • Server-side load balance
  • Client-side Load Balance
  • Architecture
  • Service Mesh
  • Service Mesh (Contd.)
  • Service Mesh Solutions
  • Content Delivery Network (CDN)
  • How does a CDN Work?
  • Benefits of using a CDN
  • CDN Solutions
  • Summary
Lab Exercises

Lab 1. Using the GitFlow Workflow
Lab 2. Monolith vs Microservices Design
Lab 3. A Simple RESTful API in Spring Boot
Lab 4. Use the Spring JDBCTemplate under Spring Boot
Lab 5. Use the Spring Data JPA under Spring Boot
Lab 6. Create a RESTful API with Spring Boot
Lab 7. Enable Basic Security
Lab 8. Creating a Docker Account and Obtain an Access Token
Lab 9. Getting Started with Docker
Lab 10. Load Balancing using Kubernetes
Lab 11. Getting Started with Istio

Prerequisites

  • Knowledge of Java and Git.

Who Should Attend

Developers, solution architects and technical team leads.

What You’ll Learn

Course Materials and Fees

Additional Notes

Contact

For more information about individual or group registration or to be notified of upcoming dates, please contact us.

Call: 1-833-282-6852

Email: training@algonquincollege.com

$ 3140
5 Days
Select a Session
Quantity

If you are registering 8 or more participants in one class, please contact us for group registration.

Courses are posted up to 12 months in advance.

Government of Canada Employees

Take advantage of our Standing Offers and Supply Arrangements with the Government of Canada to receive a discount when you register for training.

For learners requiring special accommodations, please visit Documentation Requirements | Centre for Accessible Learning (algonquincollege.com),fill out the required form and send supporting documentation to trainingacct@algonquincollege.com. Please note that we need a minimum of three business days to accommodate your request.