이끼의 생각

Django Web 장고가 무엇인가요? 본문

파이썬 장고 웹 프레임워크

Django Web 장고가 무엇인가요?

IKKIson 2019. 5. 21. 05:05


파이썬이란?


파이썬은 1989년 귀도 반 로썸(Guido van Rossum)에 의해 개발된 고급 프로그래밍 언어로, 2018년 현재 실무와 교육 양쪽 모두에서 엄청난 인기를 끌고 있는 언어입니다. 파이썬의 이름의 유래는 귀도 판 로썸이 즐겨보던 영국 코미디 그룹 몬티 파이썬에서 따왔다고 합니다.

 

대표적인 프로그래밍 언어인 C, C++, Java 같은 언어와 비교하여 쉬운 문법과 직관적이며 프로그래밍이 쉬워 높은 생산성을 가지고 있습니다.


배우기 쉬운 동시에 속도도 빠르며 다양한 확장성을 가진 파이썬은 그 중요성을 인정받아 4차 산업혁명에 대비한 대한민국 2015년 개정 교육과정에 포함되었습니다.




파이썬 활용 분야는?


쉬운 문법과 빠른 습득 시간, 확장성으로 인해 여러 분야에서 사용되는데 대표적으로 3곳에서 활용 됩니다.



1. 웹


네이터, 다음, 티스토리 등과 같은 웹서비스를 개발하는 것을 웹 프로그래밍이라고 하는데 파이썬으로 웹서버를 구현할 수 있습니다. 유명한 오픈소스 기반 웹프레임워크로는 장고(Django)와 플라스크(Flask)가 있습니다.



2. 빅 데이터 분석


가장 많이 사용되는 분야로 사람의 힘으로 처리하기 힘든 수십만, 수백, 수천 등의 대용량 데이터를 패턴을 파악하고, 분석, 처리, 시각화하는데 활용됩니다. 파이썬의 Pandas, Numpy 모듈들이 가장 대표적이면 아파치 스파크 프레임워크도 유명합니다.



3. 인공지능


인공지능 분야 중 가장 높은 인식률을 자랑하는 머신러닝과 딥러닝 분야에서 많은 활용이 됩니다. 이 분야 역시 빅데이터 분야와 함께 분석, 처리, 시각화하는 일련의 과정과 함께 높은 인식률을 함꼐 활용하여 질좋게 정제된 데이터를 학습하여 분류, 예측 등에 활용됩니다. 구글에서 개발한 Tensorflow, 페이스북의 PyTorch, Keras, Theano, OpenCV 등에서 파이썬을 지원하여 다양한 기계학습을 할 수 있습니다.




장고란 무엇인가요?


Django(/dʒæŋɡoʊ/ jang-goh/쟁고/장고)는 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework)입니다. 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어진 웹 프레임워크입니다.




웹사이트를 구축할 때, 비슷한 유형의 요소들이 항상 필요합니다. 회원가입, 로그인, 로그아웃과 같이 사용자 인증을 다루는 방법이나 웹사이트의 관리자 패널, 폼, 파일 업로드와 같은 것들 입니다.


그런데 정말 다행이게도, 오래전에 어떤 웹 개발자들이 새로운 웹 사이트를 개발할 때 서로 비슷한 문제들에 직면한다는 것을 깨달았습니다. 그래서 팀을 조직했고요. 바로 사용할 수 있는 구성요소들을 갖춘 여러 프레임워크를 만들었답니다. 장고도 그중에 하나인 거죠. 다시 발명해야 하는 문제로부터 해방감을 주고요. 새로운 웹사이트를 개발할 때 뒤따르는 간접비용의 부담을 덜어준답니다.




왜 프레임워크가 필요한가요?


장고라는 것이 실제로 무엇을 위한 것인지 이해하기 위해서는 서버에 대해서 자세히 살펴볼 필요가 있어요. 먼저 서버가 여러분에게 웹 페이지를 제공하길 원하는지 알아야 해요.


편지(request, 요청)가 도착했는지 확인해주는 메일박스(port, 포트)가 있다고 상상해보세요. 이 것은 웹 서버가 해주는 일이에요. 웹 서버는 받은 편지를 읽고 웹 페이지와 함께 답장을 준답니다. 그런데 무언가를 주고 싶을 때는 그 안에 내용이 있어야 하죠. 장고는 그 특정 콘텐츠를 만들 수 있는 역할을 합니다.




누군가가 서버에 웹 사이트를 요청하면 어떤 일이 벌어질까요?


웹 서버에 요청이 오면 장고로 전달됩니다. 장고 urlresolver는 웹 페이지의 주소를 가져와 무엇을 할지 확인합니다.(urlresolver는 웹 사이트 주소인 URL(Uniform Resource Locator)를 통해 이해합니다). 이 urlreslover는 그리 똑똑하지 않습니다. 패턴 목록을 가져와 URL과 맞는지 처음부터 하나씩 대조해 식별합니다. 만약 일치하는 패턴이있으면, 장고는 해당 요청을 관련된 함수(view)에 넘겨줍니다


집배원을 생각해보세요. 집배원은 거리를 걸으며 집집이 편지와 대조해서 주소와 번지를 확인합니다. 주소와 번지가 일치하면 그곳에 편지를 배달합니다. urlresolver가 바로 집배원과 같은 역할을 합니다.


모든 재미난 일들은 view 함수에서 처리됩니다: 특정 정보를 데이터베이스에서 찾을 수 있습니다. 그런데 만약 사용자가 데이터를 바꿔달라고 수정을 요청한다면 어떻게 될까요? "제 직업에 대한 설명을 바꿔주세요."와 같은 편지를 받았다고 생각해봅시다. view함수는 수정할 수 있는 권한이 있는지 확인하고 나서, 직업에 대한 설명을 수정해 다시 답장을 주겠지요. "완료했습니다!" 라고요. 그러고 나서 view는 답장을 생성하여, 장고는 그 답장을 그 사용자의 웹 브라우저에 보내주는 역할을 합니다.


물론 지금까지의 설명은 아주 간단히 설명한 것에 불과해요. 하지만 모든 기술적인 부분까지 자세히 알 필요가 없답니다. 이 정도 아는 것만으로도 충분하답니다.


좀 더 자세히 아는 것보다, 지금부터는 장고를 이용해 간단한 것부터 만들어봐요. 그렇게 하면서 중요한 모든 것들을 하나씩 배워나가도록 해요.




출처&참고자료


[1] 구름EDU

[2] 장고걸스 공식 튜토얼

[3] TCP School

Comments