Skip to content

2024년 7월 11일 TIL ​

TL;DR ​

  • Kotlin & Spring 네트워킹 밋업 다시보기를 보고 배운점을 TIL에 요약함.
  • 코틀린 공식 예제 코드를 간단하게만 살펴봄

한줄평 ​

교내 바자회 때문에 오늘은 몰입이 안됐다.

오늘 회의 1번에 예산 변경만 5번을 했다. 처음부터 제대로 안 짠 내 잘못 😪

덕분에 집오자마자 골아떨어져서 집와서 제대로 코틀린 해보려고 한 계획은 나가리 됐고 간단하게 코드 예제들만 살펴봤다.

내일은 제대로 달려보자!!

Kotlin & Spring 네트워킹 밋업 다시보기 시청 ​

img

요약 ​

두들린 개발자들은 VOC를 참고하여 변경이 잦은 개발환경을 가지고 있었다.

기존 그리팅 서비스는 python과 flask로 운영되고 있었다. 초창기에는 충분히 훌륭한 프레임워크 였지만 서비스가 성장하며 단점이 보이기 시작함.

문제점으로는...

1.동적타입 언어의 불안성 ​

파이썬은 동적타입언어기 때문에 함수나 변수에 어떤 값을 넣든 실행이 된다. 이러한 동적타입추론 때문에 만약 개발자가 잘못 된 값을 넣을수도 있었고 NULL 체크를 하지 않아서 NULL이 들어가면 안되는 곳에 NULL이 들어갔다면 타입에러를 내뱉으며 서버가 죽어버릴 수 있었음.

초창기 2명의 두들린 백엔드 개발자들은 이러한 문제를 해결하기 위해서 수많은 방어로직과 테스트 코드들을 작성해야만 했음. 이로인해 VOC를 기반하여 빠르게 서비스 검증하는데 지장을 줬음. 작성코드의 3분의 2가 테스트코드 및 방어로직 작성이였을 정도였음.

TypeAnnotation이나 myPy같은 정적타입 분석도구를 사용 할 수도 있었지만 결국 힌팅에 불과하여 에러가 발생 할 수 있는 여지가 있었음. 또한 이미 다 정적타입 분석도구 없이 개발 되어있어서 리팩토링한다면 큰 비용이 들 것이라고 생각함.

2.작은 생태계 ​

꽤 많은 ORM, 서버사이드 라이브러리가 많지만 ORM에서 IDS 커넥션, 보일러 플레이트 등 필수적인 세팅들이 구현되어 있지 않아 모두 직접 구현해야 했음. 또한 구현한 코드들은 모두 테스트까지 돌려야했음.

3.채용 ​

파이썬 개발자의 수가 적어서 개발자들 채용 시에 어려움이 있었음.

결국 해결방안으로 기술스택 전환을 선택함

고려한 기술스택 ​

스택/장단점장점단점
Nest.js훌륭한 공식문서
현저히 적은 보일러플레이트(데코레이터)
CLI 잘되어있음
작은 커뮤니티
Spring Boot훌륭한 큰 커뮤니티(인재풀)
훌륭한 공식 라이브러리
높은 러닝커브
상당한 보일러 플레이트(코틀린으로 크게 개선 가능)
공통정적타입언어 기반(타입 세이프티)

결국 코틀린, 스프링으로 마이그레이션 하기로 결정함

코틀린 학습을 하며 ​

리소스 서칭시 자바로 이루어진 코드들이 많기 때문에 자바를 배울 수 밖에 없음. 자바를 배우고 넘어오는게 중요하고 코틀린 코드를 자바로 디컴파일해보면서 비교해보는것도 추천함.

마이그레이션 과정 ​

일괄 마이그레이션과 부분 마이그레이션 중 서비스가 성장 중 이기 때문에 일괄 마이그레이션은 치명적일 수 있어 부분 마이그레이션을 선택함.

우선 변화와 트래픽이 적은 결제 서비스부터 마이그레이션하였고 예전부터 MSA를 위해 아키텍쳐를 설계 했었기 때문에 부분 마이그레이션하기에 수월했음. 또한 마이그레이션한 서비스가 죽으면 레거시를 키고 트래블슈팅을 하는 방식으로 부딫치며 학습 & 마이그레이션함.

이후엔 1년간 최종적으로 결제 도메인 => 메일 도메인 => ... => ATS 도메인(가장 거대함)을 마이그레이션함. 팀원들은 이제 프레임워크에 친숙해짐.

좋은 점 ​

  1. 코드 퀄리티 향상
  2. 유지보수성 증가
  3. 생산성 향상

배운점 ​

기존 파이썬 개발환경과 바뀐 코틀린 스프링 개발환경의 차이점과 장점을 알 수 있었다. 특히나 코틀린의 장점, 스프링의 장점을 비교를 통해 알게 되면서 코틀린, 스프링을 배워야하는 이유를 조금이나마 깨달은 느낌? 코틀린 배우기전에 자바 실력 또한 중요하다는 점도 배웠다.

코틀린 예제 읽어보기 ​

1. ​

https://play.kotlinlang.org/byExample/overview

코틀린 예제를 읽어보면서 전체적으로 어떤 느낌인지 파악해봤음. 대체적으로 자바보다 진짜 간결한 느낌? 왜 밋업에서 코틀린으로 상당한 보일러 플레이트를 해결 할 수 있다는지 어느정도 느낌. 한번 자바로 만들었던 간단한 CLI 프로젝트를 코틀린으로 다시 보면 좋을 것 같다.

2. ​

https://developer-munny.tistory.com/11

코틀린엔 getter, setter가 없다고해서 관련 내용을 찾아봤다.

찾으면서 data class에 관한 내용도 간단하게만 살펴봤다. 이건 내일 다시 한번 봐야할듯