FullStack 다이어리

발행: (2026년 2월 23일 오전 12:52 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

FT MJ

🌟 소개

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 협업 워크플로우

수행한 단계:

  1. 업스트림 저장소를 포크함.
  2. 포크를 클론함.
  3. 업스트림 원격을 추가함.
  4. 피처 브랜치를 생성함.
  5. origin에 푸시함.
  6. 풀 리퀘스트를 생성함.
git remote add upstream 
git push origin feature/update-readme

배운 점

  • originupstream의 차이점.
  • 오픈소스에서 포크가 필요한 이유.
  • 풀 리퀘스트가 협업을 가능하게 하는 방식.

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) 프로그램과 멘토들에게 체계적인 실습 지도에 감사드립니다.

0 조회
Back to Blog

관련 글

더 보기 »