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.
Sign up for this Microservices Development Bootcamp today.
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
Audience
Developers, solution architects and technical team leads.
Prerequisites
- Knowledge of Java – Equivalent to https://www.webagesolutions.com/courses/WA2494-introduction-to-java-8-using-eclipse
- Git - Equivalent to https://www.webagesolutions.com/courses/WA2410-git-training-introduction-to-version-control-with-git
Duration
Five days
Outline for Microservices Development Bootcamp with immersive project (using Spring Boot and Docker) Training
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