소프트웨어 전문지 마이크로소프트웨어 394호는 클라우드(Cloud)와 백엔드(Back-End)를 주제로 담았습니다. 플라스크, 데브옵스, PaaS, 마이크로서비스 아키텍처 등 마소 394호의 주요 기사들을 IT조선 독자에게도 소개합니다. [편집자주]

백엔드 개발은 로직을 짜는 것 말고도 비용, 효율, 성능, 트래픽, 프레임워크 등 다양한 요소를 고려해야 한다. 장고 등 풀스택 프레임워크는 많은 부분을 자동으로 구성해주는 장점이 있다. 하지만 초보자에게는 이해할 수 없는 블랙박스와 같다.

플라스크는 마이크로 프레임워크다. 필수적인 기능만을 제공하면서 자유로운 커스터마이징이 가능하다. 개발자가 직접 시스템의 구조를 만들 수 있다.

플라스크로 서버를 만든다고 하면, 보통 ‘route’ 데코레이터를 사용하는 함수 기반 코드를 한 파일에 작성하는 것을 생각한다. 하지만 이렇게 작성하면 한 파일에 모든 코드가 집중돼 끝없이 길어진다. 이렇게 애플리케이션을 설계하면 유지보수, 효율적인 개발이 힘들어 대용량 애플리케이션으로 확장하기 어렵다. 이 문제를 해결하기 위해 플라스크에서는 블루프린트(Blueprint)와 플러거블 뷰(Pluggable View)를 제공한다.

플라스크 앱 객체와 유사하게 사용되는 블루프린트는 애플리케이션을 완성하기 위한 일종의 ‘빵틀’이다. 블루프린트는 미리 만들어 놓은 부분을 애플리케이션에 추가하는 방식으로 대용량 애플리케이션 개발 및 유지를 크게 단순화할 수 있다. 또한 블루프린트는 API 버전 관리를 효율적으로 할 수 있다.

플러거블 뷰는 ‘MethodView’를 제공해 HTTP 메소드 별 코드 작성을 편리하게 한다. 또한 함수 기반이 아닌 클래스 기반으로 코드를 작성할 수 있어 코드의 재사용성을 높일 수 있다.

플라스크 로고. / 플라스크 홈페이지 발췌
플라스크 로고. / 플라스크 홈페이지 발췌
또한 플라스크로 서버를 만들면 뷰 로직 실행 전에 실행돼야 하는 코드가 많아 중복 코드를 줄이려고 해도 ‘MethodView’를 사용한 베이스 뷰의 한 부분으로 만들기는 힘들다. 이를 위해 파이썬은 데코레이터라는 강력한 기능을 지원한다. 그 중 ‘functools.wraps’를 적용한 데코레이터로 함수를 데코레이트 하면 로직을 변경하지 않고 기능을 추가하기 쉽다.

플라스크의 뷰 펑션 또는 메소드를 위한 뷰 데코레이터를 사용해 뷰 펑션에 추가 검사 또는 기능을 제공할 수 있다. 리퀘스트 검증, 헤더 검사, 캐싱 적용 등은 뷰 데코레이터로 구현하자.

김성현 필자의 ‘플라스크 효과적으로 사용하기’에 대한 자세한 내용은 ‘마이크로소프트웨어 394호(https://www.imaso.co.kr/archives/3939)’에서 확인할 수 있다.


관련기사