SlideShare ist ein Scribd-Unternehmen logo
1 von 28
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

Weitere ähnliche Inhalte

Was ist angesagt?

Azure App Service
Azure App ServiceAzure App Service
Azure App ServiceBizTalk360
 
AWS vs Azure vs Google Cloud Storage Deep Dive
AWS vs Azure vs Google Cloud Storage Deep DiveAWS vs Azure vs Google Cloud Storage Deep Dive
AWS vs Azure vs Google Cloud Storage Deep DiveRightScale
 
Introdução a DevOps e Continuous delivery agileday
Introdução a DevOps e Continuous delivery   agiledayIntrodução a DevOps e Continuous delivery   agileday
Introdução a DevOps e Continuous delivery agiledayCarlos Felippe Cardoso
 
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...confluent
 
Drive business outcomes using Azure Devops
Drive business outcomes using Azure DevopsDrive business outcomes using Azure Devops
Drive business outcomes using Azure DevopsBelatrix Software
 
Azure Storage
Azure StorageAzure Storage
Azure StorageMustafa
 
Microsoft DevOps Solution - DevOps
Microsoft DevOps Solution - DevOps  Microsoft DevOps Solution - DevOps
Microsoft DevOps Solution - DevOps Chetan Gordhan
 
오비맥주 사례로 보는 엔터프라이즈 데이터센터의 클라우드 마이그레이션
오비맥주 사례로 보는 엔터프라이즈 데이터센터의 클라우드 마이그레이션오비맥주 사례로 보는 엔터프라이즈 데이터센터의 클라우드 마이그레이션
오비맥주 사례로 보는 엔터프라이즈 데이터센터의 클라우드 마이그레이션BESPIN GLOBAL
 
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안NAVER D2
 
[오픈소스컨설팅]인프라 자동화 도구 Chef
[오픈소스컨설팅]인프라 자동화 도구  Chef[오픈소스컨설팅]인프라 자동화 도구  Chef
[오픈소스컨설팅]인프라 자동화 도구 ChefOpen Source Consulting
 
The Power of Azure DevOps
The Power of Azure DevOpsThe Power of Azure DevOps
The Power of Azure DevOpsJeff Bramwell
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+OpsShalu Ahuja
 
[MeetUp][3rd] 아무도 이야기하지 않는 클라우드 3사 솔직 비교
[MeetUp][3rd] 아무도 이야기하지 않는 클라우드 3사 솔직 비교[MeetUp][3rd] 아무도 이야기하지 않는 클라우드 3사 솔직 비교
[MeetUp][3rd] 아무도 이야기하지 않는 클라우드 3사 솔직 비교InfraEngineer
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인VMware Tanzu Korea
 
10 Business Advantages of DevOps
10 Business Advantages of DevOps10 Business Advantages of DevOps
10 Business Advantages of DevOpscliqtechno
 
Android組込み開発基礎コース Armadillo-440編
Android組込み開発基礎コース Armadillo-440編Android組込み開発基礎コース Armadillo-440編
Android組込み開発基礎コース Armadillo-440編OESF Education
 
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...Edureka!
 

Was ist angesagt? (20)

Azure App Service
Azure App ServiceAzure App Service
Azure App Service
 
AWS vs Azure vs Google Cloud Storage Deep Dive
AWS vs Azure vs Google Cloud Storage Deep DiveAWS vs Azure vs Google Cloud Storage Deep Dive
AWS vs Azure vs Google Cloud Storage Deep Dive
 
Introdução a DevOps e Continuous delivery agileday
Introdução a DevOps e Continuous delivery   agiledayIntrodução a DevOps e Continuous delivery   agileday
Introdução a DevOps e Continuous delivery agileday
 
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
 
Drive business outcomes using Azure Devops
Drive business outcomes using Azure DevopsDrive business outcomes using Azure Devops
Drive business outcomes using Azure Devops
 
Azure Storage
Azure StorageAzure Storage
Azure Storage
 
Microsoft DevOps Solution - DevOps
Microsoft DevOps Solution - DevOps  Microsoft DevOps Solution - DevOps
Microsoft DevOps Solution - DevOps
 
Azure App Service Deep Dive
Azure App Service Deep DiveAzure App Service Deep Dive
Azure App Service Deep Dive
 
Azure storage
Azure storageAzure storage
Azure storage
 
오비맥주 사례로 보는 엔터프라이즈 데이터센터의 클라우드 마이그레이션
오비맥주 사례로 보는 엔터프라이즈 데이터센터의 클라우드 마이그레이션오비맥주 사례로 보는 엔터프라이즈 데이터센터의 클라우드 마이그레이션
오비맥주 사례로 보는 엔터프라이즈 데이터센터의 클라우드 마이그레이션
 
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
 
[오픈소스컨설팅]인프라 자동화 도구 Chef
[오픈소스컨설팅]인프라 자동화 도구  Chef[오픈소스컨설팅]인프라 자동화 도구  Chef
[오픈소스컨설팅]인프라 자동화 도구 Chef
 
The Power of Azure DevOps
The Power of Azure DevOpsThe Power of Azure DevOps
The Power of Azure DevOps
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+Ops
 
[MeetUp][3rd] 아무도 이야기하지 않는 클라우드 3사 솔직 비교
[MeetUp][3rd] 아무도 이야기하지 않는 클라우드 3사 솔직 비교[MeetUp][3rd] 아무도 이야기하지 않는 클라우드 3사 솔직 비교
[MeetUp][3rd] 아무도 이야기하지 않는 클라우드 3사 솔직 비교
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
 
10 Business Advantages of DevOps
10 Business Advantages of DevOps10 Business Advantages of DevOps
10 Business Advantages of DevOps
 
Android組込み開発基礎コース Armadillo-440編
Android組込み開発基礎コース Armadillo-440編Android組込み開発基礎コース Armadillo-440編
Android組込み開発基礎コース Armadillo-440編
 
OpenShift Enterprise
OpenShift EnterpriseOpenShift Enterprise
OpenShift Enterprise
 
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
 

Ähnlich wie [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_sSeong-Bok Lee
 
Aws serverless services
Aws serverless servicesAws serverless services
Aws serverless servicesDaniel 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
 
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.AILablup 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 FunctionsJongin Lee
 
세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdfJaesuk Ahn
 
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 HostingFirebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting승빈이네 공작소
 

Ähnlich wie [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 사용
 
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
 
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 HostingFirebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
 

[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 설정

Hinweis der Redaktion

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