기술 스택 정리
Redis
- 인메모리 데이터 구조 저장소
- 캐싱, 메시지 브로커, 세션 관리 등에 활용
ChromaDB
- 벡터 데이터베이스
- 자연어 처리 모델 관련 대규모 데이터 저장 및 검색
Nginx
- 웹 서버 및 리버스 프록시
- 클라이언트 요청 처리 및 백엔드 애플리케이션 전달
Docker
- 컨테이너 기술
- 애플리케이션 패키징 및 배포
Flask
- Python 웹 프레임워크
- 백엔드 API 및 웹 애플리케이션 개발
Jenkins
- 지속적 통합/배포(CI/CD) 도구
- 빌드, 테스트, 배포 프로세스 자동화
GitLab
- 소스 코드 관리 및 버전 관리
- Git 기반 저장소 및 협업 도구
Gunicorn
- Python WSGI HTTP 서버
- Flask 애플리케이션 실행 및 Nginx 연동
MySQL
- 관계형 데이터베이스
- 구조화된 데이터 저장 및 관리
LangChain
- 대규모 언어 모델 프레임워크
- 언어 모델 쉽게 활용 가능
기술 스택 분류
개발 및 데이터 관리
- Redis: 인-메모리 데이터 저장소, 주로 캐싱과 메시지 브로킹에 활용
- MySQL: 관계형 데이터베이스 관리 시스템, 데이터 저장과 관리 담당
- ChromaDB: 가정된 데이터베이스, 특화된 데이터(예: 컬러 정보, 이미지 데이터) 관리
웹 서버 및 애플리케이션 배포
- Nginx: 웹 서버 및 리버스 프록시, 정적 컨텐츠 제공과 로드 밸런싱 역할
- Docker: 애플리케이션 컨테이너화, 환경에 구애받지 않는 일관된 실행 보장
- Gunicorn: 파이썬 애플리케이션용 WSGI 서버, Flask와 함께 사용하여 애플리케이션 배포
개발 프레임워크 및 협업 도구
- Flask: 파이썬 기반 웹 프레임워크, 웹 애플리케이션 개발에 사용
- Jenkins: 자동화 서버, CI/CD 파이프라인 구축 및 자동 빌드/테스트/배포 관리
- GitLab: 소스 코드 관리 및 CI/CD 통합 플랫폼, 코드 버전 관리 및 프로젝트 협업 지원
- LangChain: 언어 처리 라이브러리나 프레임워크 가정, 자연어 처리나 언어 관련 작업에 활용 가능
흐름
- 코드 개발과 버전 관리: 개발자들은 GitLab을 사용해 코드를 개발하고 버전을 관리, 프로젝트 협업 진행
- 자동화된 테스트와 배포: Jenkins를 통해 코드 변경 사항이 자동으로 빌드, 테스트되고, 성공적이면 배포 프로세스가 진행
- 애플리케이션 컨테이너화: Docker를 사용하여 애플리케이션과 그 환경을 컨테이너로 패키징, 환경 차이에 따른 문제 방지
- 웹 애플리케이션 실행: Flask로 개발된 웹 애플리케이션은 Gunicorn을 통해 실행, Nginx가 정적 컨텐츠를 처리하고 리버스 프록시로서의 역할을 수행하여 사용자 요청을 Gunicorn으로 전달
- 데이터 관리: 애플리케이션의 데이터는 MySQL에서 관리되며, Redis는 빠른 데이터 접근을 위한 캐시로 활용
- 특화 데이터 처리: ChromaDB나 LangChain과 같은 특화된 도구를 사용해 특정 데이터 처리나 언어 관련 작업을 수행