티스토리 뷰
오프라인으로 진행되는 인프런 퇴근길 밋업에 운좋게 당첨되어 참여해봤습니다.
아래 이미지와 같이 두 세션과 네트워킹 시간으로 이루어졌습니다.
KotlinConf is back! (부제: after the party)
발표자는 당근마켓 동네생활을 개발하신 박용권님입니다.
당근마켓에서의 Kotlin 사용률과 K2 컴파일러 및 새로운 문법에 대해서 간단하게 설명해주셨습니다.
- 당근마켓에서의 Kotlin 사용률 : 10%
- K2 컴파일러 : 현재 코틀린의 문제점 중 하나인 컴파일 속도를 2배 이상 빨라지게 하는 컴파일러
- Static Extensions
- Explicit Fields
- Context Receivers
- Named-Based Destructuring
- Collection Literals
키워드 중심으로 메모했으며, 필요한 부분은 나중에 깊게 공부해보려고 합니다.
저는 박용권님이 가장 기대하는건 코틀린의 멀티플랫폼이라고 느꼈습니다.
앞광고로 무료 인프런 강의도 소개시켜주셨습니다.
[INFCON Tech Series] 코틀린 멀티플랫폼, 미지와의 조우 - 인프런 | 스토리
코틀린 멀티플랫폼, 미지와의 조우 #Kotlin #INFCON #인프콘 #핸즈온 #Kotlin/JS [사진]ⓒKotlin 개발자들이 함께 모여 서로의 경험과 인사이트를 나누는 축제, 인프콘! 8월 26일, 드디어 인프런의 첫 번
www.inflearn.com
네트워킹 그룹으로 박용권님이 들어오셨는데, 네트워킹 관련 이야기는 마지막에 다시 이야기하겠습니다.
함수형 코틀린
달리나음이라는 유튜브 채널을 운영하시는 김용욱님께서 발표를 진행해주셨습니다.
함수형 프로그래밍이란 무엇인지 깊게 이야기 들어볼 수 있는 시간이었습니다.
expression oriented programming이 무엇인지에 대한 내용과 코틀린에서 함수형 프로그래밍을 구성할 수 있는 방법에 대해서 소개해주셨습니다.
함수형 프로그래밍에 대한 지식이 부족한 저로서는 키워드만 주워담기 급급했습니다.
Monad가 Monoid인 이유 수학 없이 이해하기
모나드는 사실 모노이드일뿐
dev.to
- 모나드 판별하기
- 모나드를 구성하기 위한 방법 [1]. Return 파라미터를 Result<T>로 구성
- 모나드를 구성하기 위한 방법 [2]. Arrow
- 모나드를 구성하기 위한 방법 [3]. 함수 앞에 context<EffectScope<Throwable>> 선언
- 중첩된 모나드를 사용하는 방법 : keep(kotlin 2.0) -> 최대한 하나로 쓰자는 논의가 나옴
- kotlin either
- optics 어노테이션
네트워킹
한 그룹에 14명 정도 이루어서 총 두 그룹으로 진행했었습니다.
자기소개 후 코틀린 관련 이야기를 서로 이야기 나누었는데, 제 그룹에서는 박용권님께서 참여하셨습니다.
박용권님께서 이끌어주셔서 시간 가는줄 모르고 진행했습니다.
이 중 기억남는 질문과 답변 위주로 정리해보겠습니다.
[1]. Java를 사용하다가 Kotlin으로 사용하면서 느낀 Kotlin의 장점
많은 분들이 답변 주셨던 것 중 대표적인 부분은 Null Safety였습니다.
NPE 가능성을 0%로 만들 수 있다는 점이 인상 깊었습니다.
[2]. Java가 버전업을 할수록 Kotlin을 굳이 사용 안 해도 될 것 같지 않나
백엔드 진영은 제 질문처럼 생각할 수 있지만, 확실히 안드로이드 진영 분들은 Java를 굳이 사용할 이유가 없다고 답변주셨습니다.
저는 안드로이드 진영에 대한 지식은 없지만, 참여자분들 의견으로는 Jetpack compose이 엄청나다고 하셨습니다.
[3]. Kotlin에서 Scala로 넘어가신 분도 있었다.
이 의견을 내주신 분 말은 빌려보자면 Kotlin으로 함수형 프로그래밍을 구현하자니 여러 문제점이 있었다고 하셨습니다.
2번째 강연에서 언급한 Arrow나 다른 방법으로 구성하자니, 외부 라이브러리를 사용하여 억지로 Kotlin을 사용한다고 느꼈다고 하셨고, Arrow를 사용하면 bind() 같은 더러운 코드가 생각된다고 느꼈다고 하셨습니다.
팀원들끼리 토론을 끝에 Kotlin이 아닌 Scala를 통해 완벽한 함수형 프로그래밍을 구성해보셨다고 합니다.
[4]. Kotlin에서 JPA를 쓰는 어려움이 있었다.
이 의견을 내주신 분이 JPA를 사용하자니 Kotlin의 철학은 깨는 느낌이 들었다고 하셨습니다.
이에 대한 내용에서 박용권님께서는 이 의견에 동의하고 JPA 철학과 Kotlin 철학이 부딪히는 것 때문이라고 생각하셨습니다.
이로 인해 박용권님께서는 JPA를 아예 배제하고 exposed을 사용한다고 하셨습니다.
GitHub - JetBrains/Exposed: Kotlin SQL Framework
Kotlin SQL Framework. Contribute to JetBrains/Exposed development by creating an account on GitHub.
github.com
물론 exposed 이놈이 깃헙 이슈 코멘트도 늦게 달리고, 없는 기능도 많아서 어려움을 겪었다고 하셨습니다..
그래도 exposed 사용하기 전으로 돌아간다고 하더라도 exposed를 사용할 것 같다고 하셨어요!
[번외]. persistence 계층과 domain 계층의 분리
exposed 이야기를 하시면서 이 얘기도 같이 하셨습니다.
만들면서 배우는 클린 아키텍처 책에서 언급된 어쩌면 "강압적인 분리 정책"을 현재 당근마켓 팀에서 따르고 있다고 하셨습니다!
지금 저희 팀에서도 멀티 모듈과 헥사고날을 도입하고 있는데, 다음과 같은 질문을 드렸습니다.
Domain 계층에서의 Enum Class와 persistence 계층에서의 Enum Class는 어떻게 관리하시나요?
박용권님의 대답은 common 계층을 둬서 Enum을 선언하고 가져다 사용하는 방식이라고 하셨습니다.
이유도 같이 설명주셨는데, 적어도 될지는 모르겠어서 일단은 적진 않겠습니다.
결론
세미나 제외하고는 밋업을 처음 접해봤는데, 즐거운 시간이었습니다.
네트워킹을 통해 다른 개발자분들의 생각이나 인사이트도 많이 얻을 수 있었습니다.
글 읽어주셔서 감사합니다.
'회고' 카테고리의 다른 글
[잽싸게 독서] 스프링 부트 3 백엔드 개발자 되기 자바편 레벨 1 (0) | 2023.05.18 |
---|---|
[잽싸게 독서] 도파민네이션 책을 읽고 나서 (0) | 2023.05.15 |
사내 기술블로그 활성화를 꿈꾸며 (0) | 2023.04.25 |
[잽싸게 독서] 개발자의 글쓰기 책을 읽고 나서 (0) | 2023.02.12 |
[잽싸게 독서] 좋은 코드, 나쁜 코드 책을 읽고 나서 (0) | 2023.02.10 |
- Total
- Today
- Yesterday
- programmers
- JPA
- 이팩티브 자바
- Algorithm
- 클린 아키텍처
- Effective Java
- node.js
- BOJ
- MSA
- C++
- AWS
- 디자인패턴
- 이펙티브 자바
- kotest
- Java
- Spring Boot
- 백준
- 정규표현식
- 클린 코드
- 프로그래머스
- 객체지향
- BAEKJOON
- 알고리즘
- Kotlin
- 테라폼
- 코테
- 디자인 패턴
- Olympiad
- kkoon9
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |