Django 에 대해서 !

seyong·2021년 12월 12일
0
post-thumbnail

Django 프레임워크를 사용하여 1차프로젝트를 진행하고나니 문득 이런 생각이 들었다. "django 진짜 편하다.. django를 개발한 선대 개발자분들은 얼마나 훌룡한 개발자였을까 지레 짐작하기도 어렵네.." 이런 저런생각이 들며 문득 django에 대해 깊게 공부하고 장점과 단점을 정리하고 싶은 욕구가 생겼다.

Django 란 무엇일까?

장고는 2003년과 2004년에 로렌스 저널-월드(Lawrence Journal-World)라는 신문사의 인턴 웹 프로그래머였던 에이드리안 홀로바티(Adrian Holovaty)와 사이먼 윌리슨(Simon Willison)이 파이썬을 이용해 애플리케이션을 만들기 시작하면서 처음 개발되었다.

Django

Django는 python 기반 무료 Web Aplication Open SourceFramework으로, MVC 패턴을 따르고 있다. Open Source란 Django를 구성하는 코드들이 온라인상으로 언제든 참조할 수 있다는 것을 뜻하고, Web Application Framework란 웹 애플리케이션(우리가 흔히 아는 웹 페이지들)을 개발할 수 있도록 만들어 놓은 하나의 작업장이라고 생각하면 된다. MVC(Model-View-Controller)패턴을 기반으로 한다.

Framework

왜 이런 Framework라는 작업장을 만들어 놓은 것일까? 웹을 개발할 때 굉장히 빈번하게 반복적인 작업을 하는 경우가 많다. 이러한 빈번하게 사용되는 기능들을 더 쉽게 사용하기 위한 편리한 개발환경을 만들어 놓은 것이 바로 Framework이다.

MVC패턴

Django는 MVC(Model-View-Controller) 패턴을 기반으로 하고 있으며, Django에서는 MVC패턴을 MTV(Model-Template-View)라는 이름으로 부르고 있다.
MVC에는 View가 데이터를 사용자에게 보여주고, Controller가 Model가 View를 제어하며 상호작용시켜주였다면, MTV에서는 Template이 데이터를 사용자에게 보여주고, View가 Controller의 역할을 해준다.

부가설명으로 장고에서의 Model은 파이썬으로 코딩한 모델을 관계형 데이터베이스(RDBMS)로 구축한 것이다.

MVC 패턴에 대한 추가 설명은 다음 블로그 링크를 통해 확인할 수 있다.

MVC패턴 더 알아보기

Django의 장점

  • 비교적 쉬운 언어인 Python을 기반으로 두기 때문에 익히기 쉽다.

  • 익히기 쉬운 만큼 개발속도도 빠르고, 코드 완성도를 높게 유지할 수 있으며 확장성도 좋다.

  • 웹 개발에서 번거로운 요소들을 새로 개발할 필요 없이 내장된 기능만을 이용해 빠른 개발을 할 수 있다.

  • 웹 애플리케이션이 제공되어야하는 사용자 인증, 사용자 관리 등을 기본적으로 기능 구현이 되어 있다.(CRUD, Creatr-Read-Update-Delete 작업을 쉽게 수행할 수 있다.)

  • 개발 비용을 크게 절감시킬 수 있다.

  • ORM(Object Relation Mapping)기술이 적용되어 데이터베이스 시스템과 데이터 모델 클래스를 연결시키는 다리와 같은 역할을 해줌으로써 데이터베이스 관리가 간편하다.

  • 개발을 위한 기간도 단축이 가능하며, 윈도우, 리눅스 등을 포함한 운영체제에서도 개발이 가능하다.

  • 보안(사이트 간 요청 위조(Cross-site request forgery, CSRF) 및 SQL Injections과 같은 형태의 공격을 방지하는 기능 포함) 클라우드 서비스의 전폭적인 지원이 가능하다.

  • 거대한 커뮤니티 생태계가 형성되어있다.

  • 성공적인 도입 사례가 많다.(Instargram, Spotify, Mozilla Firefox 지원 사이트, 드롭 박스 등등..)

Django의 단점

  • 파이썬의 최대 단점인 모바일 환경에서 구현이 어렵다.(따라서 스마트폰에서의 개발은 아직 거의 없다.)

  • 파이썬이 속도가 빠른 언어가 아니기 때문에 아키텍처를 잘못 설계하면 웹사이트의 속도가 느려질 수 있음. 앱 최적화 후 제작되어야함. ➡ 캐싱(caching)을 비롯해서 수많은 최적화 도구를 활용하여 단점 보완 가능

  • Python을 기반으로 하기 때문에 비교적 쉬운 언어이지만, Python이 객체 지향 프로그램이므로, 객체 지향 프로그램에 대한 이해도가 필요하다.

  • Python의 단점을 대부분 포함한다.

  • 성능이 다른 웹 애플리케이션 프레임워크(Node.js 등)보다 상대적으로 조금 비교되는 면이 있다.

  • 한글화된 문서가 그렇게 많지 못하다.

  • 장고에서는 모든 것을 명시적으로 규정해야 하기때문에, 환경설정과 관련한 문서를 별도로 만들어야 한다.

. Reference

https://ko.wikipedia.org/wiki/%EC%9E%A5%EA%B3%A0_(%EC%9B%B9_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC)

https://www.djangoproject.com/start/overview/

profile
# 불편함을 편리함으로 바꾸고싶은 주니어 Back-end 개발자

0개의 댓글