매일 업데이트
2022-11-22 12:58 13 min

소규모부터 엔터프라이즈 애플리케이션까지 구축하기 위한 9가지 최고의 Python 프레임워크

파이썬은 매력적인 도구이자 강력한 무기입니다. 파이썬으로 할 수 있는 일들은 그만큼 다양합니다.

파이썬은 개발자, 과학자, 심지어 건축가까지 다양한 분야의 사람들에게 사랑받고 있습니다.

파이썬은 시작하기 매우 쉽지만, 복잡한 시스템을 구축할 수 있는 고수준 추상화와 메타 프로그래밍 기능을 갖추고 있으며, 광범위한 라이브러리를 통해 거의 모든 작업을 수행할 수 있습니다. 물론 동시성이나 강력한 타입 시스템에 제약이 있을 수 있지만, 이러한 한계는 극복 가능합니다.

이 글에서는 크고 작은 웹 애플리케이션을 개발할 때 가장 적합한 파이썬 프레임워크들을 살펴보겠습니다.

장고 (Django)

장고 프레임워크는 파이썬 커뮤니티에서 오랫동안 검증된 웹 프레임워크입니다. 파이썬 개발자에게 웹 애플리케이션을 만들라고 하면, 루비 개발자가 레일즈를 선택하는 것처럼 자연스럽게 장고를 선택할 것입니다.

여기에는 타당한 이유가 있습니다. 장고는 “마감 시간을 맞추는 완벽주의자를 위한 웹 프레임워크”라는 슬로건처럼, 필요한 모든 기능이 “내장된” 프레임워크입니다. 파이썬 언어가 배터리 포함 언어인 것과 마찬가지입니다.

이러한 기능 덕분에 장고는 개발 시간을 상당히 단축시켜 줍니다.

  • 프레임워크에서 자동 생성 및 적용되는 편리한 ORM
  • 모델 기반 관리자 패널 자동 생성 기능
  • 쿠키, 세션, 미들웨어, 템플릿 등 다양한 지원
  • XSS 및 CSRF 공격 방지 등 자동 적용되는 보안 기능
  • 거의 모든 데이터베이스와 호환 (공식 지원이 없는 어댑터도 쉽게 찾을 수 있음)
  • 지리 데이터 및 공간 쿼리에 대한 뛰어난 지원 (지오장고)

이 외에도 다양한 기능이 있습니다. 장고는 완벽하고 사용하기 쉬운 웹 프레임워크라고 할 수 있습니다.

장고는 당신에게 적합할까요?

확실히 그렇습니다.

장고는 빠른 프로토타입 제작부터 엔터프라이즈 애플리케이션 구축까지 모든 상황에 적합합니다. 다만, 프레임워크의 구조가 다소 엄격할 수 있습니다. 장고는 개발자가 빠르고 쉽게 개발할 수 있도록 구조("규칙에 따른 개발")를 강제하기 때문에 이 구조에 동의하지 않을 수도 있습니다. 예를 들어, 장고 ORM을 다른 ORM(예: SQL Alchemy)으로 대체하려는 경우 어려움을 겪을 수 있습니다.

장고와 파이썬을 활용하여 풀스택 개발자가 되고 싶으신가요? 훌륭한 온라인 강좌를 확인해 보세요.

플라스크 (Flask)

파이썬 웹 개발에서 장고가 거의 모든 마음을 사로잡고 있는 동안, 플라스크는 강력한 경쟁자입니다.

장고와 달리 플라스크는 "마이크로 프레임워크"입니다. 즉, 몇 가지 핵심 기능에 집중하고 나머지는 사용자에게 맡깁니다. 이 "나머지는 당신에게 맡깁니다"라는 점은 목표에 따라 좌절이나 기쁨의 원천이 될 수 있습니다. 자신이 무엇을 하고 있는지 알고, 원하는 구성 요소를 선택하여 멋진 웹 애플리케이션을 만들고 싶은 사람들에게 플라스크는 최고의 선택입니다.

플라스크는 다음과 같은 기능을 제공합니다.

  • 라우팅, 템플릿, 세션 관리 및 기타 유용한 기능
  • 단위 테스트에 대한 완벽한 지원
  • 최소한의 플러그형 아키텍처
  • 우수한 REST 지원
  • 소규모 웹 애플리케이션에 적합한 고유한 아키텍처인 Blueprint 지원
  • ORM, 마이그레이션 등을 위한 패키지 선택 가능
  • 유연한 애플리케이션 구조 - 파일을 원하는 위치에 배치 가능
  • 정적 파일 제공
  • WSGI 규격 준수

플라스크는 당신에게 적합할까요?

플라스크는 최소한의 웹 프레임워크로, 모든 기능이 개별 구성 요소로 나뉩니다. 따라서 프로토타입을 빠르게 만들어야 하는 경우, 데이터베이스, 폴더 구조, 라우팅 등 사소한 결정에 시간을 너무 많이 소비하게 되어 오히려 비효율적일 수 있습니다. 플라스크는 중대형 규모의 프로젝트, 특히 안정적인 REST API를 개발할 때 가장 적합합니다.

보틀 (Bottle)

플라스크의 접근 방식이 충분히 미니멀하지 않고 더 많은 제어를 원한다면 보틀을 고려해 보세요.

보틀은 파이썬 표준 라이브러리만을 의존성으로 사용합니다. 즉, `pip install this` 또는 `pip install that` 같은 명령어를 사용할 필요가 없지만, 조만간 필요해질 가능성이 큽니다. 보틀이 주목받는 이유는 다음과 같습니다.

  • 단일 파일 배포. 전체 애플리케이션이 하나의 ".py" 파일에 존재합니다.
  • 외부 종속성 없음. 파이썬 버전만 설치되어 있으면 됩니다.
  • Jinja2, Mako 또는 Cheetah로 대체할 수 있는 템플릿 엔진 제공
  • 폼, 헤더, 쿠키 및 파일 업로드 지원
  • 쉽게 교체 가능한 내장 웹 서버

보틀은 당신에게 적합할까요?

특별한 요구 사항이 없는 매우 작은 앱(예: 500줄 미만 코드)을 만들 때 보틀이 적합할 수 있습니다. 웹 앱을 만드는 데 있어 간결하고 실용적인 접근 방식이지만, 현실적으로 보틀은 도움이 되기보다는 오히려 방해가 될 수 있습니다. 왜냐하면 현실 세계는 끊임없이 변화하고 새로운 요구 사항이 발생하기 때문입니다. 그럴 때 모든 것을 하나의 파일에 넣는 것은 매우 번거로워질 수 있습니다.

또한 보틀과 플라스크가 매우 비슷하다고 생각한다면 맞습니다. 두 프레임워크를 합병하자는 제안은 2012년부터 있었으며 플라스크의 창시자인 Armin도 이에 동의했습니다. 그러나 보틀의 창시자인 Marcel은 단일 파일 접근 방식을 고수하며 두 프레임워크가 분리되어야 한다고 주장합니다.

조프 (Zope)

조프는 설명하기 복잡하지만 한번 시도해 보겠습니다. 조프는 크고 작은 애플리케이션을 개발하는 데 사용할 수 있는 웹 프레임워크이지만, 그 이상입니다. 조프는 조프 철학에 따라 개발되고 조프 코퍼레이션에서 유지 관리하는 다양한 도구 (웹 프레임워크 포함)로 구성된 플랫폼에 가깝습니다.

조프는 엔터프라이즈 애플리케이션 개발에 적합한 흥미로운 구성 요소와 기능을 제공합니다.

  • 대규모 앱을 구성하기 위한 구성 요소 등록 및 검색 아키텍처
  • 조디비 – (주로) 객체를 저장하기 위한 파이썬 객체 데이터베이스
  • 콘텐츠 관리 시스템을 위한 완전한 프레임워크 및 표준
  • 웹 애플리케이션 프레임워크 세트 – Grok 같은 몇 가지 새로운 프레임워크가 조프 위에 구축되었지만, 표준 프레임워크는 여전히 조프입니다.
  • 소프트웨어 개발, 릴리스 및 유지 관리에 대한 강력한 표준

조프는 당신에게 적합할까요?

매우 큰 앱을 개발하기 위해 고도로 구조화된 환경을 원한다면 조프가 좋은 선택입니다. 하지만 조프는 커뮤니티가 매우 작고, 많은 파이썬 개발자가 조프에 대해 들어보지도 못했을 수도 있습니다. 튜토리얼과 자세한 문서를 찾기가 어려우므로 많은 것을 직접 알아봐야 할 것입니다. (커뮤니티는 매우 도움이 되지만!) 또한 조프를 배우고 기술을 "희석"하고 싶어 하지 않는 개발자들도 있을 수 있습니다.

터보 기어스 (TurboGears)

터보 기어스는 진정으로 구성 가능한 아키텍처를 가진 매우 유연한 프레임워크입니다. 필요에 따라 확장할 수 있는 프레임워크로, 단일 파일 애플리케이션부터 다중 테넌시 대기업까지 구축할 수 있습니다.

터보 기어스는 몇 가지 뛰어난 기능을 가지고 있으며, 일부는 장고와 같은 인기 있는 프레임워크에 없거나 구축하기 어렵습니다.

  • 여러 데이터베이스에 대한 뛰어난 지원
  • 다중 데이터베이스 트랜잭션
  • 높은 수준의 모듈성 – 단일 파일로 시작하여 필요한 만큼 확장 가능
  • 강력한 ORM (장고의 ORM보다 더 발전된 SQLAlchemy)
  • WSGI 사양에 기반한 플러그형 아키텍처
  • 데이터베이스 샤딩에 대한 기본 제공 지원
  • 깊고 엄격한 객체 지향 계층 구조가 아닌 기능 중심 인터페이스

터보 기어스는 당신에게 적합할까요?

즐겁게 개발하고, "차세대"라는 언론의 소란에서 벗어나 검증되고 성숙하며 강력한 프레임워크를 원한다면 터보 기어스가 매우 적합합니다. 커뮤니티에서 높은 평가를 받고 있으며, 완전하고 광범위한 문서를 제공합니다. 터보 기어스는 독단적이지 않기 때문에 초기 설정 및 구성 시간이 더 오래 걸릴 수 있지만, 엔터프라이즈 애플리케이션 개발에 이상적인 프레임워크입니다.

Web2py

Web2py는 2007년에 취미 프로젝트로 시작되었습니다. 목표는 웹 개발을 모든 사람이 쉽게 접근할 수 있도록 만드는 것이었습니다.

그 결과 Web2py는 무의존성 접근 방식을 극단적으로 추구합니다. 별도의 요구 사항이 없고, 설치할 것도 없으며, 개발, 데이터베이스 관리 및 배포를 위한 모든 기능을 갖춘 웹 기반 편집기가 포함되어 있습니다.

단순한 프레임워크라기보다는 완전한 개발 환경인 안드로이드 스튜디오와 비슷하다고 생각할 수 있습니다. Web2py의 멋진 기능은 다음과 같습니다.

  • 사실상 학습 곡선이 없습니다.
  • 최소한의 코어 (단 12개 객체)!
  • 순수 파이썬 템플릿
  • XSS, CSRF 및 기타 공격으로부터 보호
  • 일관성 있고 사용하기 쉬운 API

Web2py는 당신에게 적합할까요?

Web2py는 안정적이고 흥미로운 프레임워크이지만, 장고나 플라스크와 같은 다른 옵션과 비교했을 때 추천하기 어렵습니다. 작업량이 적고 단위 테스트도 부족합니다. 즉, 특히 REST API를 구축하는 경우 코드 API와 프레임워크가 제공하는 전반적인 경험을 즐길 수 있습니다.

체리파이 (CherryPy)

체리파이는 기본적인 프레임워크 기능을 제공하고 빠르게 개발을 시작할 수 있도록 하는 또 다른 마이크로 프레임워크입니다.

플라스크와 같은 다른 마이크로 프레임워크와 유사하지만, 체리파이는 몇 가지 차이점을 자랑합니다.

  • 내장 다중 스레드 서버(플라스크에서는 없는 기능)
  • 단일 웹 서버에서 여러 애플리케이션 호스팅 가능
  • 애플리케이션을 WSGI 앱(다른 WSGI 앱과 인터페이스) 또는 일반 HTTP 서버(성능 향상)로 제공
  • 프로파일링 및 단위 테스트에 대한 뛰어난 지원
  • PyPy, Jython, 심지어 Android에서도 실행 가능

체리파이는 이러한 기능 외에도 웹 프레임워크에서 기대할 수 있는 모든 기능을 제공합니다.

체리파이는 당신에게 적합할까요?

대부분 RESTful 서비스를 구축하는 경우 체리파이는 플라스크보다 훨씬 더 강력한 경쟁자입니다. 10년이 넘은 프레임워크로 매우 성숙했으며, 크고 작은 애플리케이션 모두에 적합합니다.

사닉 (Sanic)

Node.js와 비동기식 프로그래밍 모델의 등장은 파이썬을 비롯한 많은 커뮤니티를 뒤처지게 만들었습니다. 이에 대응하여 비동기식 웹 프레임워크들이 등장했고, 사닉도 그중 하나입니다.

사닉은 경로 데코레이터, 청사진 및 기타 기본적인 기능을 플라스크에서 빌려왔습니다. 그리고 이를 인정하는 것을 부끄러워하지 않습니다. 플라스크 팬이라면 사닉이 제공하는 비동기 I/O 기능에 만족할 것입니다. 즉, 사닉은 async/await를 지원하는 플라스크라고 할 수 있습니다!

체리파이와 비교했을 때 사닉은 놀라운 성능 이점을 가지고 있습니다. (Dataweave의 테스트 결과 참조)

보시다시피 동시성 수가 초당 50을 초과하기 시작하면 체리파이는 성능이 저하되어 높은 실패율을 보입니다.

사닉은 당신에게 적합할까요?

사닉의 성능은 매우 뛰어나지만, 다음 프로젝트에 최고의 선택이 아닐 수도 있습니다. 그 이유는 비동기 라이브러리가 부족하기 때문입니다. 기존 파이썬 도구 및 라이브러리의 대부분은 비동기 작업을 고려하지 않고 단일 스레드 CPython 버전용으로 작성되었습니다. 예를 들어 선호하는 ORM이 비동기 작업을 지원하지 않는 경우 사닉을 사용하는 의미가 없어집니다.

이러한 성숙도 및 가용성 문제 때문에 파이썬에서 비동기 프레임워크를 더 이상 살펴보지 않겠습니다.

메이소나이트 (Masonite)

얼마 전에 메이소나이트 프레임워크를 알게 되었고 올바른 방향으로 나아가고 있다고 생각했습니다. 그 이후로 버전 2.0이 출시되었고, 이제 메이소나이트에 관심을 기울일 때가 된 것 같습니다. 메이소나이트.

간단히 말해서 메이소나이트는 라라벨(Laravel, PHP 프레임워크)의 파이썬 버전입니다. 왜 이게 중요할까요? 라라벨은 루비 온 레일즈의 원칙을 기반으로 구축되었으며, 이 두 프레임워크를 통해 루비 개발자가 아닌 사람들도 "레일즈 방식"을 경험할 수 있습니다.

라라벨(및 어느 정도는 레일즈) 개발자는 메이소나이트를 사용하면 익숙한 환경에서 바로 개발을 시작할 수 있습니다. 메이소나이트를 시도했을 때 (버그를 포함하여 몇 가지 문제를 제기했지만!) 라라벨의 경험 덕분에 생각할 필요 없이 바로 REST API를 구축할 수 있었습니다.

배터리가 포함된 풀스택 프레임워크인 메이소나이트는 다음과 같은 흥미로운 기능을 제공합니다.

  • 액티브 레코드 스타일 ORM
  • 데이터베이스 마이그레이션(장고와 달리 개발자가 생성해야 함)
  • 의존성 주입을 위한 강력한 IoC 컨테이너
  • 스캐폴딩 및 작업 실행을 위한 자체 CLI ("craft"라고 함)
  • 단위 테스트에 대한 뛰어난 지원

메이소나이트의 가장 큰 "라이벌"은 장고입니다. 커뮤니티는 이 프레임워크를 쉽고 즐겁게 사용할 수 있으며, 다음으로 큰 프레임워크로 만들기 위해 최선을 다하고 있습니다. 여기 그리고 여기에서 더 자세한 정보를 확인할 수 있습니다.

메이소나이트는 당신에게 적합할까요?

메이소나이트는 장고와 비교했을 때 아직 초기 단계에 있기 때문에 장고보다 추천하기는 어렵습니다. 하지만 Rails 스타일 (또는 라라벨 스타일) 개발을 선호한다면 메이소나이트의 기능에 만족할 것입니다. 모든 것이 미리 구성되어 있고, 프로토타입을 빠르게 구축하는 데 이상적입니다.

결론

파이썬 프레임워크는 크고 작은 것들이 매우 다양합니다. 소규모 프로젝트에서는 거의 모든 프레임워크를 선택할 수 있지만, 엔터프라이즈 애플리케이션에는 이러한 프레임워크로는 충족할 수 없는 요구 사항이 있습니다. 엔터프라이즈 개발을 위해서는 장고 (어느 정도), 조프, 터보 기어스가 좋은 선택입니다. 개인적으로는 터보 기어스에 관심이 갑니다.

하지만 훌륭한 개발자라면 마이크로 프레임워크를 선택하여 자신만의 아키텍처를 구축할 수 있습니다. 플라스크와 유사한 프레임워크들이 성공을 거둔 이유도 이러한 점을 설명해 줍니다.

만약 초보자라면, 이 온라인 강좌가 파이썬을 배우는 데 도움이 될 것입니다.

다음에는 API를 구축하기 위한 특수 파이썬 프레임워크를 살펴보겠습니다.

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.