#2 프로젝트 파일
AI 시대의 가장 효과적인 프로젝트 관리 방법에 대한 소개입니다.
이제 AI의 개요에 대해 이해하셨을 것입니다. 하지만 개발을 시작하려면 먼저 환경이 필요합니다. AI 사용을 기반으로 하는 개발 환경을 설정해 보겠습니다. 무엇보다도 프로젝트 파일을 어떻게 관리할지 결정해야 합니다. 단순히 파일을 공유하는 것은 실수했을 때 코드를 처음부터 다시 작성해야 하는 위험을 수반합니다. 이는 AI를 사용할 때도 마찬가지이므로 현대 개발에서 버전 관리와 프로젝트 관리는 떼려야 뗄 수 없는 관계입니다.
과거에는 개발이 단순한 파일 공유(NFS 또는 NetBIOS)로 시작하여 CVS(~1990년부터) → VSS(~1995년부터) → Subversion(~2000년부터) → Git(~2010년부터)으로 진화해 왔습니다(대략적인 타임라인입니다). 각 단계별로 환경을 준비하고 설정해 보았습니다. 역사적으로 저장소 환경(업데이트 기록과 함께 프로젝트 파일을 저장하고 관리하는 단위)을 설정하려면 백업 환경 구축과 더불어 수동 설치나 구매가 필요했으며, 이는 매우 큰 작업이었습니다. 오늘날 GitHub는 두말할 필요 없는 최고의 선택입니다. (무료니까요, 웃음)
【GitHub 소개】
이전에는 GitHub의 무료 계정이 개인 저장소 1개로 제한되었지만, 현재는 무제한입니다. 또한 GitHub Actions는 매월 최대 2,000분의 무료 시간을 제공하며, 스토리지는 최대 500MB까지 무료입니다.
정말 멋진 일입니다. 우리는 좋은 시대에 살고 있습니다. 물론 Docker를 통해 Gitea 컨테이너를 실행하여 로컬 Git 환경을 구축할 수도 있습니다. CI/CD를 사용하지 않는 대규모 프로젝트의 경우, 저는 로컬 서버에서 관리합니다.
<CI/CD란 무엇인가요?>
이는 AI 기반 및 코드리스 개발에서 중요한 철학입니다. 과거에는 시스템 분석가(SA)가 비즈니스 운영을 분석하고 요구사항을 정리하면, 시스템 엔지니어(SE)가 사양서와 테스트 요구사항을 작성하고, 프로그래머(PG)가 코드를 작성하는 방식(워터폴 모델)이었습니다. 그에 비하면 오늘날은 완전히 다른 세상처럼 느껴집니다. 이전 단계로 되돌아갈 때 발생하는 막대한 비용을 반성하며, 현대적인 방법론은 작게 만들고 크게 키우는 것을 최우선으로 합니다. 용어를 간단히 정의해 보겠습니다.
- CI: 지속적 통합 (Continuous Integration)
개발자가 코드 변경 사항을 공유 저장소에 빈번하게 병합하고, 자동화된 빌드를 트리거하며, 테스트를 실행하는 프로세스입니다.
- CD: 지속적 제공 및 배포 (Continuous Delivery & Deployment)
CI에서 테스트된 코드를 언제든지 프로덕션에 수동으로 릴리스할 수 있도록 준비해 두거나, 실제 프로덕션 배포를 자동화하는 관행입니다.
간단히 말해, UI와 기능을 검증하면서 프로젝트를 단계별로 완성해 나가는 방법입니다. 이전에는 이를 애자일(Agile) 개발 또는 DevOps(개발 + 운영)라고 불렀지만, 오늘날의 접근 방식은 훨씬 더 빠르게 느껴집니다. AI와 완벽하게 어우러집니다.
AI 시대에 알아두어야 할 또 다른 핵심 개념으로 GitOps가 있습니다.
<GitOps란 무엇인가요?>
이는 Git 저장소를 중심으로 하는 개발 방법론입니다. 모든 인프라 정의, 애플리케이션 구성, 서버로의 코드 배포를 완벽하게 버전 관리하여 롤백 및 완전한 감사 기록을 가능하게 하는 개념입니다. 모든 프로젝트 정보를 이 단일 진실 공급원(Source of Truth)을 중심으로 관리함으로써 개발 효율성, 결함 허용(fault tolerance), 신속한 복구 시간을 크게 향상시킬 수 있습니다.
AI 시대에 GitHub를 사용할 때 한 가지 경고할 점은, 앞서 설명했듯이 개인용 AI 도구는 대화 기록을 학습에 사용한다는 것입니다. 민감한 정보(비밀번호, 액세스 토큰 등)는 반드시 GitHub Secrets를 사용하여 안전하게 보관해야 합니다. 또한 GitHub 작업을 수행할 때는 AI에 작업을 위임하기 전에 먼저 GitHub CLI를 사용하여 로그인해 두는 것이 좋습니다.
나쁜 예:
$ git clone https://{username}:{Token}@github.com/{UserID}/{repository_name}.git
GitHub가 이 형식을 허용하긴 하지만, 이는 토큰을 완전히 노출시킵니다. Git 명령에 자격 증명을 직접 전달할 필요가 없도록 항상 사전에 `gh auth login`을 실행해야 합니다. 이렇게 하지 않으면 토큰이 원격 URL에 등록되어 다른 사람에게 보이게 되므로, 처음에 사람이 명령을 실행했다고 해서 안전하다고 가정해서는 안 됩니다.
GitHub 계정을 생성하고 clone 명령을 실행하는 방법은 수많은 웹사이트에 설명되어 있으므로 여기서는 자세한 내용을 생략하겠습니다. 우선, 여러분의 저장소(프로젝트 파일 세트)가 성공적으로 생성되었습니다.