본문 바로가기

분류 전체보기58

[Docker] NGINX란? Docker와 FastAPI를 활용한 서버 구축 실습 NGINX는 웹 서버와 리버스 프록시로 널리 사용되는 고성능 소프트웨어입니다. 이번 포스팅에서는 NGINX의 개념을 이해하고, Docker를 사용하여 NGINX와 FastAPI를 통합해 서버를 띄우는 실습을 진행하겠습니다. 1. NGINX란?1.1. NGINX의 정의NGINX(발음: 엔진엑스)는 2004년 개발된 오픈소스 소프트웨어로, 웹 서버, 리버스 프록시, 그리고 로드 밸런서 역할을 수행합니다.특히 비동기 이벤트 기반 아키텍처를 사용하여 대규모 동시 요청 처리에 강점을 보입니다.1.2. NGINX의 주요 역할웹 서버: 정적 콘텐츠(HTML, CSS, JS) 제공.리버스 프록시: 클라이언트 요청을 백엔드 서버로 전달.로드 밸런서: 트래픽을 여러 서버로 분산.캐시 서버: 콘텐츠를 캐싱해 성능 최적화.H.. 2024. 11. 17.
[Cloud] MSA란? 개념과 장점, 그리고 도입 시 고려 사항 1. MSA란 무엇인가?MSA(Microservices Architecture)는 소프트웨어를 작은 독립적인 서비스들로 나누어 설계하는 아키텍처 스타일입니다. 각 서비스는 고유한 기능을 수행하며, 독립적으로 배포, 개발, 테스트가 가능합니다. 서비스들은 주로 API를 통해 서로 통신하며, 팀 간의 작업 분리를 촉진합니다.2. MSA의 핵심 개념서비스 독립성: 각 마이크로서비스는 별개의 프로세스로 작동하며, 다른 서비스와 느슨하게 결합됩니다.작은 단위의 기능: 서비스는 단일 책임 원칙(SRP)을 준수하여 작고 명확한 기능을 수행합니다.API 통신: 서비스 간 통신은 REST, gRPC, 메시지 큐(Kafka 등)와 같은 API를 통해 이루어집니다.독립적인 배포: 각 서비스는 개별적으로 배포할 수 있어 변경.. 2024. 11. 16.
Docker를 이용한 ChromaDB와 데이터 생성 컨테이너 연동하기 이번 포스팅에서는 Docker를 이용하여 ChromaDB와 데이터 생성 컨테이너를 띄우고 연동하는 방법을 설명합니다. 데이터베이스와 데이터 생성 서비스를 각각 독립된 컨테이너로 관리하면서 효율적으로 연동하는 과정을 단계별로 살펴보겠습니다. 1. Docker 환경 설정우선, Docker가 설치되어 있어야 합니다. Docker를 설치하는 방법은 이전 포스팅을 참고하세요.https://only-advance.tistory.com/4 [Docker] Ubuntu 22.04 환경에서 도커 설치하기실행환경Ubuntu 22.041. apt repository set up# Add Docker's official GPG key:sudo apt-get updatesudo apt-get install ca-certific.. 2024. 11. 15.
Apache Airflow란? 데이터 파이프라인 자동화부터 기본 예제까지 Airflow란 무엇인가?Apache Airflow는 데이터 파이프라인(workflows)을 관리하고 자동화하기 위한 오픈소스 플랫폼입니다. 데이터 파이프라인을 시각적으로 설계하고, 스케줄링 및 모니터링할 수 있는 강력한 도구로, 데이터 엔지니어들이 작업의 흐름을 효율적으로 관리할 수 있도록 돕습니다.Airflow는 파이썬 코드로 워크플로우를 정의하고, DAG(Directed Acyclic Graph) 형태로 작업의 흐름을 설정하여 각 단계의 의존성을 체계적으로 관리합니다.왜 Apache Airflow가 필요한가?데이터 파이프라인의 자동화는 현대 데이터 엔지니어링에서 필수적입니다. 특히 대규모 데이터의 ETL(추출, 변환, 로드) 작업을 반복적으로 수행하거나, 여러 작업 간의 복잡한 의존 관계를 다룰 때.. 2024. 11. 14.
OpenAI API 스트리밍 구현: await, yield, invoke, ainvoke, stream 및 astream 개념 완벽 이해하기 OpenAI API를 활용해 실시간 스트리밍 응답을 생성하는 것은 사용자 경험을 높이는 중요한 요소입니다. 특히 await, yield, invoke, ainvoke, stream, astream 같은 비동기 스트리밍 개념을 잘 활용하면 응답 속도를 높이고, 서버 자원을 효율적으로 관리할 수 있습니다. 이번 포스팅에서는 OpenAI 스트리밍을 처리하기 위해 알아야 할 주요 개념을 예제 코드와 함께 설명합니다.1. 비동기 스트리밍의 기본 개념 이해하기비동기 처리 방식에서는 요청과 응답이 동시에 처리되어 서버 성능을 최적화할 수 있습니다. Python의 async, await, yield를 사용해 비동기적인 데이터 처리를 구현하며, OpenAI API 응답을 스트리밍 방식으로 제공합니다.async와 awai.. 2024. 11. 13.
[Python] Python에서 특정 GPU 지정하여 사용하기 - CUDA 설정 가이드 딥러닝, 데이터 과학 프로젝트나 복잡한 연산 작업을 할 때, GPU를 효율적으로 사용해야 하는 상황이 자주 발생합니다. 특히 여러 개의 GPU가 있는 환경에서는 자원 관리를 위해 특정 GPU를 지정하여 사용하는 것이 중요한데요. 이 글에서는 Python 환경에서 특정 GPU를 지정하는 방법을 설명합니다. PyTorch에서의 설정 방법, CUDA_VISIBLE_DEVICES 환경 변수를 이용한 방법 등을 다루어보겠습니다. 1. CUDA_VISIBLE_DEVICES 환경 변수로 GPU 지정하기가장 쉽고 직관적인 방법은 CUDA_VISIBLE_DEVICES 환경 변수를 설정하여 GPU를 선택하는 것입니다. 이 환경 변수는 CUDA가 어떤 GPU만 사용하도록 제어할 수 있게 해주며, 파이썬 프로그램을 실행할 때.. 2024. 11. 12.