맛만 보자 Undertow

Preview:

Citation preview

맛만 보자 Undertow

Jeff Lee

Who am i

초콜릿을 14년 동안 받아보지 못한 개발자… (ㅠ.ㅠ )GRD ASKY (그래도 안생겨요)

http://blog.daum.net/dhlh0h34/107

먹통~ 먹통~ 왜~ 왜~

“1초에 30만명 접속" 중국 춘제 기차표 예매사이트 '먹통' 막은 알리바바출처 : http://www.ajunews.com/view/20150120144132775

제주항공 홈페이지 '먹통'…특가 항공권 예매 전쟁 시작출처 : http://www.hankyung.com/news/app/newsview.php?aid=201501206254g

코레일 예매 서비스 먹통…"원인 파악 중"출처 : http://biz.newdaily.co.kr/news/article.html?no=10034418

한국시리즈 예매, 작년에 이어 올해도 먹통출처 : http://m.mk.co.kr/sports/home/2014/1383520

저희 회사 서비스의 특징

서비스 접속의 80% 이상은 데이터베이스를 사용하지 않는다.

우리 회사 서비스는 글로벌을 지향한다.그런데 돈이 부족하다. (ㅠ.ㅠ )

파트너 서버

스마트 폰

데이터 베이스회사 서비스 서버

인터넷 트래픽의 폭발적 증가

PC 모바일 IoThttp://www.moneyone.co.kr/attachfile/images/000043/20130514151019435_N9HT2H6D.png

Nginx versus Apache

동시 접속자가 많아 질수록 ngnix가 apache보다 많은 요청을 처리한다.

동시 접속자가 많아져도 ngnix는 apache처럼 메모리 사용량이 많이 증가 하지 않는다.

http://blog.webfaction.com/2008/12/a-little-holiday-present-10000-reqssec-with-nginx-2/

어떤 마법이 숨어 있을까요?

Apache

Ngnix

Socket Connection Thread

Socket Connection

Socket Connection

Thread

OS Kernel

or

Thread Pool

Socket Connection Thread

Web Framework Benchmarks (EC2)

https://www.techempower.com/benchmarks/#section=data-r9&hw=peak&test=plaintext

Undertow - 나도 물 좋아해요~

저류, 되돌아가는 물결, 역류

Undertow - 넌 누구니?

Undertow has a composition based architecture that allows you to build a web server by combining small single purpose handlers.

- Full Java EE servlet 3.1 container- Low level non-blocking handler

http://undertow.io

왜~ Undertow를 쓸까?

겁니 가벼워요~- core 라이브러리 1M- 단순 웹 서버는 4MB 이하 힙 사이즈에서 동작

프로토콜 바꿔줘요~ (HTTP Upgrade)- HTTP 1.1에서 다른 프로토콜로 변경 해줌.

- Upgrade: websocket

당근~ Web Socket 지원- JSR-356 스펙을 포함한 웹 소켓을 완벽하게 지원

왜~ Undertow를 쓸까?

오~ Servlet 3.1 지원- Java EE servlet 3.1 지원

어디 숨었니?- 애플리케이션 안에 포함 가능- 혼자 작동 가능

앗 너무 유연해~- 미리 만들어진 핸들러를 필요한 만큼 가져다가 사용 가능

근본 있는 Undertow

XNIO비동기 통신 라이브러리 (ex:Netty)SSL 지원http://xnio.jboss.org/

지원하는 프로토콜

HTTPHTTPSAJP(Apache JServ Protocol)

SPDYHTTP2(Draft 15)

미리 만들어진 Handlers

PathVirtual HostPath TemplateDateResourcePredicateHTTP ContinueWebsocketRedirect

TraceHeaderIP Access ControlACLURL DecodingSet AttributeRewriteGraceful ShutdownProxy Peer Address

Show me the code

Method chaining 방식으로 개발

Handler 만들기

File Service

WebSocket

Reverse Proxy

Error Handling

Servlet Deployment

개발 관련 코드 사이트

Undertow Githubhttps://github.com/undertow-io/undertow

JBoss Wildfly Github (웹서버 확장)https://github.com/wildfly/wildfly/tree/master/undertow

훈훈한 마무으~리

서비스 요구 사항에 맞는 프레임워크를 선택하세요.

- 프레임워크는 각자의 목적을 가지고 있습니다.- 프레임워크의 특징을 잘 파악하여야 합니다.- Undertow는 그 선택지 중 하나 입니다.