안녕하세요. Kotlin과 Java의 현업에서의 활용에 있어 궁금한 내용이 있어 질문드려요. 서버를 개발하실 때 Kotlin과 SpringBoot를 활용한다고 수업시간에 지나가면서 잠깐 말씀해주셨는데요. 혹시 Kotlin + SpringBoot의 프로젝트 작업을 진행하실 때 전혀 Java를 사용하지 않고 활용하시는지 아니면 Java와 Kotlin을 같이 사용하는 지 현업에서 실제 어떻게 활용하시는지 궁금합니다. 그리고 Gradle에서 implementation("org.apache.commons:commons-lang3:3.0") 와 같은 외부 라이브러리를 Kotlin + SpringBoot 프로젝트에서 사용할 때 Java로 가져와서 사용하는지 아니면 Kotlin으로 따로 제작된 코드를 사용하는지 궁금합니다.
안녕하세요 현재 섹션 5_4-9. 낙관적 락, 비관적 락 부분을 듣고 있는데요. 현재 공공SI 고도화 개발팀에서 개발을 하고 있는데 동시성 제어 부분이 있는것 같아서 질문드립니다. 레거시 코드로 Oracle/ iBatis DAO / XML 환경이며 담당자가 신청에 대해서 접수하는 기능에서 소스분석을 통해서 봤을 때 기존 소스 흐름은 1. 작업확인용 테이블에서 현재 작업중인 목록이 있는지 확인(Select) 2-1. 작업중 목록이 없다면 작업확인용 테이블에 작업중으로 insert 2-2. 작업중 목록이 있다면 Exception 발생(작업중입니다.) 3. 해당 신청건에 대한 insert/update 진행 4. 작업확인용 테이블의 insert 했던 값의 상태를 작업완료로 Update * 작업중 상태가 있을 땐 다른 신청건에 대해서도 접수가 불가 입니다. 강의를 듣고 보았을 때 작업확인용 테이블의 존재 이유가 동시성 제어를 위함으로 보이는데 기존 흐름을 봤을 때 비관적락 > 배타락으로 적용하는것이 맞다고 생각이 드는데 맞는 접근일까요? 또한 비관적 락 적용시 작업확인용 테이블의 존재가 필요없어지는 걸까요? 해당부분을 건드리기에 부담이 가서 기존 방식대로 개발을 해놓은 상태이긴 한데 강의를 듣고 적용해볼 수 있지 않을까 생각이 들어 질문드립니다!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요. 실무에서의 동시성 문제에 대해서 궁금한게 생겨서 질문 드립니다. 현재 외부 API를 사용하는 서비스를 개발 중인데, WebClient, RestTemplate를 사용하여 개발 중에 있습니다. 구글링 및 Claude MCP를 사용하여 검증 했을 때에는 해당 라이브러리를 사용할 때 동시성 문제를 일으킬 가능성이 없다고 하는데, 해당 라이브러리를 사용할 때 동시성 문제에 완전히 자유로운 건가요? 아니면 특정 상황에서는 동시성 문제가 발생할 수 있는 건가요? 만약 발생할 수 있다면, 어떻게 테스트 코드를 작성해서 확인 할 수 있을까요?
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요! 먼저 유사한 질문이 있었는지 검색해 보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요. 좋은 강의 재밌게 수강하고 있습니다! 강의를 들으면서 의식적으로 테스트 코드를 작성하기 위해 노력하고 있습니다. 학습하다 보니 테스트 코드에 대한 부분을 정량적인 지표로 활용할 수 있는 커버리지라는 지표가 있다는 것을 알게 되었는데요. 제가 개발하는 부분은 도메인이 복잡한 프로젝트는 아니다 보니, 주로 Service Layer와 Presentation Layer 위주로 작성하게 되더라구요. queryDSL이나 native query를 이용해 복잡한 쿼리를 작성하게 되면, 가끔 Persistence Layer까지 작성하게 되는 것 같습니다. 그러다 보니, 도메인 패키지가 아닌 Config 등 global 패키지에 존재하는 코드나 Persistence Layer의 테스트 코드가 커버리지가 낮고, Persistence Layer의 커버리지도 낮아서 그런지 보통 프로젝트의 라인 커버리지가 60% 전후를 기록하고 있는 것 같습니다. 우빈님께서는 커버리지를 어떤 식으로 활용하시는지 궁금합니다! 커버리지 자체를 신경쓰기 보다는 말씀해주신 대로 미래를 위해 의미가 있는 테스트 코드를 작성하고 싶은데, 커버리지도 활용하는 방법이 있는지? 그리고 주로 어떤 레이어 위주로 테스트 코드를 작성하시는지 궁금합니다! 읽어주셔서 감사합니다.
강의 자료에서 제공된 테스트 코드가 온전한 테스트 코드가 아니라고 언급하셨습니다. 실무에서 로그와 같은 부가기능에 대해서도 테스트 코드를 작성하시나요? 작성하신다면 로그가 정확하게 찍혔는지, 혹은 메서드 호출 순서나 시간이 기대한 대로 측정되었는지 등을 자동으로 검증하기 위해 일반적으로 사용되는 테스트 기법이나 프레임워크가 있을까요? 관련 방법이나 라이브러리 등에 대해 학습할 수 있는 키워드를 알려주시면 감사하겠습니다.
오브젝트를 클래스의 인스턴스 혹은 배열이다라고 하면 기술적으로 맞는 정의라고 하셨는데 배열이 별도로 정의에서 언급된 이유가 궁금합니다! 찾아보았을 때에는 new 클래스명() 과는 다른 별도의 new int[] 와같은 형식으로 생성 JVM내에서 바이트코드 레벨에서의 조작을 통한 다른 조작 방식으로 접근 으로 일반적인 클래스 생성을 통한 방식과는 다른 방식으로 배열을 객체로서 구현하고 접근하기 때문에 별도로 정의한다라고 이해하였지만 단순 자바에서의 구현 방식 차이로 자바에서만 별도 정의되어 표현된것인지 원래 오브젝트의 개념중 배열은 별도 기술하는것인지 궁금하며 혹시 위의 기술한것과 다른 이유가 존재하는지 궁금합니다!
제가 개발 시작하는 신입사원인데 회사 앞으로 미래에 일하게 될 프로젝트 팀의 업무 내용을 어떤분께 들었는데 정부전자 프레임워크에서 스프링 레거시로 작업을 한다고 들었습니다. 혹시 이 강의를 공부하는 것으로 충분히 대비가 될지, 완강 후에 추가로 어떤 공부를 더 해야하면 좋을지 모르겠습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 1. 스프링에서 제공하는 MethodInterceptor에서 사용하는 MethodInvocation 객체와 @Aspect 프록시에서 사용되는 ProceedingJoinPoint는 어떤 차이점이 있나요? 2. 비슷한 기능을 제공함에도 다른 객체가 사용되는 특별한 이유가 있나요?
안녕하세요 토비님. 강의에서 말씀하신 공부할 때는 AI 관련 도구를 끄고 지식을 습득 해야 한다는 부분이 인상 깊었습니다. 이전에도 공부와 실무 사이에는 늘 간극이 있었고, 이번 강의는 그 간극을 인지하고 실무적인 관점에서 방향을 잡을 수 있도록 도와주신다고 느꼈습니다. 그런데 요즘은 AI가 빠르게 보편화되면서, 공부와 실무의 관계가 또 다른 형태로 변화하고 있는 것 같습니다. 실제로 신규 업무나 개인 프로젝트에서 AI의 활용 방식과, 기존 시스템을 지속적으로 개선하거나 확장하는 과정에서의 AI의 활용 방식이 다르게 느껴집니다. 이런 변화 속에서 AI를 새로운 학습 형태이자, 학습과 실무를 잇는 새로운 도구로 봐야 할지, 아니면 보조적인 수단으로 바라봐야 할지 고민됩니다. 토비님은 실무에서 AI를 어떤 방식으로 활용하고 계신지, 그리고 이 시대의 개발자가 어떤 균형점을 가져야 한다고 보시는지 궁금합니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 데이터 베이스 접근 및 DB 락에 대해서 학습을 하면 " 동시성 이슈 " 그리고 " 트랜잭션 격리성 " 에 대한 전반적인 DB Lock 이슈 관리에 도움이 될까요??
[1.5탄] 옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트
안녕하세요, 이번 강의를 듣다가 문득 궁금한 점이 생겨서 질문 드립니다. 강의에서 @RequestMapping(method = RequestMethod.GET)을 @GetMapping으로 축약할 수 있다고 배웠습니다. 그런데 이런 축약 어노테이션들이 단순히 가독성만을 위한 것인가요? 아니면 성능상의 차이도 있나요? 왜 굳이 이렇게 나뉘어져서 존재하는지 궁금합니다.
안녕하세요, 토비님. 좋은 강의 항상 감사드립니다. Clock 관련해서 궁금한 점이 있어 질문드립니다. 스프링에서 빈은 기본적으로 싱글톤으로 관리된다고 알고 있습니다. 그런데 만약 Clock을 빈으로 등록하고 Clock.fixed... 로 고정된 시계를 만든다면, 여러 스레드가 동일한 Clock 인스턴스를 공유하게 될 텐데요. 이 경우 동시성 문제가 발생할 가능성은 없는지 궁금합니다.
안녕하세요, 좋은 강의 올려주셔서 감사합니다. Seperate Interface 패턴에 대해 궁금한 점이 있어 질문드립니다. "오브젝트와 의존관계" 세션의 마지막 강의에서, DIP를 적용하기 위해 payment 패키지에 ExRateProvider 인터페이스를 두고, 해당 인터페이스를 exrate 패키지에서 구현한다고 알려주셨습니다. 저도 직접 코드를 따라서 작성해보니 훨씬 깔끔하다는 느낌이 들었는데요. 그런데 사실 제가 실무에서 개발을 하면서 저런 구조를 경험해보지 못했습니다. 저는 Spring MVC를 사용하는데, 흔히 사용하는 controller-service-repository 패키지 구조에서 repository 패키지 아래에 인터페이스를 만들어서 그대로 쓰거나(JpaRepository) 필요하면 구현체를 만들어서 쓰는 방식으로 개발을 해왔습니다. 그래서 다음 2가지가 궁금한데요. 1) Spring MVC를 사용하는 경우에도 알려주신 Separate Interface 패턴을 적용할 수 있나요? 아니면 프로젝트의 설계 자체가 달라져야 하는 것인가요? 2) 실무에서도 Seperate Interface 패턴을 많이 적용하고 있나요? 스프링을 더 잘 이해하고 코드를 더 잘 작성하고 싶었는데, 강의 들으면서 많이 배우고 있습니다. 감사합니다.
5년차 백엔드 개발자 이며 현재 섹션5. 헥사고날 아키텍처의 사실과 오해를 학습하고 있습니다. 현업에서 신규 프로젝트를 준비 하면서 어떤 아키텍처를 가져가는 것이 좋을지 고민중에 강의를 접하게 되었습니다. 부동산 관련 데이터를 기반으로 한 서비스를 개발 및 설계 단계에 있습니다. 제가 전부 리드하는 것은 아니지만 프로젝트 전반적인 부분을 개발 리드분에게 권한을 받고 저와 팀원 둘이서 백엔드 구조를 설계 하고 있습니다. 수천만건 그 이상이 될 수 있는 데이터를 기반으로한 서비스를 계획 및 설계하고 있는데, 자바 스프링으로 서버를 구축 하려고 하는데 헥사고날 아키텍처를 저와 팀원은 경험 하지 못하였는데, 확장성 있는 서비스를 만들기 위해 헥사고날 아키텍처 기반으로 어떤 구조 설계를 하는 것이 좋을지 ,,, 조언 부탁드립니다.