SlideShare a Scribd company logo
https://doc.co/c7REb6
Azure App Service로
서비스 탄탄하게 관리하기
Azure Boot Camp 2017 @ MARU180
https://doc.co/c7REb6 (대소문자구분함)
김영재
2017-04-22
https://doc.co/c7REb6
안녕하세요
• 바로풀기 CTO
• 100% Azure PaaS 구현
• Azure MVP (2014~)
• 대부분의 시간
• C#
• Azure
• Android
• Python
• iOS
• 커피
• 맥주
https://doc.co/c7REb6
잠깐 책 소개
• 책 난이도 ★ ★☆☆☆
• 무작정따라하기 형식
• 스크린샷 많음
• 얼마나 팔린지 모름
https://doc.co/c7REb6
Azure App Service
• Azure의 1순위 서비스 중 하나: WAS 그 이상
• 기반은 IIS의 서브셋으로 구현 (이제는 IIS와 많이 달라짐. 보안/샌드박싱 때문)
• Linux Docker 지원 시작
• 발전 과정
• WebSites: 단순 IIS스러운 WAS + WebJobs
• App Service v1: 4개의 App 카테고리로 개편 (Web, Mobile, API, Logic)
• App Service v2: Azure Function, 부하분산 강화, Linux Docker, …
WebSites App Service v1 App Service v2
https://doc.co/c7REb6
앱 서비스와 아이들
• App Service: 개별 프로세스
- ~ Plan: 한 개의 서버에 다 담을 수 있음
 가격은 서버 1대만!
- Web App: 프론트엔드
- WebJobs: Web App의 은밀한 보조
- Api App: Swagger 쓰면 편리함
- Logic App: 워크플로우 구성
- Function: WebJob을 꾸려서 만든
Serverless (Lambda보다 간편함)
- Mobile App: 푸시/SocialLogin/테이블
https://doc.co/c7REb6
Azure
기본구조
앱 서비스 계획: 인스턴스1
Web App 1: Azure-Demo
Logic App: Example1
…
Web App 2: Azure-Saturday
Load
Balancer
앱 서비스 계획: 인스턴스2
(위와 같음)
사용자
https://doc.co/c7REb6
본론에 들어가기 전에
• App Service 구조를 깊게 살펴봅시다
• https://youngjaekim.wordpress.com/2017/04/03/번역-azure-앱서비스-
구조를-깊게-살펴봅시다/
• App Service Environment의 네트워크 구성
• https://msdn.microsoft.com/en-us/magazine/mt797651
• 왜 이것을 아는 것이 중요한가?
• 장애 또는 특이 상황에 대해 보다 정교한 이해와 대응이 가능
https://doc.co/c7REb6
App Service 구조
• 언어를 만드는 언어가 있듯, PaaS를 만드는 PaaS가 있음.
• 내부는 Azure Cloud Service (classic)으로 구현됨
• 약 1,000개의 서버를 하나의 ‘확장 단위’로 관리함
• 확장단위 내에 구성요소 및 역할
• 프론트엔드: Layer-7 로드밸런서 + SSL 핸들링
• 웹 작업자(worker): 유저의 앱을 구동하는 런타임
• 파일 서버: Azure Blob Storage를 네트워크디스크로 마운트하는 역할
• API 콘트롤러: 앱의 실행/정지 등의 명령을 처리
• Publisher: 앱 배포용 FTP 프로토콜을 제공 (서비스용 아님)
• SQL: 앱 구동 메타데이터 저장
• Data Role: 내부 캐시 (유저가 쓰는게 아님)
https://doc.co/c7REb6
그림으로 그려보면
프론트엔드
로드밸런서
Worker Pool
내부 관리용 API 콘트롤러
인바운드
트래픽
캐시(Data Role)
Blob Storage
File Server
(드라이브 마운트)
메타데이타
저장
앱
Cloud Service
런타임
Worker
https://doc.co/c7REb6
App Service 구조
• Worker(앱 런타임)가 이미 돌고 있는 상태에서 확장 명령에 따라
앱을 복제하여 순식간에 확장  마법같은건 없음
• 확장/축소 완료 후 트래픽을 분산하므로 유실 없음
https://doc.co/c7REb6
App Service의 네트워크 특성
• 1개의 인/아웃바운드 겸용 + 4개의 아웃바운드 전용=총 5개의 IP
• 고정IP 할당 가능. 앱을 정지하면 다른 IP로 바뀔 수 있음.
• 네트워크주소변환(Network Address Translation; NAT) 테이블의 한계
• B1/S1/P1 인스턴스 당 1,920 연결
• B2/S2/P2 인스턴스 당 3,968 연결
• B3/S3/P3 인스턴스 당 8,064 연결
• 앱 서비스 환경(ASE) 당 최대 64K 연결
https://doc.co/c7REb6
App Service 구조
• App Service Environment (ASE)
• 독립된 확장 단위를 원할 때. Premium tier만 사용 가능
• 일종의 서버팜. 여러 개의 ASP를 호스팅
• 온전히 독립된 네트워크 인프라 설정 가능
• 최대 100개의 ASP 인스턴스 호스팅 가능
• 여러 지역에 걸쳐서 설정 가능 (네트워크, 부하분산 등)
• App Service Plan (ASP)
• 가상컴퓨터 확장세트(Virtual Machine Scale Set)라고 이해하면 됩니다
• 확장 단위 (중요)
• Region, Scale instances, Instance size (Small, Medium, Large), SKU (Free, Shared, Basic, Standard, Premium)
• VNET 설정 단위
• 리소스가 허용하는 한 여러 개의 App을 호스팅
• App
• 유저가 만든 앱 하나.
• .NET, Python, Node.js, JVM, …
https://doc.co/c7REb6
App Service 이해 ≒ App Service Plan 이해
• 하나의 ASP에 앱 2개를 띄우면 두 App 트래픽을 같은 ASP가 받음
• ASP 2개의 인스턴스로 수평 확장하면 App도 2배 (App 4개)
• VM에 여러 was 프로세스를 돌린다고 이해하는게 편함
• App은 [같은 resource group + 같은 region] 안에서만 ASP 이동 가능
https://doc.co/c7REb6
소결론
App Service에서 가장 많이 신경써줄 것은
https://doc.co/c7REb6
App Service로 서비스 관리
DevOps 까지는 아니고..그냥…관리
https://doc.co/c7REb6
일단 WebApp을 하나 만듭시다
• 추가(Add) > 웹앱(Web App)
• 앱 서비스 계획(App Service Plan): 우리는 배포슬롯(Deployment Slot)이라는
기능을 사용할 것이므로 표준 계층(Standard tier)으로 만듭니다.
• 만들자마자 기본 html 페이지가 추가되어 있습니다.
• App Service Plan 이름은 뭐로 하나요?
• {프로젝트명-Heavy} 형식으로 하면 관리하기 좋음 (나름 시행착오의 결과…)
• Heavy, Light, Free
https://doc.co/c7REb6
App Service 하나를 다 이해못할 정도
• ‘평범한 웹서비스 하나’를 띄우는데 어마어마하게 많은 기능 제공
• ‘요구사항 받아서 만들다보니…’
• 주요 기능
• SSL, CORS, custom domain
• Swagger 지원 및 Power BI 연동
• 지속통합/배포 제공: GitHub push 만으로 런칭
• 백그라운드 전용 프로세스 및 관리 제공: WebJobs
• 엔드포인트 모니터링 제공: Application Insights
• 스케줄 및 각종 규칙에 따른 수평/수직 확장
• 자체적으로 MySQL 인스턴스 제공
• Table, Mobile Push 등 다른 서비스 연계
• 등등등…
https://doc.co/c7REb6
참고
• 많은 기능은 App Service 외에 별도의 서비스로도 존재.
• 기능이 조금씩 다르므로 취향에 맞게 선택해서 사용하면 좋음.
• Alerts: 이상 상황에 대한 알림
• 대안: Application Insights / NewRelic 등
• Traffic Routing
• 대안: Azure Traffic Manager
• Continuous Deployment
• 대안: CI Builder 소프트웨어/서비스 (TeamCity, Jenkins, AppVeyor, Travis 등)
• Authentication
• 대안: Auth0.com, 설치형 Oauth 서버 등
https://doc.co/c7REb6
배포 옵션(Continuous Deployment)
• Git 기반은 모두 가능
• Dropbox, OneDrive의 정적 파일도 가능 (뭐 이런 것 까지…)
https://doc.co/c7REb6
배포 슬롯(Deployment Slot)
• 교환(SWAP) 기능을 제공
• 테스트용, A/B테스트용 등으로 활용
https://doc.co/c7REb6
고급 도구(Advanced Tools) 프로젝트 kudu
• 파일시스템을 터미널 안띄우고 보고 수정할 수 있음
• 각종 환경변수 및 프로세스 확인
• 급할 때는 로그도 바로 확인 가능
• 웹콘솔 기능으로 파이썬 패키지 설치도 가능
https://doc.co/c7REb6프로덕션에서 테스트(Testing in Production)
slot 별 라우팅
• Slot이 여러 개일 때 일정 비율로 분산: A/B 테스트 가능
• “?x-ms-routing-name={slot}”을 url에 넣으면 해당 슬롯으로만 이동
• 참고: 슬롯 삭제는 우클릭>Delete
A0
B0
A1 A2
B1 B2
2% ↓
15% ↑User
https://doc.co/c7REb6
경고(Alerts)
• 조건에 따라 메시지를 보내는 경고 장치
https://doc.co/c7REb6
인스턴스당 매트릭(Metrics per Instance)
App Service Plan
• App Service 관리의 가장 중요한 것은?  App Service Plan 쪼개기
• App Service Plan을 어떻게 나눌지를 판단하는 근거.
• 주의: 이 메뉴는 App Service Plan이 아닌 개별 App 메뉴 안에 있음.
https://doc.co/c7REb6
Application Insights
• 강력추천 텔레메트리
• 끝점 별 응답시간
• 똑똑한 자동 알림
• 매 주 요약 이메일
• 무료도 훌륭함
• 단점: 보존기한 90일
• 좋은 조합
• ApplicationInsights + NewRelic
https://doc.co/c7REb6
Logic App으로 모니터링
• “끝점을 모니터링하다 응답 없으면 Slack으로 알림을 보냅시다”
• 주안점
• 콘솔 없음
• 코딩 없음
• 100% PaaS
• 결과 예시
Azure WebApp 생성
Azure Logic App
Azure Scheduler
동작 확인
https://doc.co/c7REb6
경품 퀴즈
• 다음 중 App Service Plan에서 관리하지 않는 것은?
• 인스턴스 개수
• 인스턴스 컴퓨팅파워
• 호스팅하는 앱의 실행과 정지
• 인스턴스의 VNET 설정
https://doc.co/c7REb6
Thanks You
Q&A

More Related Content

What's hot

실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
Sunggon Song
 
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
YongSung Yoon
 
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
Amazon Web Services Korea
 
Certificate 와 Provisioning Profile
Certificate 와 Provisioning ProfileCertificate 와 Provisioning Profile
Certificate 와 Provisioning Profile
ssuser9054541
 
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
충섭 김
 
[프로그라피 정기 세션] Github으로 협업하기
[프로그라피 정기 세션] Github으로 협업하기[프로그라피 정기 세션] Github으로 협업하기
[프로그라피 정기 세션] Github으로 협업하기
Eunhyang Kim
 
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
Kwangyoun Jung
 
API Development with Laravel
API Development with LaravelAPI Development with Laravel
API Development with Laravel
Michael Peacock
 
My Way, Your Way
My Way, Your WayMy Way, Your Way
My Way, Your Way
Chris Ohk
 
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
Amazon Web Services Korea
 
[25]안드로이드에서 코루틴은 어떻게 적용할 수 있을까?: 코루틴 적용 및 ReactiveX(RxJava/RxKotlin)와 비교한다면?
[25]안드로이드에서 코루틴은 어떻게 적용할 수 있을까?: 코루틴 적용 및 ReactiveX(RxJava/RxKotlin)와 비교한다면?[25]안드로이드에서 코루틴은 어떻게 적용할 수 있을까?: 코루틴 적용 및 ReactiveX(RxJava/RxKotlin)와 비교한다면?
[25]안드로이드에서 코루틴은 어떻게 적용할 수 있을까?: 코루틴 적용 및 ReactiveX(RxJava/RxKotlin)와 비교한다면?
NAVER Engineering
 
Build RESTful API Using Express JS
Build RESTful API Using Express JSBuild RESTful API Using Express JS
Build RESTful API Using Express JS
Cakra Danu Sedayu
 
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
devCAT Studio, NEXON
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guide
Sungchul Park
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
if kakao
 
오픈소스 GIS의 이해 - OSgeo Projects 중심
오픈소스 GIS의 이해 - OSgeo Projects 중심오픈소스 GIS의 이해 - OSgeo Projects 중심
오픈소스 GIS의 이해 - OSgeo Projects 중심
MinPa Lee
 
Swagger - make your API accessible
Swagger - make your API accessibleSwagger - make your API accessible
Swagger - make your API accessible
Victor Trakhtenberg
 
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018 서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018 Amazon Web Services Korea
 
The MEAN Stack
The MEAN StackThe MEAN Stack
The MEAN Stack
Md. Ziaul Haq
 
Light Tutorial Django
Light Tutorial DjangoLight Tutorial Django
Light Tutorial Django
Kwangyoun Jung
 

What's hot (20)

실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
 
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
 
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
 
Certificate 와 Provisioning Profile
Certificate 와 Provisioning ProfileCertificate 와 Provisioning Profile
Certificate 와 Provisioning Profile
 
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
 
[프로그라피 정기 세션] Github으로 협업하기
[프로그라피 정기 세션] Github으로 협업하기[프로그라피 정기 세션] Github으로 협업하기
[프로그라피 정기 세션] Github으로 협업하기
 
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
 
API Development with Laravel
API Development with LaravelAPI Development with Laravel
API Development with Laravel
 
My Way, Your Way
My Way, Your WayMy Way, Your Way
My Way, Your Way
 
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
 
[25]안드로이드에서 코루틴은 어떻게 적용할 수 있을까?: 코루틴 적용 및 ReactiveX(RxJava/RxKotlin)와 비교한다면?
[25]안드로이드에서 코루틴은 어떻게 적용할 수 있을까?: 코루틴 적용 및 ReactiveX(RxJava/RxKotlin)와 비교한다면?[25]안드로이드에서 코루틴은 어떻게 적용할 수 있을까?: 코루틴 적용 및 ReactiveX(RxJava/RxKotlin)와 비교한다면?
[25]안드로이드에서 코루틴은 어떻게 적용할 수 있을까?: 코루틴 적용 및 ReactiveX(RxJava/RxKotlin)와 비교한다면?
 
Build RESTful API Using Express JS
Build RESTful API Using Express JSBuild RESTful API Using Express JS
Build RESTful API Using Express JS
 
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guide
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
오픈소스 GIS의 이해 - OSgeo Projects 중심
오픈소스 GIS의 이해 - OSgeo Projects 중심오픈소스 GIS의 이해 - OSgeo Projects 중심
오픈소스 GIS의 이해 - OSgeo Projects 중심
 
Swagger - make your API accessible
Swagger - make your API accessibleSwagger - make your API accessible
Swagger - make your API accessible
 
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018 서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
서버리스 웹 애플리케이션 구축 방법론::김현수:: AWS Summit Seoul 2018
 
The MEAN Stack
The MEAN StackThe MEAN Stack
The MEAN Stack
 
Light Tutorial Django
Light Tutorial DjangoLight Tutorial Django
Light Tutorial Django
 

Similar to [Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기

코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개
태준 문
 
JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop
rockplace
 
Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리
Youngjae Kim
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_s
Seong-Bok Lee
 
Aws serverless services
Aws serverless servicesAws serverless services
Aws serverless services
Daniel Jung
 
Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현
병태 정
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure
rockplace
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)uEngine Solutions
 
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
Jongwon Han
 
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
고포릿 default
 
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
rockplace
 
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
Jongwon Han
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기
Jaewoo Ahn
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AI
Lablup Inc.
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포
KwangSeob Jeong
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
수보 김
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
흥래 김
 
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 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
 
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
Jongin Lee
 
세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf
Jaesuk Ahn
 

Similar to [Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기 (20)

코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개
 
JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop
 
Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_s
 
Aws serverless services
Aws serverless servicesAws serverless services
Aws serverless services
 
Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
 
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
 
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
 
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
 
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AI
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
 
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
 
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
 
세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf
 

[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기

  • 1. https://doc.co/c7REb6 Azure App Service로 서비스 탄탄하게 관리하기 Azure Boot Camp 2017 @ MARU180 https://doc.co/c7REb6 (대소문자구분함) 김영재 2017-04-22
  • 2. https://doc.co/c7REb6 안녕하세요 • 바로풀기 CTO • 100% Azure PaaS 구현 • Azure MVP (2014~) • 대부분의 시간 • C# • Azure • Android • Python • iOS • 커피 • 맥주
  • 3. https://doc.co/c7REb6 잠깐 책 소개 • 책 난이도 ★ ★☆☆☆ • 무작정따라하기 형식 • 스크린샷 많음 • 얼마나 팔린지 모름
  • 4. https://doc.co/c7REb6 Azure App Service • Azure의 1순위 서비스 중 하나: WAS 그 이상 • 기반은 IIS의 서브셋으로 구현 (이제는 IIS와 많이 달라짐. 보안/샌드박싱 때문) • Linux Docker 지원 시작 • 발전 과정 • WebSites: 단순 IIS스러운 WAS + WebJobs • App Service v1: 4개의 App 카테고리로 개편 (Web, Mobile, API, Logic) • App Service v2: Azure Function, 부하분산 강화, Linux Docker, … WebSites App Service v1 App Service v2
  • 5. https://doc.co/c7REb6 앱 서비스와 아이들 • App Service: 개별 프로세스 - ~ Plan: 한 개의 서버에 다 담을 수 있음  가격은 서버 1대만! - Web App: 프론트엔드 - WebJobs: Web App의 은밀한 보조 - Api App: Swagger 쓰면 편리함 - Logic App: 워크플로우 구성 - Function: WebJob을 꾸려서 만든 Serverless (Lambda보다 간편함) - Mobile App: 푸시/SocialLogin/테이블
  • 6. https://doc.co/c7REb6 Azure 기본구조 앱 서비스 계획: 인스턴스1 Web App 1: Azure-Demo Logic App: Example1 … Web App 2: Azure-Saturday Load Balancer 앱 서비스 계획: 인스턴스2 (위와 같음) 사용자
  • 7. https://doc.co/c7REb6 본론에 들어가기 전에 • App Service 구조를 깊게 살펴봅시다 • https://youngjaekim.wordpress.com/2017/04/03/번역-azure-앱서비스- 구조를-깊게-살펴봅시다/ • App Service Environment의 네트워크 구성 • https://msdn.microsoft.com/en-us/magazine/mt797651 • 왜 이것을 아는 것이 중요한가? • 장애 또는 특이 상황에 대해 보다 정교한 이해와 대응이 가능
  • 8. https://doc.co/c7REb6 App Service 구조 • 언어를 만드는 언어가 있듯, PaaS를 만드는 PaaS가 있음. • 내부는 Azure Cloud Service (classic)으로 구현됨 • 약 1,000개의 서버를 하나의 ‘확장 단위’로 관리함 • 확장단위 내에 구성요소 및 역할 • 프론트엔드: Layer-7 로드밸런서 + SSL 핸들링 • 웹 작업자(worker): 유저의 앱을 구동하는 런타임 • 파일 서버: Azure Blob Storage를 네트워크디스크로 마운트하는 역할 • API 콘트롤러: 앱의 실행/정지 등의 명령을 처리 • Publisher: 앱 배포용 FTP 프로토콜을 제공 (서비스용 아님) • SQL: 앱 구동 메타데이터 저장 • Data Role: 내부 캐시 (유저가 쓰는게 아님)
  • 9. https://doc.co/c7REb6 그림으로 그려보면 프론트엔드 로드밸런서 Worker Pool 내부 관리용 API 콘트롤러 인바운드 트래픽 캐시(Data Role) Blob Storage File Server (드라이브 마운트) 메타데이타 저장 앱 Cloud Service 런타임 Worker
  • 10. https://doc.co/c7REb6 App Service 구조 • Worker(앱 런타임)가 이미 돌고 있는 상태에서 확장 명령에 따라 앱을 복제하여 순식간에 확장  마법같은건 없음 • 확장/축소 완료 후 트래픽을 분산하므로 유실 없음
  • 11. https://doc.co/c7REb6 App Service의 네트워크 특성 • 1개의 인/아웃바운드 겸용 + 4개의 아웃바운드 전용=총 5개의 IP • 고정IP 할당 가능. 앱을 정지하면 다른 IP로 바뀔 수 있음. • 네트워크주소변환(Network Address Translation; NAT) 테이블의 한계 • B1/S1/P1 인스턴스 당 1,920 연결 • B2/S2/P2 인스턴스 당 3,968 연결 • B3/S3/P3 인스턴스 당 8,064 연결 • 앱 서비스 환경(ASE) 당 최대 64K 연결
  • 12. https://doc.co/c7REb6 App Service 구조 • App Service Environment (ASE) • 독립된 확장 단위를 원할 때. Premium tier만 사용 가능 • 일종의 서버팜. 여러 개의 ASP를 호스팅 • 온전히 독립된 네트워크 인프라 설정 가능 • 최대 100개의 ASP 인스턴스 호스팅 가능 • 여러 지역에 걸쳐서 설정 가능 (네트워크, 부하분산 등) • App Service Plan (ASP) • 가상컴퓨터 확장세트(Virtual Machine Scale Set)라고 이해하면 됩니다 • 확장 단위 (중요) • Region, Scale instances, Instance size (Small, Medium, Large), SKU (Free, Shared, Basic, Standard, Premium) • VNET 설정 단위 • 리소스가 허용하는 한 여러 개의 App을 호스팅 • App • 유저가 만든 앱 하나. • .NET, Python, Node.js, JVM, …
  • 13. https://doc.co/c7REb6 App Service 이해 ≒ App Service Plan 이해 • 하나의 ASP에 앱 2개를 띄우면 두 App 트래픽을 같은 ASP가 받음 • ASP 2개의 인스턴스로 수평 확장하면 App도 2배 (App 4개) • VM에 여러 was 프로세스를 돌린다고 이해하는게 편함 • App은 [같은 resource group + 같은 region] 안에서만 ASP 이동 가능
  • 15. https://doc.co/c7REb6 App Service로 서비스 관리 DevOps 까지는 아니고..그냥…관리
  • 16. https://doc.co/c7REb6 일단 WebApp을 하나 만듭시다 • 추가(Add) > 웹앱(Web App) • 앱 서비스 계획(App Service Plan): 우리는 배포슬롯(Deployment Slot)이라는 기능을 사용할 것이므로 표준 계층(Standard tier)으로 만듭니다. • 만들자마자 기본 html 페이지가 추가되어 있습니다. • App Service Plan 이름은 뭐로 하나요? • {프로젝트명-Heavy} 형식으로 하면 관리하기 좋음 (나름 시행착오의 결과…) • Heavy, Light, Free
  • 17. https://doc.co/c7REb6 App Service 하나를 다 이해못할 정도 • ‘평범한 웹서비스 하나’를 띄우는데 어마어마하게 많은 기능 제공 • ‘요구사항 받아서 만들다보니…’ • 주요 기능 • SSL, CORS, custom domain • Swagger 지원 및 Power BI 연동 • 지속통합/배포 제공: GitHub push 만으로 런칭 • 백그라운드 전용 프로세스 및 관리 제공: WebJobs • 엔드포인트 모니터링 제공: Application Insights • 스케줄 및 각종 규칙에 따른 수평/수직 확장 • 자체적으로 MySQL 인스턴스 제공 • Table, Mobile Push 등 다른 서비스 연계 • 등등등…
  • 18. https://doc.co/c7REb6 참고 • 많은 기능은 App Service 외에 별도의 서비스로도 존재. • 기능이 조금씩 다르므로 취향에 맞게 선택해서 사용하면 좋음. • Alerts: 이상 상황에 대한 알림 • 대안: Application Insights / NewRelic 등 • Traffic Routing • 대안: Azure Traffic Manager • Continuous Deployment • 대안: CI Builder 소프트웨어/서비스 (TeamCity, Jenkins, AppVeyor, Travis 등) • Authentication • 대안: Auth0.com, 설치형 Oauth 서버 등
  • 19. https://doc.co/c7REb6 배포 옵션(Continuous Deployment) • Git 기반은 모두 가능 • Dropbox, OneDrive의 정적 파일도 가능 (뭐 이런 것 까지…)
  • 20. https://doc.co/c7REb6 배포 슬롯(Deployment Slot) • 교환(SWAP) 기능을 제공 • 테스트용, A/B테스트용 등으로 활용
  • 21. https://doc.co/c7REb6 고급 도구(Advanced Tools) 프로젝트 kudu • 파일시스템을 터미널 안띄우고 보고 수정할 수 있음 • 각종 환경변수 및 프로세스 확인 • 급할 때는 로그도 바로 확인 가능 • 웹콘솔 기능으로 파이썬 패키지 설치도 가능
  • 22. https://doc.co/c7REb6프로덕션에서 테스트(Testing in Production) slot 별 라우팅 • Slot이 여러 개일 때 일정 비율로 분산: A/B 테스트 가능 • “?x-ms-routing-name={slot}”을 url에 넣으면 해당 슬롯으로만 이동 • 참고: 슬롯 삭제는 우클릭>Delete A0 B0 A1 A2 B1 B2 2% ↓ 15% ↑User
  • 23. https://doc.co/c7REb6 경고(Alerts) • 조건에 따라 메시지를 보내는 경고 장치
  • 24. https://doc.co/c7REb6 인스턴스당 매트릭(Metrics per Instance) App Service Plan • App Service 관리의 가장 중요한 것은?  App Service Plan 쪼개기 • App Service Plan을 어떻게 나눌지를 판단하는 근거. • 주의: 이 메뉴는 App Service Plan이 아닌 개별 App 메뉴 안에 있음.
  • 25. https://doc.co/c7REb6 Application Insights • 강력추천 텔레메트리 • 끝점 별 응답시간 • 똑똑한 자동 알림 • 매 주 요약 이메일 • 무료도 훌륭함 • 단점: 보존기한 90일 • 좋은 조합 • ApplicationInsights + NewRelic
  • 26. https://doc.co/c7REb6 Logic App으로 모니터링 • “끝점을 모니터링하다 응답 없으면 Slack으로 알림을 보냅시다” • 주안점 • 콘솔 없음 • 코딩 없음 • 100% PaaS • 결과 예시 Azure WebApp 생성 Azure Logic App Azure Scheduler 동작 확인
  • 27. https://doc.co/c7REb6 경품 퀴즈 • 다음 중 App Service Plan에서 관리하지 않는 것은? • 인스턴스 개수 • 인스턴스 컴퓨팅파워 • 호스팅하는 앱의 실행과 정지 • 인스턴스의 VNET 설정

Editor's Notes

  1. https://blog.kloud.com.au/2016/04/05/when-to-use-an-azure-app-service-environment/