발표 소개와 대상
샵바이 플랫폼 개발·운영자가 코틀린에서 자주 쓰는 문법을 소개한다. 문법을 자세히 다루는 세션이 아니라, 자바에서 코틀린으로 바꿀 때 좋았던 부분 위주로 설명한다고 밝힌다. 코틀린을 쓰고픈 자바 개발자와 이미 프로덕트에 적용 중인 서버 사이드 개발자 모두가 대상이다.
NHN 커머스 개발실은 NHN 커머스 플랫폼(NCP)으로 온라인 쇼핑 관련 기술 지원을 담당하고 샵바이를 런칭했다. 자바·스프링부트로 개발하던 플랫폼의 고질적 문제를 풀기 위해 모든 프로덕트를 마이크로서비스로 바꾸며, 2018년 말부터 언어도 자바에서 코틀린으로 과감히 갈아탔다.
서버 개발자가 자주 다루는 API 예시로, 고객 정보 변경 하나에 얽힌 여러 요구를 정리한다. 변경 사실 통보·이력 저장, 이메일·휴대폰 양식 검증, 비밀번호 우선 변경 안내, SMS 점유 인증 등을 나열하고, 이를 담을 유저 업데이트 리퀘스트 객체부터 만든다.
요청 객체에서 DB로 관리할 항목만 모은 명령 객체(커맨드)로 바꿀 때 확장 함수 `toCommand`를 추천한다. 이 함수 안에서 휴대폰 점유 인증(`vbUser`), 이메일·휴대폰 양식 검증, 명령 객체 생성을 모두 처리해, 여러 요구사항을 함수 하나 호출로 한 번에 해결한다.
변경 사실 통보 코드를 작성하며 코틀린 문법을 소개한다. 인자 없고 연산이 가벼운 함수는 `isPasswordChange` 같은 프로퍼티로 제공하는 컨벤션을 따르고, 네 조건 분기는 `if`·`switch` 대신 when 키워드로, 불리언 결합은 `and`·`or` infix 연산자로 읽기 좋게 표현한다.
커머스에서 가장 신경 써야 하는 돈 계산을 다룬다. 후드 집업 가격 예시로 사칙연산이 잦음을 보이고, 코틀린이 자바와 달리 연산자 오버로딩을 지원해 정밀 계산용 BigDecimal에도 연산 기호를 그대로 쓸 수 있음을 설명한다. 표준 라이브러리의 오버로딩도 기본 제공된다.
전체 주문 금액을 구하는 `for` 루프를 `map`·`filter`와 `sum` 확장 함수로 바꾸고, 옵션 가격 계산은 확장 함수로 분리해 코드만 봐도 의도가 드러나게 만든다. `return`을 제거하는 컨벤션을 따르며, 람다로 불필요한 변수를 없애고 연산자 오버로딩까지 더해 자바 대비 두 배로 간결해짐을 비교한다.
팀에서 자주 쓰는 문법 소개를 마무리한다. 자바 대비 코드가 훨씬 간결하고 읽기 쉬운 점이 코틀린의 가장 큰 혜택이라 정리하고, 국내에서 많이 쓰는 스프링·JVM 환경에서 그대로 쓸 수 있으니 서버 사이드에 코틀린 적용을 추천한다고 권한다.