여러분은 파이썬 프레임워크, 장고(Django)에 대해 얼마나 알고 계시나요? 우선 파이썬이 무엇인지 먼저 짚고 넘어가겠습니다. 파이썬은 디자인 자체의 가독성(readability)이 뛰어난 강력한 프로그래밍 언어입니다. 예를 들면, 파이썬에서 채택하고 있는 적절한 들여쓰기 방식은 최고의 기술력에 더욱 커다란 힘을 실어줍니다. 또한 단순한 디자인 덕분에 비교적 배우기도 쉬운데, 특히 기업들이 주로 사용하는 좀 더 복잡한 자바(Java)나 씨샵(C#)과 비교하면 그런 점이 더욱 두드러집니다.
장고는 파이썬으로 웹 애플리케이션을 만드는 데 있어서 가장 인기 있는 프레임워크입니다. 장고는 모델-뷰-템플릿(Model View Template, MVT) 패턴을 사용하고 있는데, 이는 모델-뷰-컨트롤러(Model View Controller, MVC) 패턴을 살짝 수정한 버전이라고 할 수 있습니다. 즉, 장고에서는 뷰(View)가 좀 더 컨트롤러(Controller)처럼 작동하며, 템플릿(Template)은 뷰(View)의 역할을 합니다. 이러한 솔루션은 비즈니스의 맥락과 로직을 구분할 수 있는 유연한 방식을 제공해 줍니다. 즉, 각각의 계층은 각자 별도의 책임을 갖는 것이죠.
오늘은 여러분들에게 파이썬의 단짝, 장고에 대해서 조금 더 자세히 소개해드리는 시간을 갖도록 하겠습니다.
"장고(Django), 5분 안에 알아보기"
장고(Django), 누구냐 넌!
장고(Django)의 최초 버전은 2005년에 출시되었습니다. 파이썬(Python)으로 구현된 장고는 여전히 시중에 유통되고 있으며, 지금도 매년 점점 더 많은 사용자들을 끌어모으고 있습니다. 이 프레임워크는 ‘파이썬의 선(Zen of Python)’이라는 원칙을 따르고 있으며, 스스로를 “마감 기한을 반드시 지키는 완벽주의자들을 위한 웹 프레임워크”라고 소개하고 있습니다. 장고는 모든 측면에서 개발자들을 도와주려고 노력하며, 쓸데없는 것까지 전부 새로 만드는 헛수고를 하지 않게 해줍니다. 장고는 오픈소스로, 언제든 도움을 받을 수 있는 거대한 커뮤니티를 갖고 있습니다.
장고는 거의 모든 CRUD 기능을 생성하는데 완벽하기 때문에, 웹 애플리케이션을 놀라울 정도로 빠르게 제작할 수 있습니다. 그리고 파이썬이라는 거대한 생태계 덕분에 훨씬 더 복잡한 앱도 얼마든지 가능하며, 그렇게 해서 만들 수 있는 애플리케이션의 종류는 거의 무한하다고 할 수 있습니다.
최근에는 인공지능(AI)이나 머신러닝(ML)과 연관되어 파이썬의 인기가 더욱 상승했고, 거대 테크기업들이 수많은 훌륭한 라이브러리들을 폭넓게 채택하면서 장고의 인기가 점점 더 커지고 있습니다.
장고(Django)만의 장점 알아보기
최소기능제품(MVP) 제작을 위해 곧바로 사용 가능
장고는 개발 프로세스의 속도를 높여줌으로써 개발자들을 도와줍니다. 여기에는 데이터베이스의 액세스, 세션, 라우팅(routing), 다국어 지원 등을 다루는 자체적인 객체관계매핑(Object Relation Mapping, ORM) 계층이 포함되어 있습니다. 또한 요청을 처리하는 동안에는 보안을 관리합니다. 여기에는 모델을 관리하기 위한 ‘장고 관리자(Djang-admin)’라고 부르는 관리자 패널이 기본으로 포함되어 있습니다.
보안
장고에는 사이트 간 요청 위조(Cross-site request forgery, CSRF) 및 SQL 인젝션(SQL Injections)과 같은 형태의 공격을 방지하는 기능이 포함되어 있습니다. 기술적으로 보다 자세한 내용은 장고의 보안 관련 공식 가이드에서 찾아보실 수 있습니다.
내부의 파이썬
앞에서 언급했듯이 ‘파이썬의 선’이라는 규칙을 따르고 있기 때문에, 장고에서는 모든 것이 명시적(explicit)입니다. ‘파이썬의 선’에서는 암시적(implicit)인 것보다는 언제나 명시적인 것이 났다고 선언하고 있습니다. 즉, 장고에서는 사용자가 먼저 환경설정을 해야 한다는 것입니다. 이는 환경설정에 대한 기존의 통념과는 반대되는 것입니다. 그렇기 때문에 장고는 파이썬의 사용에 익숙한 개발자들에게는 완벽한 프레임워크입니다. 장고는 외부 라이브러리에 대한 뛰어난 지원과 프로그래머의 생산성을 향상시키는 것과 같은 파이썬의 모든 장점을 계승하고 있습니다. 덕분에 개발 속도를 상당히 끌어올릴 수 있죠.
장고(Django)의 단점은?
속도
파이썬 자체는 속도가 빠른 언어가 아니기 때문에 아키텍처를 잘못 설계하면 웹사이트의 속도가 느려질 수 있습니다. 그렇기 때문에 앱이 최적화되어서 만들어졌는지를 늘 확인해야 합니다. 이 점과 관련해서 장고는 내부의 속도를 확인하고 모든 장애물을 찾아낼 수 있는 자체적인 벤치마크 도구를 제공하고 있는데요. 캐싱(caching)을 비롯해서 수많은 최적화 도구들도 적용할 수 있습니다.
시작하는 단계에서부터 제대로 최적화를 하고 확장 가능한 아키텍처를 만든다면, 나중에 속도와 관련해서 나타날 수도 있는 수많은 문제들을 미리 방지할 수 있습니다. 장고는 현재 엄청나게 많은 웹 애플리케이션들에게 힘을 실어주고 있습니다. 속도와 관련한 이슈가 발생한다면 장고 자체의 문제라기보다는, 적절하지 못한 환경설정과 아키텍처 설계의 문제인 경우가 많습니다.
관습의 결핍
‘설정보다는 관습이 우선(Convention Over Configuration)’이라는 접근법의 대표적인 사례인 루비 온 레일즈(Ruby on Rails) 프레임워크와 비교하자면, 장고에서는 모든 것을 명시적으로 규정해야 합니다. 그래서 환경설정과 관련한 문서를 별도로 만들어야 하며, 이는 개발 프로세스의 속도를 늦출 수도 있습니다. 반면에 관습적인 환경설정에 의존하는 것은 파이썬의 상태계에서는 아주 흔한 방식입니다.
장고가 언제나 최선의 선택은 아닐 수도 있다
일을 할 때는 언제나 최고의 도구를 선택해야 합니다. 한 페이지 분량의 정적인 페이지나 마이크로서비스(microservice)처럼 아주 규모가 작은 사이트에서는 장고가 최선의 선택이 아닐 수도 있습니다. 그런 경우에는 오히려 플라스크(Flask)를 사용하는 것이 좋을 수도 있습니다.
장고는 표준화된 웹 애플리케이션을 정말로 빠르게 출시하기 위해서 만들어졌습니다. 즉, 장고는 간단한 CRUD 앱은 물론이고 보다 정교한 웹 애플리케이션을 만드는데 필요한 구성요소들이 결합되어 있습니다. 정말로 간단한 서비스를 만드는 경우라면, 모든 “배터리”들이 포함되어 있는 장고는 지나치게 복잡해 보일 수도 있습니다.
> 이 글은 'Django Framework Review - Pros and Cons'를 각색하여 작성되었습니다.