강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

보링님의 프로필 이미지
보링

작성한 질문수

Spring WebFlux + LLM 실전 구현

순수 webflux 프로젝트의 가독성 팁 그리고 향후 kotlin을 활용한 프로젝트 계획이 있는지 궁금합니다.

작성

·

51

0

안녕하세요.

좋은 강의로 덕분에 webflux에 대해 쉽게 이해할 수 있었습니다.

 

저는 현재 kotlin으로 개발하는 프로젝트가 있어,
webflux를 사용할때는 coroutine을 함께 사용하는데요,

이렇게 하면서 코드를 함수형처럼 짤 수 있어 보다 쉽게 동료들에게 보여줄 수 있었습니다.

 

혹시 강사님께서도 coroutine을 함께 사용하기도 하시는지,

그렇다면 java가 아닌 kotlin을 사용한 강의 계획이 있는지 궁금합니다.

또한, 강의에서 쉽게 설명해주셨지만 비즈니스 로직이 좀 더 추가되는 경우

코드가 많이 복잡하고 가독성이 어려워지던데,

가독성을 위한 팁들이 있는지 궁금합니다.

 

 

ps. webflux 2 프로젝트에는 사용 가능한 gmemini api key가 입력되어 있습니다. 😅

 

 

답변 2

0

John H님의 프로필 이미지
John H
지식공유자

보링님 안녕하세요!
일정이 겹쳐 답변이 조금 늦어진 점 사과드립니다.

현재 저는 Java 생태계 내에서 리액티브 프로그래밍을 주로 하고 있고, 실무에서도 100% 자바로 운영하고 있어 코틀린에 대해서는 깊이 있는 답변을 드리는 데 한계가 있는 점 이해 부탁드립니다.

다만 말씀하신 대로 동료분들이 코틀린 환경에 익숙하시다면, 코루틴을 활용해 비동기 로직을 동기 코드처럼 작성하는 것이 가독성 면에서는 확실한 강점이 될 수 있다고 생각합니다.

자바 기반의 WebFlux가 코틀린에 비해 가독성 측면에서 단점만 있는 것은 아닙니다.
Mono와 Flux를 사용하면 스레드 흐름을 어느정도 제어할 수 있고 어디서 스레드가 분리되는지 복귀하는지 어떤 스레드가 일하고 있는지 그나마 파악이 용이합니다.
코루틴은 비동기 코드도 동기 코드처럼 작성하기에 현재 일을 수행하는 스레드, 스레드 분리/복귀의 파악에 다소 어려움이 있던것 같습니다. (코틀린에 대한 지식이 짧아서 제 역량 부족일 수 있습니다.)

문의하신 로직이 복잡해질 때의 관리법에 대해서는 원래 다음 강의에서 복잡한 로직을 다루며 직접 보여드리려 준비 중이었으나, 제작이 조금 지체되고 있어 우선 가장 도움이 되었던 2가지 정도 짧게 글로 전달드립니다.

첫 번째는 람다식 로직을 함수로 분리하는 것입니다.
람다식 로직이 4~5줄 이상 길어질 때 별도의 함수로 분리하면
체인 안에서 한줄 한줄 함수 이름만 읽어내려가며 무슨 일을 하는지 파악할 수 있어 가독성이 많이 좋아집니다.

두 번째는 지역변수로 분리 입니다.
체이닝이 너무 길어져 가독성이 안좋아지면 중간에 적절히 끊어 지역 변수로 결과를 받은 다음 체인을 시작하는 것도 도움이 됐던것 같습니다.

키 노출 관련해서는 바로 조치를 취했습니다!.. 따로 요금이 부과되지는 않았어서 정말 다행이네요. 알려주셔서 감사합니다.

코틀린 비동기 환경에 대한 이해도가 높으신 분께서 제 강의를 좋게 봐주셔서 기쁘네요.

조만간 더 좋은 강의로 찾아 뵙겠습니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 보링님.

Spring WebFlux를 Kotlin과 Coroutine과 함께 사용하신다니 흥미롭습니다. Kotlin의 Coroutine은 비동기 코드를 더욱 명확하고 직관적으로 작성할 수 있는 기능을 제공하죠. 강사님이 Kotlin의 Coroutine을 이용한 강의를 준비할 의향이 있는지는 직접 확인해봐야 할 정보입니다. 다만, 많은 WebFlux 강의에서 점차 Kotlin의 Coroutine 사용이 강조되고 있어, 미래 강의에서는 포함될 가능성도 있겠습니다.

비즈니스 로직이 복잡해질수록 코드의 가독성을 유지하는 것은 개발자들에게 항상 중요한 과제입니다. 다음은 웹플럭스를 사용할 때 가독성을 높이기 위한 일반적인 팁입니다:
1. 직관적 함수명 사용: 함수 및 변수명을 의미 있게 지어 누가 봐도 쉽게 이해할 수 있도록 합니다.
2. 적절한 모듈화: 비즈니스 로직과 관련 없는 세부 구현을 적절히 모듈화하거나 추상화하여 핵심 코드가 명료하게 드러나게 합니다.
3. 로그 활용: 적절한 로깅을 통해 코드 실행 흐름을 쉽게 파악할 수 있도록 합니다.
4. 커멘트 추가: 복잡한 로직의 경우 간단한 주석을 통해 로직의 배경과 의도를 설명합니다.

추가로, Reactive Streams의 연산자를 잘 활용하면 비동기 로직의 가독성을 크게 높일 수 있습니다. Parallel을 비롯한 다양한 처리 전략을 알아두시면 더욱 좋습니다.

관련 질문이나 내용을 더 원하신다면, 아래 링크를 확인해보시는 것을 추천드립니다:
WebFlux 코드를 깔끔하게 작성하는 방법

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

보링님의 프로필 이미지
보링

작성한 질문수

질문하기