묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
섹션10 언제 나오나요?
대략적인 일정이라도 궁금합니다
-
미해결비전공자도 이해할 수 있는 AWS 입문/실전
안녕하세요! 비용 질문한가지 드려요!
이번달 비용 예측중인데요월간비용누계와 이번달의 총 예상 비용은 무슨 차이 일까요? 예를들면 이번달 비용 예측이 12.3 달러라는 뜻일까요? 아니면 30달러가 맞는걸까요?
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
ec2 에 배포 자동화시 참고 코드 올려 봐여
ec2 에 배포할 경우 아래처럼 deploy.ytml 수정 하면 pm2 프로세스 종료 후 서버 시작까지 잘되요 여기에 뭔가 좀 빼고 더하는 개선이 필요할것 같은데 일단 기본적인 배포 액션은 잘 동작 합니다. deploy.ymlname: deploy on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout the code uses: actions/checkout@v1 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: "18.x" - name: Create SSH directory run: mkdir -p ~/.ssh - name: Install pm2 run: sudo npm install -g pm2 - name: SSH Commands uses: appleboy/ssh-action@v0.1.6 with: host: ${{ secrets.AWS_SSH_HOST }} username: ${{ secrets.AWS_SSH_USERNAME }} key: ${{ secrets.AWS_SSH_KEY }} port: ${{ secrets.AWS_SSH_PORT }} script_stop: true script: | # sudo apt-get update || exit 1 cd express-redis-server/ sudo pm2 delete all || true sudo git pull || exit 1 sudo npm install || exit 1 sudo npm run build || exit 1 sudo pm2 start npm -- start
-
해결됨스스로 구축하는 AWS 클라우드 인프라 - 기본편
스스로 구축하는 AWS 네트워크 입문?
안녕하세요. 강사님..학습과 별개의 질문이긴 한데.. 어디다 문의해야 될지 몰라 여기에 문의 드립니다."스스로 구축하는 AWS 클라우드 인프라-기본편" 을 구입하여 기본을 익히는데 많은 도움을 받았으며, 인프라 기본편 구매 당시에 "스스로 구축하는 AWS 네트워크" 강의도 있었는데 어느 순간 없어졌더라구요..해당 강의가 어떤 구성인지 궁금하기도 하고 인프라 기본편이 너무 만족스러워서 강사님의 네트워크 강의를 통해 좀 더 학습하고자 하는데 혹시 다시 강의를 게시할 계획이 있으신가요?아니면 다른 대체할 추천해주실 만한 강의가 있는지 여쭤봐도 될런지요?감사합니다.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강기간 연장
바뻐서 거의 듣지를 못했습니다. 수강기간 연장 부탁드립니다. 꼭 부탁드려요
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 연장 부탁드립니다
완강했는데 한번 더 복습하고 싶습니다! 연장 부탁드립니다!
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
await 관련해서 질문드릴게 있습니다!!
안녕하세요 강사님 !! ㅎㅎ 강의 재밌게 듣고 있습니다. async await 방식이 코틀린의 코루틴과 굉장히 유사하다고 생각이 되는데 그럼 다음과 같이 Promise.all 대신 await를 늦추는 방식으로 풀어써도 똑같이 동작하나요?? async createBlog() => { await Promise.all([ Blog.insertOne({...}), // 1000ms User.UpdateOne({...}) // 1000ms ]) } // 실행시간 : 1000ms // 질문코드 async createBlog() => { const blogPromise = Blog.insertOne({...}) // 1000 ms const userPromise = User.updateOne({...}) // 1000 ms A(await blogPromise, await userPromise) } // 실행시간 : 1000ms(?)
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
에러가 해결이 안돼요ㅜ
에러 : Parameter 0 of constructor in com.group.libraryapp.service.user.UserServiceV1 required a bean of type 'com.group.repository.user.UserJdbcRepository' that could not be found. 구글링해보니까 service, repository 등의 annotation이 빠져서 그렇다고 하는데 다 들어가있습니다ㅜ계속 문제가 해결안돼서 참고하라고 주신 코드로도 변경해봤는데 계속 동일한 문제가 뜨네요.. package com.group.libraryapp.service.user; import com.group.libraryapp.dto.user.request.UserCreateRequest; import com.group.libraryapp.dto.user.response.UserResponse; import com.group.libraryapp.dto.user.request.UserUpdatRequest; import com.group.repository.user.UserJdbcRepository; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServiceV1 { private final UserJdbcRepository userJdbcRepository; public UserServiceV1(UserJdbcRepository userJdbcRepository) { this.userJdbcRepository = userJdbcRepository; } public void saveUser(UserCreateRequest request) { userJdbcRepository.saveUser(request.getName(), request.getAge()); } public List<UserResponse> getUsers() { return userJdbcRepository.getUsers(); } public void updateUser(UserUpdatRequest request) { if (userJdbcRepository.isUserNotExist(request.getId())) { throw new IllegalArgumentException(); } userJdbcRepository.updateUserName(request.getName(), request.getId()); } public void deleteUser(String name) { if (userJdbcRepository.isUserNotExist(name)) { throw new IllegalArgumentException(); } userJdbcRepository.deleteUser(name); } } package com.group.repository.user; import com.group.libraryapp.dto.user.response.UserResponse; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import java.util.List; @Repository public class UserJdbcRepository { private final JdbcTemplate jdbcTemplate; public UserJdbcRepository(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public boolean isUserNotExist(long id) { String readSql = "SELECT * FROM user WHERE id = ?"; return jdbcTemplate.query(readSql, (rs, rowNum) -> 0, id).isEmpty(); } public void updateUserName(String name, long id) { String sql = "UPDATE user SET name = ? WHERE id = ?"; jdbcTemplate.update(sql, name, id); } public boolean isUserNotExist(String name) { String readSql = "SELECT * FROM user WHERE name = ?"; return jdbcTemplate.query(readSql, (rs, rowNum) -> 0, name).isEmpty(); } public void deleteUser(String name) { String sql = "DELETE FROM user WHERE name = ?"; jdbcTemplate.update(sql, name); } public void saveUser(String name, Integer age) { String sql = "INSERT INTO user (name, age) VALUES (?, ?)"; jdbcTemplate.update(sql, name, age); } public List<UserResponse> getUsers() { String sql = "SELECT * FROM user"; return jdbcTemplate.query(sql, (rs, rowNum) -> { long id = rs.getLong("id"); String name = rs.getString("name"); int age = rs.getInt("age"); return new UserResponse(id, name, age); }); } }package com.group.libraryapp.controller.user; import com.group.libraryapp.dto.user.request.UserCreateRequest; import com.group.libraryapp.dto.user.request.UserUpdatRequest; import com.group.libraryapp.dto.user.response.UserResponse; import com.group.libraryapp.service.user.UserServiceV2; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController //스프링 빈이 됨. 즉 jdbc에 의존하게됨 public class UserController { private final UserServiceV2 userService ; //@Quailifier("main")가 primary보다 더 앞선다. public UserController(UserServiceV2 userService){ this.userService = userService; } @PostMapping("/user") public void saveUser(@RequestBody UserCreateRequest request){ userService.saveUser(request); } @GetMapping("/user") public List<UserResponse> getUsers(){ return userService.getUsers(); } @PutMapping("/user") public void updateUser(@RequestBody UserUpdatRequest request){ userService.updateUser(request); } @DeleteMapping("/user") public void deleteUser(@RequestParam String name) { //query를 직접 사용해서 포스트맨으로 찾음 그래서 requestbody가 아니라 param을 씀userService.deleteUser(name); userService.deleteUser(name ); } }
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강신청 연장 부탁드립니다.
수강신청 연장 부탁드립니다.일이 바빠서 조금씩 밖에 듣지 못하고 있네요...
-
미해결CloudNet@와 함께하는 Amazon EKS 기본 강의
karpenter 동작이 이상합니다..(안됩니다)
순서대로 따라했으나, karpenter가 제대로 동작하지 않습니다.프로비저너 스펙으로 spot이나, 직접 인스턴스 유형을 지정한 경우나 둘 다 p4d.24xlarge 라는 말도 안되는 인스턴스를 요청하거나 계속 waiting on cluster sync 라는 문구가 나옵니다.왜 이런 오류가 나는건지 알 수 가 없네요 ㅠ ㅜ완전히 싹다 밀고 처음부터 하나하나 다시 천천히 입력해봐도 여전히 똑같습니다..
-
해결됨[2024] 실무에서 사용중인 AWS 클라우드 IAM 이해와 보안
IAM 사용자별 EKS 접근 권한 추가 방법
안녕하세요. 강의를 듣다보니 궁금하여 문의드립니다.현업에서 IAM role에 따라서 EKS 접근 권한을 제한하여 동작을 시키고 싶을때 어떻게 하면 될까요? PL 에게는 EKS 모든 권리를 주고developer에게는 EKS 특정 pod 만 생성할수 있고 수정할수 있는 권한을 주고operator에게는 pod를 읽을수 있는 권한만 주려고할때 어떻게해야할지 모르겠네요. 찾아본 바로는 IRSA와 RBAC을 절적히 사용하면 된다고하는데 잘모르겠네요. 만약에 권한을 주는 것도 level 0, level 1, level 2 같이 권한으로 디자인하고 PL은 level 2 권한을 주고sub PL, develope는 level 1 권한을 주고 operator와 tester는 level 0를 주어 권한을 제한할수도 있을까요? IAM role을 가져올때 이 사람이 PL인지 아니면 sub PL인지 developer인지 구분할수 있는 방법이 있을까요? 강의 들어도 잘 모르겠네요. ㅜㅜ
-
미해결AWS 클라우드 서비스 인프라 구축 이해와 해킹, 보안
L4의 HASH 방식을 대체하는것이 가능한지요?
안녕하세요. WAF, LB 셋팅시 APP의 세션 공유하기가 어려워서, 로드밸런싱보다는 LB 셋팅할때 접속자 주소를 HASH 해서 특정 서버로만 밀어 주도록 설정할 수도 있을까요?
-
미해결CloudNet@와 함께하는 Amazon EKS 기본 강의
안녕하세요
질문 드립니다. 현재 4장에서 프로메테우스 스택 인스톨까지 진행하고나서예전 질문에 답변주셨던 1장의 마리오 게임을 배포했던 부분과4장의 Nginx 웹서버 배포를 복습하고 있습니다.원클릭 -> 프로메테우스 스택 -> mario apply, nginx apply 마리오는 Service로/ nginx는 인그레스로 apply 하는데요 NLB와 ALB로 외부 노출해야하는 조건이나 이유가 있는건가요 앱에 따른 차이일까요? 프로메테우스 스택을 보면 하나의 ALB로 묶기 위한 그룹이 명시되어있는데 그룹으로 묶어서 ALB로 열어주는 kind: IngressClass 은 보이지 않습니다, helm install시 알아서 설치되는 건가요?노드 익스포터가 포드로 배포되었기 때문에 노드에 존재하는 모든 앱의 메트릭 값을 자동으로 수집할 것이라고 생각했는데, nginx 파라미터 파일을 보면 metrics.enabled : true 소스가 있습니다. 각 앱을 apply 할때 metrics.enabled : true 값을 명시하는 것이 필수인 건가요?metrics.enabled : true값이 필수라면 마리오 게임을 배포할 때 metrics.enabled : true 값이 없었으므로 메트릭 값이 수집 되지 않는 건가요? 추가해야 할까요?4장의 nginx 파라미터 파일에 spec 소스를 추가 작성하면 도커허브의 html파일을 가져와서 배포할 수 있을까요?nginx배포시 레플리카 부분이 명시되어 있지 않아 1개의 포드만 생성될 것이라 예상했고, kubeops를 확인하니 실제로 1개만 배포되었습니다. 하지만 kubectl get pods 명령어 확인하니 nginx 2/2 ready 상태입니다.부하발생 실습 부분에서 레플리카를 늘려서도 시험해 보고 싶어서 helm upgrade nginx bitnami/nginx --version 14.1.0 -f nginx-values.yaml --set replicas=2 명령어를 사용했는데요, 업그레이드 됐다는 메시지는 출력 되는데 포드의 변화가 없습니다 어떻게 하면 될까요? NGINX 모니터링 대시보드 : 12708 사용,while true; do curl -s https://nginx.$MyDomain -I | head -n 1; date; sleep 1; done명령어 입력 후 3분 뒤 초록색 GO 사라지고 빨간색 NO DATA 출력, 모든 그래프 사라짐 -> Home Dashboards Kubernetes / Compute Resources / Namespace (Pods)에서 모니터링 네임스페이스 확인해보니 메모리 사용부분 1400% 찍혀있는데 서버 다운된건가요? 인스턴스 스케일업 해야하는건가요? t3미디엄입니다. - 만약 맞다면 추후 HPA나 CA를 통해 해결이 가능할까요?앱 배포시 프로메테우스 target에 nginx 잡히는 것은 확인했습니다. 실제로 부하를 줄 시 프로메테우스에서 부터 수집되는 메트릭 값을 확인해 보고 싶고 -> 그 값이 실제로 그라파나에 동일한 값이 출력되는지 확인해보고 싶습니다. 하지만 현재 프로메테우스에서는 어떻게 확인하는지 모르겠고, 그라파나에서는 No Data로 오류발생입니다
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
한번만더연장부탁드립니다..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. ans saa 두개 다 연장 가능할까요ㅠㅠ
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
질문있습니다.
강사님 안녕하세요.혹시 개인적인 질문이 있는데 메일 주소 하나 알 수 있을까요 ? 감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
45강 dev 연결 에러
java -jar build/libs/library-app-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev 2024-03-06 06:57:53.124 ERROR 3375 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-j-8.0.31.jar!/:8.0.31]2024-03-06 06:34:35.506 WARN 24251 --- [ main] o.h.e.j.e.i.JdbcEnvironmentInitiator : HHH000342: Could not obtain connection to query metadatacom.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.2024-03-06 06:57:53.140 ERROR 3375 --- [ main] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]2024-03-06 06:57:53.140 WARN 3375 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]2024-03-06 06:57:53.152 INFO 3375 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]2024-03-06 06:57:53.185 INFO 3375 --- [ main] ConditionEvaluationReportLoggingListener :Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2024-03-06 06:57:53.233 ERROR 3375 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 제 컴퓨터 mysql로 연결되어서 com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure 이런 에러가 나온 것 같은데 AWS에서 빌린 컴퓨터에서 mysql연결하려면 어떻게 해야하나요? 아니면 제 컴퓨터 mysql로 연결하고 진행하나요?
-
미해결CloudNet@와 함께하는 AWS 네트워킹 입문
loadbalancer와 route53 서비스의 차이점이 궁금합니다.
LB가 안정적인 서비스를 위해 트래픽을 적절히 분배하여 조절해 주는 역할을 한다고 이해하였는데,Route53서비스 에서도 가중치를 통해 대략적인 트래픽 분배를 하는것 같아 보입니다.LB와 Route53의 가중치로 인한 트래픽 분배가 차이점이 있나요?각각의 활용방안이 다른걸까요?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
Entity 객체에 접근제어자로 protected를 사용하는 이유가 궁금합니다.
안녕하세요. 30강 강의를 수강하고 한가지 궁금한 점이 있어 질문드립니다.book 테이블에 매핑되는 Entitiy객체인 Book.java 클래스 생성 시 JPA 사용을 위해 기본 생성자를 넣어주는데 이때 접근 제어자를 protected를 사용하는 것을 확인했습니다.protected 접근 제어자가 본래 상속관계에 있는 객체에 접근할 때 쓰는 것으로 알고 있는데 BookRepository 인터페이스가 JpaRepository를 상속받고 Map 구조에 Book이 들어가서 protected를 사용하는 것인지 궁금합니다.또한 protected 접근 제어자 외에 public, default 접근 제어자를 사용해도 되는 것인지 궁금합니다.
-
미해결실리콘밸리 엔지니어와 함께하는 테라폼(Terraform)
tfstate 관리 시 dynamodb 사용 관련 질문
tfstate 관리 시 S3 버저닝을 했을 때, dynamo db를 사용하지 않아도 버지닝이 되니 굳이 사용하지 않아도 되지 않을까요 ?
-
미해결실리콘밸리 엔지니어와 함께하는 테라폼(Terraform)
subnet 생성을 terraform으로 하는게 괜찮을지 고민입니다.
resource "aws_instance" "web" { ami = data.aws_ami.ubuntu.id instance_type = "t2.micro" tags = { name = "MyEc2" } depends_on = [aws_default_subnet.default_az1] } resource "aws_default_subnet" "default_az1" { availability_zone = "us-west-2a" tags = { Name = "Default subnet for us-west-2a" } }aws default subnet을 지정해주는 terraform resource가 있는 것 같은데 정상동작했어요 ! 이런 방법은 어떤가요 ? aws cli를 따로 사용해야하니 왠지 terraform에 종속성이 생긴 느낌이들어서요