jscode
@jscode
受講生
29,028
受講レビュー
2,005
講義評価
4.9
[Sites]
Youtube 바로가기
LinkedIn 바로가기
[Career]
現) JSCODE - 대표 멘토, CEO
前) (주)트라이포드랩 - CTO
前) (주)온리원유니버스 - CTO
前) 달리(DALY) - CTO
前) 팀메이트(Teammate) - CEO
[Books]
『Do it! JSCODE의 AWS 입문』, 이지스퍼블리싱 (2025.05)
[ETC]
- 기업 대상 개발 컨설팅 및 코딩 교육 활동
講義
受講レビュー
- IT、コーディング、プログラミング連合サークル合格自己紹介書13種
- 非専門家でも理解できる Linux 入門/実践
- 非専攻者でも理解できるMSA入門/実戦 (feat. Spring Boot)
投稿
Q&A
로드밸런싱 Server ID 출력에 관한 질문
안녕하세요 ! 질문 너무 잘 해주셨어요 ~질문해 주신 내용에 대해 답변드려볼게요 !"위 코드에서는 사실 서버는 1대이고, 포트번호만 8080과 8081로 로드밸런싱한 것 아닌가요?"-> 네 맞아요! 물리적으로는 1대의 EC2 서버에서 Spring Boot 애플리케이션 2개를 서로 다른 포트(8080, 8081)로 실행시킨거예요 !"실제로 서버 2대로 로드밸런싱을 하려면 localhost:8080과 localhost:8081 자리에 서버 도메인 주소가 들어가면 되는 건가요?"-> 네 맞아요 ! localhost 대신 각 서버의 IP 주소나 도메인을 넣어주시면 돼요 !"제가 말한 것이 맞다면 /health에 요청할 때마다 나타나는 Server ID는 같아야 하는 것인데, 왜 다르게 나오는 건가요?"-> Server ID는 물리적 서버를 구분하는 게 아니라, 각 Spring Boot 애플리케이션(프로세스)을 구분하는 값이에요 !8080 포트와 8081 포트에서 실행되는 Spring Boot 애플리케이션은 각각 독립적인 프로세스에요 !각 애플리케이션은 별도의 JVM에서 실행되고, 별도의 메모리 공간을 가지며, 별도의 Server ID를 생성해요 !그래서 /health 엔드포인트를 호출할 때마다 Nginx가 8080과 8081로 번갈아가며 요청을 보내기 때문에, 서로 다른 Server ID가 반환되는 거예요! 이게 바로 로드 밸런싱이 제대로 작동하고 있다는 증거에요 :)추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요 ~
- 0
- 2
- 18
Q&A
도커 허브에서 postgres 버전 확인하는 법
안녕하세요 ! 질문 너무 잘 해주셨어요 ~질문해 주신 내용에 대해 답변드려볼게요 !"도커 허브에 있는 postgres:latest인데https://hub.docker.com/layers/library/postgres/latest/images/sha256-c84595a367a3fe5a4d9dce011490da38c462190e6ac7afb7d2a4c49436c80656이건 postgres 몇 버전인가요?"-> 현재 postgres:latest는 PostgreSQL 18.1 버전이에요!해당 링크의 Layers 섹션에서 확인할 수 있어요 ~Ctrl + F로 'PG_MAJOR' 와 'PG_VERSION'를 검색해 보시면 아래의 버전 정보를 확인할 수 있어요 !ENV PG_MAJOR=18ENV PG_VERSION=18.1-1.pgdg13+2여기서 PG_MAJOR=18이 PostgreSQL 메이저 버전이고, PG_VERSION=18.1-1.pgdg13+2가 정확한 버전 정보에요 :)"newest는 postgres:14.20-alpine3.23인데, 이건 14 버전인가요? "-> 네 맞아요 ! 14.20이 PostgreSQL 버전이에요 !newest는 "가장 최근에 push된 이미지"를 의미해서, 꼭 최신 버전이 아닐 수 있어요! 그래서 14 버전 이미지가 newest로 뜬 거예요 :)추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요 ~
- 0
- 2
- 25
Q&A
보충 자료와도 관련된 추가 내용
안녕하세요 11 1님!! 수업 들으시면서 시행착오 겪으신 내용 공유해주셔서 감사합니다ㅎㅎ다른 수강생분들한테도 도움이 될 것 같네요!감사합니다~~~
- 1
- 1
- 15
Q&A
mysql_data 폴더 내부에 다른 파일이 있는데도 잘 되는 경우
안녕하세요 ! 질문 너무 잘 해주셨어요 ~질문해 주신 내용에 대해 답변드려볼게요 !우선 "mysql_data 폴더 내부에 파일이 있으면 안 된다"는 것은 MySQL을 처음 실행할 때의 이야기예요 ! 그래야 MySQL 컨테이너 내부의 /var/lib/mysql 파일들이 호스트의 mysql_data 폴더로 복사되거든요 !하지만 이미 볼륨에 MySQL 데이터가 정상적으로 저장된 이후에는 컨테이너를 삭제하고 다시 생성해도 오류가 나지 않아요 ! MySQL 컨테이너는 새로 초기화하지 않고 기존 데이터를 그대로 사용하며 오히려 이게 볼륨의 목적이에요 ! 그래서 pwd1234로 바꿔서 컨테이너를 다시 생성했을 때 오류가 안 난 거예요! 이때 -e MYSQL_ROOT_PASSWORD=pwd1234로 새로운 비밀번호를 설정하더라도, 이미 초기화된 데이터베이스가 있기 때문에 이 환경변수는 무시돼요 ! 결과적으로 새로운 비밀번호 설정이 적용되지 않고 기존 비밀번호(password123)가 그대로 유지되는 거죠 🙂 즉, "폴더가 비어있어야 한다"라는 건 최초 1회 실행 시에만 해당되는 내용이고, 이후에는 기존 데이터를 재사용하는 게 정상이에요 !추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~~
- 0
- 2
- 20
Q&A
현업에서 MySQL은 RDS와 도커 볼륨 중 어떤 걸 사용하나요?
안녕하세요 11 1님! 질문 잘 해주셨어요~~~어느 정도 서비스의 안정성이 중요해진 기업에서는 AWS에서 제공하는 고가용성과 다양한 편리한 기능들 때문에Docker로 MySQL을 띄워서 사용하는 것보다RDS를 사용하는 경우가 많습니다:D이 외로 또 궁금한 점 있으시면 질문 남겨주세요~~
- 0
- 2
- 35
Q&A
노션 자료에 안 보이는 이미지가 있습니다
안녕하세요 11 1님! 제보해주셔서 감사합니다ㅎㅎ말씀해주신 덕분에 안 보이는 이미지를 다른 이미지로 교체했습니다! 감사합니다:D
- 0
- 1
- 26
Q&A
default.conf
안녕하세요 ! 질문 잘해주셨어요 !질문해 주신 내용에 대해 답변드려볼게요 ~이전에 해당 파일을 실수로 삭제했거나, 설치 방법 및 운영체제와 같은 서버 환경에 따라 기본 설정 파일 경로가 다른 경우 /etc/nginx/conf.d/default.conf 파일이 보이지 않을 수 있어요 !HTTPS 인증서가 정상적으로 발급된 상태라면, Nginx 설정 파일 어딘가에 # managed by Certbot이라는 주석이 반드시 들어 있어요!아래 명령으로 실제로 사용 중인 설정 파일을 확인해 보시는 걸 추천드려요 !sudo nginx -tsudo find /etc/nginx -name "*.conf"sudo grep -R "managed by Certbot" /etc/nginx이 명령을 통해 Certbot이 수정한 설정 파일의 정확한 위치를 찾으실 수 있고, 강의에서 설명드린 HTTPS 관련 코드는 경로만 다를 뿐 내용과 의미는 동일하니 그대로 이해하시면 돼요:)혹시 위 방법으로도 찾기 어려우시면 현재 어떤 경로에 어떤 파일들이 있는지에 대한 내용과 함께 언제든 편하게 추가 질문 주세요 ~~늘 파이팅입니다 😄
- 0
- 2
- 31
Q&A
도커 허브에서의 latest가 가장 최신인 게 맞나요?
안녕하세요 ! 질문 잘해주셨어요 ! 많은 분들이 헷갈려 하시는 부분이에요 !질문해 주신 내용에 대해 답변드려볼게요 ~우선 Docker Hub에서 latest 태그는 가장 최신 이미지를 자동으로 가리키는 게 아니고 그냥 하나의 태그일 뿐이에요 !이미지 관리자가 "이 버전을 latest로 하자!"라고 수동으로 지정하는 거예요 ~말씀하신 것처럼 trixie-perl이 시간상으로는 더 최근에 푸시된 이미지가 맞아요 !하지만 이건 Debian Trixie 기반에 Perl 모듈이 포함된 특수 목적용 이미지에요 !반면 latest 태그는 대부분의 사용자들이 범용적으로 사용할 수 있는 안정적인 기본 버전을 가리키도록 관리자가 설정해놓은 거예요 !nginx 이미지 관리자 입장에서는 사용자들이 docker pull nginx 했을 때 가장 범용적이고 안정적인 버전을 제공하고 싶은 거죠:)그래서 시간상으로 최신은 아니더라도 가장 많은 사람들이 안전하게 쓸 수 있는 버전을 latest로 유지하는 거예요 !추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~
- 0
- 2
- 46
Q&A
보안그룹질문입니다.
안녕하세요 ! 질문 잘해주셨어요 !답변 알림이 누락되어 늦게 질문 확인한 점 죄송합니다ㅠㅠ! 질문해 주신 내용에 대해 하나씩 답변드려볼게요 ~ "1. 로드밸런서용 보안그룹랑 EC2용 보안그룹 인바운드 규칙을 0.0.0.0/0이렇게 두니까 불안해서 혹시 아래처럼 설정하는것 맞자요?"-> 네 맞아요 ! 말씀해 주신 패턴이 AWS에서 권장하는 방식에요 !LB-SG에서만 외부 트래픽을 받고, EC2-SG는 LB-SG로부터만 트래픽을 허용하는 구조가 보안상 훨씬 안전해요 :) "2. ec2에서 보안그룹을 아래처럼 냅두면 https로 접속이 안되는데요. 근데 0.0.0.0/0으로 풀어놓으면 됩니다. 어떻게 해야하나요?"-> EC2 보안그룹의 HTTP/HTTPS 인바운드 규칙 소스를 로드밸런서 보안그룹(LB-SG) 으로 설정하셔야 해요 !소스 타입을 "사용자 지정"이 아니라 "보안 그룹" 으로 선택하고 거기서 lb-sg를 선택해주시면 돼요 !이렇게 하면 인터넷 → 로드밸런서 → EC2 순으로 트래픽이 흐르게 되어 0.0.0.0/0으로 안 열어두셔도 정상적으로 접속이 돼요 :) "3.ec2에서 ssh를 내 ip로 등록하니까 크롬 aws 에서 접속인안되는데 어떻게 해야하나요? 0.0.0.0/0으로 풀어놓으면 됩니다."-> 우선 해당 상황은 정상적인 동작이에요! AWS 콘솔에서 브라우저로 SSH 접속하는 기능(EC2 Instance Connect)은 AWS의 IP 대역에서 접속을 시도하기 때문에, 내 IP만 열어두면 당연히 막히게 돼요 !해결 방법은 간단해요 ! SSH(22번 포트) 인바운드 규칙의 소스를 0.0.0.0/0으로 변경해 주시는 거예요 !보안상 SSH를 전체 공개하는 게 걸리실 수도 있는데, SSH 키 인증 방식을 사용하고 계시기 때문에 키 파일 없이는 접속이 불가능해서 충분히 안전해요!! 실무에서도 대부분 SSH 키 인증으로 보안을 유지하면서 0.0.0.0/0으로 열어놓고 사용하는 편이에요:) 추가로 궁금하신 점 있으시면 언제든 편하게 질문 주세요~~
- 0
- 2
- 33
Q&A
RDS 파라미터를 만들었는데 추가구성 데이터 옵션에 토글 버튼에 해당 그룹이 안나옵니다. 어떻게 해야하나요?
안녕하세요 ! 질문 잘해주셨어요 !질문해 주신 내용에 대해 답변드려볼게요 ~"파라미터를 만들었는데 추가구성 데이터 옵션에 토글 버튼에 해당 그룹이 안나옵니다. 어떻게 해야하나요?"-> 파라미터 그룹의 패밀리와 RDS 인스턴스의 데이터베이스 엔진이 서로 달라서 드롭다운에 표시되지 않고 있네요 !첫 번째 이미지를 보면 파라미터 그룹을 mysql8.0 패밀리로 생성하셨는데, 두 번째 이미지를 보면 RDS 인스턴스는 MariaDB 11.4로 생성되어 있어요 !파라미터 그룹은 동일한 엔진과 버전에서만 사용할 수 있기 때문에, MySQL용으로 만든 파라미터 그룹은 MariaDB 인스턴스에 적용할 수 없어요 !RDS를 MySQL로 다시 생성하시면 해당 그룹이 잘 나오실 거예요 :)추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~
- 0
- 2
- 33




