Course Duration: 5 Days
Prerequisites:

All attendees must be comfortable programming in Java and have a basic understanding of Spring Dependency Injection using the Spring @Autowired annotation or the javax @Inject annotation. Spring Java Configuration experience is helpful but not required.

Course Objectives:
  • Use Spring Boot to build standalone web applications and RESTful services
  • Understand the Configuration techniques that Spring Boot Provides
  • Build Spring boot based Microservices for Json and XML data exchange
  • Monitor services using the Prometheus Actuator
  • Understand the major components of Netflix OSS
  • Register services with a Eureka Service
  • Implement “client” load balancing with Ribbon to Eureka managed Services
  • Create fault tolerant services with Hystrix callbacks
  • Filter requests to your Microservices using Zuul
  • Create producer and Consumer services using Kafka and Zookeeper
  • Define Feign clients to your services
  • Use Spring Boot to build standalone web applications and RESTful services
  • Understand the Configuration techniques that Spring Boot Provides
  • Build Spring boot based Microservices for Json and XML data exchange
  • Monitor services using the Prometheus Actuator
  • Understand the major components of Netflix OSS
  • Register services with a Eureka Service
  • Implement “client” load balancing with Ribbon to Eureka managed Services
  • Create fault tolerant services with Hystrix callbacks
  • Filter requests to your Microservices using Zuul
  • Create producer and Consumer services using Kafka and Zookeeper
  • Define Feign clients to your services
Course Outline:

Introduction to Spring Boot

  • What is Spring Boot?
  • Spring starter Maven Dependencies
  • Understanding @SpringBootApplication
  • Example of Spring MVC-based RESTful Web Service
  • Project Structure
  • Externalized Configuration application.properties and YAML
  • @ConfigurationPropetrties
    • Type Safe Properties
    • JSR303 Validation of Properties
    • Spring Environment Object
    • @Value vs @ConfigurationProperties
  • Logging

Actuators

  • Exposing Information about your services
  • Customize Health and Info Endpoints
  • Custom Metrics and Custom Actuator
  • Prometheus Monitoring

Building Web Applications

  • Controllers and ModelAttributes
  • Template Views
  • Using Embedded and External Databases
  • Spring Boot Initializers and Command Line Runners
  • Active Profiles
  • Form Submissions

REST Services

  • What is REST?
  • Restful Controllers
  • JSON and XML Data Exchange
  • Content Negotiation
  • Angular JS Accessing your Services

Java Clients using RestTemplate

  • ResponseEntity
  • Headers
  • Status codes
  • RequestEntity
  • Posting Json to a Service

Persistence with JPA Repositories

  • JPA, EntityManagers, Entity Classes, Annotation mappings
  • Spring JPA Data, CrudRepository, PagingAndSortingRepository
  • Spring Data Rest, Exposing Databases as Endpoints
  • HATEOAS Json
  • @Projections and Excerpts
    • Restrict the data sent back to the client

Introduction to Microservices

  • What are Microservices?
  • Decentralized Governance, Scalability, Fault Tolerance
  • Cloud Computing
  • Spring Cloud
  • Service and Client Discovery
  • Netflix OSS

Spring Cloud and Netflix OSS

  • Where are my Services?
    • Using Service Discovery
    • Eureka Servers and Clients
  • Scale Services
    • Load Balancing with Ribbon using Service Discovery
    • A LoadBalanced RestTemplat9e
    • Load Balancing with Ribbon without Service Discovery
  • Circuit Breaker, when services fail
    • Hystrix
    • Callbacks
  • Gateway/Edge Services – Providing an API
    • Zuul services
    • Filtering the Request and Response
  • Create Feign Clients to your Services
  • Event Driven Services or Sagas
    • Keeping Services synchronized with each other
    • Creating Message Queues with Zookeeper and Kafka
      • Producers and Consumers

Docker Images and Containers

  • Orchestration and Workflow

Introduction to Spring Boot

  • What is Spring Boot?
  • Spring starter Maven Dependencies
  • Understanding @SpringBootApplication
  • Example of Spring MVC-based RESTful Web Service
  • Project Structure
  • Externalized Configuration application.properties and YAML
  • @ConfigurationPropetrties
    • Type Safe Properties
    • JSR303 Validation of Properties
    • Spring Environment Object
    • @Value vs @ConfigurationProperties
  • Logging

Actuators

  • Exposing Information about your services
  • Customize Health and Info Endpoints
  • Custom Metrics and Custom Actuator
  • Prometheus Monitoring

Building Web Applications

  • Controllers and ModelAttributes
  • Template Views
  • Using Embedded and External Databases
  • Spring Boot Initializers and Command Line Runners
  • Active Profiles
  • Form Submissions

REST Services

  • What is REST?
  • Restful Controllers
  • JSON and XML Data Exchange
  • Content Negotiation
  • Angular JS Accessing your Services

Java Clients using RestTemplate

  • ResponseEntity
  • Headers
  • Status codes
  • RequestEntity
  • Posting Json to a Service

Persistence with JPA Repositories

  • JPA, EntityManagers, Entity Classes, Annotation mappings
  • Spring JPA Data, CrudRepository, PagingAndSortingRepository
  • Spring Data Rest, Exposing Databases as Endpoints
  • HATEOAS Json
  • @Projections and Excerpts
    • Restrict the data sent back to the client

Introduction to Microservices

  • What are Microservices?
  • Decentralized Governance, Scalability, Fault Tolerance
  • Cloud Computing
  • Spring Cloud
  • Service and Client Discovery
  • Netflix OSS

Spring Cloud and Netflix OSS

  • Where are my Services?
    • Using Service Discovery
    • Eureka Servers and Clients
  • Scale Services
    • Load Balancing with Ribbon using Service Discovery
    • A LoadBalanced RestTemplat9e
    • Load Balancing with Ribbon without Service Discovery
  • Circuit Breaker, when services fail
    • Hystrix
    • Callbacks
  • Gateway/Edge Services – Providing an API
    • Zuul services
    • Filtering the Request and Response
  • Create Feign Clients to your Services
  • Event Driven Services or Sagas
    • Keeping Services synchronized with each other
    • Creating Message Queues with Zookeeper and Kafka
      • Producers and Consumers

Docker Images and Containers

  • Orchestration and Workflow