이 블로그의 모든 예제코드는 깃허브에서도 볼 수 있습니다. https://github.com/AeroCodeX/
코틀린으로 웹서버를 만들어보자 |
학교 모바일 프로젝트 덕분에 급하게 API 서버를 개발해야 할 일이 생겼다.
사용되기 쉬운 형태로 외부에 공개되어야 하는 특성상 웹서버가 가장 적합하다고 생각했고.
어차피 클라이언트도 코틀린으로 개발하는데,
까짓거 서버도 코틀린으로 만들어보자 해서 시작되었다.
코틀린으로 서버를 개발한 사례가 있는지 살펴봤는데,
카카오톡에서 시험삼아 해봤는데 의외로 괜찮다고 하더라.
이미 대기업에서 성공한 사례가 있기 때문에,
언어에 대한 불신(ex. 자바계열은 좀 느리지 않아?)은 덮어버리고 시작할 수 있었다.
시작은 뻘짓으로 ㅡ Kottpd |
가뜩이나 해야할 일이 쌓여있는데, 웹서버 하나에 시간을 많이 뺏길수는 없었다.
바퀴부터 만들면 학점은 저멀리 사라질 것 같다.
웹서버 프레임워크를 찾을 때, 다음과 같은 기준으로 검색했다.
최소한의 기능 : 적어도 RESTful은 되어야지.
최소한의 설정 : 적용보다 셋팅이 더 어렵더라.
최대한의 직관 : 누가봐도 어떤 동작을 하는지 짐작은 되어야지.
다행히 Gradle에 한 줄만 넣어도 되고,
얼추 기능도 있고, 직관성도 뛰어난 프레임워크를 찾긴 찾았다.
Kottpd 라는 프레임워크였는데 매우 작고 가볍다. (100줄 이하의 소스파일 7개로 이루어져있음)
다만, 개인이 만든 프레임워크라 그런지 문서도 미흡하고 사용자도 별로 없다는 것이 단점.
마이크로 서비스에는 좋은듯 하다.
그렇지만 Kottpd의 도큐먼트는 사실상 없다고 봐도 무방하고,
깃허브에 사용예제 10줄 정도를 툭 하고 던져준게 전부이다.
이 말은 즉슨 모르는 문제가 나올 때 마다,
일일이 프레임워크를 들쳐서 분석해야 된다는 것 이다.
방학때라면 모를까, 급한 상황에서 벽에 부딪힐 때 마다, 프레임워크를 분석하는 것은 좀 그렇다.
좀 복잡하더라도 도큐먼트도 친절하고, 생태계도 큰 프레임워크를 찾아보자..
그렇게 해서 찾은 프레임워크가 Ktor 이다.
비동기 RESTful 웹서버 프레임워크 Ktor |
대충 눈에띄는 특성은 다음과 같다.
머리는 아플 것 같지만 손은 편해질 것 같다.
HTTP 클라이언트 엔진 선택가능 (Netty, Apache, CIO, Jetty, Mock)
파싱 모듈 내장 (GSON, Jackson, ContentNegotiation)
특성을 선택하면 해당 코드 자동작성 (세션, CORS허용, 쿠키, ...)
...
Hello, Ktor! |
여기서는 Intellij-plugin을 통한 적용방법을 소개한다.
클릭 몇번만으로 간단한 웹서버가 만들어진다.
1. Setting-Plugins에서 Ktor-plugin을 설치하자. (단축키 ctrl+alt+s)
ktor-plugin은 서드파티이기 때문에 바로 안나온다.
search in repositories를 클릭하자.
install하고 restart 하자.
2. New Project에서 Ktor 플러그인을 사용하자.
이제 New Project를 보면 Ktor 라이브러리가 생성되어 있다.
여기서는 최소한의 기능인 Routing만 체크하고 Next.
gradle에 적힐 아티펙트, 그룹id만 적어주면 Ktor 프로젝트가 생성된다.
쨘, 체크한 특성을 구현한 소스코드가 자동으로 생성된다.
이제 컴파일하자.
성공적으로 컴파일되면 위와같은 메세지가 출력된다.
맨 아래에 적힌 주소로 들어가면.
성공적으로 웹서버가 만들어진 것을 볼 수 있다.
자세한 사용법은 Ktor Document를 참조하자.