.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현

Hong Min Kim
Hong Min KimSoftware Developer at Feelaware
www.dotnetconf.net
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
https://studentpartners.microsoft.com
www.feelaware.com
Index
i. ASP.NET Core 소개
ii. HealthCheck에 대하여
iii. AspNetCore.Diagnostics.HealthChecks 소개 및 WebHook 연계
iv. 각 플랫폼 별 Deployment
v. Customize한 Package 개발 및 연계
vi. 기타 시나리오 소개(Azure DevOps및 Kubernetes)
ASP.NET Core (3.0)
소개
• Open Source (https://github.com/aspnet/AspNetCore
• 크로스 플랫폼 프레임워크 (Windows, Linux, macOS..)
• 다향한 호스트 환경 지원(Kestrel, IIS, Nginx, Apache, Docker)
• Side-by-side 버전 관리 지원(.Net Core)
Startup 클래스
• Application의 호스트 구성 후(Program.cs)의 진입점
• 생성자에서 일반적으로 Application의 설정 을 구성
• 서비스와 응용 프로그램의 요청 파이프라인(Middleware)
- 추가 서비스를 구성하는 ConfigureServices 확장 메서드 정의 – 선택 사항
=> 추가한 서비스는 Application 전체에 걸쳐 사용 가능.
- 요청 파이프라인(Middleware)를 구성하는 Configure 메서드 포함
서비스
• 호스트 초기화 시 구성되거나, ConfigureServices 를 통해 추가 구성
• Application에서 공통적으로 사용하기 위함
•
DI(Dependency Injection)을 통해 사용 가능
• 세 가지(Singleton, Scoped, Transient) 생애 주기(lifetime)이 존재
- Singleton : 요청 시 최초 생성, 이후 요청 시 동일 인스턴스 사용
- Scoped : 요청당 생성 – Per Client(HTTP) Request
- Transient : 요청마다 생성
미들웨어
• 여러 미들웨어를 조합하여 요청 파이프라인을 구성
• 각 미들웨어는 요청에 대해 비동기 로직을 수행하고 다음 미들웨어 호출
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
HealthCheck
HealthCheck
• 프로덕션 환경에서 HealthCheck 가 가지는 의미
-> 빌드, 배포, 운영 등의 관점.
• 하나의 어플리케이션에 대한 HealthCheck 시 제약 및 고려사항이 반드시 존재
1) 인프라에 대한 제어 및 체크가 가능한가 (네트워크, 저장소, CDN….)
2) 관리하는 인스턴스에 대한 제어 및 체크가 가능한가
3) 호스팅 환경에 대한 제어 및 체크가 가능한가(IIS, Nginx, Apache….)
4) 다른 서비스 들 간의 의존(영향도)이 존재하는가
Ex) Azure Monitoring 서비스에서 고려하고 있는 대표적인 사항들
• 응답 코드의 유효성 검사
• 200 (OK) 상태 코드를 반환하더라도 오류를 검색하기 위해 응답의 내용을 검사
• 네트워크 대기 시간과 어플리케이션이 요청을 실행하는 데 걸린 시간의 조합
• CDN과 같은 어플리케이션을 벗어나 위치하는 리소스 또는 서비스의 검사
• SSL 인증서의 만료 검사
• 애플리케이션의 URL에 대한 DNS 조회의 응답 시간 측정
• DNS 조회가 반환한 URL의 유효성 검사
Environment
• 인프라에 대한 것은 기본적으로 관리 중(관제)
• 다수의 인스턴스에 대한 (Windows Server, Linux) 체크 필요
• 호스팅 환경에 대한 체크 필요.
• 타 서비스들에 대한 체크가 반드시 필요.
필요한 기능
• 다수의 인스턴스, 호스팅 환경에 대한 체크
• 연계 시스템 및 인증 환경 등에 대한 체크 -> Custom API
• 솔루션에 대한 체크
• 알림 -> WebHook을 통한 관리자 메일, 문자 등 연계
3. AspNetCore.Diagnostics.HealthChecks
- .Net Core 2.2 이하
https://www.nuget.org/packages/Microsoft.AspNetCore.Diagnostics.HealthChecks
• HealthCheck에 대한 결과가 Endpoint로 노출.
• 어떤 것들에 대한 HealthCheck를 할 것인지를 사전 정의
• HealthCheck 서비스를 등록하고, 미들웨어를 호출하여 사용.
• Sql Server, MySql, Oracle, Sqlite, RavenDB, Postgres, EventStore, MongoDB
• Azure Service Bus: EventHub, Queue and Topics, Azure Storage: Blob, Queue and Table
• Azure Key Vault, Azure DocumentDb
• Amazon DynamoDb, Amazon S3
• Kafka, Identity Server, RabbitMQ, Elasticsearch, Redis
• Consul, Hangfire, SignalR
• Kubernetes
• System: Disk Storage, Private Memory, Virtual Memory, Process, Windows Service
• Network: Ftp, SFtp, Dns, Tcp port, Smtp, Imap
• Uri: single uri and uri groups
등등….
• 대시보드를 위한 HealthChecks.UI
• 응답 개체에 대한 deserialization 등을 지원하는
• 기본적으로 SQLite를 사용하여 상태 변화를 저장(변경 가능)
• 제공하는 패키지 이외의, Customize한 패키지 작성 후, DI를 통해 사용 가능
• Configuration에 오케스트레이션 컨테이너 및 인스턴스 들에 대한 선언 가능
• 간단한 WebHook 연계
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
ASP.NET Core 프로젝트 생성
ASP.NET Core 프로젝트 생성
- 버전 3.0 선택
Nuget 패키지 추가(AspNetCore.HealthChecks.UI)
Nuget 패키지 추가(AspNetCore.HealthChecks.UI.Client)
Nuget 패키지 추가(AspNetCore.HealthChecks.Uris)
Startup 클래스의 ConfigureServices 메서드에 서비스 등록
Project의 속성에서 적절한 Port 설정
appsettings.json에 값 설정
미들웨어 등록
4. 각 플랫폼 별 Deployment
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
5. Customize한 패키지 개발 및 연계
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
6. 기타 시나리오 소개
(Azure DevOps및 Kubernetes)
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
감사합니다.
1 of 36

Recommended

.NET에서 비동기 프로그래밍 배우기 by
.NET에서 비동기 프로그래밍 배우기.NET에서 비동기 프로그래밍 배우기
.NET에서 비동기 프로그래밍 배우기Seong Won Mun
1.6K views72 slides
Nginx basic configurations by
Nginx basic configurationsNginx basic configurations
Nginx basic configurationsJohn Kim
1.4K views19 slides
vert.x 를 활용한 분산서버 개발하기 by
vert.x 를 활용한 분산서버 개발하기vert.x 를 활용한 분산서버 개발하기
vert.x 를 활용한 분산서버 개발하기John Kim
9.3K views70 slides
Vert.x by
Vert.x Vert.x
Vert.x ymtech
1.9K views20 slides
형태소 분석기를 적용한 elasticsearch 운영 by
형태소 분석기를 적용한 elasticsearch 운영형태소 분석기를 적용한 elasticsearch 운영
형태소 분석기를 적용한 elasticsearch 운영창훈 정
10.3K views50 slides
Gradle & IntelliJ & Vert.x by
Gradle & IntelliJ & Vert.xGradle & IntelliJ & Vert.x
Gradle & IntelliJ & Vert.xKwnaghwan Cho
1.5K views10 slides

More Related Content

What's hot

막하는 스터디 첫 번째 만남 Node.js by
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js연웅 조
1.1K views52 slides
Leadweb Nodejs by
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs근호 최
618 views34 slides
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기 by
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기KTH, 케이티하이텔
38.6K views98 slides
닷넷프레임워크에서 Redis 사용하기 by
닷넷프레임워크에서 Redis 사용하기닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기흥배 최
11.9K views37 slides
[2015-05월 세미나] 파이선 초심자의 Openstack by
[2015-05월 세미나] 파이선 초심자의 Openstack[2015-05월 세미나] 파이선 초심자의 Openstack
[2015-05월 세미나] 파이선 초심자의 OpenstackOpenStack Korea Community
9.4K views36 slides
Node.js 기본 by
Node.js 기본Node.js 기본
Node.js 기본Han Jung Hyun
54.3K views67 slides

What's hot(20)

막하는 스터디 첫 번째 만남 Node.js by 연웅 조
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js
연웅 조1.1K views
Leadweb Nodejs by 근호 최
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs
근호 최618 views
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기 by KTH, 케이티하이텔
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
닷넷프레임워크에서 Redis 사용하기 by 흥배 최
닷넷프레임워크에서 Redis 사용하기닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기
흥배 최11.9K views
[2015-05월 세미나] 파이선 초심자의 Openstack by OpenStack Korea Community
[2015-05월 세미나] 파이선 초심자의 Openstack[2015-05월 세미나] 파이선 초심자의 Openstack
[2015-05월 세미나] 파이선 초심자의 Openstack
20141229 dklee docker by DK Lee
20141229 dklee docker20141229 dklee docker
20141229 dklee docker
DK Lee2.8K views
C# Game Server by lactrious
C# Game ServerC# Game Server
C# Game Server
lactrious8.2K views
Airflow를 이용한 데이터 Workflow 관리 by YoungHeon (Roy) Kim
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
YoungHeon (Roy) Kim9.1K views
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana) by Seungmin Yu
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Seungmin Yu3.7K views
PHP를 위한 NginX(엔진엑스) 시작과 설정 by Jin wook
PHP를 위한 NginX(엔진엑스) 시작과 설정PHP를 위한 NginX(엔진엑스) 시작과 설정
PHP를 위한 NginX(엔진엑스) 시작과 설정
Jin wook7.3K views
ECS+Locust로 부하 테스트 진행하기 by Yungon Park
ECS+Locust로 부하 테스트 진행하기ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기
Yungon Park2.8K views
자동화된 인프라구축 - 2009년 자료 by 태준 문
자동화된 인프라구축 - 2009년 자료자동화된 인프라구축 - 2009년 자료
자동화된 인프라구축 - 2009년 자료
태준 문2.2K views
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기 by 흥배 최
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
흥배 최13.7K views
Puppet과 자동화된 시스템 관리 by Keon Ahn
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리
Keon Ahn10.9K views

Similar to .Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현

Cloud life seminar open shift,이준영(배포용) by
Cloud life seminar   open shift,이준영(배포용)Cloud life seminar   open shift,이준영(배포용)
Cloud life seminar open shift,이준영(배포용)Software in Life
2K views45 slides
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석 by
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석Tommy Lee
2.2K views24 slides
AWS 보안: WAF, AWS Inspector, Config Rules - 임기성 :: 2015 리인벤트 리캡 게이밍 by
AWS 보안: WAF, AWS Inspector, Config Rules - 임기성 :: 2015 리인벤트 리캡 게이밍AWS 보안: WAF, AWS Inspector, Config Rules - 임기성 :: 2015 리인벤트 리캡 게이밍
AWS 보안: WAF, AWS Inspector, Config Rules - 임기성 :: 2015 리인벤트 리캡 게이밍Amazon Web Services Korea
4.9K views42 slides
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석) by
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Wonseok Jang
200 views50 slides
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore... by
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...Amazon Web Services Korea
921 views46 slides
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning by
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning Ji-Woong Choi
5.6K views42 slides

Similar to .Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현(20)

Cloud life seminar open shift,이준영(배포용) by Software in Life
Cloud life seminar   open shift,이준영(배포용)Cloud life seminar   open shift,이준영(배포용)
Cloud life seminar open shift,이준영(배포용)
Software in Life2K views
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석 by Tommy Lee
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
Tommy Lee2.2K views
AWS 보안: WAF, AWS Inspector, Config Rules - 임기성 :: 2015 리인벤트 리캡 게이밍 by Amazon Web Services Korea
AWS 보안: WAF, AWS Inspector, Config Rules - 임기성 :: 2015 리인벤트 리캡 게이밍AWS 보안: WAF, AWS Inspector, Config Rules - 임기성 :: 2015 리인벤트 리캡 게이밍
AWS 보안: WAF, AWS Inspector, Config Rules - 임기성 :: 2015 리인벤트 리캡 게이밍
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석) by Wonseok Jang
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Wonseok Jang200 views
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore... by Amazon Web Services Korea
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning by Ji-Woong Choi
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
Ji-Woong Choi5.6K views
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬) by Amazon Web Services Korea
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
오픈스택 기반 클라우드 서비스 구축 방안 및 사례 by SONG INSEOB
오픈스택 기반 클라우드 서비스 구축 방안 및 사례오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
SONG INSEOB7.7K views
코드로 인프라 관리하기 - 자동화 툴 소개 by 태준 문
코드로 인프라 관리하기 - 자동화 툴 소개코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개
태준 문9.6K views
Azure 클라우드에서 OpenShift 시작하기 - Azure 클라우드 환경에서 OpenShift 운영 방안 by rockplace
Azure 클라우드에서 OpenShift 시작하기 - Azure 클라우드 환경에서 OpenShift 운영 방안Azure 클라우드에서 OpenShift 시작하기 - Azure 클라우드 환경에서 OpenShift 운영 방안
Azure 클라우드에서 OpenShift 시작하기 - Azure 클라우드 환경에서 OpenShift 운영 방안
rockplace234 views
Intro to hpe helion stackato_paa_s by Seong-Bok Lee
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_s
Seong-Bok Lee786 views
AWS 고급 보안 서비스를 통한 민첩한 보안 운영 전략 :: 임기성 :: AWS Summit Seoul 2016 by Amazon Web Services Korea
AWS 고급 보안 서비스를 통한 민첩한 보안 운영 전략 :: 임기성 :: AWS Summit Seoul 2016AWS 고급 보안 서비스를 통한 민첩한 보안 운영 전략 :: 임기성 :: AWS Summit Seoul 2016
AWS 고급 보안 서비스를 통한 민첩한 보안 운영 전략 :: 임기성 :: AWS Summit Seoul 2016
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트) by Amazon Web Services Korea
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
Private PaaS with Docker, spring cloud and mesos by uEngine Solutions
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
uEngine Solutions1.3K views
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1 by Ji-Woong Choi
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1
Ji-Woong Choi11K views
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가? by VMware Tanzu Korea
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
VMware Tanzu Korea5.5K views
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017 by Amazon Web Services Korea
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기 by Hyperledger Korea User Group
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기

.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현

  • 4. Index i. ASP.NET Core 소개 ii. HealthCheck에 대하여 iii. AspNetCore.Diagnostics.HealthChecks 소개 및 WebHook 연계 iv. 각 플랫폼 별 Deployment v. Customize한 Package 개발 및 연계 vi. 기타 시나리오 소개(Azure DevOps및 Kubernetes)
  • 6. 소개 • Open Source (https://github.com/aspnet/AspNetCore • 크로스 플랫폼 프레임워크 (Windows, Linux, macOS..) • 다향한 호스트 환경 지원(Kestrel, IIS, Nginx, Apache, Docker) • Side-by-side 버전 관리 지원(.Net Core)
  • 7. Startup 클래스 • Application의 호스트 구성 후(Program.cs)의 진입점 • 생성자에서 일반적으로 Application의 설정 을 구성 • 서비스와 응용 프로그램의 요청 파이프라인(Middleware) - 추가 서비스를 구성하는 ConfigureServices 확장 메서드 정의 – 선택 사항 => 추가한 서비스는 Application 전체에 걸쳐 사용 가능. - 요청 파이프라인(Middleware)를 구성하는 Configure 메서드 포함
  • 8. 서비스 • 호스트 초기화 시 구성되거나, ConfigureServices 를 통해 추가 구성 • Application에서 공통적으로 사용하기 위함 • DI(Dependency Injection)을 통해 사용 가능 • 세 가지(Singleton, Scoped, Transient) 생애 주기(lifetime)이 존재 - Singleton : 요청 시 최초 생성, 이후 요청 시 동일 인스턴스 사용 - Scoped : 요청당 생성 – Per Client(HTTP) Request - Transient : 요청마다 생성
  • 9. 미들웨어 • 여러 미들웨어를 조합하여 요청 파이프라인을 구성 • 각 미들웨어는 요청에 대해 비동기 로직을 수행하고 다음 미들웨어 호출
  • 12. HealthCheck • 프로덕션 환경에서 HealthCheck 가 가지는 의미 -> 빌드, 배포, 운영 등의 관점. • 하나의 어플리케이션에 대한 HealthCheck 시 제약 및 고려사항이 반드시 존재 1) 인프라에 대한 제어 및 체크가 가능한가 (네트워크, 저장소, CDN….) 2) 관리하는 인스턴스에 대한 제어 및 체크가 가능한가 3) 호스팅 환경에 대한 제어 및 체크가 가능한가(IIS, Nginx, Apache….) 4) 다른 서비스 들 간의 의존(영향도)이 존재하는가
  • 13. Ex) Azure Monitoring 서비스에서 고려하고 있는 대표적인 사항들 • 응답 코드의 유효성 검사 • 200 (OK) 상태 코드를 반환하더라도 오류를 검색하기 위해 응답의 내용을 검사 • 네트워크 대기 시간과 어플리케이션이 요청을 실행하는 데 걸린 시간의 조합 • CDN과 같은 어플리케이션을 벗어나 위치하는 리소스 또는 서비스의 검사 • SSL 인증서의 만료 검사 • 애플리케이션의 URL에 대한 DNS 조회의 응답 시간 측정 • DNS 조회가 반환한 URL의 유효성 검사
  • 14. Environment • 인프라에 대한 것은 기본적으로 관리 중(관제) • 다수의 인스턴스에 대한 (Windows Server, Linux) 체크 필요 • 호스팅 환경에 대한 체크 필요. • 타 서비스들에 대한 체크가 반드시 필요.
  • 15. 필요한 기능 • 다수의 인스턴스, 호스팅 환경에 대한 체크 • 연계 시스템 및 인증 환경 등에 대한 체크 -> Custom API • 솔루션에 대한 체크 • 알림 -> WebHook을 통한 관리자 메일, 문자 등 연계
  • 17. - .Net Core 2.2 이하 https://www.nuget.org/packages/Microsoft.AspNetCore.Diagnostics.HealthChecks • HealthCheck에 대한 결과가 Endpoint로 노출. • 어떤 것들에 대한 HealthCheck를 할 것인지를 사전 정의 • HealthCheck 서비스를 등록하고, 미들웨어를 호출하여 사용.
  • 18. • Sql Server, MySql, Oracle, Sqlite, RavenDB, Postgres, EventStore, MongoDB • Azure Service Bus: EventHub, Queue and Topics, Azure Storage: Blob, Queue and Table • Azure Key Vault, Azure DocumentDb • Amazon DynamoDb, Amazon S3 • Kafka, Identity Server, RabbitMQ, Elasticsearch, Redis • Consul, Hangfire, SignalR • Kubernetes • System: Disk Storage, Private Memory, Virtual Memory, Process, Windows Service • Network: Ftp, SFtp, Dns, Tcp port, Smtp, Imap • Uri: single uri and uri groups 등등….
  • 19. • 대시보드를 위한 HealthChecks.UI • 응답 개체에 대한 deserialization 등을 지원하는 • 기본적으로 SQLite를 사용하여 상태 변화를 저장(변경 가능) • 제공하는 패키지 이외의, Customize한 패키지 작성 후, DI를 통해 사용 가능 • Configuration에 오케스트레이션 컨테이너 및 인스턴스 들에 대한 선언 가능 • 간단한 WebHook 연계
  • 22. ASP.NET Core 프로젝트 생성 - 버전 3.0 선택
  • 26. Startup 클래스의 ConfigureServices 메서드에 서비스 등록
  • 30. 4. 각 플랫폼 별 Deployment
  • 32. 5. Customize한 패키지 개발 및 연계
  • 34. 6. 기타 시나리오 소개 (Azure DevOps및 Kubernetes)