# 금도 내부 문서 ## 📝 개요 이 저장소는 금도에서 사용하는 **서버 인프라 환경(Docker, Nginx)**과 내부 **AI 교육 자료**를 관리하는 문서 저장소입니다. --- ## 🚀 서버 인프라 서버 운영에 필요한 Docker 및 Nginx 관련 설정과 가이드를 포함합니다. ### 🐳 Docker - **[Docker 환경 리포트](./docker/geumdo_docker_report_240611.md)**: 서버별 Docker 버전 현황과 주요 Docker Compose 프로젝트 정보를 정리한 문서입니다. - **[Docker 배포 가이드](./docker/deployment_guide.md)**: Docker를 이용한 서비스 배포 절차를 안내하는 가이드입니다. - **[Docker 예제](./docker/examples/)**: 다양한 Docker 설정 예제 파일들입니다. #### 🖥️ 고급 가상화: Docker + KVM + Windows VM - **[Docker Windows VM 가이드](./docker/docker-windows-vm/)**: **복합 가상화 환경 구축 가이드** **🏗️ 아키텍처 개요** ``` 외부 사용자 (RDP 클라이언트) ↓ (RDP 연결: 호스트IP:33890) Linux 서버 (호스트) ↓ (Docker 포트 포워딩: 33890→3389, 8081→8090) Docker 컨테이너 (Ubuntu 20.04) ├── libvirtd (KVM 관리 데몬) ├── Vagrant (VM 자동화 도구) └── iptables (내부 포트 포워딩) ↓ (3389→VM의 3389, 8090→VM의 8090) KVM 가상 머신 (Windows 10) ├── RDP 서비스 (포트 3389) └── Spring Boot 애플리케이션 (Embed Tomcat, 포트 8090) ``` **⚙️ 핵심 기술 스택** - **가상화**: Docker (컨테이너) + KVM (하드웨어 가상화) - **자동화**: Vagrant + vagrant-libvirt 플러그인 - **네트워킹**: 2단계 NAT + iptables FORWARD 체인 설정 - **원격 접속**: RDP (Remote Desktop Protocol) - **애플리케이션**: [Spring Boot](https://spring.io/guides/gs/spring-boot-docker) 기반 Java 웹 애플리케이션 **🔧 주요 해결 과제** - **방화벽 문제**: 호스트의 iptables FORWARD 체인 DROP 정책 우회 - **네트워크 라우팅**: 복잡한 다중 NAT 환경에서의 패킷 흐름 제어 - **포트 충돌**: 호스트-컨테이너-VM 간 포트 매핑 관리 **💡 사용 시나리오** - Windows 전용 소프트웨어를 Linux 서버에서 실행 - 격리된 개발 환경에서 Spring Boot 애플리케이션 테스트 - 원격 Windows 데스크톱 환경이 필요한 업무 - CI/CD 파이프라인에서 Windows 환경 테스트 **🚀 빠른 시작** ```bash # 1. 호스트 방화벽 설정 (필수) sudo iptables -I DOCKER-USER -d 172.29.0.2 -p tcp --dport 3389 -j ACCEPT sudo iptables -I DOCKER-USER -d 172.29.0.2 -p tcp --dport 8090 -j ACCEPT sudo netfilter-persistent save # 2. Docker 컨테이너 실행 cd docker/docker-windows-vm docker-compose up -d # 3. 접속 방법 # RDP 접속: 호스트IP:33890 # Spring Boot 애플리케이션: http://호스트IP:8081 ``` **📋 상세 설정 파일** - **[docker-compose.yml](./docker/docker-windows-vm/docker-compose.yml)**: 컨테이너 설정 (포트 매핑, 권한, 디바이스) - **[Dockerfile](./docker/docker-windows-vm/Dockerfile)**: Ubuntu 20.04 + KVM + Vagrant 환경 구축 - **[Vagrantfile](./docker/docker-windows-vm/Vagrantfile)**: Windows 10 VM 설정 (메모리 8GB, CPU 4코어) - **[startup.sh](./docker/docker-windows-vm/startup.sh)**: 자동화된 VM 부팅 및 네트워크 설정 ### 🌐 Nginx - **[Nginx 프록시 설정 분석](./nginx/proxy_analysis.md)**: Nginx 리버스 프록시 서버의 주요 설정 파일과 서비스별 프록시 규칙을 상세히 분석한 문서입니다. --- ## 🤖 AI 전문가 양성 과정 16주 완성! 파이썬부터 프로덕션 배포까지의 AI 전문가 양성 과정을 위한 체계적인 강의 자료입니다. ### 📚 과정 개요 - **[AI 전문가 과정 메인 페이지](./ai%20lecture/README.md)**: 전체 과정 소개 및 기술 스택 정보 - **[강의 계획서](./ai%20lecture/AI_Expert_Course_Schedule.md)**: 16주 과정의 상세한 주차별 학습 목표와 내용 - **[개발 환경 설정 가이드](./ai%20lecture/SETUP.md)**: Poetry를 사용한 현대적인 개발 환경 설정 방법 - **[자주 묻는 질문 (FAQ)](./ai%20lecture/FAQ.md)**: 과정에 대한 주요 질문과 답변 - **[기여 가이드](./ai%20lecture/CONTRIBUTING.md)**: 프로젝트 기여 방법 및 개발 환경 설정 - **[문제 해결 가이드](./ai%20lecture/TROUBLESHOOTING.md)**: 개발 중 발생할 수 있는 문제 해결 방법 ### 🎯 커리큘럼 구조 #### **Part 1: AI 개발을 위한 파이썬 마스터리 (1-5주차)** - **[Part 0: 과정 소개](./ai%20lecture/courses/00_introduction/part_0_introduction.md)** - **[Part 0.1: AI의 역사](./ai%20lecture/courses/00_introduction/part_0.1_history_of_ai.md)** - **[Part 1: AI 개발 환경 구축](./ai%20lecture/courses/01_ai_development_environment/part_1_ai_development_environment.md)** - **[Part 2: Python 핵심 문법](./ai%20lecture/courses/02_python_core_syntax/part_2_python_core_syntax.md)** - **[Part 3: Python 컬렉션](./ai%20lecture/courses/03_python_collections/part_3_python_collections.md)** - **[Part 4: 객체 지향 프로그래밍](./ai%20lecture/courses/04_object_oriented_programming/part_4_object_oriented_programming.md)** - **[Part 5: AI 핵심 라이브러리](./ai%20lecture/courses/05_ai_core_libraries/part_5_ai_core_libraries.md)** #### **Part 2: 핵심 AI 모델 개발 및 서빙 (6-9주차)** - **[Part 6: 머신러닝](./ai%20lecture/courses/06_machine_learning/part_6_machine_learning.md)** - **[Part 7: 딥러닝](./ai%20lecture/courses/07_deep_learning/part_7_deep_learning.md)** - **[7.1: 순환 신경망 (RNN)](./ai%20lecture/courses/07_deep_learning/part_7.1_recurrent_neural_networks.md)** - **[7.2: Transformer와 LLM의 원리](./ai%20lecture/courses/07_deep_learning/part_7.2_transformer_and_llm_principles.md)** - **[7.3: LangChain을 활용한 LLM 애플리케이션 개발](./ai%20lecture/courses/07_deep_learning/part_7.3_llm_application_development_with_langchain.md)** - **[7.4: 그래프 신경망 (GNN)](./ai%20lecture/courses/07_deep_learning/part_7.4_graph_neural_networks.md)** - **[7.5: 강화학습 (RL)](./ai%20lecture/courses/07_deep_learning/part_7.5_reinforcement_learning.md)** - **[Part 8: FastAPI를 이용한 모델 서빙](./ai%20lecture/courses/08_model_serving_with_fastapi/part_8_model_serving_with_fastapi.md)** - **[Part 9: Production-Ready API](./ai%20lecture/courses/09_production_ready_api/part_9_production_ready_api.md)** #### **Part 3: 프로덕션 MLOps 및 AI 심화 (10-14주차)** - **[Part 10: AI 전문가 과정 로드맵](./ai%20lecture/courses/10_expert_path/part_10_expert_path.md)** - **[추천 학습 자료](./ai%20lecture/courses/10_expert_path/recommended_resources.md)** - **[Part 11: 프로덕션 레벨 MLOps 심화](./ai%20lecture/courses/11_mlops/part_11_mlops.md)** - **[Part 12: 대규모 AI 모델 최적화 및 서빙](./ai%20lecture/courses/12_model_optimization/part_12_model_optimization.md)** - **[Part 13: 생성형 AI 및 AI 에이전트 심화](./ai%20lecture/courses/13_generative_ai/part_13_generative_ai.md)** - **[Part 14: AI 윤리 및 거버넌스 실무](./ai%20lecture/courses/14_ai_ethics/part_14_ai_ethics.md)** #### **Part 4: 최종 캡스톤 프로젝트 (15-16주차)** - **[Part 15: 최종 캡스톤 프로젝트 가이드](./ai%20lecture/courses/15_capstone_project/part_15_capstone_project.md)** - **[캡스톤 프로젝트 템플릿](./ai%20lecture/courses/15_capstone_project/capstone_template.md)** ### 💻 실습 코드 및 자료 - **[실습 코드 메인](./ai%20lecture/source_code/README.md)**: 전체 실습 코드 구조 및 사용법 - **[Python 핵심 문법 실습](./ai%20lecture/source_code/02_python_core_syntax/)** - **[Python 컬렉션 실습](./ai%20lecture/source_code/03_python_collections/)** - **[객체 지향 프로그래밍 실습](./ai%20lecture/source_code/04_object_oriented_programming/)** - **[AI 핵심 라이브러리 실습](./ai%20lecture/source_code/05_ai_core_libraries/)** - **[머신러닝 실습](./ai%20lecture/source_code/06_machine_learning/)** - **[딥러닝 실습](./ai%20lecture/source_code/07_deep_learning/)** - **[FastAPI 모델 서빙 실습](./ai%20lecture/source_code/08_model_serving_with_fastapi/)** - **[Production API 실습](./ai%20lecture/source_code/09_production_ready_api/)** - **[MLOps 심화 실습](./ai%20lecture/source_code/11_mlops/)** - **[모델 최적화 실습](./ai%20lecture/source_code/12_model_optimization/)** - **[생성형 AI 실습](./ai%20lecture/source_code/13_generative_ai/)** - **[AI 윤리 실습](./ai%20lecture/source_code/14_ai_ethics/)** ### 📚 추가 자료 - **[통합 용어집](./ai%20lecture/glossary.md)**: 전체 과정에서 사용되는 핵심 용어 정리 - **[실습 데이터셋](./ai%20lecture/datasets/)**: 과정에서 사용되는 실습용 데이터 - **[Docker 설정 파일](./ai%20lecture/docker-compose.dev.yml)**: 개발 환경용 Docker 설정 - **[GPU 지원 Docker 설정](./ai%20lecture/docker-compose.gpu.yml)**: GPU 환경용 Docker 설정 - **[프로젝트 TODO](./ai%20lecture/TODO.md)**: 프로젝트 개선 사항 및 향후 계획 --- ## 🛠️ 기술 스택 ### AI 강의 과정 - **언어**: Python 3.10+ - **의존성 관리**: Poetry (권장) / pip - **핵심 라이브러리**: NumPy, Pandas, Scikit-learn, PyTorch, LangChain - **API 서버**: FastAPI - **배포 및 운영**: Docker, Git - **개발 환경**: JupyterLab, Visual Studio Code, Cursor, GitHub Copilot - **코드 품질**: Black, Ruff, MyPy, Pytest - **CI/CD**: GitLab CI/CD ### 서버 인프라 - **컨테이너화**: Docker, Docker Compose - **웹 서버**: Nginx (리버스 프록시) - **가상화 기술**: - **Type 1**: KVM (Kernel-based Virtual Machine) - 하드웨어 직접 제어 - **Type 2**: Docker 컨테이너 - OS 레벨 가상화 - **복합 구조**: Docker + KVM 중첩 가상화로 Windows 환경 구현 - **네트워킹**: iptables 방화벽, NAT 포트 포워딩, RDP 원격 접속 - **모니터링**: 시스템 리소스 모니터링 도구 --- ## 🚀 시작하기 ### AI 강의 과정 시작하기 1. **[개발 환경 설정](./ai%20lecture/SETUP.md)**을 참고하여 환경을 구축합니다. 2. **[Part 0: 과정 소개](./ai%20lecture/courses/00_introduction/part_0_introduction.md)**부터 시작합니다. 3. 각 파트별로 이론 학습과 실습을 병행합니다. ### 서버 인프라 설정 1. **[Docker 배포 가이드](./docker/deployment_guide.md)**를 참고하여 Docker 환경을 구축합니다. 2. **[Nginx 프록시 설정](./nginx/proxy_analysis.md)**을 확인하여 웹 서버를 설정합니다. --- ## 📞 문의 및 지원 - **기술 문의**: 각 파트별 README 파일 및 FAQ 참고 - **개발 환경 문제**: [TROUBLESHOOTING.md](./ai%20lecture/TROUBLESHOOTING.md) 참고 - **프로젝트 기여**: [CONTRIBUTING.md](./ai%20lecture/CONTRIBUTING.md) 참고 --- **💡 이 저장소는 금도의 내부 교육 및 인프라 관리를 위한 문서입니다. 지속적인 업데이트와 개선을 통해 더 나은 학습 경험을 제공하겠습니다.**