묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
프론트 백엔드간의 http 요청을 주고 받으려면
안녕하세요 선생님.저는 next.js로 만든 프론트엔드와, nestjs로 만든 백엔드를 ECS에 각각 서비스로 만들어 클러스터를 관리하고 있습니다.프론트엔드에서 fetch() 함수로 백엔드에 요청을 보내는데,이 때 백엔드 url을 결정하는데 어려움을 겪고 있습니다.처음에는, 서비스 연결 을 적용해서Request URL: http://languin-backend-container-8000-tcp.languin-cluster:8000/auth/check/email이런식으로 적용했었는데, ERR_NAME_NOT_RESOLVED 이란 에러를 만났습니다.혹시 이 문제가 fetch() 함수가 프론트엔드가 실행되고 있는 컨테이너가 아니라, 사용자 브라우저이기 때문에 Inter Service Communication이 적용이 안되는 건가요?프론트에서 백엔드로 요청을 보낼 수 있도록 하려면, 백엔드 주소를 어떻게 정해야 하나요? Route53을 사용해야 하는건가요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
블로그 정리
안녕하세요 영상을 보면서 자격증 공부를 하고 있습니다. 영상 내용을 바탕으로 개인 블로그에 정리하며 공부를 하고 싶은데 강의 출처를 밝히고 블로그에 정리해서 올려도 되는지 궁금해서 질문을 남겼습니다!
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
26강 서버실행 오류
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2024-06-28 18:38:36.868 ERROR 35116 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Unsatisfied dependency expressed through method 'dataSourceScriptDatabaseInitializer' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:541) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.6.jar:2.7.6] at com.group.libraryapp.LibraryAppApplication.main(LibraryAppApplication.java:10) ~[main/:na]Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.24.jar:5.3.24] ... 21 common frames omittedCaused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.24.jar:5.3.24] ... 35 common frames omittedCaused by: java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.util.Assert.state(Assert.java:97) ~[spring-core-5.3.24.jar:5.3.24] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName(DataSourceProperties.java:171) ~[spring-boot-autoconfigure-2.7.6.jar:2.7.6] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.initializeDataSourceBuilder(DataSourceProperties.java:123) ~[spring-boot-autoconfigure-2.7.6.jar:2.7.6] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.createDataSource(DataSourceConfiguration.java:48) ~[spring-boot-autoconfigure-2.7.6.jar:2.7.6] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari.dataSource(DataSourceConfiguration.java:90) ~[spring-boot-autoconfigure-2.7.6.jar:2.7.6] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.24.jar:5.3.24] ... 36 common frames omitted기존에 저랑 같은 문제를 갖고 있는 학우 분 코멘트 따라서runtimeOnly 'com.mysql:mysql-connector-j'기존 runtimeOnly 의존성을 지우고 해당 코드를 추가해줬지만 여전히 같은 에러가 나옵니다.어떻게 해결하면 좋을까요?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
도커 이미지 생성과 푸시 명령어를 할 수 있는 이유
안녕하세요 선생님. 질문 있어 글 남깁니다.Github actions에서 도커 이미지를 생성하고, ECR에 푸시하기 위해 사용한 docker build, docker push와 같은 명령어가 어떻게 실행 될 수 있는건가요?위의 테스트 과정에서 테스트를 위해 ubuntu 서버에 node를 설치했듯이, 여기서도 이미지 생성,푸시 위해서는 ubuntu 서버에 docker를 설치해야 되지 않나요?정리하면, ubuntu 서버에서 도커 설치 없이 docker build, docker push와 같은 명령어가 실행 가능한 이유가 궁금합니다
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기간 연장 부탁드립니다.
제가 군인이라 생각보다 공부 시간이 부족하네요. 수강 기간 연장해주시면 감사하겠습니다.
-
해결됨AWS로 구축하는 MSA와 컨테이너 오케스트레이션
bastion서버가 있을경우 cli로의 접근은 권장되지 않나요??
강사님은 ssh나 sftp툴을 사용하시나요? connect 서비스를 사용하지 않는경우에 bastion서버는 처음사용하는데 cli를 사용하는 저같은경우 두번 접속하는게 조금은 번거롭게 느껴져서 궁금합니다
-
해결됨AWS로 구축하는 MSA와 컨테이너 오케스트레이션
java.net.UnknownHostException 에러 관련 질문입니다
현재 환경VPCpublic subnet 2개ALB, Nat gatewayprivate subnet 2개fagateSecurity grouppublic group (80포트 모든 ip허용)private group(80포트 public group아이피만 허용) 여기서 이미지 컨테이너 실행도중 한 컨테이너에서Caused by: ! java.net.UnknownHostException: 690bd678bcf4: Name or service not known와같은 에러와함께 컨테이너 실행이 실패했고스택오버플로우 검색에서 얻은 정보를 통해localhost를 수정하는 sh파일을 도커컨테이너 실행하도록 변경하여 에러를 해결했습니다.(해당 스크립트)#!/bin/bash set -e shift cmd="$@" echo "127.0.0.1 $HOSTNAME" >> /etc/hosts exec $cmd현재 실행된 컨테이너는 아무문제없이 잘 작동하지만제가 이부분에대해 이해가 잘 안되기도하고 올바른방법으로 해결한것인지 불안한감이 있어서혹시나 좋은 피드백을 받을 수 있을까해서 질문올립니다! 위에러는 강의랑 다른구성의 서버실행도중 발생한 에러이고 저또한 정확한 질문을 드린것은 아니라답변이 안될거라 생각되지만 혹시나하는 마음에 올려봅니다!!
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수간 기간 연장 부탁드립니다.
수강 기간 연장 가능할까요?아직 시험일정을 못잡아서 추가적으로 학습이 필요할것 같아 기간 연장 요청 드립니다.
-
미해결스타트업 성장과 함께하는 AWS 클라우드 아키텍쳐 올인원
Auto Scaling질문
Auto Scaling에서 ELB health check를 체크 안하시는 이유가 있나요? 테스트라서인가요 아니면 현업에서도 따로 체크를 안하나요?
-
해결됨쉽게 설명하는 AWS 기초 강의
[예정] 강의 업데이트 일정 문의
섹션 8~19에 해당하는 강의들 대부분이 [예정]으로 분류돼있는데 언제쯤 업데이트되나요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강기간 연장 부탁드리겠습니다.
타 자격증 시험일정하고 겹쳐서 결제해놓고 수강을 거의 못했는데 연장 부탁드리겠습니다ㅠ
-
해결됨AWS로 구축하는 MSA와 컨테이너 오케스트레이션
path기반의 라우팅 테스트 실패이유가 궁금합니다
라우팅 부분이 제대로안되는 것 같아 경로기반 라우팅 테스트후에 타겟그룹을 연결하려고 하는데요라우팅 테스트를 실패하지만 원인을 모르겠어서 질문드립니다. public subnet에 로드밸런스를 생성한뒤 80번 포트로 2가지 룰을 만들었습니다.첫번째는 기본값으로 default response를 반환2번째는 /mp4* 경로로 들어오는 모든 값에대해 mp4 reponse라는 텍스트를 반환하도록 설정했는데 alb도메인/mp4 입력시, alb도메인 입력시 모두 "default response"가 반환되는데어떤부분을 제가 이해못해서 안되는지 잘 모르겠는데 혹시 짐작가는 부분이 있다면 알려주시면 감사하겠습니다
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
13강 DB연결 관련 질문드립니다.
안녕하세요. 우선 좋은 강의 만들어 주셔서 감사합니다.13강을 수강하던 중 오류가 발생하여 질문드립니다. 검색해보니 테이블 명이 user로 생성을 하면 안되는 것 같아 user_table 이라는 명칭으로 테이블을 생성했습니다.CLI로 확인해본 결과 테이블 자체는 정상적으로 생성이 되었습니다. 그런데 컨트롤러와 yml 파일 설정 후 화면에서 데이터를 저장하려고 하니 오류가 발생합니다. spring: database: url: "jdbc:mysql://localhost/library" username: "root" password: "" drive-class-name: com.mysql.cj.jdbc.Driver package com.group.libraryapp.controller.User; import com.group.libraryapp.domain.user.User; import com.group.libraryapp.dto.User.request.UserCreateRequest; import com.group.libraryapp.dto.User.response.UserResponse; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; @RestController public class UserController { private final JdbcTemplate jdbcTemplate; public UserController(JdbcTemplate jdbcTemplate){ this.jdbcTemplate = jdbcTemplate; } private final List<User> users = new ArrayList<>(); @PostMapping("/user") public void saveUser(@RequestBody UserCreateRequest request){ String sql = "INSERT INTO user_table (name, age) VALUES (?,?)"; jdbcTemplate.update(sql, request.getName(), request.getAge()); } @GetMapping("/user") public List<UserResponse> getUsers() { String sql = "SELECT * FROM user_table"; //람다로 변경 알트+엔터 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); }); } } INSERT INTO user_table (name, age) VALUES (?,?) [42104-214]] with root cause org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "USER_TABLE" not found (this database is empty); SQL statement: INSERT INTO user_table (name, age) VALUES (?,?) [42104-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) ~[h2-2.1.214.jar:2.1.214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.214.jar:2.1.214] at org.h2.message.DbException.get(DbException.java:223) ~[h2-2.1.214.jar:2.1.214] at org.h2.message.DbException.get(DbException.java:199) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.getTableOrViewNotFoundDbException(Parser.java:8385) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.getTableOrViewNotFoundDbException(Parser.java:8369) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.readTableOrView(Parser.java:8358) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.readTableOrView(Parser.java:8328) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.parseInsert(Parser.java:1632) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.parsePrepared(Parser.java:814) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.parse(Parser.java:689) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.parse(Parser.java:661) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.prepareCommand(Parser.java:569) ~[h2-2.1.214.jar:2.1.214] 위와 같이 데이터베이스가 비었다고 하고 테이블을 찾지 못하는데 제가 어느 부분을 확인해야 하는지 궁금해 질문드립니다.
-
해결됨AWS로 구축하는 MSA와 컨테이너 오케스트레이션
ECS에서 노드서버 배포중 오류가 있어서 질문드립니다
ECS에서 테스크를 실행중에 난 오류인데, 외부의 레디스클라이언트로의 접속에 문제가 있는 것 같습니다..Error: getaddrinfo ENOTFOUND "special-hagfish-50800.upstash.io" VPC 세팅은 섹션2에서 알려주신대로 NAT게이트웨이까지도 설정을 한 상태이고, 보안그룹은 default로 인바운드, 아웃바운드 모두 모든트래픽에 대해 열려있습니다.. 어떤 부분을 의심해볼 수 있을까요?
-
해결됨인프라공방 - 그럴듯한 서비스 만들기
가이드 페이지 우피 이용 만료되신 것 같아요!
(사진)
-
해결됨쉽게 설명하는 AWS 기초 강의
향후 초급이나 중급 강좌 만드실 계획이 있나요?
궁금합니다. 혹시나 만드신다면 언제쯤 예상하시고 계신가요?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
인바운드 규칙 설정 문제
강의내용 따라서 배포까지 진행하고있습니다. 이전강의 보안그룹 설정할때 인바운드규칙 설정에서 HHTP에 기본 80포트로 하고 규칙을 저장하려고 하니 "CIDR 블록, 보안 그룹 ID 또는 접두사 목록을 지정해야 합니다." 라는 문구와함께 값을 인바운드 ip주소? 나 접두사를 입력해야하더라구요. 0.0.0.0/0 은 허용이 되지 않아 접두사목록에 있는 것 하나 그냥 선택해서 넘어갔습니다.배포 후 서버 접속 하려고하니 HTTP 인바운드규칙에 걸려서 그런지 접속이 되지 않아 일단 내IP로 설정해서 접속은 했습니다.모든 IP 주소 접속허용은 안되는건지 잘 모르겠네요...
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
기능 추가시 프론트 문제
안녕하세요! 강의를 따라하며 프로젝트를 진행했더니 어느덧 배포까지 끝냈는데요 다 해보고나니 대출목록 조회나 다른 추가 기능들을 혼자 구현해보고 싶다는 생각이 들었습니다. 제가 프론트에 대한 지식이 많이 부족하고 저희 프로젝트에서는 강사님이 주신 프론트를 그대로 가져다 사용하고있기 때문에 프론트가 어떤식으로 구성되어있는지 잘 모르겠습니다..ㅠ 혹시 저희 프로젝트에서 프론트 단을 어떻게 하면 수정하거나 추가할 수 있는지 알 수 있을까요? 아니면 변경이 어렵다면 백엔드 개발자가 프로젝트를 진행하면서 간단하게 프론트를 구현할 수 있는 방법이 있을까요? 감사합니다.
-
해결됨쉽게 설명하는 AWS 기초 강의
PPT제공
강의 PPT를 받아보고싶은데 방법이 없을까요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강기간 연장 신청합니다
회사일이 바빠 강의를 수강하지 못했습니다.가능하다면 수강 기간 연장 가능할까요?