JSCODE 박재성
@jscode
수강생
29,830
수강평
2,106
강의 평점
4.9
[Sites]
Youtube 바로가기
LinkedIn 바로가기
[Career]
現) JSCODE - 대표 멘토, CEO
前) (주)트라이포드랩 - CTO
前) (주)온리원유니버스 - CTO
前) 달리(DALY) - CTO
前) 팀메이트(Teammate) - CEO
[Books]
『Do it! JSCODE의 AWS 입문』, 이지스퍼블리싱 (2025.05)
[ETC]
- 기업 대상 개발 컨설팅 및 코딩 교육 활동
강의
로드맵
전체 7수강평
- 대규모 트래픽 처리를 위한 부하테스트 입문/실전
- AWS SAA-C03 자격증 벼락치기 - 딱 163문제로 2주만에 합격하기
- 비전공자도 이해할 수 있는 Docker 입문/실전
- AWS SAA-C03 자격증 벼락치기 - 딱 163문제로 2주만에 합격하기
게시글
질문&답변
예상 기출 문제 오탈자 제보
안녕하세요 파이리님! 오탈자 제보해주셔서 너무 감사드립니다!!덕분에 빠르게 오탈자 수정해서 자료 업데이트 할 수 있었네요!ㅎㅎ감사합니다:D
- 0
- 1
- 21
질문&답변
HTTPS 관련 코드 해석하기
안녕하세요 ! 질문 잘해주셨어요 !질문해 주신 내용에 대해 답변드려볼게요 ~ 말씀하신 대로 server_name jscode.p-e.kr에서 이미 해당 도메인으로 들어온 요청인지 확인하고 있기 때문에, if ($host = jscode.p-e.kr) 조건문이 없어도 돼요 !이 코드는 Certbot이 HTTPS 인증서를 설치하면서 자동으로 생성한 코드인데요, Certbot이 안전하게 처리하기 위해 이중으로 체크하는 로직을 넣어준 거예요 ~실제로 실무에서는 이런 중복 체크를 제거하고 더 간결하게 작성하기도 해요 !listen 80과 server_name jscode.p-e.kr을 설정한 후 바로 return 301 https://hosthost hostrequest_uri로 리다이렉트 처리하는 식으로 if 문 없이도 동일하게 동작하도록 만들 수 있어요 !server_name에서 이미 필터링이 되었기 때문에 바로 리다이렉트 처리해도 되는 거죠 :) 추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~~
- 0
- 2
- 34
질문&답변
HTTPS로도 받고 싶으면 docker compose에 443도 쓰면 될까요?
안녕하세요 ! 질문 잘해주셨어요 !질문해 주신 내용에 대해 답변드려볼게요 ~ "HTTPS도 받으려면 ports 부분에 - 443:3000도 써 주면 되는 건가요? 현업에선 어떤 식으로 하나요?"-> 우선 단순히 443:3000을 추가하는 것만으로는 HTTPS가 작동하지 않아요 !HTTPS를 사용하려면 SSL/TLS 인증서가 필요하고, 포트만 열어준다고 해서 암호화 통신이 자동으로 되는 건 아니에요 !현업에서는 보통 Nginx 같은 리버스 프록시를 앞단에 두고, 여기서 SSL 인증서를 설정해서 HTTPS를 처리하는 방식을 많이 써요 !이렇게 하면 Next.js 컨테이너는 내부적으로 HTTP(3000번)로 통신하고, 외부와의 HTTPS 통신은 Nginx가 담당하는 구조가 돼요 !특히 Let's Encrypt를 사용하면 무료로 인증서를 자동 발급받고 갱신할 수 있어서 많이 활용돼요 !AWS 같은 클라우드 환경이라면 ALB(Application Load Balancer)나 CloudFront에서 SSL 처리를 해주는 방식도 많이 사용돼요 !이 경우에도 컨테이너 레벨에서는 HTTP만 처리하고, SSL은 로드밸런서가 담당하게 되는 거예요!정리하자면, 실제 서비스에서는 컨테이너가 직접 HTTPS를 처리하기보다는 앞단에 Nginx나 로드밸런서를 두고 SSL 처리를 위임하는 방식이 일반적이에요 :)추가로 궁금하신 점 있으시면 언제든 질문 남겨주세요~~
- 0
- 2
- 27
질문&답변
sql 볼륨 폴더 지우면 데이터베이스 데이터 날라가는거 아닌가요?
안녕하세요 혜진님 ! 질문 잘해주셨어요 !질문해 주신 내용에 대해 답변드려볼게요 ~ "mysql_data 폴더 지우고 다시 폴더 만들면 데이터베이스 안에 있는 데이터가 다 날라가는거 아닌가요? 그럼 볼륨을 사용하는 이유가 없을거 같아서요"-> 맞아요 ! mysql_data 폴더를 직접 삭제하면 그 안에 있던 데이터베이스 데이터도 모두 삭제돼요 !하지만 Volume을 사용하는 핵심 목적은 "호스트의 폴더를 삭제하지 않는 한" 컨테이너를 삭제하고 재생성해도 데이터가 유지된다는 점이에요 !컨테이너를 삭제하고, 새로운 컨테이너를 생성하면서 동일한 Volume을 연결하면 이전에 만들었던 데이터베이스가 그대로 남아있어요 !일반적인 상황에서는 mysql_data 폴더를 직접 삭제할 일이 없어요 !컨테이너는 업데이트나 설정 변경 등의 이유로 자주 삭제하고 재생성할 수 있지만, Volume으로 연결된 호스트의 mysql_data 폴더는 그대로 유지하면서 데이터를 보존하는 게 Volume의 핵심 역할이에요 !정리하면 Volume은 컨테이너의 생명주기와 데이터의 생명주기를 분리하기 위한 기능이라고 보시면 돼요 :)추가로 또 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~~
- 0
- 2
- 17
질문&답변
default.conf 파일이 없습니다.
안녕하세요 ! 질문 잘해주셨어요 !질문해 주신 내용에 대해 답변드려볼게요 ~/etc/nginx/conf.d 폴더에 default.conf 파일이 없는 이유는 Nginx 설치 방법에 따라 설정 파일 위치가 달라지기 때문이에요 !Ubuntu 기본 저장소(sudo apt install nginx)로 설치하시면 설정 파일이 /etc/nginx/sites-available/default 경로에 위치하게 돼요 !수업자료에서 안내드린 대로 Nginx 공식 저장소를 추가해서 설치하셔야 /etc/nginx/conf.d/default.conf 파일이 생성돼요~기존 Nginx를 삭제하고 수업자료의 설치 과정을 처음부터 다시 실습하시는 걸 추천드려요 !sudo apt remove nginx와 sudo apt purge nginx 명령어로 기존 Nginx를 삭제하신 후, "Ubuntu 환경에서 Nginx 설치하기" 부분을 다시 진행해 보세요 !또한 Nginx를 삭제하시는 게 번거로우시다면 EC2 인스턴스를 새롭게 생성하신 뒤 실습을 진행해 보시는 것도 좋아요 :)다시 시도해보시고 혹시 또 문제가 생기시면 언제든 질문 남겨주세요 !!늘 파이팅입니다 😄
- 0
- 2
- 26
질문&답변
39강 도커파일 빌드 경로 질문이 있습니다.
안녕하세요 ! 질문 잘해주셨어요 !질문해 주신 내용에 대해 답변드려볼게요 ~절대경로도 물론 동작은 하지만, 실무에서는 상대경로를 압도적으로 많이 사용해요 !가장 큰 이유는 이식성 때문이에요 ~프로젝트를 다른 환경이나 다른 사람의 컴퓨터로 옮겼을 때, 절대경로는 매번 수정해야 하지만 상대경로는 그대로 사용할 수 있어요 !특히 협업 환경에서는 팀원마다 프로젝트를 저장하는 경로가 다를 수 있어서, 상대경로를 쓰면 각자 어디에 두든 상관없이 동일하게 작동하게 되요 !말씀하신 자동화 부분도 맞아요 !Jenkins, GitHub Actions 같은 CI/CD 파이프라인에서는 빌드 환경의 절대경로를 미리 알 수 없는 경우가 많아요 !상대경로를 쓰면 어떤 환경에서든 자동으로 동작하게 되는 거죠 !또한 Docker는 빌드 컨텍스트(Build Context)라는 개념을 사용하는데, .은 "현재 디렉토리를 빌드 컨텍스트로 사용하겠다"는 의미예요 !이게 Docker의 표준 방식이고, 실무에서는 거의 모든 경우에 상대경로를 사용한다고 보시면 돼요 !추가로 궁금하신 점 있으시면 편하게 질문 남겨주세요~~
- 0
- 2
- 28
질문&답변
이것도 포트폴리오에 넣어야할까요?
안녕하세요 수현님 ! 질문 잘해주셨어요 !질문해 주신 내용에 대해 답변드려볼게요 ~ 우선 추천시스템 관련해서는 포트폴리오에 작성하시는 걸 추천드려요 !다만, 수치적 증명이 어려운 상황이시라면 "품질을 개선했다"라고 단정 짓기보다는 "품질 개선을 위해 이러한 접근을 시도했다" 정도로 표현하시는 게 좋을 것 같아요~면접관 입장에서는 결과 자체보다 "왜 이상치가 추천 품질에 영향을 준다고 생각했는지", "왜 KMeans와 DBSCAN을 선택했는지" 같은 사고 과정에 더 관심을 가지는 경우가 많거든요!추가로 가능하시다면, 이상치 제거 전/후로 간단한 비교 지표를 만들어보시는 것도 방법이에요 :) Kafka 클러스터와 쿠버네티스 배포 관련해서도 작성하시는 걸 추천드려요!말씀하신 대로 단순히 "배포했다"만 적으면 차별점이 없을 수 있지만, 사고 흐름과 트러블슈팅 과정이 기록되어 있다면 충분히 가치가 있어요 ! 오히려 실무에서는 "어떤 문제를 만났고, 어떻게 해결했는지"가 훨씬 중요하거든요!정리하자면, 두 가지 모두 포트폴리오에 작성하시되 "결과" 보다는 "과정과 사고흐름"에 초점을 맞춰서 작성하시는 걸 추천드려요 :)추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~
- 0
- 2
- 35
질문&답변
도커파일 copy
안녕하세요 ! 질문 잘해주셨어요 !질문해 주신 내용에 대해 답변드려볼게요 ~ 말씀해 주신 현상은 Docker의 이미지 캐싱(Caching) 때문에 발생하는 문제예요 !Docker는 이미지를 빌드할 때 효율성을 위해 레이어를 캐싱하는데, Dockerfile의 내용이 변경되지 않으면 이전에 빌드된 캐시를 재사용해요 ! 그래서 my-app 폴더를 추가했는데도 같은 이미지 이름(my-server)로 빌드하면 캐시된 이전 버전이 사용되어 변경사항이 반영되지 않는 거예요! 해결 방법은 크게 3가지가 있어요 !첫 번째는 지금 하신 것처럼 새로운 이미지 이름(my-server-test)으로 빌드하는 방법이에요 !두 번째는 docker build —no-cache -t my-server . 명령어로 캐시를 무시하고 빌드하는 방법이에요 !세 번째는 docker build -t my-server:2.0 . 이렇게 이미지 태그 버전을 변경하는 방법이 있어요 !실무에서는 보통 캐시를 무시하거나 버전을 명시하는 방법을 많이 사용해요 !특히 버전을 명시하는 게 이미지 관리에 좋아요 :) 추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~
- 0
- 2
- 31
질문&답변
CodeDeploy 사용시 registration 요구
안녕하세요 ! 질문 잘해주셨어요 !질문해 주신 내용에 대해 답변드려볼게요 ~ 우선 AWS 계정 활성화 관련 문제로 보이네요 !화면에 나온 메시지를 보면, AWS 계정이 아직 완전히 활성화되지 않은 상태 같아요 ~다른 AWS 서비스(EC2, S3 등)는 계정 활성화가 완료되지 않아도 일부 사용이 가능한데, CodeDeploy 같은 서비스는 계정이 완전히 활성화되어야만 접근이 가능해서 이런 문구가 뜨는 거예요 !화면 하단에 "It might take up to 24 hours to fully activate your AWS services" 라고 적혀있는데요, AWS 계정을 새로 만드셨다면 완전히 활성화되기까지 최대 24시간이 걸릴 수 있어요 ~그리고 Account setup checklist에 있는 내용대로 결제 수단인 카드 등록이 제대로 되어 있는지, AWS에서 보낸 이메일에 응답해야 할 게 있는지, 신용카드 인증이 완료되었는지도 한번 확인해 보시면 좋을 것 같아요!만약 계정을 만든 지 얼마 안 되셨다면 조금 기다려보시고, 24시간이 지났는데도 동일한 문제가 발생한다면 AWS Support에 문의해보시는 걸 추천드려요 :) 추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요 ~
- 0
- 3
- 40
질문&답변
실무에서 docker compose up --build를 할 때
안녕하세요 ! 질문 잘해주셨어요 !질문해 주신 내용에 대해 답변드려볼게요 ~"docker compose up —build 같은 명령어는 실무에서 보통 기존 컨테이너를 중지한 다음에 하는 건가요? 아니면 실행 중인 상태에서 바로 저 명령어를 쓰는 편인가요? 상관없나요?"-> 우선 실행 중인 상태에서 바로 docker compose up —build를 실행해도 괜찮아요 !Docker Compose가 알아서 변경된 부분을 감지하고, 필요한 컨테이너만 재생성해주기 때문에 굳이 먼저 중지하지 않아도 돼요 !다만 실무에서는 상황에 따라 다르게 사용하기도 해요 ~개발 환경에서는 빠르게 변경사항을 반영해야 하니까 실행 중인 상태에서 바로 docker compose up —build를 많이 사용해요 !반면 운영 환경에서는 안정성을 위해 docker compose down으로 먼저 중지한 다음 docker compose up —build를 실행하는 경우도 있어요 ! 혹시 모를 충돌이나 예상치 못한 상황을 방지하기 위해서요!정리하면, 실무에서 두 방식 모두 사용되며 개발 환경에서는 편의성을 위해 바로 docker compose up —build를 실행하는 경우가 많고, 운영 환경에서는 안정성을 고려해 컨테이너를 내렸다가 다시 올리거나 무중단 배포 구조를 함께 사용하는 편이에요 !이런 부분은 정답이 있다기보다는 현재 환경과 상황에 맞춰 선택하시면 돼요 :) 추가로 궁금하신 점 있으시면 언제든 편하게 질문남겨주세요 ~
- 0
- 2
- 42




