묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 부트 - 핵심 원리와 활용
Tomcat EE
[TOMCAT EE는 뭔가요?]질문 내용 그대로 입니다!
-
미해결스프링 부트 - 핵심 원리와 활용
편리한 부트 클래스 만들기 챕터에 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MySpringBootMain 클래스의 main 메서드에서 MySpringApplication.run()을 호출하면서 인자로 MySpringBootMain을 넘깁니다. 이 자리는 configClass인데, MySpringBootMain에는 @MySpringBootApplication 어노테이션만 붙어있고, Bean이나 기타 설정에 대한 내용은 전혀 없습니다. 또한 @Configuration 어노테이션도 없습니다. 그렇다면 @MySpringBootApplication을 통해서 Configuration 클래스의 역할을 하는 것 같은데 이 부분이 잘 이해가 되지 않습니다. 아마도 @ComponentScan 어노테이션이 MySpringBootMain가 configClass의 역할을 하도록 해주는 것 같은데 어떤 원리인지 잘 모르겠습니다. EmbedTomcatSpringMain를 사용할 때는 HelloConfig.class를 넘기는데, 이때는 @Configuration이 붙어있으니까 이해가 됩니다. @ComponentScan이 붙어있으면 해당 클래스의 패키지의 모든 컴포넌트를 읽는다고 하는데, 여기에 뭔가 생략된 설명이 있는 것 같은데 잘 모르겠습니다. 질문이 중언부언해서 죄송합니다!
-
해결됨실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
선수작업으로 프로메테우스 강의를 들어야할까요?
안녕하세요 강사님,그라파나 대시보드를 elb, ecs의 cpu, memory, reqeust count, healthy/unhealthy count 등의 데이터를 그래프로 간단하게 등록해서 사용했었는데요그라파나를 학습해서 조금 더 체계적인 모니터링을 하고싶어서 수강하려고합니다. 그런데 프로메테우스는 사용하질 않는데, 혹시 선수작업으로 프로메테우스를 듣고 그라파나 강의를 들어야하는 연계 과정일까요? 그냥 실습의 예가 프로메테우스&EKS 로 그라파나 구성하는거고 프로메테우스를 잘 모르더라도, 그라파나에 패널을 알고 이해하고 제가 필요한 데이터로 대시보드를 생성하면 될까요?초반부 강의 듣다 궁금하여 문의드립니다..!
-
미해결스프링 부트 - 핵심 원리와 활용
스프링 레거시에서 프로메테우스를 통한 메트릭 수집
강사님 안녕하세요. 만약 스프링부트가 아닌 스프링 레거시 프로젝트와 같은경우cpu 사용량확인 및 메모리 확인 엔드포인트, 메트릭api 를 직접 구현해서 프로메테우스에서 수집하도록 해야할까요? 스프링 레거시프로젝트에서는 Actuator 라이브러리를 못쓰는걸로 알거든요
-
미해결실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
histogram panel 설정시
강의에서 나온 PromQL을 똑같이 작성하고 time-series 타입에서 run query를 하면 결과가 잘 표시되지만 histogram 타입에서 run query를 실행하면 아무 결과가 뜨지 않는데 무엇이 문제일까요?.?
-
미해결스프링 부트 - 핵심 원리와 활용
5장 자동구성) 자동 구성이 내부에서 컴포넌트 스캔을 사용하면 안되는 이유
자동 구성이 내부에서 컴포넌트 스캔을 사용하면 안되는 이유가 무엇인가요? 컴포넌트 스캔을 사용하면 패키지 구조에 의존적이게 돼서 그런걸까요?
-
미해결스프링 부트 - 핵심 원리와 활용
explodedWar 문의
server 프로젝트 위치에서 gradlew explodedWar 을 실행해 압축이 풀어진 WAR 파일 경로를 톰캣 Deployment directory 경로에 기재해두었습니다. 이후 강의를 보니 강사님께서는 프로젝트를 수정하고 나서 톰캣을 재실행하니 소스가 수정된 내역이 서버에 바로 반영이 되더라구요. 근데 저는 server 프로젝트 경로로 가서 build 폴더의 exploded 파일을 삭제하고 다시 gradlew explodedWar 명령어를 실행해야 수정된 소스가 톰캣에서 실행되던데 뭐가 잘못된걸까요..?
-
미해결실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
sh scripts/vf_net_create_vnet2.sh 에러
(base) ryanchoi@Byungsoos-MBP 2.4 % sh scripts/vf_net_create_vnet2.sh Library Loadedvmnetcfg: vnlvnetcfgadd - successfully added key:value - VNET_7_DHCP:no Library Loadedvmnetcfg: vnlvnetcfgadd - successfully added key:value - VNET_7_HOSTONLY_SUBNET:192.168.1.0 Library Loadedvmnetcfg: vnlvnetcfgadd - successfully added key:value - VNET_7_HOSTONLY_NETMASK:255.255.255.0 Library Loadedvmnetcfg: vnlvnetcfgadd - successfully added key:value - VNET_7_NAT:yes Library Loadedvmnetcfg: vnlvnetcfgadd - successfully added key:value - VNET_7_VIRTUAL_ADAPTER:yes Stopped DHCP service on vmnet1Stopped DHCP service on vmnet8Stopped NAT service on vmnet8Stopped all configured services on all networksBacked up existing network settings to backup file "/tmp/vmware.UhNzLO"Restored network settingsStopped all configured services on all networksEnabled hostonly virtual adapter on vmnet1Started DHCP service on vmnet1Failed to start NAT service on vmnet7Enabled hostonly virtual adapter on vmnet7Started NAT service on vmnet8Enabled hostonly virtual adapter on vmnet8Started DHCP service on vmnet8Failed to start some/all services알려주신 대로, vmnet7 이 설치가 된 건 확인이 되었지만, Failed to start some/all services 이런 에러가 떠도 문제가 없는 걸까요? 감사합니다.
-
미해결실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
launchctl-load-vmware-utility 에러
(base) ryanchoi@Byungsoos-MBP 2.4 % launchctl-load-vmware-utility Load failed: 5: Input/output errorTry running launchctl bootstrap as root for richer errors.이런 에러가 발생해서, sudo 를 써봐도 해결이 안되는데,혹시 어떻게 해결할 수 있을까요? ***** 추가 (base) ryanchoi@Byungsoos-MBP k8s % vagrant upBringing machine 'cp-k8s-1.30.0' up with 'vmware_desktop' provider...Bringing machine 'w1-k8s-1.30.0' up with 'vmware_desktop' provider...Bringing machine 'w2-k8s-1.30.0' up with 'vmware_desktop' provider...Bringing machine 'w3-k8s-1.30.0' up with 'vmware_desktop' provider...==> cp-k8s-1.30.0: Box 'sysnet4admin/Ubuntu-k8s' could not be found. Attempting to find and install... cp-k8s-1.30.0: Box Provider: vmware_desktop, vmware_fusion, vmware_workstation cp-k8s-1.30.0: Box Version: >= 0==> cp-k8s-1.30.0: Loading metadata for box 'sysnet4admin/Ubuntu-k8s' cp-k8s-1.30.0: URL: https://vagrantcloud.com/api/v2/vagrant/sysnet4admin/Ubuntu-k8s==> cp-k8s-1.30.0: Adding box 'sysnet4admin/Ubuntu-k8s' (v0.8.5) for provider: vmware_desktop (arm64) cp-k8s-1.30.0: Downloading: https://vagrantcloud.com/sysnet4admin/boxes/Ubuntu-k8s/versions/0.8.5/providers/vmware_desktop/arm64/vagrant.boxProgress: 93% (Rate: 13.2M/s, Estimated time remaining: 0:00:04)^R==> cp-k8s-1.30.0: Successfully added box 'sysnet4admin/Ubuntu-k8s' (v0.8.5) for 'vmware_desktop (arm64)'!==> cp-k8s-1.30.0: Cloning VMware VM: 'sysnet4admin/Ubuntu-k8s'. This can take some time...==> cp-k8s-1.30.0: Checking if box 'sysnet4admin/Ubuntu-k8s' version '0.8.5' is up to date...==> cp-k8s-1.30.0: Verifying vmnet devices are healthy...The VMware "vmnet" devices are failing to start. The most commonreason for this is collisions with existing network services. Forexample, if a hostonly network space collides with another hostonlynetwork (such as with VirtualBox), it will fail to start. Likewise,if forwarded ports collide with other listening ports, it willfail to start. Vagrant does its best to fix these issues, but in some cases itcannot determine the root cause of these failures. Please verify you have no other colliding network services running.As a last resort, restarting your computer often fixes this issue.이런 에러가 뜨는 건 launchctl-load-vmware-utility 이 부분 명령어가 제대로 처리가 안되어서 그런거죠?
-
미해결스프링 부트 - 핵심 원리와 활용
rate vs irate
rate는 초당 평균 증가율 (평균 변화율)irate 는 초당 순간 증가율을 나타낸다고 하네요 (미분계수)12시 ~ 12시 5분 사이에 얼마나 많은 변화가 있었는지 보고싶으면 rate딱 정확히 12시 3분이 된 시점에서 변화율을 보고싶으면 irate를 사용하면 되겠습니다.
-
미해결스프링 부트 - 핵심 원리와 활용
exploded 배포시 경로
인텔리제이에서 exploded로 war를 배포하면톰캣의 webapps에 배포가 되는게 아니라 , 프로젝트의 target 이라는 폴더를 톰캣이 바라보는거 같은데톰캣 설정파일 어디에 target이 명시되는걸까요?ㅠㅠ
-
미해결실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
정확하게 강의 순서를 알려주시겠어요?
강의 난이도가 대부분 초급이 아니라 중급 이상이라 순서를 여쭤봅니다.쉽게 배우는 k8s -> 그림으로 배우는 K8S -> 앤서블 -> 프로메테우스 -> 그라피나순인가요?
-
미해결스프링 부트 - 핵심 원리와 활용
강의를 따라했는데 매핑 정보가 등록되지 않은 것 같습니다.
public interface AppInit { void onStartup(ServletContext servletContext); } /** * 서블릿 컨테이너 모방 * 프로그래밍 방식을 서블릿 컨테이너에 등록 */ public class AppInitV1Servlet implements AppInit { @Override public void onStartup(ServletContext servletContext) { System.out.println("AppInitV1Servlet.onStartup"); // 순수 서블릿 코드 등록 ServletRegistration.Dynamic helloServlet = servletContext.addServlet("helloServlet", new HelloServlet()); helloServlet.addMapping("/hello-servlet"); } }/** * 서블릿 그 자체 * 애플리케이션 초기화 */ public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("HelloServlet.service"); resp.getWriter().println("hello servlet!"); } }hello.container.MyContainerInitV1 hello.container.MyContainerInitV2 이런식으로 강의를 따라 서블릿에 매핑 정보를 등록했는데, http://localhost:8080/hello-servlet을 하게 되면 404 에러가 발생합니다. 어디서 문제가 생긴걸까요?
-
미해결스프링 부트 - 핵심 원리와 활용
영한님 좀 더 실무적인 메트릭 수집하는 방법과 운영환경이 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]1. 멀티스레드에 안전하게 처리하기 위해 Atomic.. 을 사용하셨는데, 실무에서는 데이터베이스같은곳에서 정보를 받아와야 하는데, 프로메테우스에서 데이터베이스의 테이블을 접근중일때 READ가 발생할텐데, 현재 유저한테 서비스되는 클라이언트단에서 READ, WRITE가 발생할때 lock이 발생하는 경우는 없나요?2. 1번 질문과 이어서.. 아래와 같은 곳에서 정보를 수집하는데 동시성/데드락/경합 문제가 발생하지는 않나요?아래에서 정보를 가져올때는 어떻게 하는게 best practice인지 궁금합니다- State DB(Mysql, postgresql, mongodb)- InMemory DB(Redis)- Kafka Topics3. 현재는 설치형으로 강의를 진행해주셨는데, docker나 k8s 환경에서 수집을 한다면 같은 네트워크에도 묶여야되는 등 신경써야 할 부분이 많은 것 같은데요.. 베어메탈에서 wget 등으로 받아서 띄우는거 말고 컨테이너 환경에서는 어떻게 하는지 또 궁금합니다!
-
미해결스프링 부트 - 핵심 원리와 활용
MyDataSourcePropertiesV1 스프링 빈으로 등록
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 좋은 강의 잘 듣고 있습니다!!이번 강의를 들으면서 @EnableConfigurationProperties(MyDataSourcePropertiesV1.class)를 통해 MyDataSourcePropertiesV1.class 클래스를 스프링 빈으로 등록해야지 외부 설정을 읽어서 해당 클래스에 바인딩하고 Config에서는 그걸 주입 받아 DataSource에 주입하는 걸로 이해를 했습니다.여기서 저는 단순히 스프링 빈으로 등록하는 거라면@Import를 사용하거나 MyDataSourcePropertiesV1.class에 @Component를 붙여서 컴포넌트 스캔 대상이 되도록 하는 등의 방법으로 해도 잘 동작하는게 아닐까? 라는 생각에2가지 다 사용해서 테스트를 진행했는데 별문제가 없었습니다.분명히 @EnableConfigurationProperties을 만든 이유가 있을듯한데 저의 짧은 지식으로는 잘 모르겠습니다.@ConfigurationPropertiesScan은@ConfigurationProperties가 붙은 클래스를 마치 컴포넌트 스캔과 같이 간편하게 스프링 빈으로 등록할 수 있다는 장점이 보이지만 @EnableConfigurationProperties 이 친구는 정말 모르겠습니다
-
미해결스프링 부트 - 핵심 원리와 활용
인텔리J 무료버전 Smart Tomcat 설정관련
해당 경로에 build폴더가 있는데 Deplyment directory에서 아래 사진과 같이 나오지가 않습니다.
-
미해결스프링 부트 - 핵심 원리와 활용
톰캣설정 인텔리J 무료버전 설정
윈도우에서 가이드데로 진행했는데 실행이 실패했습니다.bulid.gradle에는 아래와 같이 똑같이 코딩했습니다.
-
미해결실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
tabby에서 cp-k8s 접속 안되는 현상
cmd에 작성되어 있는cp ./tabby-v1.0.207/config.yaml $env:APPDATA/tabby/이걸로 했을 때 tabby가 실행이 되지 않아서전에 다른 분이 질문하셨던 글의 댓글을 통해 cp ./tabby-v1.0.207/config.yaml $env:APPDATA/tabby/config.yaml을 추가했더니 tabby가 실행되었어요. 그런데 문제는 tabby 실행후 처음에는 cp-k8s에 접속이 되었는데그 이후로 다시 접속하려고 할때 접속이 안되더라구요.Tabby를 아무리 삭제하고 재설치해도 접속이 안됩니다.어떻게 해결해야 할 지 확인 부탁드립니다.
-
미해결실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
vagrant up 안됩니다.
디렉토리 싹 지우고, 전부 uninstall 후 다시 install 해서 다시시도해봐도 마찬가집니다.
-
미해결실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
Tabby 실행이 안됩니다.
환경은 윈도우입니다.ch2/2.3으로 작업하였고207은 설치가 안되어 1.0.208로 설치하였습니다.config.yaml파일을 %APPDATA% 경로에 "tabby" 라는 파일명으로 복사하는 작업이 맞는건가요?