URL Shortener 프로젝트로 배우는 Vert.X 프레임워크

Similar documents
안전한 웨 애플리케이션을 위한 자바스크립트 보안

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

본책- 부속물

C O N T E N T S 목 차 요약 / 1 I. 중남미화장품시장현황 / 3 Ⅱ. 주요국별시장정보 / 9 ( 트렌드 유통망 인증 ) 1. 브라질 / 9 2. 멕시코 / 콜롬비아 / 칠레 / 64 Ⅲ. 우리기업진출전략 / 79 # 첨부. 화장품관

Microsoft PowerPoint - chap01-C언어개요.pptx

**한빛소리02,3,4월호

처음 시작하는 Sass: CSS의 한계를 뛰어넘는 Sass를 만나다


안전한 웨 애플리케이션을 위한 자바스크립트 보안

C++ Programming

iOS 7 핵심 노트: Xcode 5, 플랫 UI, API 중심으로 살펴보는 iOS 7

SIGIL 완벽입문

C O N T E N T 목 차 요약 / 4 Ⅰ. 서론 Ⅱ. 주요국별대형유통망현황 / Ⅲ. 시사점및진출방안 ( 첨부 ) 국가별주요수입업체

FFmpeg 라이브러리: 코덱과 영상 변환을 중심으로

안드로이드를 위한 Gradle: 안드로이드 스튜디오를 이용한 빌드 자동화

C++ Programming

PowerPoint Presentation

iOS 9 핵심 노트

02-출판과-완성

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

대규모 자바스크립트 웹어플리케이션개발하기 with BackboneJS and RequireJS 넷스루개발 2 팀이병주

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

µ¶µµºÎ·Ï1~64

TTA Journal No.157_서체변경.indd

[Brochure] KOR_TunA

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

네트워크 보안 시스템 구축과 보안 관제_보안 관제편

Docker로 PaaS 구성하기

이상한 나라의 앨리스.pages

<4D F736F F F696E74202D20332DC1F6B9DDC1A4BAB8BDC3BDBAC5DB>

¾Ë·¹¸£±âÁöħ¼�1-ÃÖÁ¾

2007백서-001-특집

00목차

(291)본문7

01....b

Spring Boot

Microsoft PowerPoint App Fundamentals[Part1].pptx

17th Eco Book Festival, 환경책큰잔치 17th Eco Book Festival 새롭게읽자, 다르게살자 서울숲숲속작은도서관 Opening , 6:30pm 서울숲커뮤니티센터 1 층

개발자를 위한 오라클 SQL 튜닝

OCR 프로그래밍: 이미지 인식

국어부록표지

歯k"

_....

Xen으로 배우는 가상화 기술의 이해 - I/O 가상화

워드프레스 플러그인 취약점 진단과 모의해킹

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

PowerPoint Presentation

<C1A4C3A5C0CC3538C8A32E687770>

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

C O N T E N T S 목 차 요약 Ⅰ. 동유럽의료기기시장개요 동유럽의료기기시장현황 2. 관련 EU 정책및지침 3. 시장전망 Ⅱ. 국가별의료기기시장동향 폴란드 2. 체코 3. 헝가리 4. 크로아티아 Ⅲ. 국가별유망품

슬라이드 1

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

CSG_keynote_KO copy.key

Microsoft PowerPoint - java1-lecture1.ppt [호환 모드]

Cisco FirePOWER 호환성 가이드

Microsoft Word - src.doc

CODESYS 런타임 설치과정

JVM 메모리구조

Xen으로 배우는 가상화 기술의 이해 - CPU 가상화

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관

60

Apache JMeter 오픈소스로 대용량 웹 서비스 성능 테스트하기

슬라이드 1

암호내지

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

개발자를 위한 하룻밤에 읽는 Go 언어 이야기

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할


표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

슬라이드 1

본 강의에 들어가기 전

Microsoft PowerPoint - java1-lecture1.ppt [호환 모드]

법학박사학위논문 실손의료보험연구 2018 년 8 월 서울대학교대학원 법과대학보험법전공 박성민

이 드리는 혜택 완벽 을 위한 발환경 : Team Foundation Server 200 & CAL 제공 최저의 비용으로 구현을 위해 Visual Studio Team Foundation Server 200 서버 라이센스와 CAL이 에 포함되어 있습니다 을 모든 팀원이

Windows Live Hotmail Custom Domains Korea

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

파워포인트

슬라이드 1

wtu05_ÃÖÁ¾

내지-교회에관한교리

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

ÃѼŁ1-ÃÖÁ¾Ãâ·Â¿ë2

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

Samsung SDS Enterprise Cloud Networking CDN Load Balancer WAN

슬라이드 1

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

Jkafm093.hwp

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

행정학석사학위논문 공공기관기관장의전문성이 조직의성과에미치는영향 년 월 서울대학교행정대학원 행정학과행정학전공 유진아

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

01.내지완완

Windows 8에서 BioStar 1 설치하기

버프스위트 활용과 웹 모의해킹

들어가는글 2012년 IT 분야에서최고의관심사는아마도빅데이터일것이다. 관계형데이터진영을대표하는오라클은 2011년 10월개최된 오라클오픈월드 2011 에서오라클빅데이터어플라이언스 (Oracle Big Data Appliance, 이하 BDA) 를출시한다고발표하였다. 이와

Global Market Report 한 - 뉴질랜드 FTA 에따른현지반응과 중소기업수출유망품목

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

Transcription:

Hanbit ebook Realtime 95 URL Shortener 프로젝트로배우는 Vert.x 프레임워크 김요한지음

URL Shortener 프로젝트로배우는 Vert.x 프레임워크 김요한지음

URL Shortener 프로젝트로배우는 Vert.X 프레임워크 초판발행 2015 년 4 월 10 일 지은이김요한 / 펴낸이김태헌펴낸곳한빛미디어 ( 주 ) / 주소서울시마포구양화로 7길 83 한빛미디어 ( 주 ) IT출판부전화 02-325-5544 / 팩스 02-336-7124 등록 1999년 6월 24일제10-1779호 ISBN 978-89-6848-744-6 15000 / 비매품 총괄배용석 / 책임편집김창수 / 기획 편집정지연디자인표지 / 내지여동일마케팅박상용 / 영업김형진, 김진불, 조유미 이책에대한의견이나오탈자및잘못된내용에대한수정정보는한빛미디어 ( 주 ) 의홈페이지나아래이메일로알려주십시오. 한빛미디어홈페이지 www.hanbit.co.kr / 이메일 ask@hanbit.co.kr Published by HANBIT Media, Inc. Printed in Korea Copyright c 2015 김요한 & HANBIT Media, Inc. 이책의저작권은김요한과한빛미디어 ( 주 ) 에있습니다. 저작권법에의해보호를받는저작물이므로무단복제및무단전재를금합니다. 지금하지않으면할수없는일이있습니다. 책으로펴내고싶은아이디어나원고를메일 (ebookwriter@hanbit.co.kr) 로보내주세요. 한빛미디어 ( 주 ) 는여러분의소중한경험과지식을기다리고있습니다.

대상독자및참고사항 초급초중급중급중고급고급 이책은 Vert.x 기반의개발과정을정리한것으로, Vert.x의특징이나개발방법은좀더자세한설명이필요할수있다. 해당내용은다음도서가출간되어있으니참고하기바란다. 자바개발자를위한 Vert.x 애플리케이션개발 ( 한빛미디어, 2015) 01 자바스크립트로시작하는 Vert.x ( 한빛미디어, 2014) 02 Vert.x 는 JDK 1.7.0 이상에서실행되는데, 이책에서구현할프로젝트는 Java 8 이상에서지원하는람다 Lambda 표현식을사용하므로 JDK 8을설치한다. Vert.x의자세한설치방법은홈페이지 03 를참조하기바란다. 01 http://www.hanbit.co.kr/ebook/look.html?isbn=9788968487286 02 http://www.hanbit.co.kr/ebook/look.html?isbn=9788968486722 03 http://vertx.io/install.html

한빛 ebook 리얼타임 한빛 ebook 리얼타임은 IT 개발자를위한 ebook 입니다. 요즘 IT 업계에는하루가멀다하고수많은기술이나타나고사라져갑니다. 인 터넷을아무리뒤져도조금이나마정리된정보를찾기도쉽지않습니다. 또한, 잘정리되어책으로나오기까지는오랜시간이걸립니다. 어떻게하면조금이라 도더유용한정보를빠르게얻을수있을까요? 어떻게하면남보다조금더빨 리경험하고습득한지식을공유하고발전시켜나갈수있을까요? 세상에는수 많은종이책이있습니다. 그리고그종이책을그대로옮긴전자책도많습니다. 전자책에는전자책에적합한콘텐츠와전자책의특성을살린형식이있다고생 각합니다. 한빛이지금생각하고추구하는, 개발자를위한리얼타임전자책은이렇습니다. 1 ebook First - 빠르게변화하는 IT 기술에대해핵심적인정보를신속하게제공합니다 500페이지가까운분량의잘정리된도서 ( 종이책 ) 가아니라, 핵심적인내용을빠르게전달하기위해조금은거칠지만 100페이지내외의전자책전용으로개발한서비스입니다. 독자에게는새로운정보를빨리얻을기회가되고, 자신이먼저경험한지식과정보를책으로펴내고싶지만너무바빠서엄두를못내는선배, 전문가, 고수분에게는좀더쉽게집필할기회가될수있으리라생각합니다. 또한, 새로운정보와지식을빠르게전달하기위해 O'Reilly의전자책번역서비스도하고있습니다. 2 무료로업데이트되는전자책전용서비스입니다 종이책으로는기술의변화속도를따라잡기가쉽지않습니다. 책이일정분량이상으 로집필되고정리되어나오는동안기술은이미변해있습니다. 전자책으로출간된이 후에도버전업을통해중요한기술적변화가있거나저자 ( 역자 ) 와독자가소통하면서보완하여발전된노하우가정리되면구매하신분께무료로업데이트해드립니다.

3 4 독자의편의를위해 DRM-Free 로제공합니다 구매한전자책을다양한 IT 기기에서자유롭게활용할수있도록 DRM-Free PDF 포맷으로제공합니다. 이는독자여러분과한빛이생각하고추구하는전자책을만들어나가기위해독자여러분이언제어디서어떤기기를사용하더라도편리하게전자책을볼수있도록하기위함입니다. 전자책환경을고려한최적의형태와디자인에담고자노력했습니다종이책을그대로옮겨놓아가독성이떨어지고읽기어려운전자책이아니라, 전자책의환경에가능한한최적화하여쾌적한경험을드리고자합니다. 링크등의기능을적극적으로이용할수있음은물론이고글자크기나행간, 여백등을전자책에가장최적화된형태로새롭게디자인하였습니다. 앞으로도독자여러분의충고에귀기울이며지속해서발전시켜나가도록하겠 습니다. 지금보시는전자책에소유권한을표시한문구가없거나타인의소유권한을표시한문구가있다면위법하게사용하고있을가능성이큽니다. 이경우저작권법에따라불이익을받으실수있습니다. 다양한기기에사용할수있습니다. 또한, 한빛미디어사이트에서구매하신후에는횟수에관계없이내려받으실수있습니다. 한빛미디어전자책은인쇄, 검색, 복사하여붙이기가가능합니다. 전자책은오탈자교정이나내용의수정 보완이이뤄지면업데이트관련공지를이메일로알려드리며, 구매하신전자책의수정본은무료로내려받으실수있습니다. 이런특별한권한은한빛미디어사이트에서구매하신독자에게만제공되며, 다른사람에게양도나이전은허락되지않습니다.

차례 chapter 1 Vert.x 의특징 001 1.1 조금더완전한모듈화 002 1.2. 폴리글랏으로개발하기 002 chapter 2 URL Shortener 서비스개발 005 2.1 프로젝트준비 005 2.1.1 필요한기능 005 2.1.2 서버와 DB 구성 007 2.1.3 개발환경구성 008 2.2 웹서버개발 011 2.2.1 모듈검색 011 2.2.2 스크립트작성 012 2.2.3 서버실행 013 2.2.4 화면구현 014 2.3 MongoDB 데이터모델링 016 2.3.1 MongoDB 데이터의구조 017 2.3.2 일련번호 Collection 019 2.3.3 URL 저장 Collection 020 2.4 Persistor 모듈개발 021 2.4.1 프로젝트생성하기 022 2.4.2 모듈구현하기 025 2.4.3 람다표현식으로리팩토링하기 031 2.4.4 모듈설정파일작성하기 032 2.4.5 모듈패키징하기 033 2.4.6 테스트코드구현하기 035 2.4.7 모듈설치하기 039 2.4.8 모듈개선하기 040

2.5 API 서버모듈개발 045 2.5.1 프로젝트생성하기 045 2.5.2 모듈구현하기 046 2.5.3 모듈설정파일작성하기 051 2.5.4 모듈패키징하기 052 2.5.5 모듈테스트하기 052 2.5.6 모듈설치하기 057 2.6 API 서버실행 058 2.6.1 서버실행스크립트작성하기 058 2.6.2 서버실행하기 059

chapter 1 Vert.x 의특징 Vert.x는 JVM 기반의경량고성능애플리케이션을구축할수있는개발플랫폼으로, 자바스크립트엔진을기반으로실행되는 Node.js와마찬가지로비동기처리방식으로동작한다. 그러나 Node.js는하나의스레드로실행되지만, Vert.x 는 CPU 코어수에따라 Event Looping 스레드가실행되어 CPU 사용률을극대화할수있고, 클러스터환경을쉽게구성할수있으며, 분산되어실행된서버간데이터를상호공유하기쉽다는장점이있다. Vert.x는 Node.js 보다레퍼런스와에코시스템이부족한편이고, 설치와개발에필요한기반기술의복잡도역시상대적으로높은편이지만이미 Java에익숙한개발자라면 Vert.x를기반으로개발하는데큰어려움은없을것이다. Vert.x의특징은홈페이지 01 에서자세히확인할수있고관련서적도다수출판되어있으므로여기서는 Vert.x의특징과상세구조에대해서는설명하지않고, 실무개발자가실제프로젝트를개발하는과정을그대로따라할수있도록하는데중점을둔다. 실제개발을시작하기에앞서 Vert.x가 Node.js와크게구별되는특징 2가지를정리하고시작해보자. 01 http://vertx.io/ 1 Vert.x 시작하기 - 001

1.1 조금더완전한모듈화 Vert.x는모듈단위로개발되고하나이상의모듈이실행되어서버가실행된다. 하나의모듈은 ZIP 파일로패키징 ( 압축 ) 되며, 이파일에는하나의클래스로더 Class Loader 로실행되기위해필요한라이브러리도모두포함된다. Vert.x의각모듈이별도의클래스로더로실행된다는것은모듈자체가하나의완전한독립프로그램이라는것을의미한다. 이는하나의클래스로더에애플리케이션클래스파일과함께로딩되어실행되는 JAR Java Archive 라이브러리와는확연히구별되는점이다. 그림 1-1 JAR 라이브러리와 Vert.x 모듈의로딩비교 JavaMain.class Library1.jar Library2.jar Module1 Verticle1.class Library1.jar Library2.jar Module2 Verticle2.class Library1.jar Library2.jar Module3 Verticle3.class Library1.jar Library2.jar ClassLoader JAR 라이브러리하나의클래스로더에함께로딩된다. ClassLoader ClassLoader Vert.x 모듈 ClassLoader 별도의클래스로더에로딩되어실행된 Vert.x 모듈간의데이터송 / 수신과공유 는 In-Memory Data Grid 인 Hazelcast 을기반으로구현된 Event Bus 를통 해가능하도록설계되었다. 1.2. 폴리글랏으로개발하기 프로그래밍에서폴리글랏 Polyglot 의의미는다양한개발언어의특징을이해한상태에서여러가지개발언어를사용할수있다는것을말한다. 개발팀에서정의한개발표준에따라같은개발환경이라하더라도다양한개발언어로개발할수있다. 002 -

여러가지개발언어를사용할수있다면 multilingual 이라고할수도있겠지만, polyglot 을좀더의미있게적용하기위해서는나름의기준이나규칙을세우고이를기반으로개발할필요가있다. 존아우스터하우트 John Ousterhout 는좀더완전한애플리케이션을구성하는규칙을 Components + Scripts = Applications 라고하였다. 이는리눅스와같이컴파일되어동작하는커널컴포넌트와다양한컴포넌트들을조합해서실행하는셸프로그램으로분리되어있는것과같다. 그림 1-2 Components + Scripts = Applications Application User Scripts Bulit-in Scripts Kernel of Components Vert.x 는 Java, JavaScript, CoffeeScript, Ruby, Python, Groovy 등다양한개발언어를 JVM 기반으로실행할수있도록지원하고있다. 이러한개발언어들은컴파일해서실행하는것과스크립트로실행되는두가지형태로나눌수있고, 적절한상황에따라구별하여사용하는기준이나정책이필요하다. 그리고각각모듈 ( 컴포넌트 ) 단위로컴파일되거나실행도가능해야한다. 예를들면, Vert.x 기반으로애플리케이션을구축하는경우애플리케이션을구성하는모듈들은기능별로각각 Java로개발하고, 이모듈들을사용하여실행하는프로그램은 JavaScript로개발할수있다. 모듈의기능이명확하게정의되어있고내부적으로실행참조관계가복잡하게구성되어자주변화하지않는반면 ( 리눅스의커널컴포넌트 ) 실행스크립트는사용하고자하는모듈의기능들을조합하여최종실행하는것으로변화에보다유연해야할필요가있다 ( 리눅스의쉘스크립트 ). 1 Vert.x 시작하기 - 003

이외에도 Vert.x는 WebSocket 기능을통해실시간서버나 Push 애플리케이션서버구현이가능하고, 기존의 Java 애플리케이션에내장 embedded 하여함께실행되도록개발하는등다양한특징이있으므로 Vert.x 홈페이지에서자세히확인해보기바란다. 004 -