본문 바로가기

backend

(3)
[Backend] 백엔드 API 패턴 - 레이어드 아키텍처 패턴(layered architecture) 개발 단계에서 좋은 코드의 구조를 생각하는 것은 쉽지 않습니다. 코드 아키텍처를 구상할 때는 확장성(extensibility), 재사용성(reusability), 유지 보수 가능성(maintainabiliy), 가독성(readability)와 같은 요소들을 염두해야합니다. 다행히도 코드의 구조를 어떻게 구성하고 관리해야 하는지는 이미 많이 다루어졌으며, 그에 관한 정성이나 패턴은 많이 나와있습니다. 그 중에서 백엔드 API 코드에 가장 널리 적용되는 패턴 중 하나는 레이어드 아키텍처 패턴입니다. Multi-tier 아키텍처 패턴이라고도 하는 레이어드 아키텍처는 코드를 논리적인 부분 혹은 역할에 따라 독립된 모듈로 나누어서 구성하는 패턴입니다. 그리고 각 모듈이 서로의 의존도에 따라 층층히 쌓듯이 연결되어..
[Python] Flask Signal (Blinker) 시그널 플라스크는 시그널(signal) 라이브러리인 Blinker 를 통합한다. 이 라이브러리는 특정 이벤트를 '구독' 했다가 이벤트가 발생했을 때 필요한 함수를 실행한다. 여기서 말하는 이벤트는 고유한 이름표를 갖고 blinker.signal 클래스를 통해 생성된 인스턴스이다. 플라스크 0.12는 요청을 처리하는 과정 중 중요한 순간마다 총 10개의 시그널을 발생시킨다. (시그널은 다음 사이트 참고) 시그널은 connect 함수를 사용해서 특정 이벤트를 등록할 수 있다. 시그널은 코드가 시그널의 send 함수를 호출하면 트리거된다. send 함수는 추가적인 인수를 받아서 모든 등록된 함수에 데이터를 전달한다. 다음 예제에서는 request_finished 시그널에 finished 함수를 등록한다. 우선..
[Python] Flask 전역 공간 (Flask.g) 전역 공간 flask.g 변수에는 모든 전역 정보가 포함돼있고, 원하는 어떤 속성이든 여기에 설정할 수 있다. 플라스크에서 @app.before_request 데코레이터는 요청이 만들어지고 뷰에 전달하기 직전에 호출할 함수가 있을 때 사용한다. before_request 를 사용하는 일반적인 경우는 전역 공간에 값을 저장할 때 이다. before_request 를 사용하면 컨텍스트 안에서 요청되는 모든 함수는 g 변수를 사용해서 데이터를 얻을 수 있다. 다음 예시를 보자 from flask import Flask, jsonify, g, request app = Flask(__name__) @app.before_request def authenticate(): # request.authorization u..