728x90

티스토리챌린지 21

[Docker] NGINX란? Docker와 FastAPI를 활용한 서버 구축 실습

NGINX는 웹 서버와 리버스 프록시로 널리 사용되는 고성능 소프트웨어입니다. 이번 포스팅에서는 NGINX의 개념을 이해하고, Docker를 사용하여 NGINX와 FastAPI를 통합해 서버를 띄우는 실습을 진행하겠습니다. 1. NGINX란?1.1. NGINX의 정의NGINX(발음: 엔진엑스)는 2004년 개발된 오픈소스 소프트웨어로, 웹 서버, 리버스 프록시, 그리고 로드 밸런서 역할을 수행합니다.특히 비동기 이벤트 기반 아키텍처를 사용하여 대규모 동시 요청 처리에 강점을 보입니다.1.2. NGINX의 주요 역할웹 서버: 정적 콘텐츠(HTML, CSS, JS) 제공.리버스 프록시: 클라이언트 요청을 백엔드 서버로 전달.로드 밸런서: 트래픽을 여러 서버로 분산.캐시 서버: 콘텐츠를 캐싱해 성능 최적화.H..

Docker 2024.11.17

[Cloud] MSA란? 개념과 장점, 그리고 도입 시 고려 사항

1. MSA란 무엇인가?MSA(Microservices Architecture)는 소프트웨어를 작은 독립적인 서비스들로 나누어 설계하는 아키텍처 스타일입니다. 각 서비스는 고유한 기능을 수행하며, 독립적으로 배포, 개발, 테스트가 가능합니다. 서비스들은 주로 API를 통해 서로 통신하며, 팀 간의 작업 분리를 촉진합니다.2. MSA의 핵심 개념서비스 독립성: 각 마이크로서비스는 별개의 프로세스로 작동하며, 다른 서비스와 느슨하게 결합됩니다.작은 단위의 기능: 서비스는 단일 책임 원칙(SRP)을 준수하여 작고 명확한 기능을 수행합니다.API 통신: 서비스 간 통신은 REST, gRPC, 메시지 큐(Kafka 등)와 같은 API를 통해 이루어집니다.독립적인 배포: 각 서비스는 개별적으로 배포할 수 있어 변경..

Cloud 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..

Docker 2024.11.15

Apache Airflow란? 데이터 파이프라인 자동화부터 기본 예제까지

Airflow란 무엇인가?Apache Airflow는 데이터 파이프라인(workflows)을 관리하고 자동화하기 위한 오픈소스 플랫폼입니다. 데이터 파이프라인을 시각적으로 설계하고, 스케줄링 및 모니터링할 수 있는 강력한 도구로, 데이터 엔지니어들이 작업의 흐름을 효율적으로 관리할 수 있도록 돕습니다.Airflow는 파이썬 코드로 워크플로우를 정의하고, DAG(Directed Acyclic Graph) 형태로 작업의 흐름을 설정하여 각 단계의 의존성을 체계적으로 관리합니다.왜 Apache Airflow가 필요한가?데이터 파이프라인의 자동화는 현대 데이터 엔지니어링에서 필수적입니다. 특히 대규모 데이터의 ETL(추출, 변환, 로드) 작업을 반복적으로 수행하거나, 여러 작업 간의 복잡한 의존 관계를 다룰 때..

Airflow 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..

LLM 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만 사용하도록 제어할 수 있게 해주며, 파이썬 프로그램을 실행할 때..

Python 2024.11.12

[Spark] 아파치 스파크(Apache Spark)란?

1. Apache Spark란?Apache Spark는 대규모 데이터를 빠르게 처리할 수 있는 오픈소스 분산 처리 프레임워크입니다. Spark는 대량의 데이터를 여러 서버(노드)에 분산하여 병렬로 처리할 수 있으며, 메모리 기반 처리를 통해 빠른 속도로 데이터를 분석합니다. 특히 데이터 분석, 머신러닝, 실시간 스트리밍, 그래프 처리를 지원해 다양한 데이터 분석 환경에서 널리 사용되고 있습니다.Spark는 Hadoop MapReduce보다 성능이 뛰어난 것으로 잘 알려져 있으며, 여러 데이터 소스와 통합이 쉽고, 다양한 데이터 처리 요구에 맞는 모듈을 제공해 활용도가 높습니다. 2. Spark가 필요한 이유Apache Spark는 다음과 같은 이유로 많은 빅데이터 프로젝트에서 필요합니다:2-1. 대규모 ..

Spark 2024.11.11

[Docker] Zookeeper와 Kafka 설치 및 연동 가이드: Docker Compose로 간편하게 설정하기

Apache Kafka는 대용량 데이터 스트림을 안정적으로 처리하는 메시지 브로커로, 다양한 서비스에서 실시간 데이터 처리에 널리 사용됩니다. Kafka가 안정적으로 작동하기 위해서는 Zookeeper와의 연동이 필수입니다. Zookeeper는 Kafka 클러스터의 상태와 각 브로커를 관리하여 장애에 대비하고 효율적인 분산 처리를 지원합니다. 이 포스팅에서는 Docker Compose를 사용하여 Zookeeper와 Kafka를 설치하고 연동하는 방법을 단계별로 설명하겠습니다.1. Zookeeper와 Kafka란?Zookeeper는 Kafka 클러스터의 상태를 모니터링하고, 장애 발생 시 빠르게 리더 브로커를 재할당하는 등 클러스터의 안정성을 유지해주는 역할을 합니다.Kafka는 대용량 데이터의 송수신을 ..

Docker 2024.11.10

[Kafka] Kafka를 이용한 실시간 데이터 스트리밍 및 데이터베이스 연동 실습

Kafka는 실시간 데이터 스트리밍을 처리하는 강력한 메시징 시스템으로, 대규모 분산 시스템에서 데이터 전송 및 처리에 널리 사용됩니다. 이번 포스팅에서는 Kafka의 기본 개념과 파이썬을 사용한 Kafka 실습을 다룬 후, Iris 데이터셋을 Kafka를 통해 전송하고, Consumer가 이를 데이터베이스에 저장하는 고급 예제를 포함하여 설명합니다.Kafka란?Kafka는 오픈소스로 개발된 분산 스트리밍 플랫폼으로, 대용량 데이터 처리와 실시간 스트리밍에 사용됩니다. Kafka는 주로 실시간 데이터 처리와 메시징 서비스로 활용되며, IoT, 로그 수집, 실시간 데이터 분석 등 다양한 분야에서 사용됩니다.Kafka를 사용하는 이유?1. 데이터 흐름의 실시간성일반적인 데이터 저장:데이터를 직접 데이터베이스..

Kafka 2024.11.09

[Server] Unicorn, Gunicorn, 그리고 FastAPI: 고성능 웹 서버 구성하기

웹 애플리케이션을 운영할 때 서버의 안정성과 성능을 높이는 것은 필수입니다. FastAPI와 같은 고성능 파이썬 프레임워크를 배포할 때 Gunicorn이 널리 사용되는데요, 이와 관련된 Unicorn이란 개념도 함께 자주 언급됩니다. 이번 포스팅에서는 Unicorn과 Gunicorn이 무엇인지, 둘의 관계, 그리고 왜 Gunicorn을 선택해 FastAPI와 함께 사용하는지를 알아보겠습니다.1. Unicorn이란?Unicorn은 Ruby 생태계의 애플리케이션 서버입니다. Unicorn은 Ruby on Rails와 같은 Ruby 기반 웹 애플리케이션을 서버에서 고성능으로 실행할 수 있게 돕습니다. Unicorn은 프리포킹 방식을 사용하여 서버 시작 시 여러 워커 프로세스를 미리 준비해 두고 요청이 들어오면..

Server 2024.11.08
728x90