본문으로 건너뛰기
:tech
← Handbook

Python 프로젝트

API 구현

API 정의 문서를 통해 정의된 API를 구현한다.

라이브러리 적용

API 정의를 통해 빌드된 Python 라이브러리는 버즈빌 내부적으로 사용하는 프라이빗 PyPI 패키지 관리 시스템으로 배포된다. pip 커맨드를 사용해서 배포된 라이브러리를 가져올 수 있다.

$ pip install --extra-index-url $BUZZVIL_PYPI_HOST PACKAGE && pip freeze > requirements.txt
Collecting PACKAGE
...

인터페이스 구현

라이브러리에 정의된 API를 구현함으로써 클라이언트에게 서비스를 제공할 수 있다.

# librarysvc/librarysrv/server.py
import logging
import grpc
from library import library_pb2, library_pb2_grpc

class LibraryServer(library_pb2_grpc.LibraryServiceServicer):
    def GetBook(self, request, context):
        # TODO: Find the book from database.
        return library_pb2.Book(
            title="Title here.",
            author="Author here."
        )

서버 구성

서버 생성 및 실행

gRPC를 통해 서버를 생성하고 실행할 수 있다. 이때 app.py 에서는 연결을 맺거나 서버를 실행하는 역할에만 집중하고 실제 구현은 내부 패키지에게 위임한다. 자세한 사용법은 Starting the python server 문서를 참고한다.

# app.py
from concurrent import futures
import os
import time
import logging

import grpc

from librarysvc.librarysrv.server import LibraryServer
from library import library_pb2_grpc

_ONE_DAY_IN_SECONDS = 60 * 60 * 24

def serve():
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    library_pb2_grpc.add_LibraryServiceServicer_to_server(LibraryServer(), server)
    server.add_insecure_port('[::]:{}'.format(os.environ['PORT']))
    server.start()
    try:
        while True:
            time.sleep(_ONE_DAY_IN_SECONDS)
    except KeyboardInterrupt:
        server.stop(0)

if __name__ == '__main__':
    logging.basicConfig()
    serve()

서버 로깅

TBD

프로젝트 구성

폴더 구조

TBD

전체 보기
핸드북

API 정의

이 문서는 버즈빌의 API(애플리케이션 프로그래밍 인터페이스, Application Programming Interface)를 정의하고 사용하는 방법을 기술한다. 인터페이스는 Protocol Buffers를 통해 정의한다. 가이드라인 API 우선 방식 (API-First Approach) 서비스 구성 시 API 우선 방식…

핸드북

버즈빌 아키텍처

이 웹사이트는 버즈빌 소프트웨어 아키텍처 전반에 대한 내용과 개발을 위해 필요한 문서들을 모아두는 공간이다. 들어가며 광고 생태계는 많은 이해관계자로 인해 복잡한 구성을 가지고 있다. 애드테크 기업들은 이러한 광고 업계의 많은 부분을 자동화하고 최적화 함으로써 더욱 효과적이고 효율적인 광고 생태계를 만들어가고 있다. 허나…

핸드북

서비스 배포

본 문서에서는 버즈빌에서 백엔드 서비스를 배포하기 위해 준비해야하는 내용들에 대한 정보를 제공한다. 가이드라인 버즈빌에서 쿠버네티스에 서비스를 배포하는 과정은 아래와 같다. 프로젝트에 따라 상이할 수 있지만 일반적인 백엔드 워크로드 배포 파이프라인을 꾸리기 위해 아래와 같은 준비가 필요하다. Docker 이미지 생성 He…