본문 바로가기
반응형

전체 글340

[Coroutines] SupervisorJob vs supervisorScope 서론 SupervisorJob은 코루틴을 만드는 코루틴 빌더이고, supervisorScope은 코루틴 스코프를 만드는 스코프 빌더이다. 그래서 사실 이 둘을 같은 비교 선상에 두기엔 애매하다고 생각한다. 이 글에서 알아보고 싶은 건 SupervisorJob을 직접 사용할 때와 supervisorScope 사용할 때 무엇이 달라지는지를 확인하고 싶었다. 필자는 아래 환경에서 코드 확인 및 테스트를 아래 버전에서 하고 있다.jvm 17kotlin 1.8.10coroutines-core 1.7.3  SupervisorJob 해당 job의 자식들은 서로 독립적으로 실패할 수 있음(= 자식의 실패 또는 취소가 발생한 경우, 다른 자식에게 영향이 없음)부모 job이 존재하는 경우, 부모가 취소되면 현재 job이 .. 2025. 3. 2.
Kotlin Backend Meetup 후기 2025년 2월 15일 우아한형제들의 테크살롱에서 진행되는 코틀린 백엔드 밋업에 참가했다. 참가 신청이 마감되어 신청을 못하고 있었는데 지인분이 초대권을 나눠주신 덕에 갈 수 있었다. (감사해요 제이슨😆) 참가하니 아주 귀여운 코틀린 뱃지를 받았다. 코틀린 공식 마스코트가 있는 줄 몰랐는데 공식 캐릭터라고 한다. ㅋㅋㅋ  타임 테이블은 아래와 같다. 다만 아래는 온라인에 공개된 표고, 현장에서는 시간표가 약간 바뀌었다.  내가 들은 발표는 총 3가지였다. 듣고 싶은 세션을 다 듣지는 못했는데, 컨퍼런스에 늦게 도착 + 시간표 바뀐 줄 모르고 있었어서 놓쳤다. 🥲 각 발표를 듣고 느낀 점 + 메모했던 내용들을 간단히 정리해 본다. 참고로 발표 자료는 밋업 공식 GitHub에 공개되고 있다. 코루틴 컴파.. 2025. 2. 16.
데드락을 유도하는 코루틴 사용법 서론 이 글은 코루틴을 사용하다 겪었던 장애를 소개하는 글이다. 장애 원인이 밝혀지기까지 복잡한 과정이 있었으나, 모두 생략하고 코루틴에 대한 내용만 골라내 설명한다. 장애 원인은 무엇이었는지, 그 원인을 유도한 상황은 무엇인지, 어떻게 해결했는지 등을 정리해 보도록 하겠다. 코루틴에서 발생할 수 있는 데드락 (feat. runBlocking) 데드락이 발생할 수 있는 예제를 가져와보았다. 이 예제에는 두 가지 가정이 존재한다.dispatcher는 스레드를 2개까지 할당할 수 있는 디스패처async(dispatcher) { ... } 의 ...은 동기 호출이라 중단될 일이 없다🔻 실행 가능한 예제코드더보기아래 코드를 실행하면 애플리케이션이 종료되지 않는다. 그 이유는 하단에서 자세히 살펴보겠다.fun .. 2025. 1. 11.
2년차 개발자의 2024 회고 2024 돌아보기 올해는 블로그에는 담기 어려운 개인적인 일과 회사 일이 참 많았다. 그래서 기술적인 지식이나 업무 스킬의 성장보다는 나 자신을 더 깊이 알아가고, 심력을 성장시키는 데 집중한 해였다. 어떤 상황이 내게 스트레스를 주는지, 어떤 순간에 어려움을 느끼는지를 이해하게 되었고, 이 어려움을 마주했을 때 나는 어떻게 반응하는지를 깨닫게 되었다. 그리고 앞으로는 같은 상황에서 어떻게 대응해야 할지를 생각하기도 했다. 이 과정에서 여러 사람과 대화를 나누었고, 내가 바라보는 틀을 벗어난 새로운 관점들의 이야기를 들을 수 있었다. 이를 통해 사람들과의 관계나 소통의 소중함을 새삼 깨닫기도 했다. 물론 좋은 일도 많았다. 꽃꽂이나 스쿠버다이빙 같은 새로운 도전을 해봤다. 새로운 팀원들과 투닥투닥 장난칠.. 2024. 12. 31.
구조적 동시성 이해하기 (feat. goto의 역사) 이 글은 'Notes on structured concurrency, or: Go statement considered harmful'을 번역한 글입니다. 원작자의 허락하에 번역하였음을 분명히 밝힙니다. 좀 더 쉬운 표현을 위해 의역한 부분도 있으니, 원문이 궁금한 분들은 링크를 참고하시길 바랍니다. Thanks to Nathanial J. Smith for allowing the translation. Notes on structured concurrency, or: Go statement considered harmful — njs blogvorpus.org 모든 동시성 API는 코드를 동시 실행할 방법이 필요하다. 다음은 몇 가지 예시다.go myfunc(); .. 2024. 12. 23.
[I in We x AWS] 멘토링 후기 AWS 멘토링이란? 지난 10월 17일부터 11월 21일까지, 지인의 추천으로 I in We와 AWS가 진행하는 멘토링에 참여하게 되었다. 해당 멘토링 프로그램은 AWS에서 근무하시는 시니어 멘토분들과 함께하는 소그룹 멘토링 프로그램으로, 무려 4년째 지속되고 있다고 한다.   멘토링을 신청한 계기 비록 나는 당장 이직에 대한 생각이 없지만, 요즘 시장 상황이 많이 춥다는 얘기를 자주 듣다 보니 막연한 불안감이 있었고, 내 커리어는 과연 제대로 흘러가고 있는 게 맞는가에 대한 고민도 있었다. 이런 고민들을 어떻게 해결하는 건지 잘 모르겠지만 뭐라도 해보자!라는 마음에 멘토링을 신청하게 되었다.  멘토링 진행 방식 멘토링은 1명의 멘토와 4~5명의 멘티로 구성된 소그룹으로 진행된다. 신청 시 어떤 멘토링을.. 2024. 11. 30.
[우아콘 후기] 2024 WOOWACON 지난 10월 30일 우아콘에 참여했다. 행사가 끝난 지 열흘이나 지났지만, 운영진으로 참여한 행사는 처음이라 내게는 단순 참석 이상의 의미가 있었다. 이번 글을 통해 행사 운영진으로서 느낀 경험을 남겨보고자 한다. WOOWACON 2024한 번의 배달을 위해 필요한 모든 기술들2024.woowacon.com  조금 더 특별한 참가 이번에는 일반 참가자가 아닌 운영진으로서 함께 하게 되었다. 입사 면접에서 스스로를 공유를 통해 선한 영향력을 실천하는 개발자라고 소개했던 기억이 난다. 입사 후에도 그 마음만큼은 여전했지만, 회사 내부 일에 집중하다 보니 커뮤니티 활동도 거의 안 하고 블로그 포스팅도 뜸해졌다. 아쉬움을 느끼던 차에 우아콘 운영진으로서 참여할 기회가 생겨, 망설임 없이 그 기회를 잡았다. 멘토.. 2024. 11. 10.
[Kotest] Kotest 활용 간단 가이드 Kotest란? 🤔 공식 사이트에 가보면 Kotest를 아래와 같은 말로 표현하고 있다.Kotest is a flexible and elegant multi-platform test framework for Kotlin with extensive assertions and integrated property testing 위의 말을 보면 총 3가지 정도의 기능을 제공하고 있다. 각 기능들을 독립적으로 사용할 수 있는데, 이는 Kotest가 독립적으로 나뉜 여러 개의 하위 프로젝트들로 구성되어 있기에 가능한 일이다. (3가지 기능을 모두 사용하고 싶다면 의존성도 각자 추가해야 한다는 의미이다.) 일단 어떤 기능들을 제공하고 있는지부터 살펴보자. 1. 유연하고 우아한 멀티 플랫폼 테스트 프레임워크다.👉 .. 2024. 10. 27.
Spring MVC + Coroutines 에 대한 고민 🤔 문제의 시작 우리 팀은 Spring MVC와 Coroutines, Kotlin을 사용하는 레포가 있다. 신규 API를 개발해서 호출하니 NoClassDefFoundError가 발생했다. MonoKt를 찾지 못한다고 한다. 모든 API에서 발생하는 건 아니고 코루틴을 적용한 API에서만 발생하였다.Handler dispatch failed: java.lang.NoClassDefFoundError: kotlinx/coroutines/reactor/MonoKt 많은 곳에서 kotlinx.coroutines.reactor 의존성을 추가하라는 말만 있을 뿐, 명쾌한 해결 방법이나 원인에 대해 알기는 어려웠다. WebFlux를 사용하는 것도 아닌데 reactor와 관련된 의존성을 왜 추가해야 하는지 이해가 안.. 2024. 9. 30.
반응형