-
쿠팡 Kotlin Backend 적용기 - 배성혁세미나, 영상 요약정리 2022. 9. 15. 00:01728x90
https://www.youtube.com/watch?v=bhI1hMOcT-4
쿠팡 Kotlin Backend 적용기 - 배성혁님의 발표를 요약한 내용입니다.
코틀린의 좋은점
스칼라와 달리 자바와 호환성이 100% (단, @JvmXXXX 어노테이션을 활용해야 함)
친숙한 문법(Scalar, C#, Groovy, Swift ...)
타입 추론(Scala, C#)
스마트 캐스트(type을 is로 확인 가능하며 instanceof를 사용하지 않고도 타입이 바로 변환됨)
데이터 클래스(Java의 @Data + 코틀린은 불변성이 기본으로 제공되기 때문에 copy메서드를 제공)
Default Argument
String Templates
확장 함수(상속과 별개로 기본 클래스를 확장으로 적용할 수 있습니다)
Null Safety(컴파일 타임에 NPE를 잡아냅니다)
엘비스 연산자
if(command!=null){ if(command.getThreadPoolProperties()!=null){ if(command.getThreadPoolProperties().maxQueueSize()!=null){ var x = command.getThreadPoolProperties().maxQueueSize().get } } } val x = command?.getThreadPoolProperties()?.maxQueueSize()?.get() ?: 0
코루틴
코틀린의 단점
자바보다 컴파일 시간이 오래 걸린다. (Scalar >>>> Kotlin > Java)
stastic 키워드가 없다 (companion object를 사용해야 함)
namespace가 없다.
자바에서 코틀린의 람다식을 호출할 때 void타입 이어도 Unit.INSTANCE를 반환해주어야 함
Final이 기본이다(논란의 여지가 많은 부분)
코루틴 - 코틀린의 Killing Point
클린하고 읽기 쉽다.
c#의 fiber, go언어의 고루틴
In Java
1. 비동기를 적용하고자 했고 CallBack지옥이 펼쳐짐
2. ComletableFutre를 이용하여 가독성을 높임
3. RxJava는 코드가 더 짧아지지만 성능이 조금 느릴 수 있음
In c#
async, awiay을 활용하여 비동기를 표현
In Kotlin
c#과 비슷하게 suspend, async, await을 활용하여 비동기를 다룬다.
In Go
go만 붙이면 비동기
문제점
개발자들의 수준 편차가 의외로 크다
조직의 수준은 최하위 개발자 수준에 의해 결정된다.
변화를 추구하기 위해
객관적 시각을 유지
History 및 현실 상황에 대한 이해 (기술부채)
현 조직의 개발 역량 평가
동기부여 - 필요성 설득보다는 자각할 수 있도록
충분한 학습 시간
변화 경험 공유(ASP -> C#, Java- > Scala)
검색엔진, 카프카,웹 애플리케이션에 도입한 예시들
코루틴 덕분에 성능이 더 빨라짐
반성해야 하는 점
코틀린은 쉽다는 생각에 기본기 학습을 해야 한다(그냥 코딩 X)
Java와 차이점 및 Kotlin best practices 검토 필요\
첫 술에 배부를 수 없다(리팩토링은 필수)
코루틴에 대한 학습 및 테스트(어짜피 비동기는 어렵고 코루틴은 하나의 방법)
안정적 도입을 위한 Tips
충분한 학습 기회 & 실습
Code Quality 중요성 인식
강력한 동기 부여
성공 사례는 작은것부터 만들기
효과
Safety Code
Readable Code
성능 향상
유지보수성 향상
WebFlux vs Spring
왼쪽이 Spring 오른쪽이 WebFlux입니다.
Mean rep/s는 TPS를 뜻합니다. (WebFlux가 3배의 성능을 보여줍니다)
밑은 레이턴시를 의미합니다 (지연시간이 20배 줄었습니다)
추후에 성능을 위해서는 WebFlux를 도입해야 할 것 같습니다.
728x90'세미나, 영상 요약정리' 카테고리의 다른 글
어디 가서 코틀린 매우 알은 체하기! - 제이슨 (0) 2022.09.27 카카오톡의 서버사이드 코틀린 - 유용하 (0) 2022.09.24 [NHN]Spring Security 5 Oauth 총정리:클라부터 서버까지 (0) 2022.08.17 애자일은 애자일이란 단어를 버려야 한다 - 신정호 (0) 2022.07.31 초식 : 초보자용 웹 서비스 성능 올리기 - 최범균 (0) 2022.07.11