안녕하세요 선생님. 미션 주신거 이행하면서 궁금해서 질문드려요. 다른강의에서 가용성(Availability), 시스템 이중 에 대해서 설명해주셨는데.. MSA에서 가용성? 시스템 이중을 적용하면.. 일반 사용자가 서버 끊김을 못느끼게해야하는데.. 기존의 도커나 쿠버네티스를 2중으로 설정해줘야하는게 맞는지 궁금합니다. 예를들어서 강의에서 섷명해주신 게이트웨이,사용자서비스,게시판서비스,포인트 서비스가 있다고 할경우.. 게이트웨이 2개 사용자서비스2개 게시판 서비스2개 포인트 서비스 2개로 해야하는것일까요?
안녕하세요. 강의 수강 중 궁금한게 있어서 질문 남깁니다. 강의는 VM 에 Ubuntu 와 kafka 를 설치하는 것으로 진행되는데, Docker 를 사용하는 것과 VM 을 사용하는 것에 차이가 있나요? VM 이 아니라 Docker 로 Kafka 를 띄우거나, Ubuntu 를 띄우고 Kafka 를 설치해도 동일하지 않나 생각이 들더라고요.
@Query( value ="select count(t.article_id) from ( " + " select article_id from article where board_id = :boardId " + "limit :limit " + ") t", nativeQuery = true ) Long count(@Param("boardId") Long boardId, @Param("limit") Long limit); 위와 같이 count(*) 가 아니라 count(t.article_id) 처럼 alias도 붙여야 하고, 모든 걸 뽑는 게 아니라 딱 서브쿼리 안에서 추출한 article_id만 count로 뽑아줘야 테스트가 통과되더라고요. 이유가 있을까요...?
안녕하세요 선생님 클러스터 설정 시 오류가 발생하여 질문 드립니다. ㅜㅜ 다른 질문 글들을 참고하여 Cluster 1 삭제 후 재설치도 해보았고, putty로 접속하여 rm -rf /dfs/nn 명령어로 디렉토리 삭제 후 cluster 재설치도 해보았는데 계속 오류가 발생합니다. 원인과 해결 방법이 있을지 문의 드립니다.. * stderr로그 일부 Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory /tmp. Name node is in safe mode. The reported blocks 0 has reached the threshold 0.9990 of total blocks 0. The number of live datanodes 0 needs an additional 1 live datanodes to reach the minimum number 1. Safe mode will be turned off automatically once the thresholds have been reached. NamenodeHostName:server01.hadoop.com at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.newSafemodeException(FSNamesystem.java:1448) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkNameNodeSafeMode(FSNamesystem.java:1435) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:3100) at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:1123) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:696) at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:523) at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:991) at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:869) at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:815) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875) at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2675) at org.apache.hadoop.ipc.Client.getRpcResponse(Client.java:1499) at org.apache.hadoop.ipc.Client.call(Client.java:1445) at org.apache.hadoop.ipc.Client.call(Client.java:1355) at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:228) at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:116) at com.sun.proxy.$Proxy9.mkdirs(Unknown Source) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.mkdirs(ClientNamenodeProtocolTranslatorPB.java:640) at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:422) at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeMethod(RetryInvocationHandler.java:165) at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invoke(RetryInvocationHandler.java:157) at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeOnce(RetryInvocationHandler.java:95) at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:359) at com.sun.proxy.$Proxy10.mkdirs(Unknown Source) at org.apache.hadoop.hdfs.DFSClient.primitiveMkdir(DFSClient.java:2339) ... 18 more
저도 13분쯤에 create 테스트를 하다가 안 되어서 삽질했는데, 드디어 됐습니다. 원인은 createdAt, updatedAt에 값을 설정하지 않고 넣으려다 보니, null로 들어가서 에러가 발생했던 것이었습니다. 그리고 mysql에 접속했을 때는 use article; 로 DB에 접근해야 합니다. 저는 use database; 로 접근하고 있었네요. 이 과정에서 GPT의 도움을 많이 받았습니다. 13분쯤 진행다가 나오던 그 500 에러 로그는 애플리케이션을 확인해 봐야 하고요. 테스트 코드의 create 메서드에는 IDE의 설명도 같이 참고했습니다. 왜 오류가 떴는지 알려주더군요.
음 강의 내용은 Oracle OpenJDK 17 버전을 사용하셨는데 특별한 이유가 있으신건지 아니면 다른 회사의 동일한 버전 SDK를 사용해도 되는건지 예를 들면 Azul zulu 에서 나온 sdk 라던가.. 자바 계열 언어를 다룰 때 어떤 회사(?)의 sdk를 선택해야하는건지 항상 막막하네요.. 혹시 이런 부분에 대해 공부하셨던게 있으실지 궁금합니다. 아니면 선택할 때 어떤 부분들을 고려해서 하는지?
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님! 강의 정말 잘 수강하고 있습니다. 선생님 덕분에 기본기가 탄탄해지는 것 같아서 감사드립니다. 27강(댓글 무한 depth - CUD API 구현 & 테스트 데이터 삽입 Comment Response 관련 질문) - 24분 가량에서 Comment V2 생성을 위한 정적 팩토리 메소드의 경우 CommentResponse 책임으로 넣으셨는데, 굳이 책임을 CommentResponseV2로 넣을 정도로 큰 부분이 아니기에 하나로 넣으신건지, 아니면 프로젝트 규모적으로 보았을때 굳이 V2 Response를 생성할 정도의 규모가 아니기에 따로 만드시지 않고 하나의 Response 객체로 사용하신 것인지 궁금합니다. 나중에 프로젝트 아키텍칭을 할 때 해당 내용을 기억하기위해 질문드리고자 합니다. 감사합니다.
안녕하세요! 자주 질문드리는데 정성껏 답변해주셔서 감사합니다! 동일한 이벤트가 중복 전송될 가능성이 있기 때문에 article-read 서비스에 이벤트 id를 통한 중복 처리 로직을 추가 하려고합니다. article-read 는 redis를 사용하고 있기 때문에 redis에 이벤트 id를 저장해 해결하려고했습니다. 예를 들어 article-read가 이벤트를 받았을때 redis 에서 이벤트 id 확인 동일한 이벤트 id가 저장돼 있으면 추가 처리 안하고 message ack redis 에서 이벤트 id 확인 동일한 이벤트 저장된게 없으면 서비스 로직 수행 서비스 로직 결과 redis 업데이트 처리 완료한 이벤트 id redis 저장 이런식으로 진행하려 했으나 만약 어떠한 문제로 인해 서비스 로직 결과 redis 업데이트 ( 성공 ) 처리 완료한 이벤트 id redis 저장 ( 실패 ) 하게되면 이벤트 처리는 성공했지만 처리된 이벤트 저장에는 실패해 추후에 중복 처리가 발생할 가능성이 생길 것 같습니다. 이러한 문제 해결을 위해 서비스 로직 결과 redis 업데이트 처리 완료한 이벤트 id redis 저장 두 작업을 하나의 트랜잭션으로 묶어 처리하려고했지만 rdb 와 동작이 다르기 때문에 (롤백 기능 제공 안함 등) 적절한 방법인지 판단이 안서는 상태네요 혹시 article-read에 이벤트 중복 처리를 한다고 하면 어떻게 구현이 가능할지 여쭤보고싶습니다
MSA강의보다 질문드립니다. 제가 쇼핑몰을 만든다고하면. 회원관리 서비스,상품서비스,포인트 서비스,결제서비스,게시판 서비스를 만들었을경우.. 환경설정..이나 유틸 서비스나.. Mybatis연결한다고 가정할경우,, 각 서비스 마다 작성해야하는지.. 별도의 서비스를 만들어 제어를 해야하는지 궁금합니다.