Home 통합 프로젝트 기술
Post
Cancel

통합 프로젝트 기술

기술 스택 정리

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과 같은 특화된 도구를 사용해 특정 데이터 처리나 언어 관련 작업을 수행
This post is licensed under CC BY 4.0 by the author.

Docker Compose에서 Flask와 MySQL 연결 문제

Supervisord