Microservices, ASP.NET Core and Docker
Course Length: 4 Days
Course Description
Microservices provide an architectural pattern that allows applications to be written in a more flexible and re-usable manner. They offer several benefits such as better re-use, simplified maintenance, ability to handle change requests and business rules changes more easily, independent versioning and deployment of services, increased productivity for new and existing team members, the option to scale out one or more application features, integration between multiple technologies, and much more. These benefits and several others will be discussed throughout the course so that students understand the overall goals of Microservices and where they work well in enterprise-scale applications. Challenges associated with Microservices are also discussed since we believe it's critical to understand not only the pros, but also the cons and associated challenges.
The course starts out with an introduction to Microservices and focuses on key concepts that developers and architects need to know before applying Microservices in their applications. Docker concepts and commands are then covered including the role of images and containers, the need for volumes, and key commands that can be used to work with Docker. From there a discussion of ASP.NET Core MVC and Web API is covered and students will learn how to run ASP.NET Core applications in both Linux and Windows containers. Finally, all of the concepts covered in the course are brought together to show the process of converting a Monolithic application to a Microservices application using ASP.NET Core, RESTful service concepts, and Docker images and containers. This includes actively using Docker commands, writing custom Dockerfiles, creating Docker Compose .yml files to build images and orchestrate containers, running Linux and Windows containers, and more. By the end of the course students will understand the case for Microservices and how they can be implemented.
If you're looking to bring your team up-to-speed quickly on Microservices and get a robust look at how they work with ASP.NET Core and Docker then this course is for you!
This course is taught by Dan Wahlin (a member of the Microsoft MVP and Regional Directors as well as Docker Captains groups).
Prerequisites
Attendees must have prior experience working with C# to take this class. A minimum of 6-months of hands-on C# experience is recommended to get the most out of the course. Prior experience with ASP.NET Web Forms, MVC or Web API is highly recommended.
Audience
Course Outline
- The Case for Microservices
- Overview of Microservices
- Microservices vs. SOA
- Pros and Cons of Microservices
- Client-side vs. Server-side Routing
- Planning for Microservices
- Microservices Reference Application
- Getting Started with Docker
- Application Deployment
- Shipping with Containers
- Getting Started with Docker
- Benefits to Developers and DevOps
- Overview of Images and Containers
- Layered File System
- Containers vs Virtual Machines
- Docker and Microservices
- Docker Images and Containers
- Container Registries
- Working with Images
- Working with Containers
- Getting Started with a Custom Dockerfile
- Building an Image
- Updating an Image
- Pushing an Image to a Registry
- Containers and Volumes
- Components Overview
- Source Code and Containers
- Introduction to Volumes
- Creating a Volume
- Inspecting Volumes
- Defining a volume in a Dockerfile
- Local Source Code and Containers
- Orchestrating Containers with Docker Compose
- Container Orchestration
- Getting Started with Docker Compose
- The docker-compose.yml File
- Docker Compose Commands
- Getting Started with ASP.NET Core
- Getting Started with ASP.NET Core
- Configuration and Middleware Pipeline
- Controllers and Views
- RESTful Services with Web API
- Data Access with Entity Framework Core
- OS X Cross Platform Development
- ASP.NET Core and Docker
- ASP.NET Core Docker Images
- Creating ASP.NET Core Linux Images
- Creating ASP.NET Core Windows Images
- Visual Studio Docker Features
- "Containerizing" .NET Framework Applications
- Running and Debugging Containers
- Monolithic to Microservices
- Monolithic Applications Review
- Microservices Review
- Communicating with Microservices
- Converting a Monolithic Feature to a Microservice
- Creating Dockerfiles and Images
- Communication with Microservices
- Fault Handling
- Health Checks
- Microservices Orchestration and Monitoring Tools Overview
- Docker Swarm
- Kubernetes
- Marathon
- cAdvisor
- SysDig
- (Bonus) Introduction to Kubernetes
- Why Kubernetes
- Kubernetes Overview
- The Master
- Nodes and Pods
- Services and Deployments
- Files and Commands