SlideShare ist ein Scribd-Unternehmen logo
1 von 54
개발하기 바쁜데 푸시와
메시지큐는 있는거 쓸래요
2015-10-27
Youngjae KIM, Azure MVP
저는요
• 김영재
• Azure MVP (2014~)
• ㈜바풀, 바로풀기 서비스 개발총괄
• (전) 카이스트 디지털미디어연구소 연구원
• (전) 영국 Ubisense UK 기술컨설턴트
• (전) 일본 국립전자통신연구소 스마트홈 미들웨어 연구원
• 바로풀기 소개
• 소셜서비스 스타트업 (23억원 투자유치, 12명 직원)
• 중고등학생 학습 서비스 MAU 1위
먹고 자고 코딩하는거 좋아하는 개발자
이 세션의 대상은
• 이득
• 다른 솔루션 유저
• 처음 관련된 시나리오의 제품을 만드시는 분
• 어쩌다 들어오신 분
• 손해
• 이미 오늘 소개할 Azure 서비스를 사용 중인분
• 어떤 기술 앞에서도 시큰둥한 분
• 절대로 클라우드를 도입할 가능성도 생각도 없으신 분
???
들어가는 이야기
프로그래머란?
• 컴퓨터가 문제를 해결하도록 시스템을 만드는 사람
• 저 수준의 데이터를 고 수준으로 바꾸는 사람
흔한 인터넷 서비스 시나리오
유저가 앱으로
무엇인가를 하면
백그라운드 작업 후에 잠시 후 푸시가 오고
프로그래머가 할 일은
• 무엇인가를 정의
• 작업에서 의미를 추출
• 푸시로 다음 데이터 흐름을 유도
유저가 앱으로
무엇인가를 하면
백그라운드 작업 후에 잠시 후 푸시가 오고
판단
• 돈 내고 쓰는 솔루션 vs. 서버를 직접 관리하는 자신감
• 더 빨리 런칭할 수 있는가
• 더 안정적으로 관리할 수 있는가
• 더 확장에 대비할 수 있는가
• 클라우드 사고방식. 동의 못하면 의미 없음
• 퍼포먼스는 확장성과 돈으로 커버 가능
• 그 대신 시간과 운영 편의를 얻는다
Azure 3년 써보니…
• 2년간 좋음
• 좋은 이유는 좋게 만들었기 때문
오늘 다룰 내용
• Azure가 제공하는 Message Queue
• Push Notification Hub 사용법
• 이들을 이용한 WebJob 데모
흔한 인터넷 서비스 시나리오
유저가 앱으로
무엇인가를 하면
백그라운드 작업 후에 잠시 후 푸시가 오고
흔한 구조
REST API
Background
Worker
Push Notification
Server
Message Queue
(MQ)
Azure 대응 #1
Web Role Worker Role Notification Hub
Service Bus
Azure 대응 #2
WebSites WebJobs Notification Hub
Storage Queue
소개할 Azure 구성요소
• Azure Queue
• Azure Service Bus
• Azure WebJobs
• Azure Push Notification Hub
1. Message Queue
MQ의 조건
• 중요도순
• 안정성
• 퍼포먼스 (초당 처리량)
• 확장성
• API 편의성
• 보안: 주로 내부 통신용으로 사용
Comparison
Azure Rabbit MQ
안정성 ++ ++
퍼포먼스 ++ +++
확장성 +++ +
API +++ ++
AWS SQS와의 비교?
- 두 클라우드는 무엇을 선택하든 성능, 가격, 안정성이 비슷합니다. 가격은 Azure가 좀 더 저렴 (후발주자니까?!)
가격 비교
- 100 msg/sec 이상은 RabbitMQ + Large VM * 3개 운영이 더 저렴 ($535 수준) [참고링크]
- 시간비용까지 생각하면 200 msg/sec 정도를 기준으로 삼아도 될 듯
“큐(queue)로 이벤트 처리하고 싶어요“
Azure Queue로 쉽고 빠르게 만들기 Service Bus로 발전적으로 만들기
동작원리
- Storage의 응용판
장점
- 대용량 대응
- Azure WebApp의 WebJob의 쉬운 바인딩
단점
- 큐 기능에만 충실할 뿐
동작원리
- Service Bus에 기록하면 Subscribe로 작동
장점
- 더욱 풍부한 메시징 API, AMQP
- 다양한 유형의 브로커 처리 (topic, relay, …)
단점
- 저렴하다고 할 순 없음.
두 기술의 차이 상세 설명
• 스펙 비교: https://azure.microsoft.com/ko-kr/documentation/articles/service-bus-azure-and-service-bus-queues-compared-contrasted/
• 코드 비교: http://msdn.microsoft.com/en-us/magazine/jj159884.aspx
1.1 Azure Queue (Storage)
특징
• Blob기반 Database인 Azure Storage를 이용한 Queue
• 그래서 가지는 특징은
• 대용량 큐 저장 가능
• 빠르게 넣고 뺄 수 있음 (latency < 10ms)
• 저렴한 가격
• 메시지 단위 Lock
• 그래서 발생한 단점은
• 순서 처리를 보장 안함
• 트랜잭션 안됨
• 폴링으로만 처리
• AMQP 같은 고상한건 지원 안함
• 임의로 만든 점
• 최대 7일 저장 (TTL)
Azure Queue 사용 예시
어딘가에서 입력
Azure Storage
Queue
Blob
Table
Web App
WebJob
Queue는 입력받으면 WebJob에서 자동으로 실행, 결과는 Azure Table 등에 담을 수 있음.
트리거
솔직히…
• 문서화가 너무 잘되어있어서 딱히 설명할 것이 없네요!
• API 사용법: https://azure.Microsoft.com/en-
us/documentation/articles/storage-dotnet-how-to-use-queues/
• 바로 데모 프로그램을 실행해봅시다
Azure Queue 활용 예시
• Azure WebJob과 연동
• 콘솔프로그램을 만든 후 github에 올리면 자동
으로 Pull  Compile  Deploy  동작.
• 브라우저에서 테스트 및 로그 확인 가능.
• 자동 스케일링 지원.
• 트리거, 계속, 스케줄링 등 실행유형 지정.
• 참고사항
• 간단한 작업에 좋음
• 대표적인 예시: 이미지 압축
• 속도가 빠르진 않음
• 관련 문서
• WebJob 시작하기
• WebJob 관련 자료 모음
곁다리 지식: Azure WebJobs의 주요 특징
• 병렬적 처리: 16개(기본값)의 큐를 벌크로 받아와서 처리
• 멀티스레드로 동작: 병렬 같은 병렬 아닌 동작
• 그러므로 주의사항은!
• 같은 메시지가 두 번 처리될 수도 있음. 즉, 같은 메시지에 대해 다른 결과가 나오도록 하면 안됨
• Azure WebApp의 인스턴스 수에 제약이 됨
• 간단해서 쓰는거지 좋아서 쓰는거 아니다!
• 이미지 리사이즈 등에 사용
난데없이 퀴즈퀴즈!
• 다음 중 Azure Queue Storage가 제공하는 기능이 아닌 것은?
1. 80GB 이상의 메시지 저장
2. 5일 이상의 TTL
3. AMQP v1.0
4. WebJob 바인딩
1.2 Service Bus
Service Bus 개요
• Push Notification Hub도 Service Bus 중 Topic의 응용.
• 구성
• Queue
• Topic
• Relay
• Notification Hub
Service Bus 간단 개념잡기
• Queue
• 일명 ‘선입선출(FIFO)’ 방식의 데이터 처리를 위한 대기열.
• 주로 이벤트 처리에 활용.
• OS의 핵심 요소 중 하나.
• Topic
• Queue의 확장판으로 분기해주는 switch가 더해짐.
• 일명 Publisher-Subscriber 방식이라고도 함.
• 분산시스템의 핵심 요소 중 하나.
• Relay
• WCF를 활용한 서비스 제공 모델.
• WCF 기반으로 서비스가 구축된 엔터프라이즈 환경에 적합.
• 참고: WCF는 REST 기반 웹API 기능 외에, 동기화, 양방향성, 세션처리, 보안 등에 여지가
많음.
Service Bus Queue
단순한 구조인만큼 코드도 간단함.
http://azure.microsoft.com/en-us/documentation/articles/service-bus-dotnet-how-to-use-queues/
Service Bus Topic
중요 개념: 가상의 큐가 각 토픽마다 할당된 것과 마찬가지.
http://azure.microsoft.com/en-us/documentation/articles/service-bus-dotnet-how-to-use-topics-subscriptions/?fb=ko-kr
코드 들여다보기
• 바로풀기가 사용 중인 Service Bus Queue
2. Azure Notification Hub
그래서 많이 보이는 글
Azure Push Notification Hub
• Azure ServiceBus에 Token DB와 push endpoint를 추가한 형태
• 퍼포먼스는 ServiceBus에 종속적
• 입력은 초당 2000건
• 하지만 출력은 모른다!?
• 일종의 푸시 미들웨어
• 다양한 토큰규격, 핸드쉐이크 형태를 일원화하고 통합ID로 관리
• 한 유저의 멀티디바이스에 대응하기 편리
사용 형태
Device 1
Register
Gateway
Push
Notification
Hub
Request
Push
Notification
Hub
Device 1
Device 2
Device 3
1. 기기 등록
2. 전송
reg_id
handle
API Overview
• 등록 형태: 단말 별로 템플릿을 등록하여 처리
API Overview
• 전송은 단말 무관하게 코드 한 줄.
Notification Hub 작동 원리 (기본)
어딘가에서 입력
사용자 단말로 전송Google GCM
Apple APNS
Windows WNS
…
푸시 플랫폼 별
토큰을 이용하여 전송
Azure Topic 처리기
전송 결과 취득
불량 전송 건에 대한 피드백 처리
Notification Hub 작동 원리 (상세)
어딘가에서 입력
사용자 단말로 전송Google GCM
Apple APNS
Windows WNS
…
푸시 플랫폼 별
토큰을 이용하여 전송
Azure Topic 처리기
전송 결과 취득
불량 전송 건에 대한 피드백 처리
토픽1+채널+내용
토픽2+채널+내용토픽1
+내용
채널 + 토픽1 등록
Topic & Channel
Key-Values
1
2
4
5
6
3
푸시 태그를 잘 생각해서 써야 한다
• 태크는 Key이며, Key-Value 로 이루어진 값을 대상에게 전송합니다.
• Service Bus 토픽이 곧 Push Notification 태그
• 기본 활용: 한 ID의 단말에 보내고 싶다
• 태그명: userId
• 예시: userId=Youngjae
• 참고: userId=Youngjae로 등록된 모든 단말에 전송 (내 모든 단말)
• Microsoft를 “좋아요” 한 사람들에게 보내고 싶다.
• 태그명: like
• 예시: like=Microsoft
• Microsoft를 “좋아요” 한 한국어 유저들에게 보내고 싶다.
• 태그명1: like, 태그명2: locale
• 예시: like=Microsoft && locale=“ko-KR”
실제로는?
1. 태그에만 맡기기에는 서비스가 보다 세밀하게 타겟팅 하길 원함
2. 서비스가 워낙 변화무쌍하게 바뀌어서 푸시 DB를 갱신하는 것은 비효율적
3. 태그DB와 로직DB를 모두 관리해야 함
잘 안쓰임! 그냥 ID/전체 보내는 방식으로 커버
최소한의 카테고리를 태깅: locale, userId, gender
템플릿
• 템플릿은 클라이언트에서 $(name)과 같이 변수껍데기를 등록하면 보낼 때
name=“youngjae” 식으로 내용을 채워서 받을 수 있음.
• 사용 시나리오
• 한국어 유저의 폰 등록 Template = “$(Korean)”
• 서버 전송 Korean=“안녕”, English=“hello”
• 클라이언트는 푸시를 받을 때 “안녕“만 취득함.
• 토픽과 적절히 섞어 쓰면 맞춤 푸시를 보낼 수 있음.
• 태그는 수신 대상을 규정
• 템플릿은 해당 범위에 세부적인 맞춤 정보를 제공
• 적용시 중요: 서비스에서 기획이 명확하게 잡혀있어야 효과가 좋음.
• 안그러면 땜빵 템플릿이 넘칠 수도 있음.
실용적인 팁
• 항상 태그에 “userId:아이디“를 기본으로 적용하면 좋음.
• 해당 ID에 맞추어 모든 기기로 전송됨.
• 어차피 보낼 때 태그가 없으면 모두에게 보냄 (broadcast)
 장점이지만 대재앙이 될 수 있으니 서버에서 깐깐하게 처리할 것.
• 동일한 이름의 template은 덮어쓰기됨.
• 별도의 업데이트 처리 불필요.
• 푸시는 SMS가 아니므로 시간차가 있을 수 있음.
• Free 버전일 경우 간헐적으로 몰아서 처리됨 (경험상 약 1~2분)
또 난데없이 퀴즈퀴즈!
• 다음 중 Azure Notification Hub가 제공하는 기능이 아닌 것은?
1. REST API
2. MMS 전송
3. 예약된 푸시 전송
4. Amazon 디바이스 푸시
실제 적용 사례
바로풀기에 처음 사용했던 Azure 구성 (Apr. 2014)
Virtual Machine
WebApp
Mobile Service
Storage
Traffic Manager
Legend
MS-SQL
DB
API EndPoint
(Performance)
Spring F/W
+CentOS
(Large VM)
Spring F/W
+CentOS
(Small VM)
Storage Table
Storage
Queue
Storage
Blob
Web Frontend
WorkerRole
Push
ElasticSearch
EhCache
Backup
DB Azure SQL
User
MongoDB
General
Backup
바로풀기에 현재 사용하는 Azure 구성 (Oct. 2015)
Virtual Machine
WebApp
Push Notification
Storage
Traffic Manager
Legend
MS-SQL
DB
API EndPoint
(Performance)
ASP.NET
WebApi
Storage Table
Service
Bus
Storage
Blob
Worker Role Push
Orient DB
Backup
DB
Azure SQL
User
General
Backup
Azure SQL
dJango (Web)
WebJobs
솔직히 써보자면…
• Service Bus는 안정성은 기대보다 높습니다
• Azure에서도 가장 안정성에 공들이는 부분.
• 2년간 Zero downtime
• https://azure.Microsoft.com/en-us/support/legal/sla/service-bus/v1_0/
• 그래도 이중화는 하세요
• Storage 좋습니다
• Azure 서비스 중 제일 좋아합니다
• WebJob은 작년에 이어 아직도 추천하지 않습니다
• WebRole이 Deploy가 느리다는 단점 외엔 더 믿을만합니다
• NewRelic이 지원 안됨!
• 작년보다 PaaS를 더 신뢰합니다
• WebSites 추천합니다. 특히 닷넷서버와 결합시 제로스트레스! 궁극의 PaaS!
• 사용경험에 직접적인 Frontend는 Traffic Manager를 이용한 이중화 필수입니다
Azure 꿀팁 몇가지
• “Service Bus를 쉽게 관리하는 툴 없나요?”
• Service Bus Explorer를 써보세요. 설명서, 다운로드
• 다운로드 받은 후 2.1.zip 파일을 압축 풀고 ServiceBusExplorer.exe를 실행하세요.
• “Azure Storage를 탐색기처럼 관리하는 툴 없나요?”
• Azure Storage Explorer를 써보세요.
• 더 전문적인 것 (유료): Azure Management Studio
Notification Hub 소스
• 꼭 한 단계씩 차근차근 해주세요.
• http://azure.microsoft.com/en-us/documentation/articles/notification-
hubs-android-get-started/?fb=ko-kr
• 메시지 보내는 서버 소스
• http://blogs.msdn.com/b/azuremobile/archive/2014/04/08/push-
notifications-using-notification-hub-and-net-backend.aspx
• 좋은 예시
• https://github.com/sabbour/breakingnews
• 안드로이드 프로그래머는 아래 링크 참조.
• http://www.slideshare.net/agrocholski/google-devfest-mn-notification-hubs
감사합니다. youngjae@bapul.net

Weitere ähnliche Inhalte

Was ist angesagt?

모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
 
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나 : VCNC 사례 발표
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나 : VCNC 사례 발표스타트업과 개발자를 위한 AWS 클라우드 태권 세미나 : VCNC 사례 발표
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나 : VCNC 사례 발표Amazon Web Services Korea
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS LambdaSeungho Kim
 
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기Juhong Park
 
Cloudera Impala 1.0
Cloudera Impala 1.0Cloudera Impala 1.0
Cloudera Impala 1.0Minwoo Kim
 
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석Amazon Web Services Korea
 
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈Amazon Web Services Korea
 
NDC15_백정상_최종_모바일_앱의_실시간_운영을_위한_유저분석과_타게팅_기법
NDC15_백정상_최종_모바일_앱의_실시간_운영을_위한_유저분석과_타게팅_기법NDC15_백정상_최종_모바일_앱의_실시간_운영을_위한_유저분석과_타게팅_기법
NDC15_백정상_최종_모바일_앱의_실시간_운영을_위한_유저분석과_타게팅_기법Jeongsang Baek
 
1701 azure-live-세션-3
1701 azure-live-세션-31701 azure-live-세션-3
1701 azure-live-세션-3세준 김
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live세준 김
 
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기Jae Sung Park
 
AWSKRUG 소개 및 연혁 (정민영) - 4회 정기 세미나
AWSKRUG 소개 및 연혁 (정민영) - 4회 정기 세미나 AWSKRUG 소개 및 연혁 (정민영) - 4회 정기 세미나
AWSKRUG 소개 및 연혁 (정민영) - 4회 정기 세미나 AWSKRUG - AWS한국사용자모임
 
2. microsoft azure 클라우드 및 쉐어포인트 포탈 소개
2. microsoft azure 클라우드 및 쉐어포인트 포탈 소개2. microsoft azure 클라우드 및 쉐어포인트 포탈 소개
2. microsoft azure 클라우드 및 쉐어포인트 포탈 소개Steve Kim
 
1611 azure-live-세션-2
1611 azure-live-세션-21611 azure-live-세션-2
1611 azure-live-세션-2세준 김
 
Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Harrison Jung
 
클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기iFunFactory Inc.
 
[NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!
[NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자![NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!
[NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!Jeongsang Baek
 
Aws발표자료 final
Aws발표자료 finalAws발표자료 final
Aws발표자료 finalGi Bong Kim
 

Was ist angesagt? (20)

모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
 
KGC 2013 DevSisters
KGC 2013 DevSistersKGC 2013 DevSisters
KGC 2013 DevSisters
 
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나 : VCNC 사례 발표
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나 : VCNC 사례 발표스타트업과 개발자를 위한 AWS 클라우드 태권 세미나 : VCNC 사례 발표
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나 : VCNC 사례 발표
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS Lambda
 
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
 
Cloudera Impala 1.0
Cloudera Impala 1.0Cloudera Impala 1.0
Cloudera Impala 1.0
 
Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기
 
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
 
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
 
NDC15_백정상_최종_모바일_앱의_실시간_운영을_위한_유저분석과_타게팅_기법
NDC15_백정상_최종_모바일_앱의_실시간_운영을_위한_유저분석과_타게팅_기법NDC15_백정상_최종_모바일_앱의_실시간_운영을_위한_유저분석과_타게팅_기법
NDC15_백정상_최종_모바일_앱의_실시간_운영을_위한_유저분석과_타게팅_기법
 
1701 azure-live-세션-3
1701 azure-live-세션-31701 azure-live-세션-3
1701 azure-live-세션-3
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live
 
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
 
AWSKRUG 소개 및 연혁 (정민영) - 4회 정기 세미나
AWSKRUG 소개 및 연혁 (정민영) - 4회 정기 세미나 AWSKRUG 소개 및 연혁 (정민영) - 4회 정기 세미나
AWSKRUG 소개 및 연혁 (정민영) - 4회 정기 세미나
 
2. microsoft azure 클라우드 및 쉐어포인트 포탈 소개
2. microsoft azure 클라우드 및 쉐어포인트 포탈 소개2. microsoft azure 클라우드 및 쉐어포인트 포탈 소개
2. microsoft azure 클라우드 및 쉐어포인트 포탈 소개
 
1611 azure-live-세션-2
1611 azure-live-세션-21611 azure-live-세션-2
1611 azure-live-세션-2
 
Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.
 
클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기
 
[NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!
[NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자![NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!
[NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!
 
Aws발표자료 final
Aws발표자료 finalAws발표자료 final
Aws발표자료 final
 

Andere mochten auch

Special education josh yudell
Special education josh yudellSpecial education josh yudell
Special education josh yudellJosh Yudell
 
Portfolio: Learning Community
Portfolio: Learning CommunityPortfolio: Learning Community
Portfolio: Learning Communitylala1746
 
Special education josh yudell
Special education josh yudellSpecial education josh yudell
Special education josh yudellJosh Yudell
 
лисаковск мастер класс по одаренным
лисаковск мастер   класс по одареннымлисаковск мастер   класс по одаренным
лисаковск мастер класс по одареннымАкмарал Алдаберген
 
Millennial Donors: The NextGen Impact on Charitable Giving in the Arts
Millennial Donors: The NextGen Impact on Charitable Giving in the ArtsMillennial Donors: The NextGen Impact on Charitable Giving in the Arts
Millennial Donors: The NextGen Impact on Charitable Giving in the ArtsCatherine Starek
 
συντηρηση τροφιμων
συντηρηση τροφιμωνσυντηρηση τροφιμων
συντηρηση τροφιμωνRIAVOUL
 
Portfolio: Curriculum 1
Portfolio: Curriculum 1Portfolio: Curriculum 1
Portfolio: Curriculum 1lala1746
 
Specail education josh yudell
Specail education josh yudellSpecail education josh yudell
Specail education josh yudellJosh Yudell
 
Chapter 3 lc bus conflict in workplace
Chapter 3 lc bus conflict in workplaceChapter 3 lc bus conflict in workplace
Chapter 3 lc bus conflict in workplaceDave Dempsey
 
Difference between say speak talk tell
Difference between say speak talk tellDifference between say speak talk tell
Difference between say speak talk tellPâm Alves
 
Using Microsoft Azure as cloud file server
Using Microsoft Azure as cloud file serverUsing Microsoft Azure as cloud file server
Using Microsoft Azure as cloud file serverjimliddle
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)Sang Don Kim
 
AWS 모바일 서비스로 성공하는 모바일 앱 만들기 (윤석찬) - AWS Webiniar 2015
AWS 모바일 서비스로 성공하는 모바일 앱 만들기 (윤석찬) - AWS Webiniar 2015AWS 모바일 서비스로 성공하는 모바일 앱 만들기 (윤석찬) - AWS Webiniar 2015
AWS 모바일 서비스로 성공하는 모바일 앱 만들기 (윤석찬) - AWS Webiniar 2015Amazon Web Services Korea
 

Andere mochten auch (14)

Special education josh yudell
Special education josh yudellSpecial education josh yudell
Special education josh yudell
 
Portfolio: Learning Community
Portfolio: Learning CommunityPortfolio: Learning Community
Portfolio: Learning Community
 
Special education josh yudell
Special education josh yudellSpecial education josh yudell
Special education josh yudell
 
лисаковск мастер класс по одаренным
лисаковск мастер   класс по одареннымлисаковск мастер   класс по одаренным
лисаковск мастер класс по одаренным
 
Pp
PpPp
Pp
 
Millennial Donors: The NextGen Impact on Charitable Giving in the Arts
Millennial Donors: The NextGen Impact on Charitable Giving in the ArtsMillennial Donors: The NextGen Impact on Charitable Giving in the Arts
Millennial Donors: The NextGen Impact on Charitable Giving in the Arts
 
συντηρηση τροφιμων
συντηρηση τροφιμωνσυντηρηση τροφιμων
συντηρηση τροφιμων
 
Portfolio: Curriculum 1
Portfolio: Curriculum 1Portfolio: Curriculum 1
Portfolio: Curriculum 1
 
Specail education josh yudell
Specail education josh yudellSpecail education josh yudell
Specail education josh yudell
 
Chapter 3 lc bus conflict in workplace
Chapter 3 lc bus conflict in workplaceChapter 3 lc bus conflict in workplace
Chapter 3 lc bus conflict in workplace
 
Difference between say speak talk tell
Difference between say speak talk tellDifference between say speak talk tell
Difference between say speak talk tell
 
Using Microsoft Azure as cloud file server
Using Microsoft Azure as cloud file serverUsing Microsoft Azure as cloud file server
Using Microsoft Azure as cloud file server
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
 
AWS 모바일 서비스로 성공하는 모바일 앱 만들기 (윤석찬) - AWS Webiniar 2015
AWS 모바일 서비스로 성공하는 모바일 앱 만들기 (윤석찬) - AWS Webiniar 2015AWS 모바일 서비스로 성공하는 모바일 앱 만들기 (윤석찬) - AWS Webiniar 2015
AWS 모바일 서비스로 성공하는 모바일 앱 만들기 (윤석찬) - AWS Webiniar 2015
 

Ähnlich wie [테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요

서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos uEngine Solutions
 
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017Amazon Web Services Korea
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
한국 중소기업 개발자의 AWS 사용방법
한국 중소기업 개발자의 AWS 사용방법한국 중소기업 개발자의 AWS 사용방법
한국 중소기업 개발자의 AWS 사용방법Hyunmin Kim
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기Amazon Web Services Korea
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례Jeongsang Baek
 
2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS
2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS
2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWSAmazon Web Services Korea
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기Miyu Park
 
모두의 클라우드 딥러닝
모두의 클라우드 딥러닝모두의 클라우드 딥러닝
모두의 클라우드 딥러닝NAVER Engineering
 
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017Amazon Web Services Korea
 
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트Amazon Web Services Korea
 
찾아가는 AWS 세미나(구로,가산,판교) - AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
찾아가는 AWS 세미나(구로,가산,판교) - AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)Amazon Web Services Korea
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기Brian Hong
 
AWS에 대해 궁금했던 10가지 질문들(윤석찬) - AWS 웨비나 시리즈 2015
AWS에 대해 궁금했던 10가지 질문들(윤석찬) - AWS 웨비나 시리즈 2015AWS에 대해 궁금했던 10가지 질문들(윤석찬) - AWS 웨비나 시리즈 2015
AWS에 대해 궁금했던 10가지 질문들(윤석찬) - AWS 웨비나 시리즈 2015Amazon Web Services Korea
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...hoondong kim
 
AWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
AWS Cloud Design Pattenr (Korean) - CDP Seminar in KoreaAWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
AWS Cloud Design Pattenr (Korean) - CDP Seminar in KoreaSORACOM, INC
 
Cloud Taekwon 2015 - AWS를 활용한 로그 분석
Cloud Taekwon 2015 - AWS를 활용한 로그 분석Cloud Taekwon 2015 - AWS를 활용한 로그 분석
Cloud Taekwon 2015 - AWS를 활용한 로그 분석Amazon Web Services Korea
 
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017Amazon Web Services Korea
 

Ähnlich wie [테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요 (20)

서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
레코벨의 추천 서비스 고군 분투기 - AWS Summit Seoul 2017
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
한국 중소기업 개발자의 AWS 사용방법
한국 중소기업 개발자의 AWS 사용방법한국 중소기업 개발자의 AWS 사용방법
한국 중소기업 개발자의 AWS 사용방법
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
 
2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS
2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS
2017 Ad-Tech on AWS 세미나ㅣ추천서비스 고군부투기 on AWS
 
Serverless Architecture - 김현민
Serverless Architecture - 김현민Serverless Architecture - 김현민
Serverless Architecture - 김현민
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
 
모두의 클라우드 딥러닝
모두의 클라우드 딥러닝모두의 클라우드 딥러닝
모두의 클라우드 딥러닝
 
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
 
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
 
찾아가는 AWS 세미나(구로,가산,판교) - AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
찾아가는 AWS 세미나(구로,가산,판교) - AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
AWS에 대해 궁금했던 10가지 질문들(윤석찬) - AWS 웨비나 시리즈 2015
AWS에 대해 궁금했던 10가지 질문들(윤석찬) - AWS 웨비나 시리즈 2015AWS에 대해 궁금했던 10가지 질문들(윤석찬) - AWS 웨비나 시리즈 2015
AWS에 대해 궁금했던 10가지 질문들(윤석찬) - AWS 웨비나 시리즈 2015
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
 
AWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
AWS Cloud Design Pattenr (Korean) - CDP Seminar in KoreaAWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
AWS Cloud Design Pattenr (Korean) - CDP Seminar in Korea
 
Cloud Taekwon 2015 - AWS를 활용한 로그 분석
Cloud Taekwon 2015 - AWS를 활용한 로그 분석Cloud Taekwon 2015 - AWS를 활용한 로그 분석
Cloud Taekwon 2015 - AWS를 활용한 로그 분석
 
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
 

[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요

  • 1. 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요 2015-10-27 Youngjae KIM, Azure MVP
  • 2. 저는요 • 김영재 • Azure MVP (2014~) • ㈜바풀, 바로풀기 서비스 개발총괄 • (전) 카이스트 디지털미디어연구소 연구원 • (전) 영국 Ubisense UK 기술컨설턴트 • (전) 일본 국립전자통신연구소 스마트홈 미들웨어 연구원 • 바로풀기 소개 • 소셜서비스 스타트업 (23억원 투자유치, 12명 직원) • 중고등학생 학습 서비스 MAU 1위
  • 3. 먹고 자고 코딩하는거 좋아하는 개발자
  • 4. 이 세션의 대상은 • 이득 • 다른 솔루션 유저 • 처음 관련된 시나리오의 제품을 만드시는 분 • 어쩌다 들어오신 분 • 손해 • 이미 오늘 소개할 Azure 서비스를 사용 중인분 • 어떤 기술 앞에서도 시큰둥한 분 • 절대로 클라우드를 도입할 가능성도 생각도 없으신 분
  • 5. ???
  • 7. 프로그래머란? • 컴퓨터가 문제를 해결하도록 시스템을 만드는 사람 • 저 수준의 데이터를 고 수준으로 바꾸는 사람
  • 8. 흔한 인터넷 서비스 시나리오 유저가 앱으로 무엇인가를 하면 백그라운드 작업 후에 잠시 후 푸시가 오고
  • 9. 프로그래머가 할 일은 • 무엇인가를 정의 • 작업에서 의미를 추출 • 푸시로 다음 데이터 흐름을 유도 유저가 앱으로 무엇인가를 하면 백그라운드 작업 후에 잠시 후 푸시가 오고
  • 10. 판단 • 돈 내고 쓰는 솔루션 vs. 서버를 직접 관리하는 자신감 • 더 빨리 런칭할 수 있는가 • 더 안정적으로 관리할 수 있는가 • 더 확장에 대비할 수 있는가 • 클라우드 사고방식. 동의 못하면 의미 없음 • 퍼포먼스는 확장성과 돈으로 커버 가능 • 그 대신 시간과 운영 편의를 얻는다
  • 11. Azure 3년 써보니… • 2년간 좋음 • 좋은 이유는 좋게 만들었기 때문
  • 12. 오늘 다룰 내용 • Azure가 제공하는 Message Queue • Push Notification Hub 사용법 • 이들을 이용한 WebJob 데모
  • 13. 흔한 인터넷 서비스 시나리오 유저가 앱으로 무엇인가를 하면 백그라운드 작업 후에 잠시 후 푸시가 오고
  • 14. 흔한 구조 REST API Background Worker Push Notification Server Message Queue (MQ)
  • 15. Azure 대응 #1 Web Role Worker Role Notification Hub Service Bus
  • 16. Azure 대응 #2 WebSites WebJobs Notification Hub Storage Queue
  • 17. 소개할 Azure 구성요소 • Azure Queue • Azure Service Bus • Azure WebJobs • Azure Push Notification Hub
  • 19. MQ의 조건 • 중요도순 • 안정성 • 퍼포먼스 (초당 처리량) • 확장성 • API 편의성 • 보안: 주로 내부 통신용으로 사용
  • 20. Comparison Azure Rabbit MQ 안정성 ++ ++ 퍼포먼스 ++ +++ 확장성 +++ + API +++ ++ AWS SQS와의 비교? - 두 클라우드는 무엇을 선택하든 성능, 가격, 안정성이 비슷합니다. 가격은 Azure가 좀 더 저렴 (후발주자니까?!) 가격 비교 - 100 msg/sec 이상은 RabbitMQ + Large VM * 3개 운영이 더 저렴 ($535 수준) [참고링크] - 시간비용까지 생각하면 200 msg/sec 정도를 기준으로 삼아도 될 듯
  • 21. “큐(queue)로 이벤트 처리하고 싶어요“ Azure Queue로 쉽고 빠르게 만들기 Service Bus로 발전적으로 만들기 동작원리 - Storage의 응용판 장점 - 대용량 대응 - Azure WebApp의 WebJob의 쉬운 바인딩 단점 - 큐 기능에만 충실할 뿐 동작원리 - Service Bus에 기록하면 Subscribe로 작동 장점 - 더욱 풍부한 메시징 API, AMQP - 다양한 유형의 브로커 처리 (topic, relay, …) 단점 - 저렴하다고 할 순 없음. 두 기술의 차이 상세 설명 • 스펙 비교: https://azure.microsoft.com/ko-kr/documentation/articles/service-bus-azure-and-service-bus-queues-compared-contrasted/ • 코드 비교: http://msdn.microsoft.com/en-us/magazine/jj159884.aspx
  • 22. 1.1 Azure Queue (Storage)
  • 23. 특징 • Blob기반 Database인 Azure Storage를 이용한 Queue • 그래서 가지는 특징은 • 대용량 큐 저장 가능 • 빠르게 넣고 뺄 수 있음 (latency < 10ms) • 저렴한 가격 • 메시지 단위 Lock • 그래서 발생한 단점은 • 순서 처리를 보장 안함 • 트랜잭션 안됨 • 폴링으로만 처리 • AMQP 같은 고상한건 지원 안함 • 임의로 만든 점 • 최대 7일 저장 (TTL)
  • 24. Azure Queue 사용 예시 어딘가에서 입력 Azure Storage Queue Blob Table Web App WebJob Queue는 입력받으면 WebJob에서 자동으로 실행, 결과는 Azure Table 등에 담을 수 있음. 트리거
  • 25. 솔직히… • 문서화가 너무 잘되어있어서 딱히 설명할 것이 없네요! • API 사용법: https://azure.Microsoft.com/en- us/documentation/articles/storage-dotnet-how-to-use-queues/ • 바로 데모 프로그램을 실행해봅시다
  • 26. Azure Queue 활용 예시 • Azure WebJob과 연동 • 콘솔프로그램을 만든 후 github에 올리면 자동 으로 Pull  Compile  Deploy  동작. • 브라우저에서 테스트 및 로그 확인 가능. • 자동 스케일링 지원. • 트리거, 계속, 스케줄링 등 실행유형 지정. • 참고사항 • 간단한 작업에 좋음 • 대표적인 예시: 이미지 압축 • 속도가 빠르진 않음 • 관련 문서 • WebJob 시작하기 • WebJob 관련 자료 모음
  • 27. 곁다리 지식: Azure WebJobs의 주요 특징 • 병렬적 처리: 16개(기본값)의 큐를 벌크로 받아와서 처리 • 멀티스레드로 동작: 병렬 같은 병렬 아닌 동작 • 그러므로 주의사항은! • 같은 메시지가 두 번 처리될 수도 있음. 즉, 같은 메시지에 대해 다른 결과가 나오도록 하면 안됨 • Azure WebApp의 인스턴스 수에 제약이 됨 • 간단해서 쓰는거지 좋아서 쓰는거 아니다! • 이미지 리사이즈 등에 사용
  • 28. 난데없이 퀴즈퀴즈! • 다음 중 Azure Queue Storage가 제공하는 기능이 아닌 것은? 1. 80GB 이상의 메시지 저장 2. 5일 이상의 TTL 3. AMQP v1.0 4. WebJob 바인딩
  • 30. Service Bus 개요 • Push Notification Hub도 Service Bus 중 Topic의 응용. • 구성 • Queue • Topic • Relay • Notification Hub
  • 31. Service Bus 간단 개념잡기 • Queue • 일명 ‘선입선출(FIFO)’ 방식의 데이터 처리를 위한 대기열. • 주로 이벤트 처리에 활용. • OS의 핵심 요소 중 하나. • Topic • Queue의 확장판으로 분기해주는 switch가 더해짐. • 일명 Publisher-Subscriber 방식이라고도 함. • 분산시스템의 핵심 요소 중 하나. • Relay • WCF를 활용한 서비스 제공 모델. • WCF 기반으로 서비스가 구축된 엔터프라이즈 환경에 적합. • 참고: WCF는 REST 기반 웹API 기능 외에, 동기화, 양방향성, 세션처리, 보안 등에 여지가 많음.
  • 32. Service Bus Queue 단순한 구조인만큼 코드도 간단함. http://azure.microsoft.com/en-us/documentation/articles/service-bus-dotnet-how-to-use-queues/
  • 33. Service Bus Topic 중요 개념: 가상의 큐가 각 토픽마다 할당된 것과 마찬가지. http://azure.microsoft.com/en-us/documentation/articles/service-bus-dotnet-how-to-use-topics-subscriptions/?fb=ko-kr
  • 34. 코드 들여다보기 • 바로풀기가 사용 중인 Service Bus Queue
  • 37. Azure Push Notification Hub • Azure ServiceBus에 Token DB와 push endpoint를 추가한 형태 • 퍼포먼스는 ServiceBus에 종속적 • 입력은 초당 2000건 • 하지만 출력은 모른다!? • 일종의 푸시 미들웨어 • 다양한 토큰규격, 핸드쉐이크 형태를 일원화하고 통합ID로 관리 • 한 유저의 멀티디바이스에 대응하기 편리
  • 39. API Overview • 등록 형태: 단말 별로 템플릿을 등록하여 처리
  • 40. API Overview • 전송은 단말 무관하게 코드 한 줄.
  • 41. Notification Hub 작동 원리 (기본) 어딘가에서 입력 사용자 단말로 전송Google GCM Apple APNS Windows WNS … 푸시 플랫폼 별 토큰을 이용하여 전송 Azure Topic 처리기 전송 결과 취득 불량 전송 건에 대한 피드백 처리
  • 42. Notification Hub 작동 원리 (상세) 어딘가에서 입력 사용자 단말로 전송Google GCM Apple APNS Windows WNS … 푸시 플랫폼 별 토큰을 이용하여 전송 Azure Topic 처리기 전송 결과 취득 불량 전송 건에 대한 피드백 처리 토픽1+채널+내용 토픽2+채널+내용토픽1 +내용 채널 + 토픽1 등록 Topic & Channel Key-Values 1 2 4 5 6 3
  • 43. 푸시 태그를 잘 생각해서 써야 한다 • 태크는 Key이며, Key-Value 로 이루어진 값을 대상에게 전송합니다. • Service Bus 토픽이 곧 Push Notification 태그 • 기본 활용: 한 ID의 단말에 보내고 싶다 • 태그명: userId • 예시: userId=Youngjae • 참고: userId=Youngjae로 등록된 모든 단말에 전송 (내 모든 단말) • Microsoft를 “좋아요” 한 사람들에게 보내고 싶다. • 태그명: like • 예시: like=Microsoft • Microsoft를 “좋아요” 한 한국어 유저들에게 보내고 싶다. • 태그명1: like, 태그명2: locale • 예시: like=Microsoft && locale=“ko-KR”
  • 44. 실제로는? 1. 태그에만 맡기기에는 서비스가 보다 세밀하게 타겟팅 하길 원함 2. 서비스가 워낙 변화무쌍하게 바뀌어서 푸시 DB를 갱신하는 것은 비효율적 3. 태그DB와 로직DB를 모두 관리해야 함 잘 안쓰임! 그냥 ID/전체 보내는 방식으로 커버 최소한의 카테고리를 태깅: locale, userId, gender
  • 45. 템플릿 • 템플릿은 클라이언트에서 $(name)과 같이 변수껍데기를 등록하면 보낼 때 name=“youngjae” 식으로 내용을 채워서 받을 수 있음. • 사용 시나리오 • 한국어 유저의 폰 등록 Template = “$(Korean)” • 서버 전송 Korean=“안녕”, English=“hello” • 클라이언트는 푸시를 받을 때 “안녕“만 취득함. • 토픽과 적절히 섞어 쓰면 맞춤 푸시를 보낼 수 있음. • 태그는 수신 대상을 규정 • 템플릿은 해당 범위에 세부적인 맞춤 정보를 제공 • 적용시 중요: 서비스에서 기획이 명확하게 잡혀있어야 효과가 좋음. • 안그러면 땜빵 템플릿이 넘칠 수도 있음.
  • 46. 실용적인 팁 • 항상 태그에 “userId:아이디“를 기본으로 적용하면 좋음. • 해당 ID에 맞추어 모든 기기로 전송됨. • 어차피 보낼 때 태그가 없으면 모두에게 보냄 (broadcast)  장점이지만 대재앙이 될 수 있으니 서버에서 깐깐하게 처리할 것. • 동일한 이름의 template은 덮어쓰기됨. • 별도의 업데이트 처리 불필요. • 푸시는 SMS가 아니므로 시간차가 있을 수 있음. • Free 버전일 경우 간헐적으로 몰아서 처리됨 (경험상 약 1~2분)
  • 47. 또 난데없이 퀴즈퀴즈! • 다음 중 Azure Notification Hub가 제공하는 기능이 아닌 것은? 1. REST API 2. MMS 전송 3. 예약된 푸시 전송 4. Amazon 디바이스 푸시
  • 49. 바로풀기에 처음 사용했던 Azure 구성 (Apr. 2014) Virtual Machine WebApp Mobile Service Storage Traffic Manager Legend MS-SQL DB API EndPoint (Performance) Spring F/W +CentOS (Large VM) Spring F/W +CentOS (Small VM) Storage Table Storage Queue Storage Blob Web Frontend WorkerRole Push ElasticSearch EhCache Backup DB Azure SQL User MongoDB General Backup
  • 50. 바로풀기에 현재 사용하는 Azure 구성 (Oct. 2015) Virtual Machine WebApp Push Notification Storage Traffic Manager Legend MS-SQL DB API EndPoint (Performance) ASP.NET WebApi Storage Table Service Bus Storage Blob Worker Role Push Orient DB Backup DB Azure SQL User General Backup Azure SQL dJango (Web) WebJobs
  • 51. 솔직히 써보자면… • Service Bus는 안정성은 기대보다 높습니다 • Azure에서도 가장 안정성에 공들이는 부분. • 2년간 Zero downtime • https://azure.Microsoft.com/en-us/support/legal/sla/service-bus/v1_0/ • 그래도 이중화는 하세요 • Storage 좋습니다 • Azure 서비스 중 제일 좋아합니다 • WebJob은 작년에 이어 아직도 추천하지 않습니다 • WebRole이 Deploy가 느리다는 단점 외엔 더 믿을만합니다 • NewRelic이 지원 안됨! • 작년보다 PaaS를 더 신뢰합니다 • WebSites 추천합니다. 특히 닷넷서버와 결합시 제로스트레스! 궁극의 PaaS! • 사용경험에 직접적인 Frontend는 Traffic Manager를 이용한 이중화 필수입니다
  • 52. Azure 꿀팁 몇가지 • “Service Bus를 쉽게 관리하는 툴 없나요?” • Service Bus Explorer를 써보세요. 설명서, 다운로드 • 다운로드 받은 후 2.1.zip 파일을 압축 풀고 ServiceBusExplorer.exe를 실행하세요. • “Azure Storage를 탐색기처럼 관리하는 툴 없나요?” • Azure Storage Explorer를 써보세요. • 더 전문적인 것 (유료): Azure Management Studio
  • 53. Notification Hub 소스 • 꼭 한 단계씩 차근차근 해주세요. • http://azure.microsoft.com/en-us/documentation/articles/notification- hubs-android-get-started/?fb=ko-kr • 메시지 보내는 서버 소스 • http://blogs.msdn.com/b/azuremobile/archive/2014/04/08/push- notifications-using-notification-hub-and-net-backend.aspx • 좋은 예시 • https://github.com/sabbour/breakingnews • 안드로이드 프로그래머는 아래 링크 참조. • http://www.slideshare.net/agrocholski/google-devfest-mn-notification-hubs

Hinweis der Redaktion

  1. 사실 이 제목에는 다음과 같은 의미가 있습니다. 기술세션이지만 좀 더 깊은 이야기를 해볼게요. 프로그래머는 저수준의 데이터를 고수준으로 바꾸는겁니다. 세상의 문제를 컴퓨터가 해결하도록하는 시스템을 만드는 사람입니다. 이에 상관없는 것에 시간을 쓸 수록 프로그래머의 본질에 멀어지는겁니다.
  2. PaaS를 더 적극적으로 도입