inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

174만명의 커뮤니티!! 함께 토론해봐요.

Gradle Build 시 에러 발생

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 2-7강 여기까지 이해하신 내용은 무엇인가요? git Action CI/CD 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? git push 후 workflow에서 Gradle 빌드 실패 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? git push 후 workflow에서 Gradle 빌드 실패 현재 작성하신 코드를 공유해주세요 빌드를 진행할 때 먼저 3개의 테스트에서 실패합니다. SimpleEventListenerTest > 현재 코드 구조에서 @TransactionalEventListener는 작동하지 않는다 FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 SimpleEventListenerTest > @TransactionalEventListener는 활성 트랜잭션이 필요하다 FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 SimpleEventListenerTest > @EventListener는 트랜잭션이 없어도 정상 동작한다 FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 이후, Redis에 Reconnecting 하려고 시도하지만 Connection이 Refused되면서 빌드에 실패합니다. 2025-08-21T08:34:32.560Z INFO 2235 --- [xecutorLoop-1-2] i.l.core.protocol.ConnectionWatchdog : Reconnecting, last destination was localhost/127.0.0.1:32770 2025-08-21T08:34:32.570Z WARN 2235 --- [ioEventLoop-8-2] i.l.core.protocol.ConnectionWatchdog : Cannot reconnect to [localhost/<unresolved>:32770]: Connection closed prematurely io.lettuce.core.RedisConnectionException: Connection closed prematurely at io.lettuce.core.protocol.RedisHandshakeHandler.channelInactive(RedisHandshakeHandler.java:91) ~[lettuce-core-6.2.6.RELEASE.jar:6.2.6.RELEASE] // 생략 로컬 환경과 AWS EC2 환경에서 동일하게 발생합니다. 해결 방법 gradle build를 5번 정도 시도했는데, 5번 중 4번은 SimpleEventListenerTest 에서 테스트가 실패하고, 1번은 다른 Test에서 실패하였습니다. 그래서, SimpleEventListenerTest 에 대해 개별 테스트를 진행해보니 통과하였습니다. 전체 테스트 진행에서는 JDBC Connection 관련 오류가 발생했고, 개별 테스트 진행에서는 문제가 발생하지 않는다는 점에서 커넥션 풀 설정 문제 를 의심하였습니다. spring: datasource: url: jdbc:mysql://${RDS_ENDPOINT:localhost}:3306/portfolio?useSSL=false&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true&useSSL=false&rewriteBatchedStatements=true username: portfolio_user password: ${RDS_PASSWORD:portfolio1234} driver-class-name: com.mysql.cj.jdbc.Driver hikari: maximum-pool-size: 32 @TestConfiguration public class TestDatabaseConfig { @Container private static final MySQLContainer<?> mysqlContainer; application.yml 의 최대 풀 사이즈는 32로 설정되어 있고, mySQL 컨테이너는 전역으로 설정되어 있으므로 병렬 처리 과정에서 커넥션 풀이 부족할 수 있겠다는 판단하에, maximum-pool-size 를 100으로 늘려보았습니다. package ding.co.backendportfolio.config; import jakarta.annotation.PreDestroy; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.testcontainers.containers.MySQLContainer; import org.testcontainers.junit.jupiter.Container; @TestConfiguration public class TestDatabaseConfig { @Container private static final MySQLContainer<?> mysqlContainer; static { mysqlContainer = new MySQLContainer<>("mysql:8.0.33") .withDatabaseName("testdb") .withUsername("test") .withPassword("test"); mysqlContainer.start(); // A) 기본 설정 + rewriteBatchedStatements 옵션 String originalJdbcUrl = mysqlContainer.getJdbcUrl() + "?rewriteBatchedStatements=true"; // TODO: BulkInsert 모니터링 - 아래 주석을 해제해야함 // originalJdbcUrl = originalJdbcUrl + "&profileSQL=true&logger=Slf4JLogger&maxQuerySizeToLog=2147483647"; System.setProperty("spring.datasource.url", originalJdbcUrl); System.setProperty("spring.datasource.username", mysqlContainer.getUsername()); System.setProperty("spring.datasource.password", mysqlContainer.getPassword()); // 커넥션 풀 늘리기 System.setProperty("spring.datasource.hikari.maximum-pool-size", "100"); System.setProperty("spring.datasource.hikari.minimum-idle", "10"); } @Bean public MySQLContainer<?> mySQLContainer() { return mysqlContainer; } @PreDestroy public void stop() { if (mysqlContainer != null && mysqlContainer.isRunning()) { mysqlContainer.stop(); } } } 이후 테스트를 진행해보니, 기존에 작성해두신 커넥션 풀 테스트인 EventJoinWithExternalConnectionPoolTest 를 제외하고 테스트에 통과하였습니다. 따라서, EventJoinWithExternalConnectionPoolTest 이 테스트에만 작은 커넥션 풀을 적용하도록 하였습니다. @Slf4j @IntegrationTest // 커넥션 설정 @TestPropertySource(properties = { "spring.datasource.hikari.maximum-pool-size=32", "spring.datasource.hikari.minimum-idle=5" }) class EventJoinWithExternalConnectionPoolTest { 문제가 발생한 원인은, Gradle 병렬 테스트 진행 시 커넥션 풀이 부족하여 커넥션이 이뤄지지 않았던 것 같습니다. 사실 최대 커넥션 풀을 100개로 늘리는 건 임시방편인 것 같고, 테스트별로 독립적인 컨테이너 환경을 만들어주는게 좋을 것 같다고 생각합니다. P.S.) GPT, 클로드코드, Cursor, ... 다 문제 원인을 파악하지 못하더라고요 ㅎㅎ

  • java
  • spring
  • mysql
  • redis
  • 이력서
bebe 댓글 3 좋아요 2 조회수 267

인덱스 설계

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 3-7 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 개인 프로젝트 중 여러 테이블이 where절 조건에 있을 때는 어떤식으로 인덱스를 설계해야 하나요?? 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? 현재 작성하신 코드를 공유해주세요 select o1_0.order_id, o1_0.city, o1_0.street, o1_0.zipcode, o1_0.created_at, o1_0.deleted_at, o1_0.delivery_id, o1_0.member_id, o1_0.name, o1_0.no, o1_0.payment_id, o1_0.tid, o1_0.total_price, o1_0.updated_at from orders o1_0 join member m1_0 on m1_0.member_id=o1_0.member_id join delivery d1_0 on d1_0.id=o1_0.delivery_id join payment p1_0 on p1_0.payment_id=o1_0.payment_id where d1_0.delivery_status=? and o1_0.created_at between ? and ? and o1_0.total_price>=? order by o1_0.total_price limit ?, ? orders테이블과 delivery 테이블 where절에서 조건이 걸려있습니다. 이럴 경우는 어떻게 해야 하나요?? 쿼리 조건이 좀 이상할 수 있지만 공부하는 겸 여러 조건들을 시도하고 인덱스 설계하는 중입니다. ㅎㅎ 제가 시도해본 인덱스들은, orders 테이블에 create_at, total_price 복합 인덱스와 total_price, created_at 복합 인덱스이며 첫 번째 인덱스는 속도가 느려졌고 두번째 인덱스는 속도가 빨라졌습니다. 인덱스 X desc 결과 첫번째 인덱스 desc 결과 두번째 인덱스 desc 결과 이후 delivery_status로 인덱스를 만들었더니 속도가 더 빨라졌습니다. -> where 절에 여러개에 테이블이 조건으로 있더라도 각 테이블마다 인덱스를 생성해주면 될까요?? 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!

  • java
  • spring
  • mysql
  • redis
  • 이력서
모깅 댓글 2 좋아요 0 조회수 71

지원서 작성 가이드와 샘플이력서 살펴보기 강의질문

해결됨

시니어 면접관이 알려주는 개발자 취업과 이직 한방에 해결하기 [이론편-이력서편]

안녕하세요, 지원서 작성 가이드와 주의사항에서 이력서는 신입의 경우 2장, 경력자의 경우 3장 정도로 작성하는 것이 적절하다고 안내해주셨는데요. 포트폴리오 관련해서 질문이 있습니다. 사이드 프로젝트의 경우, 하나의 프로젝트당 몇 장 정도로 구성하는 것이 좋을까요? 인터넷에 공개된 포트폴리오 예시들을 보면, 프로젝트 하나당 3~4장 분량으로 구성된 경우가 많아서요. 혹시 권장하시는 양식이나 분량이 따로 있을까요? 감사합니다! 또 한 경력일경우 폐쇄망에서 작업한 내용을 어떤 방법을 증빙해야하는지 궁금합니다.

  • 포트폴리오
  • 코딩-테스트
  • 이력서
이경용 댓글 2 좋아요 0 조회수 188

회사 소개도 GPT로 빠르게 찾는 요령이 있을까요?

해결됨

ChatGPT 만능 프롬프트로 이력서와 자기소개서 완성하기

안녕하세요. 좋은 강의 정말 잘 수강하고 있습니다. 프롬프트에 던질 회사 소개도 GPT를 활용하는 방법이 있는지 궁금합니다..!

  • 면접
  • 이력서
  • chatgpt
공부맛있다 댓글 1 좋아요 0 조회수 203

이력서 작성 시 AI 활용

해결됨

ChatGPT 만능 프롬프트로 이력서와 자기소개서 완성하기

안녕하세요 강의 초반을 듣고있습니다. 요즘 채용을 할 때 AI가 작성한 글인지 아닌지를 파악하여 서류를 탈락시키는 일은 없는지 궁금합니다.

  • 면접
  • 이력서
  • chatgpt
모란 댓글 1 좋아요 1 조회수 222

강의를 듣다가 알림전송 관련 궁금한 점이 생겨 질문드립니다!

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 5-15. 비동기 처리 - 대표적인 사례 (22분~23분) 여기까지 이해하신 내용은 무엇인가요? 여러개의 알림을 전송 할 때 비동기로 알림을 전송하게 된다면 n개의 알림을 1개의 알림을 전송하는 시간과 같은 시간으로 전송할수 있다. 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 100만개의 알림을 1개의 알림 전송 시간으로 보내려면 어떻게 해야하나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 제 생각에는 메세지 큐를 중간에 두어서 100만개의 알림을 일단 메세지 큐에 넣고 알림 서버의 리소스를 고려해서 토픽?을 주면 될거 같은데 맞나요? 갑자기 궁금해져서 질문드립니다! 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!

  • java
  • spring
  • mysql
  • redis
  • 이력서
핫산 댓글 2 좋아요 1 조회수 133

신입 지원 자기소개서 관련 질문

해결됨

서류탈락은 그만! 챗GPT로 기업별 맞춤 합격 이력서 반자동화하기

안녕하세요! 강의 수강 후 이력서 작성하는데 큰 도움이 되었어요. 감사합니다 😊 강의 내용 관련한 질문은 아니지만, 자기소개서가 자유양식이라면 신입 지원의 경우에는 어떤 항목들로, 몇 항목 정도 구성하는 게 좋을까요??

  • 면접
  • 이력서
  • chatgpt
다정윤 댓글 3 좋아요 1 조회수 213

구글 폼 작성 완료했습니다!

해결됨

[취업폭격기] 공공기관 전산직 취업 치트키 : NCS·전공·PT면접까지 한 번에 뚫는 정규과정

깃 허브 권한 부탁드립니다!

  • 면접
  • 이력서
  • 기술면접
유니크한 갈매기 댓글 2 좋아요 0 조회수 133

피드백 관련 질문입니다~

해결됨

서류합격률 4%를 탈출하는 개발자 이력서 작성법(실습 포함)

안녕하세요~ 강의 듣고 이력서 피드백 해주신다고 해서 설문과 수강평 남겼는데요~ 이후에 기다리면 되는걸까요?? 이력서 보내는곳은 안보여서요! 확인 한번 부탁드립니다.

  • 포트폴리오
  • 이력서
파바배라던도 댓글 2 좋아요 0 조회수 181

apllication.yml localhost 도커 통신

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 2-4 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? apllication.yml 파일에서 url 부분에 localhost로 적용하면 도커 컨테이너끼리 통신이 안되는 것으로 알고 있는데 문제 없이 작동하는 이유가 뭔가요?? 혹시 제가 잘못 알고 있는 것이면 말씀해주시면 감사하겠습니다. ㅎㅎ 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? 현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!

  • java
  • spring
  • mysql
  • redis
  • 이력서
모깅 댓글 2 좋아요 0 조회수 130

자기소개서는 안넣어도 되나요?

해결됨

내 가치를 높이는 노션 이력서 만들기

이렇게 만든 이력서는 제출할때 url만 달랑 던져드리면 성의없게 생각하진 않나요?? 그리고 자기소개서는 따로 만들어서 첨부를 하는게 좋을까요?

  • notion
  • 이력서
건빈 댓글 1 좋아요 0 조회수 151

깃 권한 신청합니다

해결됨

[취업폭격기] 공공기관 전산직 취업 치트키 : NCS·전공·PT면접까지 한 번에 뚫는 정규과정

안녕하세요 취업폭격기 제로미니 입니다. 정규과정을 신청하신분은 Zeromini-lab 권한, Zeromini Git Hub 취업자료 권한 신청 관련하여 디스코드 (제로미니 IT취업 공부방) [ 초대장 ] 을 통해 '취업폭격기 제로미니'에게 다이렉트 메시지를 남겨주시면 내용을 안내해드리도록하겠습니다! 안녕하세요 제로미니님. 깃 권한 신청하겠습니다. 또한, 디스코드 초대 링크가 유효하지 않다고 표시됩니다. 혹시 해결이 가능할까요? 저도 들어가고 싶습니다!

  • 면접
  • 이력서
  • 기술면접
infichallen 댓글 2 좋아요 0 조회수 182

Repository secrets를 추가할 때 AWS_SECRET_ACCESS_KEY의 secret 갑싱 뭔가요?

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 2-3강 여기까지 이해하신 내용은 무엇인가요? 워크플로우에 사용될 환경변수를 입력하는 중이다. 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? AWS_SECRET_ACCESS_KEY의 secret 값이 무엇인지 강의에는 안 나와 있습니다. 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 일단 dingco-terraform-user 사용자의 액세스 키를 입력했습니다. 이전의 AWS_ACCESS_KEY와 동일하게요. 에러가 발생했다면 어떤 에러인가요? 현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! AWS_SECRET_ACCESS의 Secret 값을 입력하지 않으면 Repository secrets를 추가할 수 없는데 이 값으로 AWS_ACCESS_KEY에 입력했던 액세스 키를 동일하게 입력해주는 게 맞나요? 아니면 다른 값을 입력해야 하나요?

  • java
  • spring
  • mysql
  • redis
  • 이력서
회색노트북 댓글 2 좋아요 0 조회수 129

eventPublisher.publishEvent 시 @Transactional을 걸어야 하지 않나요?

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

딩코님! 강의 너무 잘 듣고 있습니다~! 강의를 따라가며 디비와 트랜잭션 그리고 락에 관해 심화 내용도 듣고 포폴도 하나하나 잘 채워가고 있습니다! 다름이 아니라 딩코님이 내주신 과제 중에 의문이 있어 질문을 드리게 되었습니다. 1. 현재 학습 진도 4주차 수강 후 락과 트랜잭션 최적화를 수행하고 있습니다. 현재 여러가지 작업(일기 작성, 포인트 적립, AI 댓글 작성 예약, 알림 이벤트 발생)에 대해 facade 계층을 만들어 중요한 작업(일기 작성, 포인트 적립)에 대해서는 트랜잭션을 묶어 우선적으로 처리되게 하고 AI 댓글은 TaskScheduler로 특정 시간 후에 비동기적으로 이루어지게 하며 알림은 spring event로 after commit 후 처리하려 합니다. 2. 어려움을 겪는 부분 현재 이벤트 발행 (트랜잭션 커밋 후 실행됨, after-commit)에 대해 의문이 있습니다. 현재 딩코님이 올려주신 코드에는 @Component @RequiredArgsConstructor @Slf4j public class ImprovedEventJoinWithExternalApiUpdateFacade { private static final String TEST_PHONE_NUMBER = "01012341234"; private final EventExternalUpdateService eventJoinService; private final ExternalEventApi externalEventApi; private final ApplicationEventPublisher eventPublisher; public void joinEvent(Long eventId, Long memberId) { // 1. 기존 서비스로 이벤트 참가 처리 EventWithLockParticipant participant = eventJoinService.joinEventWithTransaction(eventId, memberId); // 2. 외부 API 호출 ExternalEventResponse response = externalEventApi.registerParticipant( eventId, memberId, participant.getEvent().getName() ); if (!response.isSuccess()) { throw new RuntimeException("외부 API 호출 실패: " + response.getErrorMessage()); } // 3. 외부 API 응답으로 참가자 정보 업데이트 eventJoinService.updateExternalId(participant, response.getExternalId()); // 4. 이벤트 발행 (트랜잭션 커밋 후 실행됨) eventPublisher.publishEvent(new EventJoinCompletedEvent( eventId, participant.getEvent().getName(), TEST_PHONE_NUMBER )); } } 이렇게 코드 내에 @Transactional이 걸려있지 않습니다. 그런데 이벤트 리스너에는 @Component @RequiredArgsConstructor @Slf4j public class EventJoinEventListener { private final KakaoTalkMessageApi kakaoTalkMessageApi; @Async @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) public void handleEventJoinCompleted(EventJoinCompletedEvent event) { try { kakaoTalkMessageApi.sendEventJoinMessage( event.getPhoneNumber(), event.getEventName() ); } catch (Exception e) { log.error("알림 발송 실패. eventId={}, eventName={}", event.getEventId(), event.getEventName(), e); } } } 이렇게 transaction이 커밋된 후에 실행되도록 AFTER_COMMIT이 걸려있는데, 이렇게 되면 이벤트 리스너가 제대로 실행이 안되지 않나요? 제대로 이벤트 리스너가 실행이 되려면 joinEvent부터 @Transactional이 걸려있어야 하지 않나요? 3. 시도해보신 내용 따로 간단하게 코드를 작성하여 테스트해보았습니다. @RequiredArgsConstructor @Component public class StudyFacade { private final StudyService studyService; private final ApplicationEventPublisher eventPublisher; // @Transactional : 주석 처리하면 밑에 eventEvent가 실행되지 않음 public void execute() { studyService.saveStudy(); eventPublisher.publishEvent("event published"); } @Async @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) public void executeEvent(String event) { System.out.println("event = " + event); } } @RequiredArgsConstructor @Service public class StudyService { private final StudyRepository studyRepository; @Transactional public void saveStudy() { studyRepository.save(new Study("test")); } } 실제로 execute 메서드의 @Transactional을 주석처리하면 밑의 이벤트 리스너인 executeEvent가 실행이 되지 않더라구요. 이러면 ImprovedEventJoinWithExternalApiUpdateFacade의 joinEvent부터 트랜잭션을 걸어야 하니까 딩코님이 말씀하신 트랜잭션을 최대한 작게 나누는 트랜잭션 최적화가 어렵지 않나요? 항상 강의 잘 듣고 있습니다! 감사합니다!

  • java
  • spring
  • mysql
  • redis
  • 이력서
도등어 댓글 2 좋아요 0 조회수 156

경력직 백엔드 개발자 이직도 포폴 중요할까요

미해결

[실전취업] 구글&아마존 출신이 알려주는 취업/이직에 관한 실전강의 + 취업 전자책(p144)

안녕하세요. 경력직 분들은 회사에서 한 결과물을 회사 내 비즈니스가 안 나오도록 각색해서 올려도 괜찮은 걸까요? 간혹 했던 업무에 대한 아키텍처가 필요하면 그리라는 경우가 있는데, 미리 포트폴리오로 제출하면 안 되는 걸까요?

  • 포트폴리오
  • 면접
  • 이력서
  • 자기소개서
  • 백엔드
Bruce Han 댓글 2 좋아요 0 조회수 1103

main.tf 파일에서 EIP 설정 로직 수정이 필요할거 같습니다.

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

2025년 7월 5일 기준으로 학습 레포에서 가져온 main.tf를 기반으로 apply 명령을 실행하면 아래와 같은 에러가 발생합니다. terraform apply ╷ │ Error: Unsupported argument │ │ on main.tf line 279, in resource "aws_eip" "app": │ 279: vpc = true │ │ An argument named "vpc" is not expected here. 에러 발생 이유는 aws_eip 리소스 블록에서 vpc = true 옵션을 더이상 지원하지 않기 때문에 발생한다고 합니다. 따라서 280라인에 vpc = true 를 제거하면 해결됩니다. https://registry.terraform.io/providers/hashicorp/aws/latest/docs/guides/version-5-upgrade?utm_source=chatgpt.com#resourceaws_eip_association

  • java
  • spring
  • mysql
  • redis
  • 이력서
양성욱 댓글 2 좋아요 0 조회수 141

강의 첨부 자료가 있을까요?

해결됨

서류탈락은 그만! 챗GPT로 기업별 맞춤 합격 이력서 반자동화하기

안녕하세요~ 강사님~ 좋은 강의 제작해주셔서 감사합니다!! 강의에서 설명해주시는 내용, 템플릿 등의 공유해주실 수 있는 자료가 있으실지 궁금합니다!! 감사합니다 ^^

  • 면접
  • 이력서
  • chatgpt
askare 댓글 2 좋아요 0 조회수 269

비관적 락, 원자적 업데이트

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 4강 트랜잭션과 락 트랜잭션과 락 관련 챕터를 수강 중입니다. 쿠폰 동시성 발급 사례를 보여주셨는데, 락이 필요하고, 왜 동시성 문제가 일어나고 어떻게 해결하는지에 대해 이해하고 있습니다. 쿠폰 동시성 발급 사례에서 코드를 보면 단순히 max값을 보고 current값을 증가하는 코드를 이용해 "락이 걸려있지 않아 의도대로 동작하지 않음"을 보여주시는 것 같습니다. 이런 사례 관련해서 많은 사람들이 "낙관적 락", "비관적 락"에 대해 공부하고, "비관적 락으로 해결"로 마무리를 하는 것 같습니다. 근데 저는 비관적 락이 아니라, query를 직접 작성해서 SELECT와 UPDATE를 한번에 사용할 수 있지 않을까 라는 관점에서 "원자적 업데이트"를 사용했습니다. 비관적 락: select + for update -> update 원자적 업데이트: update + where current < n 물론 select와 update를 한 번에 해결하는 상황이 아니라, 로직이 중간에 추가되면 비관적 락을 써야된다는 것을 알고 있습니다. 하지만 다른 사람들의 블로그를 보면 하나의 쿼리로 해결할 수 있는 상황을 비관적 락으로 해결하는 게 맞는건가 라는 의문이 들었습니다. 아무튼 이런 배경에서 질문은 아래와 같습니다. 비관적 락이 아니라 원자적 업데이트 라는 말을 이력서에 쓰면 더 도움이 될까요? 실제는 SQL 쿼리 하나 작성한건데, 비관적 락이 더 있어보이는 느낌인 거 같다...? 비관적 락으로 해결해야 되는 상황을 만들고 싶은데, select와 update 사이에 어떤 로직을 추가해야할까요? 기획을 변경 가능한 상황입니다! 외부 API: 결제말고 다른 거... 문자 알림? 다른 테이블 조회 또는 업데이트: SQL join문 잘 짜면 해결되는 거 아닌가... 위 내용과 관련해서 작성한 블로그 글입니다. https://velog.io/@suhwani/QRworld-동시성-해결-원자적-업데이트 감사합니다!

  • java
  • spring
  • mysql
  • redis
  • 이력서
정수환 댓글 2 좋아요 0 조회수 380

그라파나 대시보드 오타가 있는 거 같아요

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

그대로 복붙 해봤는데 p95가 두개있어서 p50를 측정 안하고 있었슴미다 그래서 json 살펴보니 [0.95] "expr": "max by(http_method, path, query_type) (app_query_per_request{quantile=\ "0.95 \"})", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, "legendFormat" : "P95 - {{http_method}} {{path}} - {{query_type}}", [0.50] "expr": "max by(http_method, path, query_type) (app_query_per_request{quantile=\" 0.95 \"})", "hide": false, "instant": false, "legendFormat": " P50 - {{http_method}} {{path}} - {{query_type}}", 아래 0.50에 0.95의 값을 대입하고 있떠라구요 잘 작성된 건가요 오타인건가요

  • java
  • spring
  • mysql
  • redis
  • 이력서
kongminoo 댓글 2 좋아요 0 조회수 122

이력서 작성 시 궁금한 점

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 3챕터 인덱스 파트 수강 중 질문 1. "기존 API 응답 시간에서 **를 개선하여 **ms까지 빨라졌다." 이런 식으로 문구를 작성하라고 하셨는데, 기존 API 시간이 너무 크면 어떻게 해야할까요? API 성능 측정을 하려면 데이터를 넣어야하니까 각 테이블마다 백만 건을 넣어놓고 테스트를 했는데, 개선 전 응답 시간이 너무 오래 걸려서 그걸 그대로 써도 될지 모르겠어요. 강의 중 index파트에서 통계 테이블을 만들어서 @scheduled로 개선하는 부분을 제 프로젝트에 적용했는데, 데이터를 넣을 때 다른 API 성능을 측정하면서 각 테이블 당 백만개, 1:N관계일 때는 1개당 10개씩으로 해서 총 천만개 넣어놓은 상태입니다. 데이터가 너무 많아서 통계 테이블 만들기 전인 상태에서 COUNT 쿼리를 할 때 JOIN하는 테이블은 3개로 각 백만개, 이백만개, 천만개 데이터가 들어가있어서 약 20-30초 가량 쿼리가 실행이 됩니다. 근데 이력서에 "23초 걸리는 통계 데이터 조회 API를 통계 테이블을 만들고 @scheduled를 활용해 5분마다 갱신하고, 갱신된 데이터를 가져오도록 개선하여 **ms로 개선되었다." 라는 문구를 쓰려니까 23초라는 수치가 "인위적으로 드라마틱한 개선을 위하여 만들어낸 수치 아닌가?" 라는 의문이 들 수 있을 것 같아서 어떻게 하면 좋을까요? 물론!! 23초가 나온 근거라고 해야할지... 그 퍼포먼스 테스트 결과는 있고, 일부러 조작하지 않고 데이터가 많아서 그렇다! 라고 설명은 할 수 있겠지만, 이력서에 들어가는 수치를 보면 위에서 얘기한 것 같은 의심이 먼저 들 것 같아서 질문 드립니다. ㅠㅠㅠㅠ

  • java
  • spring
  • mysql
  • redis
  • 이력서
정수환 댓글 2 좋아요 0 조회수 180

인기 태그

인프런 TOP Writers

주간 인기글