mvp comcamp. azure websites와 mobile service로 웹서비스 시작하기

37
Azure WebSites & Mobile Service로 웹서비스 시작하기 Youngjae Kim, Azure MVP 2014-11-18

Upload: youngjae-kim

Post on 14-Jul-2015

681 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

Azure WebSites & Mobile Service로 웹서비스 시작하기

Youngjae Kim, Azure MVP

2014-11-18

Page 2: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

저는요

• 직원 8명의 작은 웹서비스 스타트업 개발자• 개발자5+디자이너1+마케팅1+대표1

• 서비스명: 바로풀기 (바풀)• 중고등학생 학습분야 소셜앱서비스• 설립 3년차, 중고등 교육업계 2위 1위는 EBS…어쩌지.

• Azure로 100% 운영 중• 아직 소규모 사이트로 WebSites, VM, Queue 등을 적극 활용 중.

[email protected]

Page 3: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

오늘 다룰 것들

WebSites Mobile Service etc.

Page 4: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

이 세미나의 수준

• 들으면 유익해요• 클라우드가 뭐임?• Azure가 그저 궁금하다.• Azure로 PaaS, BaaS를 구성할까 고민중이다.• Azure WebSites 좋다는데 직접 해보기엔 손가락이 결린다.

• 안 들어도 좋지만 나가지는 마세요• Azure를 3개월 이상 다뤄봤다.• Azure로 실제 서비스 중이다.• 야근 중이다.• 크리스마스가 외로울거다

Page 5: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

이거 듣고 뭘 할 수 있나요?

• Azure WebSites로 서버를 돌릴 수 있어요.

• Azure Mobile Service로 안드로이드앱 연동을 할 수 있어요.

• 접속 폭증으로 놀라지 않을 수 있어요.

Page 6: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

시작하는 이야기

Page 7: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

Cloud Era

• 돈을 주고 운용 편의와 속도를 취한다.• TCO 계산법 → 클라우드 계산법.

• 중소규모 회사에는 클라우드가 더 적절하다고 판단.• 운용 부담의 대부분을 비용으로 처리 가능.

• 보다 제품 자체에 집중할 수 있음.

• OS 업데이트 신경쓰고 IP 맞추기는 아이고 의미 없다.

• 빨리 끝내고 삼겹살 회식하면 그게 좋은 것. 회식하고 와서 야근하는건 함정.

• 사용 목적만 맞으면 비용도 절약.• AWS가 성공적으로 생태계를 조성하고 있음을 증명.

• 물론 초특급 개발자가 직접 다 하면 더더욱 절약.OS? 패치? 리부팅?

Page 8: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

PaaS

• OS를 직접 고려하지 않는다.

• 플랫폼 위에 올라가는 앱에 대해서만 사용자가 고민하면 되며, 확장에 대해서 플랫폼의 지원 범위에 제약.

• 제대로 쓰려면• 가용성: 얼마나 확장성/성능이 좋은 플랫폼인지를 파악.

• 사용성: OS 고민을 덜어준대신 얻는 개발 편의가 무엇인가.

• 경제성: 운용비+노력비 > 클라우드 비용?

Page 9: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

BaaS

• 기존 서비스를 적당히 모아서 API로 제공하는 형태.

• 모든 것이 서비스의 집합: 푸시, 인증, 데이터 입출력 등.

• 서비스가 곧 인프라.

• 소규모 온라인 게임에서 선호됨.

• 제대로 알고 쓰려면• 기능: 얼마나 다양한 서비스를 제공하는가.

• 연결성: 추가 기능 확장이 얼마나 손쉬운가.

• 투명성: 쉽게 쓰라고 만든 것을 뜯어볼 때 얼마나 이해하기 쉬운가.

• 근면성: 관련 기능 업데이트가 얼마나 빨리 반영되는가.

Page 10: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

Azure WebSites

Page 11: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

일단 데모부터

Page 12: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

제품 철학

• 웹서비스를 만드는데 클릭만으로 어디까지 가능한가

• 웹서비스에 대한 공통분모를 가급적 많이 포함하는 도약대

• 오묘한 제품• WAS (Web Application Server)도 있고,• CI (Continuous Integration) 기능도 있고,• FTP도 있고,• 오토스케일도 있고,• 통계 기능도 있고,• 웹소켓도 있고…

Page 13: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

추천 용도

분류 평범한 웹사이트 실시간성 웹사이트 작업처리형 웹사이트

주요 역할 전통적인 웹어플리케이션 웹소켓 입력자료의 가공 처리

구성 요소 정적페이지, CRUD 처리 채팅 또는 메시징 게임스코어, 설문조사

중요 요소 REST+SPA 동시접속, 세션유지 스케줄링, Queue

Azure 기능조합 Azure WebSites+Azure SQL Azure WebSites+Azure Table Azure WebSites+WebJobs

사용 기술 ASP.NET, dJango, PHP SignalR + ASP.NET C#, Python, PHP, JavaScript, bash 등

Azure Web Sites + PaaS 만으로 모두 가능

Page 14: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

Azure WebSites는 단순해요

자유도, 비용, 복잡도 편의, 개발속도

Page 15: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

Azure WebSites Architecture

• IIS• 작은 데이터베이스• 로드밸런싱• 스토리지• 원격 데스크톱• VCS Deployment

Metering

DWAS*

Site (W3WP.exe)Site (W3WP.exe)Site (W3WP.exe)

* Dynamic Web Activation Service(설정된 tier로 배포, 런칭시키는 역할)

Page 16: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

Azure WebSites

• 서비스 구성1. 제한없음 ≠ 무료.

2. SSL이 기본적으론 있음.

3. CNAME 적용 여부

4. CNAME+SSL

5. 마우스 드래그만으로 확장

6. 더 편리한 Auto-scale

• 추천 tier: “기본”

5

1

2

3

4

6

Page 17: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

안을 들여다보니 #1

• IIS일까? 윈도우일까?• 그렇긴 하지만 똑같진 않음.

• 똑같은 것을 원하려면 VM.• 하지만 ‘완전’ 똑같지 않은건 함정.

• 보안 레이어 때문 → 가상화된 Guest OS

1

2

예림이 그 패 봐봐윈도우 서버야?

Page 18: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

안을 들여다보니 #2

1. x86, x64 선택 가능

2. Node.js, python 런타임도 내장.

3. CPU: AMD 8-core Opteron

4. Java Servlet은 Tomcat7, Jetty9 제공.

2

4.2

1

3

Java, Python, Node, php가된다고? 어허허허허

이게 어디서…

그래, 내 어드민 계정과미소녀 폴더를 건다.

4.1

Page 19: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

Azure WebSites 구성 설정부

• 의외로(?) 촘촘하게 구성됨.

• ASP.NET은 잘 구동되지만, 버전업은 한템포 느림.

• Java는 1.8이 아니고 아직 1.7

• Python, Java가 ‘다‘ ‘잘’ 되는 것은 아님.• 리눅스가 아니므로 동작 안되는 라이브러리도 있음.

• 특히 dJango는 적용 완성도가 낮은 편.

• php는 IIS 지원 역사가 오래되어서 신뢰성 있음.

• 아! 그래도 역시 닷넷이 가장 속편하구나.

Page 20: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

써보면서 겪은 문제점

• 소소한 딜레이를 겪음.• 3일~7일에 한 번 정도는 1분 가량 리셋(?)이 있음.

• ping 응답없음 경고 메일을 수신하곤 함.

• Response time이 VM보다는 조금 느림. VM+20~50ms 정도.

• ASP.NET 특성인 app pool recycle로 하루 중 몇 번 2초 가량 응답지연.

• 지연상황을 없애려면 그저 인스턴스를 늘리면 됨.• 어느 소규모 웹사이트: 하지만 괜찮아. 어차피 우린 유저도 없잖아.

• 결론적으로, 정적웹페이지와 ASP.NET에는 호스팅이나 VM보다 추천.

Page 21: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

Azure WebSites 디버깅

Page 22: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

기본 설정

• Custom Errors/Remote View• web.config: <CustomError mode=“Off”></CustomErrors>

• Global.asax: GlobalConfiguration.Configuration.IncludeErrorDetailPolicy =IncludeErrorDetailPolicy.Always;

• 원격 디버깅 (Remote Debugging)• Production에 사용 금지: 트래픽이 한 인스턴스로 몰림.

• 인스턴스 중 랜덤으로 디버거가 붙음

• 48시간 후 자동 정지.

Page 23: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

Application Diagnostics

• Application tracing logs

• System.Diagnostics.Trace.TraceError(“출력 메시지”);

• /LogFiles/Application/ • 위치 수정: App.config settings: DIAGNOSTICS_TEXTTRACELOGDIRECTORY

• {Date} PID[{process id}] {event type/level} {message} 형태

• Table or Blog Storage

http://azure.microsoft.com/en-us/documentation/articles/web-sites-enable-diagnostic-log/#understandlogs

Page 24: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

그 외의 진단 로그

• Web Server logs • (all HTTP transactions using W3C extended log format file)

• /LogFiles/http/RawLogs

• Detailed error messages• Logs detailed error information for HTTP status codes that indicate a failure.

• /LogFiles/DetailedErrors/

• Failed request tracing logs• Logs detailed information on failed requests including a trace of IIS componen

ts use to process request and time taken.

• /LogFiles/W3SVC#########

http://azure.microsoft.com/en-us/documentation/articles/web-sites-enable-diagnostic-log/#understandlogs

Page 25: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

Kudu (Site Control Management)

• yoursite.scm.azurewebsites.net

• https://github.com/projectkudu/kudu

• Environment

• Debug Console

• Process Explorer

• Tools• Diagnostic Dump

• Log Stream

• Web Hooks

• Site Extensions

http://azure.microsoft.com/blog/2014/03/28/windows-azure-websites-online-tools-you-should-know-about-2/

Page 26: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

DaaS

• Yoursite.scm.azurewebsites.net/DaaS

• App만의 이슈를 볼 수 있음.• 느린 응답

• 각종 에러

• 로그 뷰어• App process Memory dumps

• HTTP Logs

• Event Logs

• \home\data\DaaS\Reports, Logs

• 자세한 활용• http://azure.microsoft.com/blog/2014/07/08/daas/

• Zip: https://<YourSiteName>.scm.azurewebsites.net/Zip/data/DaaS

Page 27: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

Azure Mobile Service

Page 28: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

일단 데모부터

Page 29: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

어? 어디선가 본 듯한 설정들.

• Azure WebSites 기반 + 서비스 레이어의 형태

Page 30: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

Azure Mobile Service

• 일명 “ZUMO”

• 흔한 세가지 편의: Push, 소셜인증, Table 데이터 축적• 다른 BaaS도 다 비슷합니다.

• 단말 별 최적화된 API를 제공하는 것이 특징

• 타 BaaS와의 비교• 강점: 인프라가 좋음, API가 통합적으로 잘 닦여 있음.

• 부족: 통계가 약함.

• 언제 쓰나• 모바일 앱 개발을 시작할 때

• 소규모 개발할 때 (규모가 커지면 언젠가는 갈아타야 함)

• 다양한 단말에 대응해야 할 때

Page 31: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

JavaScript Backend

• 간결함이 강점. 웹브라우저에서 바로 스크립팅.• Git으로 Publish도 가능

• Node.js 스크립팅을 제공• Npm 모듈 설치 및 이용 가능

• 고급 강의 참고• http://channel9.msdn.com/Events/TechEd/Australia/2013/AZR334

• 스크립팅에 대하여 친절히 강의 (REDIS, SendGrid, MongoDB 연계)

Page 32: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

.NET Backend

• 기존 Node.js 백엔드의 제약을 해소.• “난 자바스크립트 잘 몰라요“ “만들어놓은 닷넷 소스 쓸 수 없어요“

• 좀 더 복잡하지만 구조적인 형태.• Entity Framework를 이용 가능.

• 사실상 Azure WebSites로 만든 것 그대로 이용 가능.

• 고급 강의 참고

• http://www.codeproject.com/Articles/780348/Master-the-Managed-Azure-Mobile-Services-Backend-P

• 각 클래스 별 맵핑을 설명

• .NET Backend

• JavaScript Backend

Page 33: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

퀴즈퀴즈

Page 34: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

퀴즈 #1

• 다음 중 Azure WebSites가 지원하지 않는 서버 언어는?1. C#

2. Ruby

3. PHP

4. Java

당첨자: Facebook Azure Korea 그룹에 글 남기기https://www.facebook.com/groups/krazure/

Page 35: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

퀴즈 #2

• 다음 중 Azure Mobile Service가 적합하지 않은 것은?1. 인디 게임 서버

2. 일기장 앱

3. 동호회 모바일 홈페이지

4. 김팀장, 3개월이면 요즘 유행한다는 페이스북 같은거 만들 수 있나?

당첨자: Facebook Azure Korea 그룹에 글 남기기https://www.facebook.com/groups/krazure/

Page 36: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

꿀팁

• 언제나 강조하지만 Traffic Manager를 꼭 사용.• 부하 분산: http://azure.microsoft.com/ko-kr/documentation/services/traffic-manager/

• A/B Test: http://blogs.msdn.com/b/tomholl/archive/2014/11/10/a-b-testing-with-azure-websites.aspx

• Azure WebSites: NewRelic을 사용하면 모니터링에 좋습니다.• 월 5만원.

• 클라우드는 접속 제한을 하지 않으므로 꼭 필요.

• 이래저래 작은 웹서비스에 월 8만원 정도씩 사용하는 셈.• 윈도우 호스팅은 보통 그 정도이니 괜찮은 가격.

• 하지만 PaaS의 장점상 호스팅과 단순 비교는 어려움.

• 돈을 주고 편리성과 속도를 취한다.

Page 37: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기

추천/참고자료

• Azure• http://www.azure.com

• Azure WebSites Cheat Sheet• http://microsoftazurewebsitescheatsheet.info/#

• Azure WebSites vs Web Role • http://robdmoore.id.au/blog/2012/06/09/windows-azure-web-sites-vs-web-roles/

• Azure Mobile Service Android 샘플 소스• https://github.com/YoungjaeKim/zumo_android_sample