mvp comcamp. azure websites와 mobile service로 웹서비스 시작하기
TRANSCRIPT
![Page 1: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/1.jpg)
Azure WebSites & Mobile Service로 웹서비스 시작하기
Youngjae Kim, Azure MVP
2014-11-18
![Page 2: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/2.jpg)
저는요
• 직원 8명의 작은 웹서비스 스타트업 개발자• 개발자5+디자이너1+마케팅1+대표1
• 서비스명: 바로풀기 (바풀)• 중고등학생 학습분야 소셜앱서비스• 설립 3년차, 중고등 교육업계 2위 1위는 EBS…어쩌지.
• Azure로 100% 운영 중• 아직 소규모 사이트로 WebSites, VM, Queue 등을 적극 활용 중.
![Page 3: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/3.jpg)
오늘 다룰 것들
WebSites Mobile Service etc.
![Page 4: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/4.jpg)
이 세미나의 수준
• 들으면 유익해요• 클라우드가 뭐임?• Azure가 그저 궁금하다.• Azure로 PaaS, BaaS를 구성할까 고민중이다.• Azure WebSites 좋다는데 직접 해보기엔 손가락이 결린다.
• 안 들어도 좋지만 나가지는 마세요• Azure를 3개월 이상 다뤄봤다.• Azure로 실제 서비스 중이다.• 야근 중이다.• 크리스마스가 외로울거다
![Page 5: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/5.jpg)
이거 듣고 뭘 할 수 있나요?
• Azure WebSites로 서버를 돌릴 수 있어요.
• Azure Mobile Service로 안드로이드앱 연동을 할 수 있어요.
• 접속 폭증으로 놀라지 않을 수 있어요.
![Page 6: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/6.jpg)
시작하는 이야기
![Page 7: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/7.jpg)
Cloud Era
• 돈을 주고 운용 편의와 속도를 취한다.• TCO 계산법 → 클라우드 계산법.
• 중소규모 회사에는 클라우드가 더 적절하다고 판단.• 운용 부담의 대부분을 비용으로 처리 가능.
• 보다 제품 자체에 집중할 수 있음.
• OS 업데이트 신경쓰고 IP 맞추기는 아이고 의미 없다.
• 빨리 끝내고 삼겹살 회식하면 그게 좋은 것. 회식하고 와서 야근하는건 함정.
• 사용 목적만 맞으면 비용도 절약.• AWS가 성공적으로 생태계를 조성하고 있음을 증명.
• 물론 초특급 개발자가 직접 다 하면 더더욱 절약.OS? 패치? 리부팅?
![Page 8: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/8.jpg)
PaaS
• OS를 직접 고려하지 않는다.
• 플랫폼 위에 올라가는 앱에 대해서만 사용자가 고민하면 되며, 확장에 대해서 플랫폼의 지원 범위에 제약.
• 제대로 쓰려면• 가용성: 얼마나 확장성/성능이 좋은 플랫폼인지를 파악.
• 사용성: OS 고민을 덜어준대신 얻는 개발 편의가 무엇인가.
• 경제성: 운용비+노력비 > 클라우드 비용?
![Page 9: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/9.jpg)
BaaS
• 기존 서비스를 적당히 모아서 API로 제공하는 형태.
• 모든 것이 서비스의 집합: 푸시, 인증, 데이터 입출력 등.
• 서비스가 곧 인프라.
• 소규모 온라인 게임에서 선호됨.
• 제대로 알고 쓰려면• 기능: 얼마나 다양한 서비스를 제공하는가.
• 연결성: 추가 기능 확장이 얼마나 손쉬운가.
• 투명성: 쉽게 쓰라고 만든 것을 뜯어볼 때 얼마나 이해하기 쉬운가.
• 근면성: 관련 기능 업데이트가 얼마나 빨리 반영되는가.
![Page 10: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/10.jpg)
Azure WebSites
![Page 11: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/11.jpg)
일단 데모부터
![Page 12: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/12.jpg)
제품 철학
• 웹서비스를 만드는데 클릭만으로 어디까지 가능한가
• 웹서비스에 대한 공통분모를 가급적 많이 포함하는 도약대
• 오묘한 제품• WAS (Web Application Server)도 있고,• CI (Continuous Integration) 기능도 있고,• FTP도 있고,• 오토스케일도 있고,• 통계 기능도 있고,• 웹소켓도 있고…
![Page 13: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/13.jpg)
추천 용도
분류 평범한 웹사이트 실시간성 웹사이트 작업처리형 웹사이트
주요 역할 전통적인 웹어플리케이션 웹소켓 입력자료의 가공 처리
구성 요소 정적페이지, 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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/14.jpg)
Azure WebSites는 단순해요
자유도, 비용, 복잡도 편의, 개발속도
![Page 15: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/15.jpg)
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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/16.jpg)
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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/17.jpg)
안을 들여다보니 #1
• IIS일까? 윈도우일까?• 그렇긴 하지만 똑같진 않음.
• 똑같은 것을 원하려면 VM.• 하지만 ‘완전’ 똑같지 않은건 함정.
• 보안 레이어 때문 → 가상화된 Guest OS
1
2
예림이 그 패 봐봐윈도우 서버야?
![Page 18: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/18.jpg)
안을 들여다보니 #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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/19.jpg)
Azure WebSites 구성 설정부
• 의외로(?) 촘촘하게 구성됨.
• ASP.NET은 잘 구동되지만, 버전업은 한템포 느림.
• Java는 1.8이 아니고 아직 1.7
• Python, Java가 ‘다‘ ‘잘’ 되는 것은 아님.• 리눅스가 아니므로 동작 안되는 라이브러리도 있음.
• 특히 dJango는 적용 완성도가 낮은 편.
• php는 IIS 지원 역사가 오래되어서 신뢰성 있음.
• 아! 그래도 역시 닷넷이 가장 속편하구나.
![Page 20: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/20.jpg)
써보면서 겪은 문제점
• 소소한 딜레이를 겪음.• 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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/21.jpg)
Azure WebSites 디버깅
![Page 22: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/22.jpg)
기본 설정
• 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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/23.jpg)
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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/24.jpg)
그 외의 진단 로그
• 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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/25.jpg)
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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/26.jpg)
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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/27.jpg)
Azure Mobile Service
![Page 28: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/28.jpg)
일단 데모부터
![Page 29: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/29.jpg)
어? 어디선가 본 듯한 설정들.
• Azure WebSites 기반 + 서비스 레이어의 형태
![Page 30: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/30.jpg)
Azure Mobile Service
• 일명 “ZUMO”
• 흔한 세가지 편의: Push, 소셜인증, Table 데이터 축적• 다른 BaaS도 다 비슷합니다.
• 단말 별 최적화된 API를 제공하는 것이 특징
• 타 BaaS와의 비교• 강점: 인프라가 좋음, API가 통합적으로 잘 닦여 있음.
• 부족: 통계가 약함.
• 언제 쓰나• 모바일 앱 개발을 시작할 때
• 소규모 개발할 때 (규모가 커지면 언젠가는 갈아타야 함)
• 다양한 단말에 대응해야 할 때
![Page 31: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/31.jpg)
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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/32.jpg)
.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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/33.jpg)
퀴즈퀴즈
![Page 34: MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/34.jpg)
퀴즈 #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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/35.jpg)
퀴즈 #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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/36.jpg)
꿀팁
• 언제나 강조하지만 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로 웹서비스 시작하기](https://reader034.vdocuments.mx/reader034/viewer/2022051414/55a457ee1a28ab671b8b4585/html5/thumbnails/37.jpg)
추천/참고자료
• 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