Building Microservices with .NET Core

Author: Gaurav Kumar Aroraa;Lalit Kale;Kanwar Manish  

Publisher: Packt Publishing‎

Publication year: 2017

E-ISBN: 9781785884962

P-ISBN(Paperback): 9781785887833

Subject: TP312 程序语言、算法语言

Keyword: 程序语言、算法语言

Language: ENG

Access to resources Favorite

Disclaimer: Any content in publications that violate the sovereignty, the constitution or regulations of the PRC is not accepted or approved by CNPIEC.

Building Microservices with .NET Core

Chapter

Chapter 1: What Are Microservices?

Origin of microservices

Discussing microservices

Monolithic architecture

Service-oriented architecture

What is service?

Understanding the microservice architecture

Messaging in microservices

Synchronous messaging

Asynchronous messaging

Message formats

Why should we use microservices?

How does the microservice architecture work?

Advantages of microservices

SOA versus microservices

Prerequisites of the microservice architecture

Understanding problems with the monolithic architecture style

Challenges in standardizing a .NET stack

Fault tolerance

Scaling

Vertical scaling or scale up

Horizontal scaling or scale out

Deployment challenges

Organizational alignment

Modularity

Big database

Prerequisites for microservices

Functional overview of the application

Solutions for current challenges

Handling deployment problems

Making much better monolithic applications

Introducing dependency injections

Database refactoring

Database sharding and partitioning

DevOps culture

Automation

Testing

Versioning

Deployment

Identifying decomposition candidates within monolithic

Important microservices advantages

Technology independence

Interdependency removal

Alignment with business goals

Cost benefits

Easy scalability

Security

Data management

Integrating monolithic

Summary

Chapter 2: Building Microservices

Size of microservices

What makes a good service?

DDD and its importance for microservices

Domain model design

Importance for microservices

The concept of Seam

Module interdependency

Technology

Team structure

Database

Master data

Transaction

Communication between microservices

Benefits of the API gateway for microservices

API gateway versus API management

Revisiting the case study--Flix One

Prerequisites

Transitioning to our product service

Migrations

Code migration

Creating our project

Adding the model

Adding a repository

Registering the repositories

Adding a product controller

The ProductService API

Adding EF core support

EF Core DbContext

EF Core migrations

Database migration

Revisiting repositories and the controller

Introducing ViewModel

Revisiting the product controller

Summary

Chapter 3: Integration Techniques

Communication between services

Styles of collaborations

Integration patterns

The API gateway

The event-driven pattern

Event sourcing

Eventual consistency

Compensating Transaction

Competing Consumers

Azure Service Bus queues

Implementation of an Azure Service Bus queue

Prerequisites

Sending messages to the queue

Receiving messages from the queue

Summary

Chapter 4: Testing Strategies

How to test microservices

Handling challenges

Testing strategies (testing approach)

Testing pyramid

Types of microservice tests

Unit testing

Component (service) testing

Integration testing

Contract testing

Consumer-driven contracts

How to implement a consumer-driven test

How Pact-net-core helps us achieve our goal

Performance testing

End-to-end (UI/functional) testing

Sociable versus isolated unit tests

Stubs and mocks

Tests in action

 Getting ready with the test project

Unit tests

Integration tests

Summary

Chapter 5: Deployment

Monolithic application deployment challenges

Understanding the deployment terminology

Prerequisites for successful microservice deployments

Isolation requirements for microservice deployment

Need for a new deployment paradigm

Containers

What are containers?

Suitability of containers over virtual machines

Transformation of the operation team's mindset 

Containers are new binaries

It works on your machine? Let's ship your machine!

Docker quick introduction

Microservice deployment with Docker overview

Microservice deployment example using Docker

Setting up Docker on your machine

Creating an ASP.NET web application

Adding Docker Support

Summary

Chapter 6: Security

Security in monolithic applications

Security in microservices

Why traditional .NET auth mechanism won't work?

JSON Web Tokens

What is OAuth 2.0?

What is OpenID Connect?

Azure Active Directory

Microservice Auth example with OpenID Connect, OAuth 2.0, and Azure AD

Step 1 – Registration of TodoListService and TodoListWebApp with Azure AD tenant

Step 2 – Generation of AppKey for TodoListWebApp

Step 3 – Configuring Visual Studio solution projects

Step 4 – Generate client certificates on IIS Express

Step 5 – Run both the applications

Azure API management as an API gateway

Container security

Other security best practices

Summary

Chapter 7: Monitoring

Instrumentation and telemetry

Instrumentation

Telemetry

The need for monitoring

Health monitoring

Availability monitoring

Performance monitoring

Security monitoring

SLA monitoring

Auditing sensitive data and critical business transactions

End user monitoring

Troubleshooting system failures

Monitoring challenges

Monitoring strategies

Logging

Logging challenges

Logging strategies

Centralized logging

Use of a correlation ID in logging

Semantic logging

Monitoring in Azure Cloud

Microsoft Azure Diagnostics

Storing diagnostic data using Azure storage

Using Azure portal

Specifying a storage account

Azure storage schema for diagnostic data

Introduction of Application Insights

Other microservice monitoring solutions

A brief overview of the ELK stack

Elasticsearch

Logstash

Kibana

Splunk

Alerting

Reporting

Summary

Chapter 8: Scaling

Scalability overview

Scaling infrastructure

Vertical scaling (scaling up)

Horizontal scaling (scaling out)

Microservices scalability

Scale Cube model of scalability

X-axis scaling

Z-axis scaling

Y-axis scaling

Characteristics of a scalable microservice

Scaling the infrastructure

Scaling virtual machines using scale sets

Auto Scaling

Container scaling using Docker swarm

Scaling service design

Data persistence model design

Caching mechanism

Redundancy and fault tolerance

Circuit breakers

Service discovery

Summary

Chapter 9: Reactive Microservices

What are reactive microservices?

Responsiveness

Resilience

Autonomous

Being message-driven

Making it reactive

Event communication

Security

Message-level security

Scalability

Communication resilience

Managing data

The microservice ecosystem

Reactive microservices - coding it down

Creating the project

Client - coding it down

Summary

Chapter 10: Creating a Complete Microservice Solution

Architectures before microservices

The monolithic architecture

Challenges in standardizing the .NET stack

Scaling

Service-oriented architecture 

Microservice-styled architecture

Messaging in microservices

Monolith transitioning

Integration techniques

Deployment

Testing microservices

Security

Monitoring

Monitoring challenges

Scale

Component lifespan

Information visualization

Monitoring strategies

Scalability

Infrastructure scaling

Service design

Reactive microservices

Greenfield application

Scoping our services

The book-listing microservice

The book-searching microservice

The shopping cart microservice

The order microservice

User authentication

Synchronous versus asynchronous

The book catalog microservice

The shopping cart microservice

The order microservice

The user auth microservice

Summary

Index

The users who browse this book also browse


No browse record.