Upload
trustinlee
View
3.707
Download
1
Embed Size (px)
DESCRIPTION
'Web Server Architecture for Maximizing User Experience' - presented at Daum Tech Talk (Daum Corporation, 19 March 2007) / BarCamp Seoul 2006
Citation preview
이희승
웹플랫폼개발팀
07년 2월 15일
사용자 경험 극대화를 위한사용자 경험 극대화를 위한웹 서버 아키텍처웹 서버 아키텍처
본 발표 자료는 본 발표 자료는 NHNNHN의 정책과 직접적 관련이 없습니다의 정책과 직접적 관련이 없습니다..
2
발표자발표자: : 이희승이희승
http://gleamynode.net/
Apache Software Foundation
– Apache MINA PMC Chair ...2006/10/25
– Apache Directory PMC Member ...2005/03/17
– Committer ...2004/10/07
NHN 웹 플랫폼 개발팀
– 프로토콜 서버 및 컨테이너 개발
3
목차목차
RIA의 재등장
RIA 통신 기술
새로운 웹 서버 구조
현실적 문제
결론
4
목차목차: RIA: RIA의 재등장의 재등장
RIA의 재등장
– 배경
– 사례
RIA 통신 기술
새로운 웹 서버 구조
현실적 문제
결론
5
새로운 웹 어플리케이션의 등장새로운 웹 어플리케이션의 등장
Rich Internet application ...1998
– 웹의 접근성 · 친근함 유지
– Client-Server의 풍부한 UI 결합
Web 2.0 ...2004
– 웹 브라우저 · 플래쉬의 플랫폼화
• Dynamic HTML
• AJAX
6
RIA RIA 도입 사례도입 사례: Zimbra Collaboration Suite: Zimbra Collaboration Suite
7
RIA RIA 도입 사례도입 사례: Meebo: Meebo
8
RIA RIA 도입 사례도입 사례: Amazon Diamond Search: Amazon Diamond Search
9
목차목차: RIA : RIA 통신 기술통신 기술
RIA의 재등장
RIA 통신 기술
– AJAX
– Comet
– 사용 사례
새로운 웹 서버 구조
현실적 문제
결론
10
RIA RIA 통신 기술통신 기술: AJAX: AJAX
Asynchronous Javascript and XML
페이지의 리로딩 없음
Javascript로 background에서 HTTP 요청
텍스트 포맷 데이터 교환
– XML
– XHTML
– JSON
11
RIA RIA 통신 기술통신 기술: AJAX: AJAX
12
RIA RIA 통신 기술통신 기술: Comet: Comet
서버 푸시 기술
보이지 않는 IFrame
– HTTP 접속을 항상 유지
– 주고 받을 데이터가 있을 때만 전송
– 접속이 끊기지 않을 정도로 빠르게
낮은 Latency (vs. polling)
13
RIA RIA 통신 기술통신 기술: Comet: Comet
14
RIA RIA 통신 기술통신 기술: Comet : Comet 사용 사례사용 사례
채팅
– Meebo
문서 협동 저작
– Google Docs & Spreadsheets
실시간 정보 수신
– 주가 정보
– 교통 정보
15
RIA RIA 통신 기술통신 기술: Event Source: Event Source의 다양화의 다양화
클라이언트 · 웹 브라우저
– 사용자의 UI 상호 작용
다른 사용자
– 채팅
외부 시스템
– 교통 관제 시스템
16
목차목차: : 새로운 웹 서버 구조새로운 웹 서버 구조
RIA의 재등장
RIA 통신 기술
새로운 웹 서버 구조
– 기존 구조
– 새로운 구조
현실적 문제
결론
17
기존의 웹 서버 구조기존의 웹 서버 구조
고정된 스레드 모델
– 1 thread per connection
– 굵고 짧은 연결에 적합 ...기존 WebApp
– 길고 가는 연결에는 부적합 ...Comet
유연한 스레드 모델이 필요
18
기존의 웹 서버 구조기존의 웹 서버 구조: : 흐름도흐름도
19
기존의 웹 서버 구조기존의 웹 서버 구조: Pseudo Code: Pseudo Code
HTTP 요청이 들어오면:
연결이 끊길 때까지:
이벤트가 들어올 때까지:
30초 대기 또는
연결 유지 메시지 전송
이벤트가 들어오면:
비즈니스 로직 수행
수행 결과 메시지 전송
20
새 웹 서버 구조새 웹 서버 구조
Event-driven architecture
– 이벤트 대기 로직이 I/O 스레드에 존재
• 이벤트 대기의 Cross-cutting concern化
– 이벤트 발생시에만 B/L 스레드 활성화
• 훨씬 적은 스레드로 동일한 처리 능력
활발한 오픈 소스 활동
– MINA + AsyncWeb
– ······
21
새 웹 서버 구조새 웹 서버 구조: : 흐름도흐름도
22
새 웹 서버 구조새 웹 서버 구조: Pseudo Code: Pseudo Code
이벤트가 들어오면:
비즈니스 로직 수행
수행 결과 메시지 전송
이벤트가 30초 동안 없으면:
연결 유지 메시지 전송
23
새 웹 서버 구조새 웹 서버 구조
새로 만드는데 굳이 1 thread/connection?
다양한 스레드 모델 지원
– CPU job 위주의 low latency 로직
– 일반적인 DB 로직
– CPU와 DB 로직이 혼합된 경우
• SEDA (Staged Event Driven Architecture)
24
새 웹 서버 구조새 웹 서버 구조: : 스레드 모델스레드 모델
Interceptor Chain
– Event Source와 Business Logic 사이에 위치
– Servlet Filter와 유사 (Chain of Responsibility)
스레드 풀을 Interceptor로 구현
25
새 웹 서버 구조새 웹 서버 구조: : 스레드 모델스레드 모델
26
목차목차: : 현실적 문제현실적 문제
RIA의 재등장
RIA 통신 기술
새로운 웹 서버 구조
현실적 문제
– 현실은?
– 어떻게?
결론
27
그러나 현실은그러나 현실은??
기존 코드의 마이그레이션
개발자 교육
구현 비용
28
그렇다면 어떻게그렇다면 어떻게??
Servlet API Bridge 제공
기존 프레임워크 그대로
MINA + AsyncWeb
29
목차목차: : 결론결론
RIA의 재등장
RIA 통신 기술
새로운 웹 서버 구조
현실적 문제
결론
30
결론결론
웹 경험을 극대화하는 기술이 존재
기존 웹 서버로는 수용이 불가능
Event-driven 모델로의 이행이 필요
이행 과정의 문제는 충분히 해결 가능
이희승
웹플랫폼개발팀
07년 2월 15일
감사합니다.
Q & AQ & A