강의

멘토링

로드맵

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

TH Kwon님의 프로필 이미지
TH Kwon

작성한 질문수

스프링 핵심 원리 - 고급편

쓰레드 로컬 - 주의사항

실무 멀티스레딩에 대한 궁금증

작성

·

11

0

=========================================
[질문 내용]
안녕하세요, 영한님? 영한님의 자바와 스프링 전편의 로드맵을 수강 중인 개발자입니다. 항상 영한님의 강의를 들으며 스텝업하는 부분이 있기에 너무 감사하단 인사를 먼저 드리고 싶습니다.

 

본격적인 질문은 스레드 로컬을 포함한 멀티 스레딩 관련 내용입니다. 영한님의 유튜브 영상 중 초보 개===============================

[질문 내용]

안녕하세요, 영한님? 영한님의 자바와 스프링 전편의 로드맵을 수강 중인 개발자입니다. 항상 영한님의 강의를 들으며 스텝업하는 부분이 있기에 너무 감사하단 인사를 먼저 드리고 싶습니다.

 

 

 

영한님의 유튜브 영상 중 고민 많은 개발자가 찾아왔다 를 보고 저 역시 처음부터 높은 목표를 가지지 않고 당장 입사 가능한 회사에 들어가 1년간 업무를 해봤습니다. 그래서 그런지 몰라도 이전 회사에선 영한님 강의에서 배운 내용들을 10% 조차 적용하지 못해봤던 것 같고 그 부분에 회의를 조금 느낀 것인지 안주하지 않겠다는 생각을 가지고 퇴사 후 교육을 듣게 되었던 것 같습니다.

 

본격적인 질문은 스레드 로컬을 포함한 멀티 스레딩 관련 내용입니다. 자바 고급편에서 다뤄주신 executorService나 이번의 스레드 로컬과 같은 멀티스레드 관련 지식을 적용할만한 코드가 이전 회사에선 없었습니다. 기껏해야 비동기 API 구성시 Future를 사용한 것 정도일까요? 그래서 궁금해졌습니다.

 

스프링 부트에서는 기본적으로 대부분의 컴포넌트가 싱글톤 스코프로 관리되기 때문에, stateless하게 설계하면 일반적으로 스레드 안전성 문제가 드물다고 알고 있습니다.

다만 실무에서는 의도치 않게 stateful한 코드가 들어가는 경우가 자주 발생하곤 하는데요.(그게 실수가 되었건 불가피하건 말이죠)
> 실제로 규모가 있는 서비스 회사에서는 이런 문제를 사전에 방지하기 위해 클래스/컴포넌트 설계 가이드나 명세 단계에서 thread-safe 설계를 강제하는 편인가요?
아니면 설계 때보단 코드 리뷰나 테스트 중 문제 발견 후 사후적으로 수정·보완하는 프로세스를 거치나요?

답변 1

0

안녕하세요. TH Kwon님, 공식 서포터즈 David입니다.

제 개인적인 경험을 바탕으로 말씀드리면,

요구사항 분석시, 동시성 상황으로 인해 문제될 수 있는 부분을 식별하는 편입니다.

그리고 스레드 로컬의 경우, 여러가지 구현 방법 중 하나로 고려될 수 있는 요소여서 처음부터 스레드 로컬을 쓴다고 생각하진 않았습니다.

감사합니다.

TH Kwon님의 프로필 이미지
TH Kwon

작성한 질문수

질문하기