기술 스택 정리

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: 언어 처리 라이브러리나 프레임워크 가정, 자연어 처리나 언어 관련 작업에 활용 가능

흐름

  1. 코드 개발과 버전 관리: 개발자들은 GitLab을 사용해 코드를 개발하고 버전을 관리, 프로젝트 협업 진행
  2. 자동화된 테스트와 배포: Jenkins를 통해 코드 변경 사항이 자동으로 빌드, 테스트되고, 성공적이면 배포 프로세스가 진행
  3. 애플리케이션 컨테이너화: Docker를 사용하여 애플리케이션과 그 환경을 컨테이너로 패키징, 환경 차이에 따른 문제 방지
  4. 웹 애플리케이션 실행: Flask로 개발된 웹 애플리케이션은 Gunicorn을 통해 실행, Nginx가 정적 컨텐츠를 처리하고 리버스 프록시로서의 역할을 수행하여 사용자 요청을 Gunicorn으로 전달
  5. 데이터 관리: 애플리케이션의 데이터는 MySQL에서 관리되며, Redis는 빠른 데이터 접근을 위한 캐시로 활용
  6. 특화 데이터 처리: ChromaDB나 LangChain과 같은 특화된 도구를 사용해 특정 데이터 처리나 언어 관련 작업을 수행