실습 로그
AWS와 홈랩을 구축하면서 단계별로 남긴 실습 로그입니다. 주황색 태그는 그 글에 담긴 트러블슈팅 사례입니다.
어떻게 쓴 글인가요?
- 진행 과정
- 실습하면서 한 작업과 트러블슈팅을 AI와 함께 정리했습니다.
- 배운 점
- 정리된 과정을 다시 보면서 제가 이해한 내용을 썼습니다. 초록색 상자로 따로 표시했습니다.
AWS 인프라 10단계 9개 단계 · 계획 전체 10단계 · 트러블슈팅 15건
-
09
AWS 9단계 · CloudWatch 모니터링
8단계에서 배포한 ECS 서비스의 로그와 지표를 CloudWatch에서 확인하고, 이상 상황을 이메일로 통보받는 경로를 구성한다.
진행 과정
트러블슈팅 1건
- 구독 확인 메일이 스팸함으로 분류되어 있었다
-
08
AWS 8단계 · Docker·ECS
7단계에서 EC2에 직접 설치해 운영하던 웹 서버를 컨테이너 이미지로 만들고, ECS Fargate에서 실행되도록 전환한다.
진행 과정직접 쓴 배운 점
트러블슈팅 3건
- docker run 이 데몬에 연결하지 못함
- 브라우저에서 접속 실패 (ERR_CONNECTION_REFUSED)
- 컨테이너 이름 충돌 (Conflict. The container name is already in use)
-
07
AWS 7단계 · Terraform 기반 Private RDS 구축
퍼블릭 EC2와 프라이빗 RDS를 분리해 구성하고, DB가 외부에서 직접 접근되지 않는 구조를 Terraform 코드로 만든다.
진행 과정직접 쓴 배운 점
-
06
AWS 6단계 · Terraform 자동화
1~5단계에서 콘솔로 구축한 인프라를 Terraform 코드로 재작성하여, 명령어 한 줄로 생성·삭제할 수 있는 구조로 전환한다.
진행 과정직접 쓴 배운 점
트러블슈팅 2건
- 액세스 키 노출
- 로컬 state로 인한 다중 기기 작업 제약
-
05
AWS 5단계 · ALB·Auto Scaling
서버 1대짜리 구조를 여러 AZ에 분산된 다중 서버 구조로 전환하고, 장애 발생 시 자동으로 복구되는지 검증한다.
진행 과정직접 쓴 배운 점
트러블슈팅 2건
- 502와 정상 페이지가 번갈아 표시됨
- 새로 생성된 서버에 수정 내용이 없음
-
04
AWS 4단계 · VPC·보안 설정
지금까지 만든 서버가 어떤 네트워크 위에 올라가 있는지 확인하고, 퍼블릭 주소를 고정한 뒤 접근 권한을 필요한 만큼으로 좁힌다.
진행 과정직접 쓴 배운 점
트러블슈팅 1건
- SSH를 내 IP로 제한한 뒤 EC2 Instance Connect 접속 실패
-
03
AWS 3단계 · 장애 발생 및 트러블슈팅
일부러 장애를 만들고, 로그/명령어로 원인을 진단하고 복구하는 연습
진행 과정직접 쓴 배운 점
트러블슈팅 5건
- 장애 1: Nginx 설정 파일 문법 오류
- 장애 2: 보안 그룹으로 80번 포트 차단
- 장애 3: HTML 파일 권한 오류 (403 에러)
- 장애 4: Nginx 프로세스 중지
- 브라우저에 변경사항이 반영되지 않음
-
02
AWS 2단계 · 커스텀 웹페이지 배포
기본 Nginx 페이지 대신 직접 만든 HTML 페이지로 교체하기
진행 과정직접 쓴 배운 점
트러블슈팅 1건
- 한글이 물음표(�)로 깨져서 표시됨
-
01
AWS 1단계 · EC2 + Nginx 기본 배포
AWS EC2에 Nginx 웹서버를 배포해서 브라우저로 외부 접속에 성공하는 것을 목표로 함.
진행 과정직접 쓴 배운 점
Proxmox 홈랩 6개 단계 · 계획 전체 8단계 · 트러블슈팅 19건
-
08
홈랩 8단계 · 홈랩 운영 점검
운영 중인 VM 4대(portfolio, careernavi, yeoulmok, calendar)의 상태를 한 번에 점검하고, 시간대·스냅샷·Guest Agent·커널 버전을 통일해서 관리하기 쉬운 상태로 만든다.
진행 과정
트러블슈팅 2건
- 엉뚱한 VM이 재부팅됨
- yeoulmok "Guest Agent not running"
-
07
홈랩 7단계 · 홈랩 통합 모니터링
홈랩 서버 4대(Proxmox 호스트, portfolio, ecg, paper)의 상태를 한 화면에서 보고, 서버가 죽거나 디스크·메모리가 차면 알 수 있게 알림 규칙까지 넣는다.
진행 과정직접 쓴 배운 점
트러블슈팅 3건
- paper VM 로그인 실패
- 복구 모드에서 Proxmox 재부팅 버튼이 안 먹힘
- Grafana 비번을 모름
-
04
홈랩 4단계 · 도메인·HTTPS로 외부 공개
Tailscale 사설망에서만 보이던 포트폴리오 사이트를 도메인(ihaewon.com)으로 외부에 공개한다. 공유기 포트는 열지 않고 Cloudflare Tunnel로 연결하며, HTTPS를 적용한다.
진행 과정직접 쓴 배운 점
트러블슈팅 1건
- 하위 페이지가 http로 넘어감
-
03
홈랩 3단계 · 포트폴리오 사이트 컨테이너 배포
portfolio VM에 웹 서버를 컨테이너로 띄우고, 포트폴리오 사이트를 배포한다.
진행 과정직접 쓴 배운 점
트러블슈팅 5건
- hugo --minify 빌드 실패
- ssh-keygen 키 저장 실패
- VM에서 hugo 빌드 실패 (Hugo 버전 차이)
- 명령어를 엉뚱한 터미널에서 실행
- 데스크톱에서 VM SSH 접속 timeout
-
02
홈랩 2단계 · VM 원격 접속과 Docker 환경 구성
1단계에서 만든 Ubuntu VM에 맥북에서 SSH로 바로 접속할 수 있게 하고, Docker를 설치해 컨테이너를 실행할 수 있는 환경을 만든다.
진행 과정직접 쓴 배운 점
트러블슈팅 4건
- Proxmox 콘솔에 키보드 입력이 안 됨
- docker run 시 permission denied
- 디스크를 40GiB 줬는데 18.5GB만 잡힘
- tailscale: command not found
-
01
홈랩 1단계 · Proxmox 설치와 원격 접속 구성
미니PC(FIREBAT F2)에 Proxmox VE를 설치해 물리 서버 한 대 위에서 여러 VM을 운영할 수 있는 기반을 만든다.
진행 과정직접 쓴 배운 점
트러블슈팅 4건
- USB로 부팅해도 윈도우로 넘어감
- 설치 직후 apt-get update 실패
- No-Subscription 저장소 연결 실패 (IPv6)
- Tailscale 인증 링크 404
산학 실시간 심전도 처리 서버 7개 단계 · 계획 전체 10단계 · 트러블슈팅 12건
-
07
산학 7단계 · 부하테스트용 기준 AI 모델
공개 데이터(PTB-XL)로 기준 CNN을 직접 학습해 시험셋 민감도 0.929·특이도 0.883·AUC 0.969를 얻고, 모델 6종이 정확도는 비슷하지만 판정 속도는 16배 차이 나는 것을 확인했다.
진행 과정직접 쓴 배운 점
트러블슈팅 2건
- 학습 데이터 다운로드가 하루 넘게 걸림
- "병목은 모델 크기"라는 가설이 틀림
-
06
산학 6단계 · 생성기 MQTT 송신
생성기가 TCP 말고 MQTT로도 보낼 수 있게 해서, 같은 데이터를 두 방식으로 보내 지연·유실·재연결을 비교할 준비를 한다.
진행 과정직접 쓴 배운 점
트러블슈팅 1건
- MQTT 테스트에서 1,000건 중 900건만 받음
-
05
산학 5단계 · 환자 수별 부하테스트와 모니터링
테스트 서버(ecg VM)에서 환자 수를 6 → 20 → 50 → 100명으로 늘리며 끝단 지연과 유실을 재고, 서버가 어디서 버티지 못하는지 찾는다.
진행 과정직접 쓴 배운 점
트러블슈팅 3건
- 컨테이너별 그래프만 No data
- 적체·중복 숫자가 실제와 다름
- 100명 심박이 다 비슷함
-
04
산학 4단계 · 수신부 연결과 전체 시연
팀원이 만든 수신부·Redis·워커를 테스트 서버(ecg VM)에 띄우고, 내 생성기와 연결해 끝까지 이어지는지 확인한다.
진행 과정직접 쓴 배운 점
트러블슈팅 4건
- R파 위치가 실제보다 늦게 찍힘
- 임시 모델 민감도 0
- Connection refused
- cnn·demo 모드에서 판정마다 nbeat 오류 (10/15)
-
03
산학 3단계 · TCP 전송과 3리드 데이터
생성기에 TCP 전송을 붙이고, 실제 장비와 맞춰 3리드 데이터로 바꾼다.
진행 과정직접 쓴 배운 점
트러블슈팅 2건
- 메시지가 목표보다 10개 더 나감
- push 거부 (non-fast-forward)
-
02
산학 2단계 · 서버 연결 방식 설계
생성기에서 나간 심전도가 서버까지 어떻게 갈지, 어떤 형식으로 보낼지 수신부 담당 팀원과 정한다.
진행 과정직접 쓴 배운 점
-
01
산학 1단계 · 가상 환자 스트림 생성기
실제 환자 없이 서버를 시험하기 위해, 공개 심전도 데이터를 잘라서 가상 환자 N명이 실시간으로 보내는 것처럼 흉내 내는 생성기를 만든다.
진행 과정직접 쓴 배운 점
Frozen Stiff · 융합캡스톤디자인 게임 3개 단계 · 계획 전체 4단계 · 트러블슈팅 5건
-
03
캡스톤 3단계 · 플레이 기록 서버 개선 1차
기획자 요청대로 테스터들이 집에서 보낸 기록을 브라우저 주소창만으로 내려받고 요약해볼 수 있게 서버를 고치고, 홈랩 VM에 올려 외부에서 접속되게 한다.
진행 과정
트러블슈팅 2건
- 토큰 자리에 예시 글자가 그대로 들어감
- 터널 커넥터가 두 개 뜸
-
02
캡스톤 2단계 · 플레이 기록 수집 서버
게임과 무관하게 단독으로 돌아가면서, 게임이 보내는 사건 기록을 받아 run_id별로 저장하고, 조회·다운로드까지 되는 서버를 만든다.
진행 과정직접 쓴 배운 점
-
01
캡스톤 1단계 · GodotSteam 검증
Godot 4.6 환경에서 GodotSteam(Steam 연동 GDExtension)이 실제로 동작하는지, Steam 로그인·로비 생성까지 되는지 확인해 검증 보고서를 쓴다.
진행 과정직접 쓴 배운 점
트러블슈팅 3건
- GodotSteam이 Asset Library에 안 뜸
- macOS "앱이 손상되었기 때문에 열 수 없습니다"
- 로비 생성 콜백(lobby_created)이 안 옴
여울목 · 계곡 급류 사전경보 서비스 3개 단계 · 계획 전체 7단계 · 트러블슈팅 7건
-
03
여울목 3단계 · 관측 데이터 수집과 DB
원주 대상 계곡을 정하고, 계곡별로 쓸 강수·수위 관측소를 찾아 API로 데이터를 받을 수 있는지 확인한다. 이후 서버가 주기적으로 수집해 DB에 쌓는다.
진행 과정직접 쓴 배운 점
트러블슈팅 2건
- 관측소 전체 목록 API 응답이 중간에 잘림
- 1시간 자료 조회에서 값이 전부 비어 나옴
-
02
여울목 2단계 · 기능 정의와 API 명세
10/29 회의에서 정한 기능을 화면으로 옮기고, 서버와 앱·웹이 주고받을 API 명세를 정한다.
진행 과정직접 쓴 배운 점
트러블슈팅 2건
- Figma가 무료 플랜으로 연결됨
- 교육 플랜인데 좌석이 View로 나옴
-
01
여울목 1단계 · 깃허브 세팅
서버 코드를 올릴 GitHub 저장소를 팀 조직 아래 만들고, 홈랩 서버 VM에서 바로 받고 올릴 수 있게 연결한다.
진행 과정직접 쓴 배운 점
트러블슈팅 3건
- 조직 저장소에 배포 키를 추가할 수 없음
- "Key is already in use"로 배포 키 등록 실패
- API 키를 불러왔는데 값이 비어 있음
미용실 AI 사전 상담 서비스 1개 단계 · 계획 전체 4단계
-
01
모두의 창업 1단계 · 지원서 작성과 1라운드 선발
미용실 사전 상담 아이디어로 2차 모두의 창업에 지원하고, 요건검토를 통과해 1라운드에 진출한다.
진행 과정
MiCAL · 학사·학과·장학금 일정 통합 캘린더 3개 단계 · 계획 전체 5단계 · 트러블슈팅 7건
-
03
MiCAL 3단계 · 화면과 API 연결
(진행 중) 프론트 팀이 만든 새 프로토타입을 서버에 올리고, 2단계에서 DB에 넣은 실제 일정(742건)이 프로토타입 캘린더에 뜨게 연결한다. 프론트 팀 코드는 최소로만 건드린다.
진행 과정
트러블슈팅 1건
- 주간 보기에서 일정이 세로 글씨로 찌그러짐
-
02
MiCAL 2단계 · 백엔드 배포와 데이터 적재
(진행 중) 1단계에서 만든 서버 위에 Django 백엔드(회원가입·로그인, 일정 API)와 PostgreSQL을 실제로 띄우고, 팀원 크롤러가 모은 학사·장학금·공모전·비교과 데이터를 DB에 넣는다. 팀원 중 서버가 필요한 사람에게만 계정을 준다.
진행 과정직접 쓴 배운 점
트러블슈팅 3건
- 크롤러 결과 저장 실패 (Permission denied)
- 소프트웨어학부 공지만 SSL 오류
- 컨테이너를 띄운 직후 curl이 Connection reset
-
01
MiCAL 1단계 · 저장소와 서버 구축
팀 저장소를 만들고 역할별 폴더를 나눈 뒤, 홈랩에 이 프로젝트 전용 VM을 만들어 프론트 시안을 calendar.ihaewon.com으로 외부 공개한다.
진행 과정직접 쓴 배운 점
트러블슈팅 3건
- SSH 키를 등록했는데 계속 비번을 물어봄
- 32GB로 만든 VM 디스크가 14GB로 잡힘
- calendar.ihaewon.com이 안 열림 (ERR_NAME_NOT_RESOLVED)
반려동물 위탁돌봄 인수인계 점검 AI 5개 단계 · 계획 전체 8단계 · 트러블슈팅 1건
-
05
돌봄 논문 5·6단계 · 챌린지 결선과 2쪽 원고 투고
AI 기술 혁신 챌린지 결선에 맞춰 학술지 원고(6쪽)를 학술대회 캡스톤 양식 2쪽으로 줄여 투고한다.
진행 과정
-
04
돌봄 논문 4단계 · 학술지 투고
실험 결과를 논문으로 정리해 학회 학술지(JAMS)에 투고한다.
진행 과정
-
03
돌봄 논문 3단계 · 실행과 결과 집계
Gemini API로 400회 실행해 세 방식을 비교하고, 코드 검사가 놓친 질문을 모두 잡는 대신 쓸데없는 질문이 늘어나는 것을 확인했다.
진행 과정
트러블슈팅 1건
- Gemini 무료 티어 429 한도 초과
-
02
돌봄 논문 2단계 · 코드 규칙 검사(R0~R4) 구현
AI가 채운 JSON 칸을 if문 규칙으로 다시 검사해, AI가 놓친 질문을 AI 호출 없이 잡는다.
진행 과정
-
01
돌봄 논문 1단계 · 연구 질문과 실험 설계
무엇을 비교할지 정하고, 결과를 보고 기준을 바꾸지 못하도록 사례·정답·프롬프트를 실행 전에 고정한다.
진행 과정직접 쓴 배운 점
LLM API 지연·오류 대응 정책 실측 6개 단계 · 계획 전체 7단계 · 트러블슈팅 5건
-
06
논문 실측 6단계 · 수집 종료·백업과 학술대회 투고
수집을 멈추고 데이터를 백업한 뒤, 1~2쪽 논문을 써서 추계학술대회에 투고하고 실측 서버를 정리한다.
진행 과정
-
05
논문 실측 5단계 · 정책 시뮬레이션과 결과
수집한 실측 기록 하나로 기다리기·재시도·전환 세 정책을 다시 계산해, 타임아웃을 몇 초로 둬야 하는지 비교한다.
진행 과정
-
04
논문 실측 4단계 · cron 자동 실행과 수집 확인
사람이 손대지 않아도 10분마다 측정이 돌게 하고, 기록이 빠짐없이 쌓이는지 확인한다.
진행 과정
트러블슈팅 2건
- OpenAI 400 (max_tokens)
- Gemini 402 (선불 크레딧 소진)
-
03
논문 실측 3단계 · 측정 스크립트 작성
한 번 실행하면 세 정책(기다리기·재시도·전환) 비교에 필요한 응답 기록을 한 줄로 남기는 스크립트를 만든다.
진행 과정
-
02
논문 실측 2단계 · API 키 준비와 보관
측정에 쓸 Gemini·OpenAI API 키를 비용 사고 없이 준비하고, 코드와 분리해 VM에 안전하게 보관한다.
진행 과정
트러블슈팅 1건
- OpenAI API 401 invalid_api_key
-
01
논문 실측 1단계 · paper VM 생성과 원격 접속
논문 실측 수집만 맡는 VM을 따로 만들고, Tailscale로 맥에서 원격 접속할 수 있게 한다.
진행 과정
트러블슈팅 2건
- 설치 부팅 중 커널 패닉
- Shutdown이 반응 없음
조건에 맞는 단계가 없습니다.