Home About Courses Schedule Services Webinars Contact Search

Microservices Development Bootcamp

SEE SCHEDULE

Duration: 5 Days

Method: Instructor-led. Hands-on workshops.

Price: $2900.00

Course Code: MI1020


Audience

Developers, solution architects, and technical team leads.

Description

This training course will enable the attendees to understand the value proposition of Microservices as well as the implementation of this technology. You will learn about the pros and cons of breaking up the monolithic applications prevalent in the enterprise space and converting them into Microservices-based solutions.

Spring Boot is a technology stack that builds on the popular Spring Framework to allow Spring-based applications as stand-alone jar files that host their own web servers. This approach works nicely with deployment automation and rapid scaling. In this course, we will implement Microservices using Spring Boot.

Linux containers are changing the way companies think about service development and deployment. Containers play a vital role in the modern data-center, and Docker is leading the way. In this course, we will show how to package and deploy your Microservices using Docker.

Objectives

Upon successful completion of this course, the student will be able to:

  • 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

Prerequisites

Knowledge of Java and Git.

Topics

  • I. 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
  • II. Introduction to Git Flow
    • Why Use an SCM Workflow?
    • Why Use an SCM Workflow? (Cond.)
    • What is Git Flow
    • 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
  • III. 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
  • IV. 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
  • V. 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
  • VI. 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 Annotations
    • Example of Spring MVC-based RESTful Web Service
    • Spring Booting Your RESTful Web Service
    • Spring Boot Skeletal Application Example
    • Converting a Spring Boot Application to a WAR File
    • Externalized Configuration
    • Starters
    • Maven - The 'pom.xml' File
    • Spring Boot Maven Plugin
    • Gradle - The 'build.gradle' File
    • Spring Boot Maven Plugin
    • HOWTO: Create a Spring Boot Application
    • Spring Initializr
  • VII. 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
  • VIII. 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
    • 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
  • IX. Spring REST Services
    • Many Flavors of Services
    • Understanding REST
    • RESTful Services
    • REST Resource Examples
    • @RestController Annotation
    • Implementing JAX-RS Services and Spring
    • JAX-RS Annotations
    • Java Clients Using RestTemplate
    • RestTemplate Methods
  • X. 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
  • XI. 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
  • XII. 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
  • XIII. 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
  • XIV. 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
  • XV. 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. Getting Started with Docker
    • Lab 9. Load Balancing using Kubernetes
    • Lab 10. Getting Started with Istio