MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기
-
Upload
youngjae-kim -
Category
Technology
-
view
681 -
download
2
Transcript of MVP ComCamp. Azure WebSites와 Mobile Service로 웹서비스 시작하기
Azure WebSites & Mobile Service로 웹서비스 시작하기
Youngjae Kim, Azure MVP
2014-11-18
저는요
• 직원 8명의 작은 웹서비스 스타트업 개발자• 개발자5+디자이너1+마케팅1+대표1
• 서비스명: 바로풀기 (바풀)• 중고등학생 학습분야 소셜앱서비스• 설립 3년차, 중고등 교육업계 2위 1위는 EBS…어쩌지.
• Azure로 100% 운영 중• 아직 소규모 사이트로 WebSites, VM, Queue 등을 적극 활용 중.
오늘 다룰 것들
WebSites Mobile Service etc.
이 세미나의 수준
• 들으면 유익해요• 클라우드가 뭐임?• Azure가 그저 궁금하다.• Azure로 PaaS, BaaS를 구성할까 고민중이다.• Azure WebSites 좋다는데 직접 해보기엔 손가락이 결린다.
• 안 들어도 좋지만 나가지는 마세요• Azure를 3개월 이상 다뤄봤다.• Azure로 실제 서비스 중이다.• 야근 중이다.• 크리스마스가 외로울거다
이거 듣고 뭘 할 수 있나요?
• Azure WebSites로 서버를 돌릴 수 있어요.
• Azure Mobile Service로 안드로이드앱 연동을 할 수 있어요.
• 접속 폭증으로 놀라지 않을 수 있어요.
시작하는 이야기
Cloud Era
• 돈을 주고 운용 편의와 속도를 취한다.• TCO 계산법 → 클라우드 계산법.
• 중소규모 회사에는 클라우드가 더 적절하다고 판단.• 운용 부담의 대부분을 비용으로 처리 가능.
• 보다 제품 자체에 집중할 수 있음.
• OS 업데이트 신경쓰고 IP 맞추기는 아이고 의미 없다.
• 빨리 끝내고 삼겹살 회식하면 그게 좋은 것. 회식하고 와서 야근하는건 함정.
• 사용 목적만 맞으면 비용도 절약.• AWS가 성공적으로 생태계를 조성하고 있음을 증명.
• 물론 초특급 개발자가 직접 다 하면 더더욱 절약.OS? 패치? 리부팅?
PaaS
• OS를 직접 고려하지 않는다.
• 플랫폼 위에 올라가는 앱에 대해서만 사용자가 고민하면 되며, 확장에 대해서 플랫폼의 지원 범위에 제약.
• 제대로 쓰려면• 가용성: 얼마나 확장성/성능이 좋은 플랫폼인지를 파악.
• 사용성: OS 고민을 덜어준대신 얻는 개발 편의가 무엇인가.
• 경제성: 운용비+노력비 > 클라우드 비용?
BaaS
• 기존 서비스를 적당히 모아서 API로 제공하는 형태.
• 모든 것이 서비스의 집합: 푸시, 인증, 데이터 입출력 등.
• 서비스가 곧 인프라.
• 소규모 온라인 게임에서 선호됨.
• 제대로 알고 쓰려면• 기능: 얼마나 다양한 서비스를 제공하는가.
• 연결성: 추가 기능 확장이 얼마나 손쉬운가.
• 투명성: 쉽게 쓰라고 만든 것을 뜯어볼 때 얼마나 이해하기 쉬운가.
• 근면성: 관련 기능 업데이트가 얼마나 빨리 반영되는가.
Azure WebSites
일단 데모부터
제품 철학
• 웹서비스를 만드는데 클릭만으로 어디까지 가능한가
• 웹서비스에 대한 공통분모를 가급적 많이 포함하는 도약대
• 오묘한 제품• WAS (Web Application Server)도 있고,• CI (Continuous Integration) 기능도 있고,• FTP도 있고,• 오토스케일도 있고,• 통계 기능도 있고,• 웹소켓도 있고…
추천 용도
분류 평범한 웹사이트 실시간성 웹사이트 작업처리형 웹사이트
주요 역할 전통적인 웹어플리케이션 웹소켓 입력자료의 가공 처리
구성 요소 정적페이지, 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 만으로 모두 가능
Azure WebSites는 단순해요
자유도, 비용, 복잡도 편의, 개발속도
Azure WebSites Architecture
• IIS• 작은 데이터베이스• 로드밸런싱• 스토리지• 원격 데스크톱• VCS Deployment
Metering
DWAS*
Site (W3WP.exe)Site (W3WP.exe)Site (W3WP.exe)
* Dynamic Web Activation Service(설정된 tier로 배포, 런칭시키는 역할)
Azure WebSites
• 서비스 구성1. 제한없음 ≠ 무료.
2. SSL이 기본적으론 있음.
3. CNAME 적용 여부
4. CNAME+SSL
5. 마우스 드래그만으로 확장
6. 더 편리한 Auto-scale
• 추천 tier: “기본”
5
1
2
3
4
6
안을 들여다보니 #1
• IIS일까? 윈도우일까?• 그렇긴 하지만 똑같진 않음.
• 똑같은 것을 원하려면 VM.• 하지만 ‘완전’ 똑같지 않은건 함정.
• 보안 레이어 때문 → 가상화된 Guest OS
1
2
예림이 그 패 봐봐윈도우 서버야?
안을 들여다보니 #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
Azure WebSites 구성 설정부
• 의외로(?) 촘촘하게 구성됨.
• ASP.NET은 잘 구동되지만, 버전업은 한템포 느림.
• Java는 1.8이 아니고 아직 1.7
• Python, Java가 ‘다‘ ‘잘’ 되는 것은 아님.• 리눅스가 아니므로 동작 안되는 라이브러리도 있음.
• 특히 dJango는 적용 완성도가 낮은 편.
• php는 IIS 지원 역사가 오래되어서 신뢰성 있음.
• 아! 그래도 역시 닷넷이 가장 속편하구나.
써보면서 겪은 문제점
• 소소한 딜레이를 겪음.• 3일~7일에 한 번 정도는 1분 가량 리셋(?)이 있음.
• ping 응답없음 경고 메일을 수신하곤 함.
• Response time이 VM보다는 조금 느림. VM+20~50ms 정도.
• ASP.NET 특성인 app pool recycle로 하루 중 몇 번 2초 가량 응답지연.
• 지연상황을 없애려면 그저 인스턴스를 늘리면 됨.• 어느 소규모 웹사이트: 하지만 괜찮아. 어차피 우린 유저도 없잖아.
• 결론적으로, 정적웹페이지와 ASP.NET에는 호스팅이나 VM보다 추천.
Azure WebSites 디버깅
기본 설정
• Custom Errors/Remote View• web.config: <CustomError mode=“Off”></CustomErrors>
• Global.asax: GlobalConfiguration.Configuration.IncludeErrorDetailPolicy =IncludeErrorDetailPolicy.Always;
• 원격 디버깅 (Remote Debugging)• Production에 사용 금지: 트래픽이 한 인스턴스로 몰림.
• 인스턴스 중 랜덤으로 디버거가 붙음
• 48시간 후 자동 정지.
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
그 외의 진단 로그
• 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
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/
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
Azure Mobile Service
일단 데모부터
어? 어디선가 본 듯한 설정들.
• Azure WebSites 기반 + 서비스 레이어의 형태
Azure Mobile Service
• 일명 “ZUMO”
• 흔한 세가지 편의: Push, 소셜인증, Table 데이터 축적• 다른 BaaS도 다 비슷합니다.
• 단말 별 최적화된 API를 제공하는 것이 특징
• 타 BaaS와의 비교• 강점: 인프라가 좋음, API가 통합적으로 잘 닦여 있음.
• 부족: 통계가 약함.
• 언제 쓰나• 모바일 앱 개발을 시작할 때
• 소규모 개발할 때 (규모가 커지면 언젠가는 갈아타야 함)
• 다양한 단말에 대응해야 할 때
JavaScript Backend
• 간결함이 강점. 웹브라우저에서 바로 스크립팅.• Git으로 Publish도 가능
• Node.js 스크립팅을 제공• Npm 모듈 설치 및 이용 가능
• 고급 강의 참고• http://channel9.msdn.com/Events/TechEd/Australia/2013/AZR334
• 스크립팅에 대하여 친절히 강의 (REDIS, SendGrid, MongoDB 연계)
.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
퀴즈퀴즈
퀴즈 #1
• 다음 중 Azure WebSites가 지원하지 않는 서버 언어는?1. C#
2. Ruby
3. PHP
4. Java
당첨자: Facebook Azure Korea 그룹에 글 남기기https://www.facebook.com/groups/krazure/
퀴즈 #2
• 다음 중 Azure Mobile Service가 적합하지 않은 것은?1. 인디 게임 서버
2. 일기장 앱
3. 동호회 모바일 홈페이지
4. 김팀장, 3개월이면 요즘 유행한다는 페이스북 같은거 만들 수 있나?
당첨자: Facebook Azure Korea 그룹에 글 남기기https://www.facebook.com/groups/krazure/
꿀팁
• 언제나 강조하지만 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의 장점상 호스팅과 단순 비교는 어려움.
• 돈을 주고 편리성과 속도를 취한다.
추천/참고자료
• 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