안녕하세요 강의 잘 듣고있습니다! 그라파나 대시보드 관련해서 싱크가 안맞는? 문제가 있어서 질문드립니다! 제가 테스트로 nginx 파드를 scale을 통해 2개로 늘렸다가 다시 1개로 변경했는데 여전히 2개의 파드가 그라파나에서 출력됩니다. 대시보드를 지우고 다시 만들어도 동일하게 2개의 파드가 나오는데 어떻게 해결할 수 있을까요? (프로메테우스나 EKS 환경에서 확인해보면 정확히 1개 의 파드만 있는 상황)
안녕하세요! 프로메테우스의 아키텍쳐의 문제는 클러스터링(여러 노드에 분산)이 되지 않아 단일 노드에서 모든 메트릭이 처리되므로 대규모 환경에서 성능 저하 가 발생할 수 있는것으로 알고있습니다. - AMP & AMG 수업 당시 내용입니다 😀 하지만 실제로 헬름으로 배포해보니 각 노드로 쪼개져서 배포가 되더라구요..??왜 이런건지 궁금합니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요. 태현님, 좋은 강의 감사합니다. 오늘 BookService 코드를 같이 타이핑하던 도중 의문이 생겼습니다. 뭔가 점점 BookService에서 의존을 주입받는 레포지토리가 점점 늘어나고 있음이 그 원인이었는데요. 보통 커머스 서비스의 앱에서 주문 상세 버튼을 누르면 다음과 같은 정보들이 나오는데요. 가게 정보 메뉴 정보, 주문 자체의 정보(주문 일시, 주문번호) 메뉴와 옵션 선택 정보 쿠폰 적용 주문자의 개인정보(주소 및 연락처) 등등.. 물론 내부적으론 어떻게 해결이 되어있겠지만 벌써 주문 상세를 보여주는 기능을 처리하기 위한 서비스에서 엄~청 많은 레포지토리를 가져와야할 것 같은? 느낌이 듭니다. 이런 경우엔 의존 주입을 받는 객체의 갯수의 상한선을 따로 두고 개발하실까요? 아니면 이런 문제를 해결하는 방법론 같은 것이 이미 있나요? 혹은 제 생각엔 짤막하게 배운 디비 지식으로 주문과 같은 것은 반정규화로 테이블을 합쳐서 그 테이블과 대응되는 하나의 레포지토리로만 가져오나요? 감사합니다.
안녕하세요, 아래 강의를 듣다가 궁금한 점이 있어 글을 남깁니다. [실습] Bastion host와 NAT Gateway를 통한 Private EC2 인스턴스의 외부 통신 구성 위 내용에서 private subnet 에 private instance들을 생성할 때 방화벽(보안 그룹)을 새로 생성하여 ssh, https, http 를 모두 0.0.0.0/0으로 열어주셨는데요. (그리고 위 보안그룹 명을 private-ec2-sg로 정의) CIDR 블록 값인 0.0.0.0/0 으로 설정하지 않고 public instance 생성 당시에 같이 신규로 생성하였던 보안그룹 명인 public-ec2-sg로 지정해도 현재 실습의 내용과 동일한 내용이 맞을까요? private subnet 안에서 생성한 인스턴스는 public subnet에서 온 트래픽만을 허용하고(bastion host) 그 외의 접속은 불가능하게 하도록 보안그룹 설정을 할 때, 소스 부분을 public instance에 연결한 보안 그룹 으로 연결한다는 내용을 보았는데, 실습에서는 private용으로 신규로 생성하기에.. 둘이 결과적으로는 같은 내용인지 아닌지 궁금하여 질문드립니다 !
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
14강 유저 업데이트 부분에서 PATCH가 아닌 PUT을 사용하는 이유가 궁금합니다!! 제가 알기로는 PATCH는 일부 수정이 가능하고, PUT은 완전 덮어쓰기라고 알고 있는데, PATCH가 아닌 PUT을 사용하는 이유가 무엇인가요?? 만약 PATCH 사용이 불가능한게 아니라 가능할 경우 코드가 어떻게 되는지도 궁금합니다! 항상 감사합니다!!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 빌드하면 잘 되긴 하는데 마지막에 저렇게 에러가 떠요.어떤게 문제인가요??
전에도 남겼었는데 이번에 실습을 하면서 AuthorizationCode Grant 를 누르면 인증을 받기 위한 로그인을 하고 나면 403 에러가 발생합니다. 그래서 Clientcontroller 에서 만든 로직에다가 breakpoint 를 찍으면서 확인해보면 결과 정보들은 강사님과 똑같이 들어있었습니다. 근데 return "/client" 부분만 가면 403 에러가 나와서 화면이 나오질 않는데 어느 부분을 먼저 봐야할까요..? 계속 수정해봐도 계속 403 에러가 발생해서 다시 질문드립니다!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 우선 개발 버전은 JDK 17입니다. 강의에서 강사님이 h2를 이용하며 OracleDialect로 변경 후 정상적으로 동작이 되었는데 현재 저의 셋팅에서는 정상적으로 작동이 되지 않더라구요 H2 홈페이지를 검색 해본결과 Mode를 Oracle을 추가하면된다고 나와있었고 MODE를 Oracle로 변경하여도 오류가 발생하였습니다.. 오류내용은 https://www.inflearn.com/questions/1171985/dialect-%EC%84%A4%EC%A0%95-%EC%98%A4%EB%A5%98-%EC%A7%88%EB%AC%B8%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4 이분과 같습니다.. David님이 달아주신 답변에는 ojdbc를 의존성 추가를 하는것으로 되어있는데 시도해보았지만 해결되지 않았습니다.. 물론 이게 강의에 중점은 아니지만 스스로 해결해보려 해도 답이 안나와서 질문드립니다... 다른 추가적인 설정이 필요한걸까요??ㅜㅜ Exception in thread "main" jakarta.persistence.PersistenceException: [PersistenceUnit: hello] Unable to build Hibernate SessionFactory at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1591) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1512) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:55) at jakarta.persistence.Persistence.createEntityManagerFactory(Persistence.java:80) at jakarta.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) at jpql.JpaMain.main(JpaMain.java:14) Caused by: org.hibernate.MappingException: Could not instantiate id generator [entity-name=jpql.Product] at org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory.createIdentifierGenerator(StandardIdentifierGeneratorFactory.java:230) at org.hibernate.id.factory.internal.IdentifierGeneratorUtil.createLegacyIdentifierGenerator(IdentifierGeneratorUtil.java:127) at org.hibernate.mapping.SimpleValue.createGenerator(SimpleValue.java:415) at org.hibernate.internal.SessionFactoryImpl.lambda$createGenerators$1(SessionFactoryImpl.java:457) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1779) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) at org.hibernate.internal.SessionFactoryImpl.createGenerators(SessionFactoryImpl.java:456) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:271) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:450) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1507) ... 4 more Caused by: org.hibernate.HibernateException: Could not fetch the SequenceInformation from the database at org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl.sequenceInformationList(ExtractedDatabaseMetaDataImpl.java:307) at org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl.getSequenceInformationList(ExtractedDatabaseMetaDataImpl.java:151) at org.hibernate.id.enhanced.SequenceStyleGenerator.getSequenceIncrementValue(SequenceStyleGenerator.java:581) at org.hibernate.id.enhanced.SequenceStyleGenerator.adjustIncrementSize(SequenceStyleGenerator.java:259) at org.hibernate.id.enhanced.SequenceStyleGenerator.configure(SequenceStyleGenerator.java:207) at org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory.createIdentifierGenerator(StandardIdentifierGeneratorFactory.java:224) ... 20 more Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ALL_SEQUENCES" not found; SQL statement: select * from all_sequences [42102-224] at org.h2.message.DbException.getJdbcSQLException(DbException.java:514) at org.h2.message.DbException.getJdbcSQLException(DbException.java:489) at org.h2.message.DbException.get(DbException.java:223) at org.h2.message.DbException.get(DbException.java:199) at org.h2.command.Parser.getTableOrViewNotFoundDbException(Parser.java:8064) at org.h2.command.Parser.getTableOrViewNotFoundDbException(Parser.java:8035) at org.h2.command.Parser.readTableOrView(Parser.java:8024) at org.h2.command.Parser.readTablePrimary(Parser.java:1788) at org.h2.command.Parser.readTableReference(Parser.java:2268) at org.h2.command.Parser.parseSelectFromPart(Parser.java:2718) at org.h2.command.Parser.parseSelect(Parser.java:2824) at org.h2.command.Parser.parseQueryPrimary(Parser.java:2708) at org.h2.command.Parser.parseQueryTerm(Parser.java:2564) at org.h2.command.Parser.parseQueryExpressionBody(Parser.java:2543) at org.h2.command.Parser.parseQueryExpressionBodyAndEndOfQuery(Parser.java:2536) at org.h2.command.Parser.parseQueryExpression(Parser.java:2529) at org.h2.command.Parser.parseQuery(Parser.java:2498) at org.h2.command.Parser.parsePrepared(Parser.java:627) at org.h2.command.Parser.parse(Parser.java:592) at org.h2.command.Parser.parse(Parser.java:564) at org.h2.command.Parser.prepareCommand(Parser.java:483) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:639) at org.h2.server.TcpServerThread.process(TcpServerThread.java:289) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:833) at org.h2.message.DbException.getJdbcSQLException(DbException.java:514) at org.h2.engine.SessionRemote.readException(SessionRemote.java:650) at org.h2.engine.SessionRemote.done(SessionRemote.java:619) at org.h2.command.CommandRemote.prepare(CommandRemote.java:78) at org.h2.command.CommandRemote.<init>(CommandRemote.java:50) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:487) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1166) at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:93) at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:316) at org.hibernate.tool.schema.extract.spi.ExtractionContext.getQueryResults(ExtractionContext.java:43) at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.extractMetadata(SequenceInformationExtractorLegacyImpl.java:39) at org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl.sequenceInformationList(ExtractedDatabaseMetaDataImpl.java:291) ... 25 more
안녕하세요! 멋진 강의 잘 듣고있습니다! 문득 강의를 보다 든 생각인데, 파드가 다른 노드에 재 생성되었을 때 다시 해당 hostPath로 생성된 볼륨을 사용하기 위해 hostpath간에 마운트하는 것이 일반적인 상황인지 궁금합니다. 제 생각으로 노드의 생명주기에 종속적으로 만들어진 hostPath가 A노드의 hostPath 볼륨을 B노드가 마운트해서 사용하는 것이 일반적이지 않다는 생각이 들었습니다. 말 그대로 hostPath인데 이렇게 되면 결국 그냥 노드하나 볼륨으로 희생시키고, 각 host의 스토리지간에는 독립적이지 못한 상황인 것 같이 보였습니다. 차라리 nodeAffinty를 써서 해당 노드에 다시 배포되도록 하는 게 맞지 않을까 생각이 들기도 하고요,, 생 초보라 이런 상황을 안 겪어봐서 어떤 경우에 hostPath간 마운트하는 지 잘 이해가 안가서 질문드립니다!
위 명령어를 실행했을때 아래와같은 오류가 나타납니다.. 어떻게 해결해야할까요. 시작부터 막히네요.. SST v2.40.3 ready! ➜ App: raymong-lecture-follow Stage: dev Console: https://console.sst.dev/local/raymong-lecture-follow/dev Error : Invalid character in header content ["authorization"] Trace: TypeError: Invalid character in header content ["authorization"] at __node_internal_captureLargerStackTrace (node:internal/errors:490:5) at new NodeError (node:internal/errors:399:5) at __node_internal_ (node:_http_outgoing:643:11) at ClientRequest.setHeader (node:_http_outgoing:666:3) at new ClientRequest (node:_http_client:292:14) at request (node:https:360:10) at C:\Users\user\Documents\GitHub\raymong-lecture-follow\node_modules\@smithy\node-http-handler\dist-cjs\index.js:233:19 at new Promise (<anonymous>) at _NodeHttpHandler.handle (C:\Users\user\Documents\GitHub\raymong-lecture-follow\node_modules\@smithy\node-http-handler\dist-cjs\index.js:189:12) at async C:\Users\user\Documents\GitHub\raymong-lecture-follow\node_modules\@smithy\middleware-serde\dist-cjs\index.js:33:24 at async C:\Users\user\Documents\GitHub\raymong-lecture-follow\node_modules\@smithy\core\dist-cjs\index.js:165:18 at async StandardRetryStrategy.retry (C:\Users\user\Documents\GitHub\raymong-lecture-follow\node_modules\@aws-sdk\middleware-retry\node_modules\@smithy\middleware-retry\dist-cjs\StandardRetryStrategy.js:51:46) at async C:\Users\user\Documents\GitHub\raymong-lecture-follow\node_modules\@aws-sdk\middleware-logger\dist-cjs\index.js:33:22 at async file:///C:/Users/user/Documents/GitHub/raymong-lecture-follow/node_modules/sst/iot.js:7:22 at async file:///C:/Users/user/Documents/GitHub/raymong-lecture-follow/node_modules/sst/iot.js:24:22 at async file:///C:/Users/user/Documents/GitHub/raymong-lecture-follow/node_modules/sst/cli/commands/dev.js:304:25 at async Promise.all (index 2) at async Object.handler ( file:///C:/Users/user/Documents/GitHub/raymong-lecture-follow/node_modules/sst/cli/commands/dev.js:327:9 ) at process.<anonymous> ( file:///C:/Users/user/Documents/GitHub/raymong-lecture-follow/node_modules/sst/cli/sst.js:58:21 ) at process.emit (node:events:525:35) at process.emit (node:domain:489:12) at process._fatalException (node:internal/process/execution:149:25) at processPromiseRejections (node:internal/process/promises:288:13) at process.processTicksAndRejections (node:internal/process/task_queues:96:32) Need help with this error? Post it in #help on the SST Discord https://sst.dev/discord
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
제가 람다식, 익명클래스, 제네릭에 대한 개념이 확실하게 안 잡혀서 코드이해가 너무 안 되길래 개념부터 다시 찾아보고 공부하고 있는데요 ㅠㅠㅠ 이렇게 공부하는 게 조금 과할 수 있지만 완벽하게 이해를 하고 넘어가고 싶습니다. 제가 궁금한 점은 query함수를 실행하면 sql이 적용된 결과데이터베이스 전체가 mapRow함수의 파라미터 rs로 들어가게 되는 것 같은데 데이터베이스의 자료형이 ResultSet인가요? rowNum 변수의 필요성입니다. mapRow메서드를 오버라이딩을 해줄 때 rowNum사용을 전혀 안 하고 있는 것 같은데, 어떤 값이 rowNum으로 들어가고 어떻게 작동하는 건가요? mapRow메서드의 반환값은 UserResponse객체 형태인데 결과적인 getUsers메서드의 반환값이 어떻게 List<UserResponse> 형태로 변환될 수 있나요? query함수의 역할인가요? 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 9. 메소드, 문제와 풀이2 코드에서 저는 if문으로 풀었지만, 강사님께서는 switch문으로 푸셨더라구요. 궁금한점은 switch문에 case4: 부분은 왜, return이 들어가나요? break나 continue는 안되는 이유는 알겠지만, return은.. 반환값도 없는데... 잘 모르겠습니다.