본문 바로가기
728x90
반응형

분류 전체보기336

(Python) 대용량 데이터 처리 속도 높이기(1) Kafka를 이용한 대용량 3D 이미지 데이터를 전달하여, 딥러닝 모델을 구축하기 위한 python 코드를 개발 중이다. 목표는 100MB의 대용량 파일을 1초 이내로 보내는 것을 목표로 하고 있다. 현재는 임의의 데이터를 이용하여 데이터를 전달하려고 한다. (Kafka로 안된다면, Spark나 Flink를 이용할 예정이다.) 첫 번째 시도로, 30MB의 mp4 파일을 카프카 서버로 produing하는 시간은 대략 5.5~ 5.9초 정도 소요가 된다. import time from kafka import KafkaProducer # Kafka Producer 설정 producer = KafkaProducer( bootstrap_servers=['localhost:9092'], batch_size=6553.. 2023. 4. 18.
(M1 mac) vpn 연결 및 gitlab 접속 문제 해결 vpn 연결을 통해 gitlab 접속하여 소스코드를 받아오려고 했다. 회사에서 윈도우를 사용하고, 집에서 개인적으로 맥북을 사용해서 혼동이 올 때가 있다. 회사에서는 문제없이 사용했는데, 맥북에서 소스코드를 받아서 작업을 하려고 진행하는 과정에서 연결 오류가 발생했다. 일단, 간단하게 IPSec을 통한 L2TP로 vpn 접속을 진행하였고, 이름, 서버주소, 계정이름, 암호, 공유보안을 작성하면 된다.(윈도우와는 크게 다르지 않다.) IPv4 구성은 PPP 사용을 하고, IPv6 구성은 자동으로 되어 있는데 이를 링크-로컬 전용으로 바꿔야지 깃랩 접속이 가능하게 되었다. 이유는 알아볼 예정이다.. IPv4 주소와 IPv6 구성을을 해놓으면, DNS 서버도 자동으로 생성이 되어서, 문제가 되지 않는다. 2023. 4. 18.
FastAPI 기초(4) - 쿼리 매개변수 쿼리는 URL에서 ? 후에 나오고 &으로 구분되는 키-값 쌍의 집합 경로 매개변수의 일부가 아닌 다른 함수 매개변수를 선언할 때, "쿼리" 매개변수로 자동 해석함 skip: 값 0을 가집니다. limit: 값 10을 가집니다. from fastapi import FastAPI app = FastAPI() fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}] @app.get("/items/") async def read_item(skip: int = 0, limit: int = 10): return fake_items_db[skip : skip + limit] 1. 선택적 매개변수 기본값을 None으로 설정하여 .. 2023. 1. 30.
FastAPI 기초(3) - 경로 매개변수 파이썬 포맷 문자열이 사용하는 동일한 문법으로 매개변수 또는 변수를 경로에 선언할 수 있음 경로 매개변수 item_id 값은 함수의 item_id 인자로 전달됨 from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id): return {"item_id": item_id} 1. 타입이 있는 매개변수 item_id => int로 선언 from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id} 2. 순서 문.. 2023. 1. 30.
FastAPI 기초(2) - Python coding style PEP8 - 파이썬 코딩 스타일 가이드 1) 코드 레이아웃 들여쓰기를 할 때 Tab 대신 공백(Space)을 사용한다. 특히 Python 3는 Tab과 공백을 혼용해서 사용하는 것을 허용하지 않는다. 문법적으로 들여쓰기를 할 때는 4개의 공백을 사용한다. 각 라인은 79자 이하로 한다. 라인이 길어서 다음 라인으로 넘어갈 때는 원래 들여쓰기 자리에서 4개 공백을 더 들여쓴다. 함수나 클래스는 2개의 공백 라인을 추가하여 구분한다. 메서드는 한 개의 공백 라인으로 구분한다. import는 (여러 모듈을 콤마로 연결하지 말고) 한 라인에 하나의 모듈을 import한다. 더보기 No: import os, sys Yes: import os import sys 컬렉션 인덱스나 함수 호출, 함수 파라미터 등에서 불.. 2023. 1. 26.
FastAPI 기초(1) - 기본 개념 FastAPI FastAPI : API에 대한 모든 기능을 제공하는 파이썬 클래스이며, Starlette를 직접 상속하는 클래스로 Starlette의 모든 기능을 사용할 수 있음 Starlette : Python에서 비동기 웹 서비스를 구축하는데, 이상적인 경량 ASGI 프레임워크/툴킷 ASGI(Asynchronous Server Gateway Interface) : 비동기 서버 게이트웨이 인터페이스로 Python 웹 어플리케이션과 웹 서버 간의 공통적인 인터페이스를 기술함. 애플리케이션 당 여러 개의 비동기 이벤트를 허용함 WSGI(Web Server Gateway Interface) 특징 : 함수 - async 사용, HTTP 헤더와 응답 본문을 별도의 두 가지 await send() 명령으로 보냄 .. 2023. 1. 26.
로드 밸런서(Load Balancer)? 로드 밸런서(Load Balancer) 정의 트래픽이 몰리는 것을 막아 가용성을 보존하고, 트래픽 병목 현상을 예측하고 막을 수 있는 것 가용성 : 서비스가 지속되는 정도 로드밸런서 설계 - 고려 사항 업무 크기를 고려하여, 실행시간이 얼마나 걸리는지 확인 데이터 의존도에 따른 작업 순서 및 실행 시간이 얼마나 걸리는지 확인 트리 구조 계산방식 등을 통한 작업 분담 알고리즘의 복잡도 하드웨어 아키텍처 에러 허용 범위 로드 밸런싱 알고리즘 라운드 로빈(Round Robin) : 요청이 들어온 순서대로 순차적인 처리하며, 경로 분이 같은 처리량을 보장하지 않음 가중 라운드 로빈(Weight Round Robin) : 라운드 로빈의 성능에 따라 트래픽 분산에 가중치를 두는 방식 최소 접근법(Least Conn.. 2023. 1. 26.
HTTP vs HTTPS 비교 HTTP(Hyper Text Transfer Protocol) 1989년 팀 버너스 리(Tim Berners Lee)에 의해 처음 설계되었음 정의 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있음 구조 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동함 상태를 가지고 있지 않는 Stateless 프로토콜이며, Method, Path, Version, Headers, Body 등으로 구성됨 HTTP : 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜 => 비밀번호나 주민등록번호 등을 주고 받으면 제3자가 정보를 조회할 수 있었으므로, 이 문제를 해결하기 위해 HTTPS 등장 HTTPS(Hyper Tex.. 2023. 1. 25.
TCP & UDP 정의 UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜) 비연결형 프로토콜 신뢰성이 없는 전송 프로토콜 IP 데이터그램을 캡슐화하여 보내는 방법과 연결 설정을 하지 않고 보내는 방법을 제공 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않으며, 이 모두가 사용자 프로세스의 몫임 UDP가 행하는 것은 포트들을 사용하여 IP 프로토콜에 인터페이스를 제공하는 것 코드가 간단할 뿐만 아니라 TCP 처럼 초기설정(initial setup)에서 요구되는 프로토콜보다 적은 메시지가 요구됨 흐름제어를 하지 않기 때문에 전송 속도를 최대한 빠르게 할 수 있음 수신자와 송신자 간의 handshaking이 없는 connectionless 성질을 가짐 예를 들어, 유튜브 동영상 같.. 2023. 1. 25.
Object Oriented Programming(OOP) 객체 지향 프로그램 객체 지향 프로그램 객체 지향 프로그램 : 객체의 관점에서 프로그래밍 C 언어 : 절차 지향적인 프로그래밍(프로세스가 함수 단위로 순서대로 진행됨) 객체를 기준으로 코드를 나누어 구현함 애플리케이션을 구성하는 요소들을 객체로 바라보고, 객체들을 유기적으로 연결하여 프로그래밍함 Java => 구성 부분 단위는 클래스이며, 클래스는 설계도 역할이고, 구현체는 인스턴스임 클래스 : 객체를 정의하고 만들어 내기 위한 설계도이며, 클래스 안에 객체를 만들어내기 위해 변수와 메서드들이 존재함 객체 : 클래스에 선언된 모양 그대로 생성된 실체로 클래스의 인스턴스라고 부름 인스턴스 : 클래스를 통해 구현해야 할 객체가 실제로 구현된 구체적인 실체 캡슐화(Encapsulation) 정의 : 하나의 객체에 대해 그 객체가.. 2023. 1. 25.
728x90
반응형