FullStack 다이어리
Source: Dev.to

🌟 소개
DevOps 마이크로 인턴십(DMI)의 일환으로, 3주차는 Git, GitHub 협업 워크플로우를 마스터하고 Nginx를 사용해 AWS EC2에 실제 정적 웹사이트를 배포하는 데 초점을 맞췄습니다.
이번 주에 내 이해가 변한 영역:
- 버전 관리 시스템
- 브랜치 전략
- 오픈소스 기여 워크플로우
- 리눅스 서버에서의 프로덕션 스타일 배포
블로그는 전체 실습 과정을 기록합니다.
Part 1: 로컬에서 Git 설정하기
프로젝트 저장소 생성
- 프로젝트 이름: CodeTrack
- Git 초기화:
git init
배운 점
- Git은 스냅샷을 사용해 변경 사항을 추적합니다.
.git디렉터리는 커밋 히스토리를 저장합니다.- 버전 관리는 코드의 실수로 인한 손실을 방지합니다.
파트 2: Git 아이덴티티 구성
Configured Git identity locally and globally:
git config user.name "Manjay Verma"
git config user.email "..."
주요 학습
- 로컬 설정은 저장소마다 적용됩니다.
- 글로벌 설정은 시스템 전체에 적용됩니다.
- 기업 환경에서는 종종 로컬 설정을 선호합니다.
Part 3: 스테이징, 커밋 및 깔끔한 히스토리
Created index.html and style.css, then staged and committed:
git add .
git commit -m "Initial commit: Add index and style files"
Made a small change and committed separately.
배운 점
- Clean commit messages improve collaboration.
- Small commits are easier to review.
- Commit history tells the project story.
Part 4: 브랜칭 워크플로우 (기능 기반 개발)
기능 브랜치를 생성했습니다:
git checkout -b feature/contact-page
contact.html을 추가하고 index.html을 업데이트한 뒤, main에 병합했습니다:
git merge feature/contact-page
핵심 학습
- 기능 브랜치는 개발을 격리합니다.
main브랜치는 안정적인 상태를 유지합니다.- 이는 업계 표준 Git 워크플로우입니다.
Part 5: GitHub 협업 워크플로우
수행한 단계:
- 업스트림 저장소를 포크함.
- 포크를 클론함.
- 업스트림 원격을 추가함.
- 피처 브랜치를 생성함.
origin에 푸시함.- 풀 리퀘스트를 생성함.
git remote add upstream
git push origin feature/update-readme
배운 점
origin과upstream의 차이점.- 오픈소스에서 포크가 필요한 이유.
- 풀 리퀘스트가 협업을 가능하게 하는 방식.
Part 6: AWS EC2에 배포 (프로덕션 스타일)
인스턴스 세부 정보
- 지역: 아시아 태평양 (뭄바이)
- 운영 체제: Ubuntu 22.04
- 인스턴스 유형: t2.micro (프리 티어)
- 보안 그룹: SSH + HTTP
SSH 연결:
ssh -i codetrack-key.pem ubuntu@
Nginx 설치:
sudo apt update
sudo apt install nginx -y
정적 사이트를 /var/www/html/에 배포했습니다.
🌍 실시간 배포 결과
이제 웹사이트가 Nginx를 사용하여 AWS EC2에서 실시간으로 운영되며, 다음과 같은 실무 경험을 제공합니다:
- Linux 서버 관리
- 보안 그룹
- 공용 IP 설정
- 서비스 관리 (
systemctl)
프로덕션 수준 검사 수행
sudo systemctl status nginx
curl localhost
netstat -tulpn | grep 80
배운 점
- 서비스가 실행 중인지 항상 확인합니다.
- 포트 바인딩을 항상 테스트합니다.
- 검증이 완료될 때까지 배포는 완료되지 않습니다.
🚧 직면한 도전 과제
| 문제 | 해결책 |
|---|---|
| SSH 연결 시간 초과 | 보안 그룹 인바운드 규칙을 수정했습니다. |
| GitHub 403 권한 오류 | 저장소를 올바르게 포크하고 origin을 설정했습니다. |
| “origin does not appear to be a git repository” | git remote add origin으로 원격 URL을 추가했습니다. |
각 문제는 문제 해결 능력을 강화했습니다.
🎯 실습한 주요 DevOps 개념
- Git 내부 구조
- 브랜치 전략
- 깔끔한 커밋 위생
- 포크 및 PR 워크플로우
- Linux 서버 설정
- Nginx 배포
- 보안 모범 사례
🧠 나의 가장 큰 교훈
DevOps는 단순히 도구에 관한 것이 아니라 — 다음과 같은 것에 관한 것입니다:
- 깨끗한 워크플로우
- 재현성
- 검증
- 보안 인식
- 전문적인 문서화
이번 주에 나는 실제 DevOps 엔지니어링 실무에 한 걸음 더 다가섰다.
🚀 다음 단계는?
- CI/CD를 사용하여 배포 자동화
- GitHub Actions 사용
- 맞춤 도메인 연결
- Docker를 사용하여 배포
🙌 감사의 글
DevOps 마이크로 인턴십(DMI) 프로그램과 멘토들에게 체계적인 실습 지도에 감사드립니다.