묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨멀티 모듈 아키텍처로 구현하는 은행 서버 핵심 기능 [ Kotlin & Spring ]
CQRS 설계 팁
대규모 트래픽 환경에서 Write Service의 부하를 줄이기 위한 CQRS 설계 팁이 있을까요?
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
스트림과 for문 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요,스트림과 for문을 어느 경우에 선택해서 사용해야 할까요?실무에서 스트림과 for문을 기준이 없이 남발하게 되면 오히려 코드 품질이나 성능이 악화될 수 있나요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
완강 후 학습 방향에 대한 질문
쿠케님 안녕하세요!우선 좋은 강의 제작해주셔서 정말 감사합니다. 강의 들으면서 대규모 시스템을 설계할 때는 어느 것을 신경써야 하고, 또 주의해야 하는지 많은 인사이트를 얻고 있어요. 추석 연휴 동안 제 나름대로 열심히 들어서 이제 한 개 섹션만 남았는데, 완강을 한 뒤에 강의에서 얻은 것들을 토대로 대규모 트래픽을 가정한 서비스를 설계하고, 개발해보려고 합니다. 강의로만 듣고 넘기기에는 아까운 내용들이 많아서 확실하게 제 것으로 만들어야겠다 싶더라고요. 일하면서 써먹으면 더없이 좋겠지만 아쉽게도 그럴 환경은 안 되어서요.. ㅎㅎ 그래서 나름대로 구상을 해보면서 강의를 듣고 있는데, 문득 강의에서 다룬 아키텍처와 기술을 한 번에 다 도입하는 건 오히려 학습 효율을 떨어뜨리는 선택이 아닐까 싶은 생각이 들어서요. 실무에서 Redis 정도는 사용해봤지만, 분산 데이터베이스나 MSA도, Kafka나 CQRS도 이 강의에서 처음 사용해봤습니다. 개념은 대충 주워 듣긴 했지만, 제대로 공부해본 적도 없고요. 결론적으로 하나씩 해보는 게 낫겠다 싶은데, 강의에서 다룬 내용 중 어느 것을 먼저 학습하는 게 좋을지 쿠케님께 조언을 구하고 싶어요. 물론 정답이 없는 문제지만, 지금 당장 제가 일하는 환경에서는 써먹을 일이 별로 없는 내용들이다 보니 무엇을 먼저 하는 게 좋을지 선택하기가 어렵네요. 감사합니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
메모리 가시성 문제가 발생하는 이유
멀티스레드 환경에서 메모리 가시성 문제가 발생하는 이유를, CPU 캐시와 메인 메모리 간의 데이터 갱신 시점 차이 때문이라고 이해했습니다.그렇다면 이 현상은 하드웨어 수준의 문제로 봐야 할까요, 아니면 JVM의 메모리 관리 방식이 영향을 주는 걸까요?또한, 이런 문제가 자바가 컴파일 언어이기 때문에 발생하는지도 궁금합니다.
-
미해결김영한의 실전 자바 - 기본편
3강 18. null 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 3강 18. null 강의를 보는 중 궁금한 점이 있어 질문 드립니다.해당 강의 GC 섹션에서 말씀하신 참조하지 않는 인스턴스라는 부분이null -> x001 -> null이렇게 인스턴스에 값을 할당하는 과정에서 다시 null을 할당하며 x001 이라는 참조 값이 사라져서 x001 값이 GC가 된다는 게 맞을까요? 아니면 해당 인스턴스 자체가 GC가 되는 걸까요? 강의 잘 보고있습니다. 감사합니다!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
데몬스레드가 어떨 때 사용이 되는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]데몬스레드의 특징은 이해했는데, 어떨 때 사용이 되는 건지 궁금합니다. 그리고 현업에서도 보통 데몬 스레드를 사용할 일이 있나요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
최적화 순서
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.강사님, 최적화를 진행할 때 보통 어떤 순서로 고민하시나요?예를 들어 트래픽이 몰릴 때 먼저 어디를 확인하고, 어떤 기준으로 개선 방향을 정하시는지가 궁금합니다.
-
미해결토비의 스프링 6 - 이해와 원리
오브젝트 정의 중 배열에 대해서
오브젝트를 클래스의 인스턴스 혹은 배열이다라고 하면 기술적으로 맞는 정의라고 하셨는데 배열이 별도로 정의에서 언급된 이유가 궁금합니다!찾아보았을 때에는 new 클래스명() 과는 다른 별도의 new int[] 와같은 형식으로 생성JVM내에서 바이트코드 레벨에서의 조작을 통한 다른 조작 방식으로 접근으로 일반적인 클래스 생성을 통한 방식과는 다른 방식으로 배열을 객체로서 구현하고 접근하기 때문에 별도로 정의한다라고 이해하였지만 단순 자바에서의 구현 방식 차이로 자바에서만 별도 정의되어 표현된것인지 원래 오브젝트의 개념중 배열은 별도 기술하는것인지 궁금하며 혹시 위의 기술한것과 다른 이유가 존재하는지 궁금합니다!
-
미해결실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌
doPost 안에서 doGet을 호출하는 방식이 흔한가요?
강의 내용 중에 Post요청을 받아 doPost안에서 doGet으로 요청을 넘겨주는 방식을 자주 사용한다고 언급하시면서, 요청을 하나의 메서드로 관리하기 위함이라고 하셨던 것으로 기억합니다.근데 저는 메서드를 분리하는 게 더 좋은 방법이지 않나 싶습니다. 메서드 별 명확한 역할 분리도 중요하고, 만약 RESTful하게 설계하려면 이 방식은 권장되지 않을 거 같은데, 저런 식으로 샘플 코드가 자동으로 생성되는 걸 보니 갑자기 궁금해졌습니다..
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
Future.cancel() 취소를 사용하는 예가 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요! 강의 잘 듣고 있는와중에 Future 관련 내용을 보다가 궁금한 점이 생겨서 질문 남깁니다. cancel() 기능이 필요한 실제 사례가 어떤 것이 있을까요?Future.cancel() 을 통해 실행을 취소시킬 수도 있다는 것은 이해가 됐습니다. 그런데 cancel() 기능이 필요한 실제 사례가 뭐가 있을지가 연상이 잘 안됩니다.실제로 작업을 수행하다가 취소 처리를 해야하는 경우가 일단 뭐가 있을지 궁금합니다.그냥 생각이 드는 건 특정 시간 제한이 지나서인데, 이건 get에 시간제한을 둬서 TimeoutException 하는 걸로 충분할 것 같아서요. cancel(false) 로 취소는 하되 과정은 수행하도록 내버려두는 케이스는 어떤 경우를 위해 있는건가요?아예 interrupt로 취소를 시키는 경우는 막상 예시가 떠오르진 않지만 논리적으로 이해가 갑니다. 어떤 작업을 수행하다가 특정 케이스에서는 필요가 없어져서 취소시킬 수 있겠다 싶습니다. 그런데 cancel(false) 로 취소는 하되 그 과정을 수행하도록 내버려둘 필요가 있나 싶어서요.어차피 cancel을 하면 true/false 어떤걸 넘겨줘도 get 하면 exception이 발생하면서 결과값을 못 얻는데 수행을 하게 내버려 둘 필요가 없을 것 같은데 어떤 경우를 위해 이렇게 구현이 되어 있는 건지 궁금합니다.
-
미해결실전! Querydsl
Querydsl 6.X버전에 대해서 어떻게 생각하시나요?
안녕하세요.현재 공식 Querydsl이 활발히 관리되는 것 같지 않아 OpenFeign에서 포크한 6.x 버전을 사용해 진도를 따라가고 있습니다.당장은 Jakarta/Hibernate 최신 버전과 지원 문제도 있는 것 같고, orderBy 관련 SQL/HQL 인젝션 계열 취약점이 있는것 같아서 5.x 버전을 쓰고 있는데요.(물론 order by 관련해서 사용자에게 입력 받는 상황은 정말 드문 케이스 같긴 하네요)장기적으로는 포크 버전의 유지·보수나 향후 호환성 측면이 조금 걱정됩니다.이 상태로 6.x 포크 버전을 계속 따라가도 괜찮을지, 아니면 안정적인 5.10 계열(공식 안정 버전)로 머무르거나 돌아가는 게 나을지 의견 부탁드립니다!
-
미해결토비의 스프링 6 - 이해와 원리
스프링 레거시를 이용하는 회사에서 일을 하게 될것같은데
제가 개발 시작하는 신입사원인데 회사 앞으로 미래에 일하게 될 프로젝트 팀의 업무 내용을 어떤분께 들었는데 정부전자 프레임워크에서 스프링 레거시로 작업을 한다고 들었습니다.혹시 이 강의를 공부하는 것으로 충분히 대비가 될지, 완강 후에 추가로 어떤 공부를 더 해야하면 좋을지 모르겠습니다.
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
멀티스레드 단일스레드
멀티스레드와 단일스레드 구조를 선택할 때 어떤 기준으로 결정하나요? 단순히 성능만이 아니라, 트레이드오프 측면에서 고려할 부분도 있을 것 같아 질문드립니다.
-
미해결토비의 스프링 6 - 이해와 원리
JpaTransactionManager에 대해 궁금합니다.
@Transactional을 쓰지 않고 JpaTransactionManager 사용했을 때 좋은 점이 있을까요? @Transactional과 JpaTransactionManager의 차이가 궁금합니다.
-
미해결코딩으로 학습하는 GoF의 디자인 패턴
default 기능이 있는 interface와 추상클래스의 차이
interface에 default 메서드를 사용할 수 있음에 따라 추상 클래스와 동일한 용도로 사용될 수 있는 것처럼 보입니다. 업무 중에는 jdk 6 환경까지 컴파일되야 함을 감안하여 코드를 작성하다보니 해당 기능에 대해 아예 생각해본적이 없는데, 팩토리 강의를 듣던 중 default를 통해 interface가 추상 클래스처럼 사용되는걸 보니, jdk 8 이상의 환경, 특히 9에서는 private까지 지원되면 추상 클래스를 완전히 대체할 수 있는 것처럼 보입니다.default 기능을 제공하는 interface와 추상 클래스에 차이가 있는지, 현장에서 interface의 default 기능이 적극적으로 사용되는지, 추상 클래스는 더이상 필요없는 것인지요.기존에 해당 기능을 설명하는 글귀만 봤을 때는 interface를 변경할 때 레거시 코드의 수정없이 변경할 수 있는, 편의성을 위한 기능이라고만 이해하고 넘어갔는데, 적극적으로 사용되는 기능인지 궁금하네요
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
AI 시대에서 공부와 실무의 관계를 어떻게 바라봐야 할까요?
안녕하세요 토비님.강의에서 말씀하신 공부할 때는 AI 관련 도구를 끄고 지식을 습득 해야 한다는 부분이 인상 깊었습니다.이전에도 공부와 실무 사이에는 늘 간극이 있었고, 이번 강의는 그 간극을 인지하고 실무적인 관점에서 방향을 잡을 수 있도록 도와주신다고 느꼈습니다.그런데 요즘은 AI가 빠르게 보편화되면서, 공부와 실무의 관계가 또 다른 형태로 변화하고 있는 것 같습니다.실제로 신규 업무나 개인 프로젝트에서 AI의 활용 방식과, 기존 시스템을 지속적으로 개선하거나 확장하는 과정에서의 AI의 활용 방식이 다르게 느껴집니다.이런 변화 속에서 AI를 새로운 학습 형태이자, 학습과 실무를 잇는 새로운 도구로 봐야 할지, 아니면 보조적인 수단으로 바라봐야 할지 고민됩니다.토비님은 실무에서 AI를 어떤 방식으로 활용하고 계신지, 그리고 이 시대의 개발자가 어떤 균형점을 가져야 한다고 보시는지 궁금합니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
도메인엔티티와 JPA 엔티티 분리 문의
안녕하세요. 도메인 엔티티와 JPA 엔티티를 아예 분리하는 case도 있는지 궁금합니다. 예를들어 Domain 패키지에는 순수한 도메인 클래스들만 모아놓고 JPA에선 도메인 엔티티 -> JPA엔티티로 변환해서 사용하는경우도 있나 궁금합니다.
-
미해결[1.5탄] 옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트
@GetMapping은 단순 축약일까요? 다른 차이는 없나요?
안녕하세요, 이번 강의를 듣다가 문득 궁금한 점이 생겨서 질문 드립니다. 강의에서 @RequestMapping(method = RequestMethod.GET)을 @GetMapping으로 축약할 수 있다고 배웠습니다. 그런데 이런 축약 어노테이션들이 단순히 가독성만을 위한 것인가요? 아니면 성능상의 차이도 있나요? 왜 굳이 이렇게 나뉘어져서 존재하는지 궁금합니다.
-
미해결토비의 스프링 6 - 이해와 원리
스프링빈과 Clock 클래스 관련
안녕하세요, 토비님. 좋은 강의 항상 감사드립니다.Clock 관련해서 궁금한 점이 있어 질문드립니다.스프링에서 빈은 기본적으로 싱글톤으로 관리된다고 알고 있습니다.그런데 만약 Clock을 빈으로 등록하고 Clock.fixed...로 고정된 시계를 만든다면,여러 스레드가 동일한 Clock 인스턴스를 공유하게 될 텐데요.이 경우 동시성 문제가 발생할 가능성은 없는지 궁금합니다.
-
미해결토비의 스프링 6 - 이해와 원리
Seprate Interface 패턴에 대한 궁금증
안녕하세요, 좋은 강의 올려주셔서 감사합니다.Seperate Interface 패턴에 대해 궁금한 점이 있어 질문드립니다. "오브젝트와 의존관계" 세션의 마지막 강의에서, DIP를 적용하기 위해 payment 패키지에 ExRateProvider 인터페이스를 두고, 해당 인터페이스를 exrate 패키지에서 구현한다고 알려주셨습니다. 저도 직접 코드를 따라서 작성해보니 훨씬 깔끔하다는 느낌이 들었는데요. 그런데 사실 제가 실무에서 개발을 하면서 저런 구조를 경험해보지 못했습니다. 저는 Spring MVC를 사용하는데, 흔히 사용하는 controller-service-repository 패키지 구조에서 repository 패키지 아래에 인터페이스를 만들어서 그대로 쓰거나(JpaRepository) 필요하면 구현체를 만들어서 쓰는 방식으로 개발을 해왔습니다. 그래서 다음 2가지가 궁금한데요.1) Spring MVC를 사용하는 경우에도 알려주신 Separate Interface 패턴을 적용할 수 있나요? 아니면 프로젝트의 설계 자체가 달라져야 하는 것인가요?2) 실무에서도 Seperate Interface 패턴을 많이 적용하고 있나요?스프링을 더 잘 이해하고 코드를 더 잘 작성하고 싶었는데,강의 들으면서 많이 배우고 있습니다. 감사합니다.