inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

한조각님의 게시글

한조각 한조각

@apiece

수강생
1,042
수강평
40
강의 평점
4.9

게시글 43

질문&답변

Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면

안녕하세요 Wyatt님! 정리 공유 감사합니다 👍👍 다만 원인만 조금 다시 생각해보자면, 우선 이 강의 설정에서는 인증정보가 필요 없습니다. base image는 public이고, jibDockerBuild는 push를 안 하니까요. 즉 키체인에서 못 가져와서 실패하는 게 아닙니다. 원인은 helper 바이너리가 Gradle 데몬의 PATH에 없는 것일 수 있습니다. Jib은 config.json에 credsStore가 있으면 public 이미지라도 일단 helper를 실행해서 물어봅니다. 이때 helper 실행 자체를 못 하면 예외가 나면서 빌드가 중단되는데요. 그래서 먼저 아래 명령을 진행해보세요. ./gradlew --stop ./gradlew jibDockerBuild IntelliJ에서 먼저 빌드하면 데몬이 IDE의 PATH를 캐시해두고 계속 재사용합니다. 이걸로 풀리면 build.gradle.kts는 안 건드리셔도 됩니다. 그래도 안 되면 조사해주신 방법 1을 쓰시면 좋을 것 같아요. 참고로 helper 바이너리는 Docker Desktop 설치 시 함께 깔리구요. 최근 Docker Desktop은 credsStore가 osxkeychain 이 아니라 desktop 라서 확인해보시고 맞춰 지정해주시면 좋습니다! 좋은 공유 감사드립니다!

좋아요수
1
댓글수
1
조회수
26

질문&답변

스크립트에 대해 질문 있습니다.

안녕하세요. 인호님! 좋은질문 감사합니다. 테스트 코드로도 가능합니다. 스크립트로 할 수 있는 건 보통 코드로도 할 수 있어요. 강의에서 처음 스크립트를 도입한 이유는, k6 같은 툴을 통해 부하테스트를 편하게 사용하기 위함이었어요. k6용 js 파일이 필요하니, 자연스럽게 스크립트 폴더를 만들었고 테스트에 필요한 준비도 스크립트로 같이 준비했습니다. 실무에서는 단위 및 통합 검증은 테스트 코드로 작성하고, 대량 요청이나 동시성 검증은 k6 같은 부하 테스트 도구를 활용합니다. (물론 팀마다 다르고 주관적일 수 있습니다) 강의에서는 부하테스트와 더불어 장애 발생과 데이터 정합성 확인까지 한 묶음으로 만들기 위해 별도 스크립트가 적합하다고 판단해서 사용했다고 생각하시면 됩니다. 감사합니다.

좋아요수
1
댓글수
1
조회수
15

질문&답변

같은 사용자가 연속된 중복 호출할 경우 어떻게 되는지 궁금합니다!

안녕하세요! 케시님, 결론부터 말하면 그 시점 코드에서는 Redis 재고가 2장 줄어들게됩니다. (1장만 줄어야 하는데) 다만, 현재 강의 시점(섹션3, 브랜치는 part-2)에서는 그렇습니다. 바로 다음 강의 (섹션4, 27강, 요청이 몰리면 API가 느려지는 진짜 이유)에서 수정하실 때, 이 부분이 해결됩니다. (part-2 Redis Lua) 1. 남은 재고를 읽는다 2. 0이면 매진으로 반환한다 3. 재고를 1 깎는다 (part-3의 Redis Lua) 1. 이 사용자가 발급받은 사용자 목록(Set)에 이미 있는지 본다. 있으면 여기서 바로 중복으로 리턴 2. 남은 재고를 읽는다 3. 0이면 매진으로 반환한다 4. 재고를 1 깎는다 5. 이 사용자를 발급받은 사용자 목록에 넣는다 part-3 에서는 Redis 원자연산에서 스크립트 하나가 통째로 실행되고, 그 사이 다른 요청이 끼어들 수 없습니다. 그래서 두 번째 요청은 1번에서 걸러져 재고 차감을 아예 타지 않습니다. 엣지케이스를 잘 생각해서 말씀해주셨네요! 좋은 질문감사합니다.

좋아요수
1
댓글수
1
조회수
13

질문&답변

aws 관련 질문드립니다.

안녕하세요! 지성조님. 프리티어 EC2라면 메모리가 적어서 이런 현상이 발생하는 경우가 있습니다. 스왑 메모리를 추가한 뒤 조금 나아졌다면 메모리 부족이 원인이었을 가능성이 높습니다. 스왑 메모리로 부족한 메모리를 보충해 지금처럼 진행해보시고, 그래도 계속 같은 증상이 있다면 free -h 와 top 으로 메모리 및 CPU 사용량을 한 번 확인해 보시고, 저희 애플리케이션과 관련없는 프로세스는 제거해주시면 도움이 됩니다. 감사합니다.

좋아요수
1
댓글수
3
조회수
61

질문&답변

twitterdb 연결이 안돼요

안녕하세요 weogle님! docker 에서 MySQL 이 실행중인지 확인부탁드립니다. 아래 명령어로 확인할 수 있어요. docker ps MySQL (mysql-twitter) 컨테이너가 떠있어야 하고, 3306 포트가 열려있어야 합니다. 잘 떠있다면 그 후 spring boot 애플리케이션을 실행하면 잘 실행이 될 겁니다. docker run --name mysql-twitter \ -e MYSQL_ROOT_PASSWORD=root123 \ -e MYSQL_DATABASE=twitterdb \ -e MYSQL_USER=dev \ -e MYSQL_PASSWORD=dev123 \ -p 3306:3306 \ -d mysql:9.3 위 명령어로 도커 컨테이너를 실행할 수 있습니다. 감사합니다.☺️

좋아요수
1
댓글수
2
조회수
51

질문&답변

JPA Repository 질문이 있습니다!

안녕하세요 Aurora 님 JpaPostRepository 에 findAllPaged 메소드만 재정의한 이유는, PostRepository 에 있는 save, findAll, findById, deleteById 는 JpaRepository 의 기본 구현체가 이 메소드를 지원하는 반면, findAllPaged 는 그렇지 않기 때문에 재정의했습니다. 즉, PostRepository 라는 인터페이스를 그대로 사용하고 싶은데, JpaRepository 의 기능 추가하여 사용하고 싶어서 JpaPostRepository 라는 중간 인터페이스를 사용한 형태입니다. PostRepositoryImpl 같은 구현체를 직접 만들어서 사용하셔도 됩니다. 다만 강의의도는 위에서 말씀드린 것처럼 Spring Data Jpa 가 지원하는 JpaRepository 인터페이스를 사용하기 위함이 크다고 생각해주시면 됩니다. 감사합니다.

좋아요수
1
댓글수
2
조회수
82

질문&답변

페이지네이션 처리를 쿼리에서 하는 방식 질문

안녕하세요 Aurora 님. 섹션2의 ' Query String 과 함께 Pagination 해보기' 부분에서는 메모리에 posts 를 저장해놓고, 페이지네이션 조회를 하고 있습니다. 네 말씀하신 부분처럼 DB 에서 데이터를 가져온다면 페이징 쿼리를 주로 사용합니다. 섹션6에서 다루고 있으니 확인해보시면 좋을 것 같습니다 감사합니다!

좋아요수
1
댓글수
1
조회수
66

질문&답변

EC2 실습 중 docker-compose / docker ps 실행 시 권한 오류 문의

안녕하세요! khs1003k 님. 해당 오류는 말씀하신대로 ec2-user 계정이 Docker 권한이 없어서 발생합니다. Docker는 root 또는 docker 그룹 사용자만 접근할 수 있습니다. 해결 방법은 직접 sudo 사용해서 명령하시거나 (질문자님 하신것처럼) 또는 ec2-user 계정을 docker 그룹 사용자로 만드시면 됩니다. # 현재 사용자(ec2-user)를 docker 그룹에 추가 (sudo 없이 가능하게) sudo usermod -aG docker ec2-user # 반영을 위해 로그아웃 후 다시 로그인 하거나 아래명령어 실행 newgrp docker 제 환경은 docker 그룹 설정이 되어 있었던 경우이고, 현재처럼 sudo를 계속 사용하는 것도 가능하지만 그룹에 추가해서 사용하는 것이 편리할 수 있습니다. AWS EC2 서버에 애플리케이션 배포하기 - 00:46 이 부분에 있는 강의자료 내용 한번 확인보시면 좋을것같습니다 감사합니다.

좋아요수
2
댓글수
1
조회수
124

질문&답변

gradlew, java -jar 로 애플리케이션 실행시키기에서

안녕하세요 khs1003k 님! 인메모리로 해서 외부 의존성없이 가볍게 java 애플리케이션을 실행하고자 했던 의도였습니다. 이전 챕터 강의에서 mysql 을 미리 잘 설정해놓으셨다면, mysql 을 연결하여서 java 애플리케이션을 실행하셔도 됩니다. 질문 감사합니다! 좋은하루 보내세요.

좋아요수
1
댓글수
1
조회수
76

질문&답변

application.yaml에서 enabled: true 인식 안됨

안녕하세요! 질문자님 그리고, 배상진님 감사합니다. 저도 Spring Boot 4.0.0 에서 동일한 현상을 경험했습니다. spring.h2.console.enabled에 노란 밑줄이 뜨고 인식되지 않는 이유는, Spring Boot 4.0부터 자동 설정(auto-configuration)이 모듈별로 분리되면서 H2 Console 관련 설정이 별도 모듈로 빠졌기 때문입니다. 스프링부트 기존(3.x)에는 runtimeOnly("com.h2database:h2") 의존성만 추가하면 H2 Console이 자동 설정되었지만, 4.0부터는 implementation("org.springframework.boot:spring-boot-h2console") 모듈을 명시적으로 추가해야 합니다. build.gradle.kts implementation("org.springframework.boot:spring-boot-h2console") 이 의존성을 추가하면 spring.h2.console.enabled 속성이 정상 인식되고, /h2-console 경로로 접속할 수 있습니다. runtimeOnly("com.h2database:h2") 는 위 의존성안에 있기 때문에 별도 추가하지 않으셔도 됩니다. 공식 문서 참고: https://docs.spring.io/spring-boot/reference/data/sql.html#data.sql.h2-web-console 질문자분 그리고, 관심을 가지고 추가 답변해주신분 모두 감사드립니다!

좋아요수
3
댓글수
4
조회수
182