Git 개념 설명서

1. Git이란?

Git은 소스 코드와 문서의 변경 이력을 관리하는 분산 버전 관리 시스템(DVCS)이다. 파일이 언제, 어떻게, 왜 변경되었는지 기록하고 필요할 때 이전 상태로 되돌릴 수 있다.

Git은 중앙 서버에만 의존하지 않는다. 각 개발자의 컴퓨터에 저장소 전체 이력이 복제되므로 오프라인에서도 커밋, 로그 확인, 브랜치 생성과 같은 작업을 수행할 수 있다.

2. Git의 핵심 구조

Git 작업은 다음 세 영역을 중심으로 이루어진다.

Working Directory  →  Staging Area  →  Local Repository  ↔  Remote Repository
   파일을 수정          커밋할 변경 선택       커밋과 이력 저장        GitHub 등 공유 저장소

2.1 Working Directory

현재 작업 중인 실제 파일이 있는 공간이다. 파일을 새로 만들거나 수정하면 변경 사항이 먼저 이 영역에 나타난다.

2.2 Staging Area

다음 커밋에 포함할 변경 사항을 임시로 선택하는 공간이다. 여러 파일을 수정했더라도 일부 파일만 골라 하나의 커밋으로 만들 수 있다.

2.3 Local Repository

개발자의 컴퓨터에 있는 Git 저장소다. git commit으로 생성한 커밋과 브랜치, 태그 등의 이력이 저장된다.

2.4 Remote Repository

GitHub, GitLab, Bitbucket 등의 서버에 있는 공유 저장소다. 팀원 간 코드 공유와 백업에 사용한다.

3. 기본 용어

용어 의미
Repository(저장소) 프로젝트 파일과 변경 이력을 함께 관리하는 공간
Commit(커밋) 특정 시점의 변경 내용을 기록한 스냅샷
Branch(브랜치) 독립적인 작업 흐름을 가리키는 포인터
HEAD 현재 체크아웃된 커밋 또는 브랜치를 가리키는 참조
Merge(병합) 한 브랜치의 변경 사항을 다른 브랜치에 합치는 작업
Rebase 기준 브랜치 위에 커밋을 다시 적용해 이력을 정리하는 작업
Tag(태그) 특정 커밋에 붙이는 고정된 이름. 보통 버전 표시에 사용
Clone 원격 저장소를 로컬로 처음 복사하는 작업
Fetch 원격 저장소의 최신 이력만 가져오는 작업
Pull 원격 이력을 가져온 뒤 현재 브랜치에 반영하는 작업
Push 로컬 커밋을 원격 저장소에 올리는 작업
Conflict(충돌) 같은 부분을 서로 다르게 수정해 Git이 자동 병합하지 못하는 상태

4. 변경 상태

파일은 다음 상태를 거칠 수 있다.

  1. Untracked: Git이 아직 관리하지 않는 새 파일
  2. Modified: 추적 중인 파일이 수정된 상태
  3. Staged: 다음 커밋에 포함하도록 선택된 상태
  4. Committed: 로컬 저장소에 커밋으로 기록된 상태
  5. Pushed: 원격 저장소에도 업로드된 상태

상태는 다음 명령으로 확인한다.

git status

5. 커밋의 개념

커밋은 단순히 파일을 저장하는 행위가 아니라, 변경된 파일의 스냅샷과 작성자·시간·메시지·부모 커밋 정보를 기록하는 작업이다.

좋은 커밋은 다음 특징을 가진다.

  • 하나의 목적을 가진다.
  • 메시지만 읽어도 변경 의도를 알 수 있다.
  • 서로 무관한 수정 사항을 한 커밋에 섞지 않는다.
  • 애플리케이션이 동작 가능한 단위로 자주 기록한다.

예시:

git add src/login.js
git commit -m "로그인 실패 메시지 개선"

6. 브랜치의 개념

브랜치는 커밋을 가리키는 이동 가능한 이름이다. 일반적으로 안정적인 기준 브랜치에서 기능별 브랜치를 만들어 독립적으로 작업한다.

master ──●────●────────●────●
              \
feature/login  ●────●────

일반적인 브랜치 예시는 다음과 같다.

  • main 또는 master: 배포 가능한 안정 버전
  • develop: 여러 기능을 통합하는 개발 브랜치
  • feature/*: 기능 개발
  • fix/*: 일반적인 버그 수정
  • hotfix/*: 운영 중인 긴급 수정

브랜치 관련 명령:

git branch                    # 로컬 브랜치 목록
git switch -c feature/login   # 새 브랜치 생성 후 이동
git switch master             # 기존 브랜치로 이동
git branch -d feature/login   # 병합된 로컬 브랜치 삭제

7. 원격 저장소와 동기화

원격 저장소를 사용하는 기본 흐름은 다음과 같다.

git clone https://example.com/project.git
git switch -c feature/profile

# 파일 수정 후
git add .
git commit -m "프로필 화면 추가"
git push -u origin feature/profile

다른 사람의 변경 사항을 확인하고 반영할 때는 다음 명령을 사용한다.

git fetch origin
git pull --rebase origin master

fetch는 원격 정보를 가져오기만 하고 작업 파일을 바꾸지 않는다. pull은 보통 fetch와 현재 브랜치 반영을 함께 수행한다.

8. Merge와 Rebase

Merge

두 브랜치의 이력을 그대로 보존하면서 병합 커밋을 만들 수 있다.

git switch master
git merge feature/login

장점은 이력이 안전하게 보존된다는 점이고, 단점은 병합 커밋이 많아져 그래프가 복잡해질 수 있다는 점이다.

Rebase

현재 브랜치의 커밋을 다른 기준점 위에 다시 적용한다.

git switch feature/login
git rebase master

이력이 직선적으로 정리되지만, 이미 다른 사람과 공유한 커밋을 rebase하면 커밋 ID가 바뀔 수 있다. 따라서 공유된 브랜치의 이력을 함부로 rebase하지 않는 것이 안전하다.

9. 충돌 해결

충돌은 같은 파일의 같은 영역을 서로 다르게 수정했을 때 발생한다. 충돌이 발생하면 파일에 다음과 같은 표시가 남는다.

<<<<<<< HEAD
현재 브랜치의 내용
=======
병합하려는 브랜치의 내용
>>>>>>> feature/login

해결 순서는 다음과 같다.

  1. 충돌 표시를 확인한다.
  2. 최종적으로 남길 내용을 직접 수정한다.
  3. 충돌 표시를 모두 제거한다.
  4. 해결한 파일을 스테이징한다.
  5. 병합 또는 rebase를 계속한다.
git add 충돌이-해결된-파일
git commit                    # merge 충돌 해결
# 또는
git rebase --continue         # rebase 충돌 해결

작업을 취소하려면 상황에 맞게 다음 명령을 사용한다.

git merge --abort
git rebase --abort

10. 되돌리기 명령 비교

명령 용도 주의점
git restore file 작업 디렉터리의 수정 취소 수정 내용이 사라질 수 있음
git restore --staged file 스테이징 취소 파일 수정 내용은 남음
git commit --amend 가장 최근 커밋 수정 이미 공유한 커밋에는 주의
git revert <commit> 기존 커밋을 취소하는 새 커밋 생성 공유된 이력을 안전하게 되돌릴 때 적합
git reset 브랜치와 HEAD를 과거로 이동 옵션에 따라 커밋·스테이징·파일이 삭제될 수 있음

공유 저장소에 이미 올린 커밋은 일반적으로 reset보다 revert가 안전하다.

11. 자주 사용하는 명령

git init                         # 현재 폴더를 Git 저장소로 초기화
git status                       # 현재 변경 상태 확인
git diff                         # 스테이징 전 변경 내용 확인
git diff --staged                # 스테이징된 변경 내용 확인
git log --oneline --graph        # 커밋 이력을 간단한 그래프로 확인
git show <commit>                # 특정 커밋의 상세 내용 확인
git remote -v                    # 원격 저장소 주소 확인
git tag v1.0.0                   # 현재 커밋에 태그 생성
git push origin --tags           # 태그를 원격에 업로드

12. 권장 협업 흐름

최신 main 동기화
      ↓
기능 브랜치 생성
      ↓
작은 단위로 수정·커밋
      ↓
원격 브랜치 push
      ↓
Pull Request 생성 및 리뷰
      ↓
테스트·충돌 확인
      ↓
main에 병합

실무에서는 다음 원칙이 특히 중요하다.

  • main에 직접 작업하지 않고 목적별 브랜치를 사용한다.
  • 커밋 메시지는 변경 목적을 중심으로 작성한다.
  • 커밋 전에 git diff와 테스트 결과를 확인한다.
  • 비밀번호, API 키, 인증서 등 민감 정보를 커밋하지 않는다.
  • .gitignore에 빌드 결과물, 로그, 로컬 설정 파일을 등록한다.
  • 공유 브랜치의 이력을 강제로 덮어쓰는 push --force는 신중하게 사용한다.

13. 한 줄 요약

Git은 변경 사항을 선택적으로 스테이징하고, 의미 있는 단위로 커밋하며, 브랜치와 원격 저장소를 통해 안전하게 협업하는 도구다.

'Study > Git' 카테고리의 다른 글

로컬에 폴더 지정하는 옵션 -l  (0) 2017.11.10

Rocky Linux에서 Let's Encrypt의 Certbot을 사용해 Nginx에 무료 SSL(HTTPS) 인증서를 발급하고 자동 갱신까지 설정하는 순서입니다.

사전 조건: 도메인의 A 레코드가 해당 Rocky Linux 서버의 IP 주소를 가리키고 있어야 하며, Nginx 설정 파일에 server_name이 해당 도메인으로 지정되어 있어야 합니다.





1.EPEL 저장소 활성화:Certbot 패키지 제공 저장소 추가.

Rocky Linux 기본 저장소에는 Certbot이 없으므로 EPEL(Extra Packages for Enterprise Linux) 저장소를 먼저 설치합니다.




Bash

sudo dnf install epel-release -y



2.Certbot 및 Nginx 모듈 설치:Nginx 전용 Certbot 플러그인.

Certbot과 Nginx 설정 파일을 자동으로 수정해 주는 Python 모듈을 함께 설치합니다.




Bash

sudo dnf install certbot python3-certbot-nginx -y



3.SSL 인증서 발급:인증서 발급 및 Nginx 자동 구성.

Certbot의 --nginx 옵션을 사용해 인증서를 발급받고 Nginx 블록에 SSL 설정을 자동으로 적용합니다.




Bash

sudo certbot --nginx -d example.com -d www.example.com

  • 진행 과정:
  1. Email 입력: 만료 경고를 받을 이메일 주소 입력
  2. 이용약관 동의: Y 입력
  3. 이메일 수신 동의: 뉴스레터 수신 여부 (Y 또는 N)
  4. HTTP -> HTTPS 리다이렉트: 모든 HTTP 요청을 HTTPS로 자동 전환할지 물어보면 권장 옵션 선택



4.Nginx 설정 점검 및 반영:설정 파일 및 서비스 재로드.

Certbot이 구성을 성공적으로 변경했는지 확인 후 Nginx를 재로드합니다.




Bash

# 설정 구문 검사
sudo nginx -t

# Nginx 설정 반영
sudo systemctl reload nginx




5.인증서 자동 갱신 확인 및 설정:3개월 주기 만료 대비.

Let's Encrypt 인증서는 90일간 유효하므로 자동 갱신 동작을 시뮬레이션해 봅니다.




Bash

# 자동 갱신 드라이런 테스트
sudo certbot renew --dry-run


Rocky Linux 9/8 환경에서는 systemctl 타이머를 활성화하여 자동으로 주기적 갱신을 수행할 수 있습니다.




Bash

# systemd 타이머 활성화 및 시작
sudo systemctl enable --now certbot-renew.timer


주요 파일 위치

  • fullchain.pem: SSL 인증서 파일
  • privkey.pem: 비밀키 파일

 

'OS > Linux' 카테고리의 다른 글

Nginx 웹서버 설치 및 방화벽  (0) 2026.08.27
Rocky Linux 에서 자주 사용하는 기본 명령어  (0) 2026.08.27
용량보기  (0) 2013.07.03

Rocky Linux 환경에서 Nginx 웹 서버를 설치하고, 부팅 시 자동 실행 설정과 방화벽 오픈까지 완료하는 전체 명령어 순서입니다.





1.시스템 패키지 최신화:최신 보안 패치 및 인덱스 업데이트.

설치 전 기본 패키지 인덱스를 최신 상태로 업데이트합니다.




Bash

sudo dnf update -y



2.Nginx 패키지 설치:공식 리포지토리 이용.

dnf 패키지 관리자를 통해 Nginx를 설치합니다.




Bash

sudo dnf install nginx -y



3.Nginx 서비스 실행 및 자동 실행 등록:systemctl 제어.

Nginx 데몬을 시작하고, OS 부팅 시 자동으로 실행되도록 설정합니다.




Bash

sudo systemctl enable --now nginx

정상적으로 동작 중인지 상태를 확인합니다. (active (running) 표시 확인)




Bash

systemctl status nginx



4.방화벽(firewalld) 웹 포트 허용:HTTP/HTTPS 트래픽 개방.

외부에서 웹 서버로 접속할 수 있도록 HTTP(80) 및 HTTPS(443) 포트를 허용하고 규칙을 재로드합니다.




Bash

# HTTP (80번) 포트 허용
sudo firewall-cmd --add-service=http --permanent

# HTTPS (443번) 포트 허용
sudo firewall-cmd --add-service=https --permanent

# 방화벽 규칙 반영
sudo firewall-cmd --reload


적용된 규칙 목록에 http, https가 포함되어 있는지 확인합니다.




Bash

sudo firewall-cmd --list-all



5.접속 테스트:웹 브라우저 확인.

서버의 IP 주소를 확인한 뒤 웹 브라우저 주소창에 입력하여 Nginx 기본 환영 페이지가 뜨는지 확인합니다.




Bash

# 서버 IP 주소 확인
ip a


  • 웹 브라우저 접속: http://<서버-IP-주소>
  • 터미널 내 테스트: curl http://localhost
  • 웹 루트 디렉터리: /usr/share/nginx/html (기본 index.html 파일 위치)
  • 주요 설정 파일: /etc/nginx/nginx.conf 또는 /etc/nginx/conf.d/*.conf

 

'OS > Linux' 카테고리의 다른 글

Nginx 무료 SSL 인증서  (0) 2026.08.27
Rocky Linux 에서 자주 사용하는 기본 명령어  (0) 2026.08.27
용량보기  (0) 2013.07.03

Rocky Linux(Red Hat Enterprise Linux 기반)에서 자주 사용하는 기본 명령어 모음집입니다.

1. 패키지 관리 (dnf)

Rocky Linux는 dnf 패키지 관리자를 사용하여 소프트웨어를 설치 및 업데이트합니다.

명령어 설명 예시
sudo dnf update 시스템의 모든 패키지 업데이트 sudo dnf update -y
sudo dnf install <패키지> 패키지 설치 sudo dnf install nginx
sudo dnf remove <패키지> 패키지 삭제 sudo dnf remove nginx
dnf search <키워드> 패키지 검색 dnf search htop
dnf info <패키지> 패키지 상세 정보 확인 dnf info nginx
dnf list installed 설치된 패키지 목록 조회 dnf list installed | grep curl

2. 시스템 서비스 관리 (systemctl)

서비스(데몬)의 시작, 중지, 부팅 시 자동 실행 등을 설정합니다.

명령어 설명 예시
systemctl status <서비스> 서비스 상태 확인 systemctl status firewalld
sudo systemctl start <서비스> 서비스 시작 sudo systemctl start nginx
sudo systemctl stop <서비스> 서비스 중지 sudo systemctl stop nginx
sudo systemctl restart <서비스> 서비스 재시작 sudo systemctl restart nginx
sudo systemctl enable <서비스> 부팅 시 자동 실행 등록 sudo systemctl enable --now nginx
sudo systemctl disable <서비스> 부팅 시 자동 실행 해제 sudo systemctl disable nginx

3. 방화벽 설정 (firewall-cmd)

Rocky Linux는 기본 방화벽으로 firewalld를 사용합니다.

명령어 설명 예시
sudo firewall-cmd --state 방화벽 동작 상태 확인 sudo firewall-cmd --state
sudo firewall-cmd --list-all 허용된 포트 및 서비스 목록 확인 sudo firewall-cmd --list-all
sudo firewall-cmd --add-port=<포트>/tcp --permanent 특정 포트 허용 (영구 적용) sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --add-service=<서비스> --permanent 특정 서비스 허용 sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload 방화벽 설정 재로드 (반드시 실행해야 반영됨) sudo firewall-cmd --reload

4. 파일 및 디렉터리 관리

명령어 설명 예시
ls -la 현재 디렉터리의 모든 파일/폴더 상세 조회 ls -la
cd <경로> 디렉터리 이동 cd /var/www/html
pwd 현재 위치한 디렉터리 경로 출력 pwd
mkdir -p <디렉터리> 디렉터리 생성 (하위 경로 포함 생성) mkdir -p myfolder/sub
rm -rf <파일/폴더> 파일 또는 디렉터리 강제 삭제 rm -rf myfolder
cp -r <원본> <대상> 파일/디렉터리 복사 cp -r folder1 folder2
mv <원본> <대상> 파일/디렉터리 이동 또는 이름 변경 mv file1.txt file2.txt
chmod <권한> <파일> 파일/폴더 권한 변경 chmod 755 script.sh
chown <소유자>:<그룹> <파일> 소유자 및 그룹 변경 chown -R nginx:nginx /var/www

5. 네트워크 및 시스템 정보 확인

명령어 설명 예시
ip a 또는 ip addr 네트워크 인터페이스 및 IP 주소 확인 ip a
nmcli dev status NetworkManager 네트워크 장치 상태 확인 nmcli dev status
ss -tulnp 열려 있는 포트 및 연결된 프로세스 확인 ss -tulnp
df -h 디스크 용량 확인 (사람이 읽기 쉬운 단위) df -h
free -h 메모리(RAM) 사용량 확인 free -h
top 또는 htop 실시간 프로세스 및 CPU/메모리 사용률 top (htop은 dnf로 별도 설치 필요)
uname -r 현재 사용하는 커널 버전 확인 uname -r

6. SELinux 보안 설정

Red Hat 계열 특유의 보안 모듈인 SELinux 관련 기초 명령어입니다.

명령어 설명 예시
sestatus SELinux 동작 상태 및 모드 확인 sestatus
sudo setenforce 0 SELinux 임시 비활성화 (Permissive 모드) sudo setenforce 0
sudo setenforce 1 SELinux 활성화 (Enforcing 모드) sudo setenforce 1


'OS > Linux' 카테고리의 다른 글

Nginx 무료 SSL 인증서  (0) 2026.08.27
Nginx 웹서버 설치 및 방화벽  (0) 2026.08.27
용량보기  (0) 2013.07.03

Windows 터미널(PowerShell 또는 Command Prompt)에서 주로 사용하는 .NET CLI (dotnet) 주요 명령어 모음집입니다.

1. 개발 및 프로젝트 관리 (기본)

명령어 설명 예시 / 활용
dotnet --version 설치된 .NET SDK의 현재 버전 확인 dotnet --version
dotnet --info SDK 및 실행 환경(OS, Architecture 등) 상세 정보 출력 dotnet --info
dotnet new <TEMPLATE> 새로운 .NET 프로젝트 또는 파일 생성 dotnet new console -n MyConsoleApp
dotnet run 현재 디렉터리의 프로젝트를 빌드하고 즉시 실행 dotnet run
dotnet build 프로젝트 및 모든 종속성을 컴파일(빌드) dotnet build -c Release
dotnet clean 이전 빌드에서 생성된 출력 파일(bin, obj) 삭제 dotnet clean
dotnet restore 프로젝트에 정의된 NuGet 패키지 복원 dotnet restore
  • 자주 쓰는 프로젝트 템플릿 종류 (dotnet new):
  • console : 콘솔 애플리케이션
  • webapi : ASP.NET Core Web API
  • mvc : ASP.NET Core MVC Web App
  • blazor : Blazor WebAssembly / Server App
  • classlib : 클래스 라이브러리

2. NuGet 패키지 및 종속성 관리

명령어 설명 예시
dotnet add package <PACKAGE> NuGet 패키지 추가 dotnet add package Newtonsoft.Json
dotnet remove package <PACKAGE> 설치된 NuGet 패키지 삭제 dotnet remove package Newtonsoft.Json
dotnet list package 현재 프로젝트에 설치된 패키지 목록 조회 dotnet list package
dotnet add reference <PROJECT_PATH> 다른 프로젝트 프로젝트(p2p) 참조 추가 dotnet add reference ../MyLib/MyLib.csproj

3. 배포 및 게시 (Publish)

명령어 설명 예시 / 옵션
dotnet publish 배포용 파일 생성 (빌드 + 필요 자원 번들링) dotnet publish -c Release -o ./publish
단일 파일 배포 (Self-Contained) .NET 런타임이 없는 환경에서도 실행 가능하게 단일 EXE로 배포 dotnet publish -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true

4. 솔루션(.sln) 파일 관리

명령어 설명 예시
dotnet new sln 새로운 솔루션 파일 생성 dotnet new sln -n MySolution
dotnet sln add <PROJECT_PATH> 솔루션에 프로젝트 추가 dotnet sln add MyConsoleApp/MyConsoleApp.csproj
dotnet sln list 솔루션에 포함된 프로젝트 목록 조회 dotnet sln list

5. 테스트 및 도구 (Tools)

명령어 설명 예시
dotnet test xUnit, NUnit, MSTest 등의 단위 테스트 실행 dotnet test
dotnet tool install -g <TOOL> 전역 .NET CLI 도구 설치 dotnet tool install -g dotnet-ef (EF Core CLI)
dotnet tool list -g 설치된 전역 도구 목록 확인 dotnet tool list -g

유용한 팁 (Windows 터미널 전용)

  • 명령어 도움말: 특정 명령 뒤에 --help를 붙이면 사용 가능한 모든 옵션을 확인할 수 있습니다.
  • 예: dotnet new --help, dotnet publish --help
  • 개발자 인증서 신뢰 설정 (Web 개발 시):
  • dotnet dev-certs https --trust (HTTPS 로컬 테스트용 인증서 신뢰)

 

PDCA 스킬 사용법

1. 목적

$pdca 스킬은 기능 단위 작업을 Plan, Design, Do, Check, Act 흐름으로 관리하기 위한 도구다.

이 프로젝트에서는 C# API 전환 작업을 한 번에 크게 진행하지 않고, 업무 단위로 계획, 설계, 구현, 비교검증, 개선, 보고까지 남기기 위해 사용한다.

기본 흐름:

Plan -> Design -> Do -> Analyze(Check) -> Iterate(Act) -> Report -> Archive

2. 기본 명령어

명령어용도

$pdca plan {feature} 기능 계획서 생성
$pdca design {feature} 기술 설계서 생성
$pdca do {feature} 구현 가이드 또는 구현 추적 작성
$pdca analyze {feature} 설계와 실제 구현 차이 분석
$pdca iterate {feature} 분석된 차이를 수정하고 개선 반복
$pdca report {feature} 완료 보고서 생성
$pdca status 현재 PDCA 진행 상태 확인
$pdca next 다음에 수행할 PDCA 단계 추천
$pdca archive {feature} 완료된 기능 문서 보관
$pdca cleanup 보관 완료된 기능 상태 정리

{feature}는 기능명을 의미한다. 예:

$pdca plan csharp-api-migration
$pdca design csharp-api-migration
$pdca analyze csharp-api-migration

3. 단계별 사용법

3.1 Plan

계획서를 만드는 단계다.

사용:

$pdca plan {feature}

작성되는 기본 위치:

docs/01-plan/features/{feature}.plan.md

주요 작성 내용:

  • 작업 목적
  • 범위
  • 제외 범위
  • 기능 요구사항
  • 비기능 요구사항
  • 완료 기준
  • 위험요소
  • 대응 방안

이 프로젝트에서는 계획서에 다음을 반드시 포함한다.

  • 기존 Classic ASP endpoint
  • 기존 Stored Procedure
  • 신규 C# API 후보
  • Legacy 결과 비교 방법
  • 롤백 기준

3.2 Design

계획을 바탕으로 기술 설계서를 만드는 단계다.

사용:

$pdca design {feature}

작성되는 기본 위치:

docs/02-design/features/{feature}.design.md

주요 작성 내용:

  • Controller 구조
  • Service 구조
  • Repository 구조
  • DTO
  • 호출 Stored Procedure
  • 인증 방식
  • 입력 검증
  • 오류 처리
  • 테스트 계획

주의:

Plan 문서가 먼저 있어야 한다. 계획 없이 설계를 바로 만들지 않는다.

3.3 Do

설계를 기준으로 실제 구현을 진행하는 단계다.

사용:

$pdca do {feature}

또는 구현 중에는 설계서를 계속 참조하면서 작업한다.

구현 시 지켜야 할 기준:

  • Controller는 얇게 유지한다.
  • 업무규칙은 Service에 둔다.
  • DB 접근은 Repository에 둔다.
  • 기존 SP가 있으면 우선 재사용한다.
  • C#에 ASP Inline SQL을 그대로 옮기지 않는다.
  • 파일 수정 전 관련 설계와 기존 코드를 확인한다.

필요하면 구현 추적 문서를 별도로 둔다.

예:

docs/02-design/features/{feature}.do.md

3.4 Analyze

설계와 실제 구현이 맞는지 비교하는 Check 단계다.

사용:

$pdca analyze {feature}

작성되는 기본 위치:

docs/03-analysis/{feature}.analysis.md

분석 기준:

  • 설계한 API가 실제 구현됐는지
  • Service/Repository 분리가 맞는지
  • 기존 SP를 사용했는지
  • 인증과 입력 검증이 빠지지 않았는지
  • Legacy JSON 결과와 일치하는지
  • 테스트 결과가 남았는지

분석 결과는 보통 Match Rate로 정리한다.

Match Rate = 구현 완료 항목 / 설계 항목 * 100

판정 기준:

  • 90% 이상: 보고 단계로 진행 가능
  • 90% 미만: 반복 개선 단계로 진행

단, 이 프로젝트에서는 Match Rate 90%가 운영전환 90%를 의미하지 않는다. 운영전환은 실제 화면 연결, Feature Flag, 롤백, 성능, 장애격리까지 확인해야 한다.

3.5 Iterate

Analyze에서 발견한 차이를 수정하는 Act 단계다.

사용:

$pdca iterate {feature}

진행 방식:

  1. 분석 문서의 gap 목록을 읽는다.
  2. 누락된 구현을 우선 보완한다.
  3. 수정 후 다시 분석한다.
  4. Match Rate가 90% 이상이 될 때까지 반복한다.
  5. 최대 반복 횟수에 도달하면 현재 상태와 남은 이슈를 보고한다.

주의:

  • 분석 없이 무작정 iterate를 실행하지 않는다.
  • 업무규칙을 AI 판단으로 새로 만들지 않는다.
  • 기존 SP와 Legacy 동작을 기준으로 수정한다.

3.6 Report

기능 완료 보고서를 작성하는 단계다.

사용:

$pdca report {feature}

작성되는 기본 위치:

docs/04-report/{feature}.report.md

포함 내용:

  • 완료 요약
  • 관련 계획/설계/분석 문서
  • 구현 완료 항목
  • 미완료 항목
  • Legacy 비교 결과
  • 품질 지표
  • 발견된 문제
  • 운영 영향
  • 롤백 방법
  • 다음 단계

이 프로젝트에서는 보고서 작성 후 바로 다음 업무로 넘어가지 않는다. 프로필 API 기준모델처럼 첫 기준모델이 끝나면 보고서를 검토한 뒤 다음 업무를 시작한다.

3.7 Status

현재 진행 상태를 확인한다.

사용:

$pdca status

확인 내용:

  • 현재 기능
  • 현재 단계
  • Match Rate
  • 반복 횟수
  • 다음 권장 단계

3.8 Next

다음에 어떤 PDCA 명령을 실행해야 하는지 확인한다.

사용:

$pdca next

예:

현재 plan 완료 -> 다음은 $pdca design {feature}
현재 analyze 결과 90% 미만 -> 다음은 $pdca iterate {feature}
현재 analyze 결과 90% 이상 -> 다음은 $pdca report {feature}

3.9 Archive

완료된 기능 문서를 보관한다.

사용:

$pdca archive {feature}

보관 위치:

docs/archive/YYYY-MM/{feature}/

보관 대상:

  • 계획서
  • 설계서
  • 분석서
  • 보고서

운영 검토가 끝나지 않은 기능은 archive하지 않는다.

3.10 Cleanup

archive가 끝난 기능을 PDCA 상태 목록에서 정리한다.

사용:

$pdca cleanup

주의:

문서 자체를 삭제하는 목적이 아니다. 보관된 기능의 상태 정보를 정리하는 용도다.

4. 권장 사용 순서

새 기능을 시작할 때:

$pdca plan feature-name
$pdca design feature-name
$pdca do feature-name
구현
$pdca analyze feature-name
$pdca iterate feature-name
$pdca analyze feature-name
$pdca report feature-name

현재 상태를 모를 때:

$pdca status
$pdca next

완료 후 정리할 때:

$pdca archive feature-name
$pdca cleanup

5. 이 프로젝트에서의 사용 예

프로필 API 전환 작업:

$pdca plan csharp-api-migration
$pdca design csharp-api-migration
$pdca analyze csharp-api-migration
$pdca iterate csharp-api-migration
$pdca report csharp-api-migration

첫 운영 Pilot을 새로 잡는 경우:

$pdca plan meeting-intent-pilot
$pdca design meeting-intent-pilot
$pdca analyze meeting-intent-pilot

기능명은 가능하면 업무 단위로 정한다.

좋은 예:

  • profile-api-migration
  • meeting-intent-pilot
  • manager-manual-search-read

피해야 할 예:

  • api
  • fix
  • test
  • all-migration

6. 작성 문서 언어 기준

이 프로젝트의 PDCA 산출물은 한글로 작성한다.

파일명도 사용자가 직접 보는 문서는 가능한 한글명을 사용할 수 있다. 단, 도구가 참조하는 숨김 메타데이터 파일은 이름을 바꾸지 않는다.

유지해야 하는 파일 예:

docs/.bkit-memory.json
docs/.pdca-status.json

7. 주의사항

  • Plan 없이 Design을 진행하지 않는다.
  • Design 없이 구현을 크게 진행하지 않는다.
  • Analyze 없이 Iterate를 반복하지 않는다.
  • Match Rate를 운영전환율로 해석하지 않는다.
  • Legacy 비교가 끝나기 전 신규 API로 화면을 전환하지 않는다.
  • WRITE API는 실제 Form Payload와 DB 변경 전후 비교 없이 완료 처리하지 않는다.
  • 운영 연결 전 Feature Flag와 즉시 롤백 경로를 확인한다.
  • 실제 쿠키, TOKEN, 비밀번호, 결제정보는 문서에 저장하지 않는다.

8. 한 줄 요약

$pdca는 기능을 계획서에서 끝내는 도구가 아니라, 설계, 구현, Legacy 비교, 개선, 보고까지 같은 흐름으로 묶어 작업을 통제하는 도구다.

- NPM

- Webpack

- Vuejs

- Babel

 

NPM

npm init -y

npm i package

npm i -g package

npm i -D package

npm ls

npm outdated

npm update

 

Webpack

npm i -D webpack webpack-cli 

 

Vuejs

npm i -g @vue/cli

vue create project-name

vue ui

 

npm i vue bootstrap bootstrap-vue

 

 

 

$ pip list
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 5, in <module>
    from pip._internal.cli.main import main
ModuleNotFoundError: No module named 'pip._internal'

 

centos 에 2개의 버전이 설치되어 있는 경우 위와 같이 오류가 나오는 경우가 있습니다.

 

$ curl https://bootstrap.pypa.io/pip/3.6/get-pip.py -o get-pip.py

....

$ python3 get-pip.py --force-reinstall

...

$ pip list

...

 

정상적으로 나옵니다.

 

'Study > Python' 카테고리의 다른 글

CentOS7 - Python 가상환경 구성  (0) 2020.08.27
CentOS 7 - Python 3.x 설치  (0) 2020.08.27

+ Recent posts