정의
Django는 파이썬 기반 무료 오픈소스 웹 애플리케이션 프레임워크(Open Source Web Application Framework) 입니다
웹 애플리케이션 프레임워크(Web Application Framework)란 웹 애플리케이션(우리가 흔히 아는 웹 페이지들)을 개발할 수 있도록 만들어 놓은 하나의 작업장입니다.
여기서 오픈소스(Open Source)란 장고(Django)를 구성하는 코드들이 온라인상으로 언제든 참조할 수 있게 열려있다는 말입니다.
프레임워크 (framework) 이해하기
![](https://velog.velcdn.com/images/justyoon/post/331ee7ce-6599-4551-8448-55c0b757ba8c/image.png)
언어별로 사용가능한 다양한 프레임워크들
문득 왜 이런 프레임워크라는 작업장을 만들어 놓았는지? 궁금해집니다.
간단히 말해 웹을 개발할 때 굉장히 빈번하게 반복적인 문제를 해결
해야 될 때가 많기 때문입니다.
-
예를들면 사용자들의 회원가입
, 로그인
, 로그아웃
등의 사용자 인증 및 관리 문제
, 아니면 게시판
과 같이 사용자들이 커뮤니케이션을 할 수 있는 공간
을 마련하여 업로드, 다운로드를 할 수 있도록 하는 문제
등이 이에 해당합니다.
-
하지만 우리가 아는 거의 모든 웹 페이지들은 이러한 기능들을 기본적으로 제공합니다. 그렇다면 우리도 그러한 웹을 서비스 할 때 유저들의 기대치를 충족하기 위해 기본적인 기능들을 제공해야 한다는 말입니다.
-
이러한 편리한 개발 기능들을 만들어 놓은 환경이 바로 프레임워크입니다.
웹 환경(web) 이해하기
그렇다면 웹을 프레임워크에서 어떻게 개발을 할까요? 그리고 웹은 어떤식으로 작동을 하게 될까요? 프레임워크에서 어떻게 개발을 해나가야 되는지는 앞으로 계속 포스팅을 할 예정입니다. 그전에 웹이 어떻게 작동하는지에 대해서만 조금 이야기를 하겠습니다.
![](https://velog.velcdn.com/images/justyoon/post/8b14e1de-29ba-4536-afc5-bfe0de73ce18/image.png)
- 우리는 웹 브라우저(Web Browser 예를들면 Chrome, Internet Explorer, FireFox 등)를 보면서 여러 행동을 하게됩니다.
- 사용자의 모든 행동들은 웹 브라우저를 통해 서버(Server)로
"나는 지금 어떤 행동을 하고 싶다"
를 편지의 형태로 보내게 됩니다. 이것을 요청(Request)
이라 합니다.
- 그렇다면 서버(Server)는 사용자가 보낸 편지에 답장을 해줘야겠죠. 이것을
응답(Response)
이라고 합니다.
- 서버는 응답을 브라우저를 통해 보여주게 되고, 그렇게 되면 사용자는 그 브라우저를 통해 자신이 요청한 사항에 대하여 적절한 응답을 보게 되는겁니다.
특징
- 고차원 언어인 Python을 기반으로 동작하기 때문에 익히기 쉽다.
- 익히기 쉬운 만큼 개발속도도 빠르고, 코드 완성도를 높게 유지할 수 있으며 확장성도 좋아서 개발 비용을 크게 절감시킬 수 있다.
- 웹 애플리케이션이 제공되어야하는 사용자 인증, 사용자 관리 등을 기본적으로 기능 구현이 되어 있다.
- 성공적인 비즈니스 모델 사례가 많다. (Instagram이 대표적인 사례.)
- 하드웨어에 접근하고, Data Science나 이미지 압축 등을 해야한다면 Django를 사용한다. 하드웨어 접근에는 Node.js는 도움이 되지 않는다. 왜냐햐면 JavaScript는 메모리나 램, 즉 하드웨어에 접근할 수 없기 때문이다. JavaScript는 하드코어한 처리를 위해 설계된 것이 아니기 때문에 만약 이러한 것들을 하고 싶다면 Django를 쓰는 것이 좋다.
- Python을 기반으로 하기 때문에 비교적 쉬운 언어이지만, Python이 객체 지향 개념이 포함된 프로그램이므로, 객체 지향 프로그램에 대한 이해도가 필요하다.
- Python의 단점을 대부분 포함한다.
예시: Django의 경우 python을 언어로 사용하는데 Python은 비동기 언어가 아니기 때문에 실시간 처리를 할 element가 없다. 그렇기 때문에 만약 채팅 기능을 만들고자 한다면 Node.js가 필요할 것이다.
- 수정) coroutine을 사용하면 채팅기능을 장고에서도 구현 가능합니다.
- 데이터를 다루는, 특히 실시간 처리 관련 성능이 다른 웹 애플리케이션의 프레임워크(Node.js 등)보다 좋지는 못하다.
- 한글화된 문서가 그렇게 많지 않다.