-
카카오톡의 서버사이드 코틀린 - 유용하세미나, 영상 요약정리 2022. 9. 24. 00:01728x90
https://tv.kakao.com/channel/3150758/cliplink/391419295
카카오톡의 서버사이드 코틀린 - 유용하님의 영상을 요약한 내용입니다.
개요
개발 언어로 코틀린을 도입하여 카카오톡 서버 구조 개선을 하고자 했습니다.
코틀린/JVM 선택의 배경
성능/안정성, 개발/운영의 편의성
다양한 서버 환경에 검증된 자바의 생태계를 이용
생산성이 좋은 새로운 언어
적정 수준의 러닝 커브
개발 환경은 쓸 만 할까?
API 하위 호환성이 잘 이루어지고 버전 업데이트 시 변화가 크지 않습니다.
gradle, maven에 간단한 설정만 추가하면 바로 코틀린을 사용할 수 있습니다.
코틀린의 컴파일 과정
1. *.kt 파일 kotlinc 컴파일러에 의해 *.class 파일로 변환
2. 자바 파일이 혼재하는 경우 .java 파일로 변환 후 다시 javac 컴파일러에 의해 *.class 파일로 변환
인텔리제이, 이클립스에서 잘 지원되고 인텔리제이에서는 자바 -> 코틀린 코드 변환까지 지원됩니다.
코틀린과 자바의 호환성
100% 자바와 호환됩니다.
자바 파일에서 코틀린 파일을 부를 수 있고 코틀린 파일에서 자바 파일을 부를 수 있습니다.
생산성과 안정성의 향상
자바에서 getter, setter, 생성자, equals, hashcode, toString 등 보일러 플레이트 코드가 반복됩니다.
Lombok 어노테이션을 사용하면 조금 편해질 순 있지만 코틀린에서는 data 키워드로 편리하게 사용할 수 있습니다.
코틀린은 NPE가 발생할 수 있는 여지를 컴파일 타임에 오류를 방지하며 안정성을 향상합니다.
정적 타입과 Nullable 타입을 문법으로 구분합니다.
자바의 Optional이 기본 문법으로 제공된다고 이해하면 좋습니다.
불변 컬렉션을 제공해서 불변성 강화
자바도 불변 컬렉션을 제공하지만 런타임 시 에러가 발생하고 코틀린은 컴파일 타임에 에러가 발생
불변 변수인 final이 권장되며 상속 제한이 디폴트입니다.
확장 함수 제공
확장 함수를 통해 Utility, Helper 클래스를 대체할 수 있습니다.
스마트 캐스트
이외에도 다양한 문법들을 통해 간결함을 지원합니다
코루틴
가독성이 높은 절차적인 코드로 작성되며 성능이 좋음
자바와 코틀린의 비교
잘 돌아가나요?
성능은 거의 동일하게 나온다.
마이그레이션 주의사항
자바 코드/ 클래스 연동 시 타입 주의(Nullable 등)
Lombok 적용된 자바 코드와는 같은 모듈에 사용하기 힘듦(delombok 사용)
spring에서는 특정 클래스/함수 open 해줘야 함(kotlin-spring 플러그인 사용)
immutable 데이터로 리팩터링 하는 것은 생각보다 큰 일
새로운 프로젝트 : 처음부터 코틀린
수정이 앞으로도 많은 프로젝트 : 모델, 유틸리티부터 리팩토링
그 외 잘 돌아가는 자바 프로젝트 : 잘 돌아가게 두기
'세미나, 영상 요약정리' 카테고리의 다른 글
[마틴 파울러] 소프트웨어 아키텍처의 중요성 (한글 자막) (0) 2022.10.01 어디 가서 코틀린 매우 알은 체하기! - 제이슨 (0) 2022.09.27 쿠팡 Kotlin Backend 적용기 - 배성혁 (0) 2022.09.15 [NHN]Spring Security 5 Oauth 총정리:클라부터 서버까지 (0) 2022.08.17 애자일은 애자일이란 단어를 버려야 한다 - 신정호 (0) 2022.07.31