2021. 12. 29. 15:55ㆍPython/Django
서론
웹 개발 직군을 종사하는, 혹은 공부하는 사람들 외 사람들에게 장고가 무엇이냐고 물어보면,
이 영화라든지 아니면, 원피스에 나오는 이 녀석이라든지
실제로 장고 개발한 사람이 이름을 따온, 기타리스트인 장고 라인하르트라는 인물을 생각할 수도 있고,
혹은 다른 것을 떠올릴 것이다. 구글에만 쳐도 아니, 나무 위키만 봐도 엄청 많으니까..
https://namu.wiki/w/%EC% 9E% A5% EA% B3% A0#s-2.1.2
하지만 웹 개발에 대해 공부를 조금 해봤다면, 장고라는 프레임워크는 꽤나 유명하다. 전 세계적으로 많이 사용되고 있는 인스타그램이나, 핀터레스트도 장고를 이용하고 있고,
https://www.codenary.co.kr/techstack/detail/django
최근 우리나라의 기업들도 장고를 많이 사용하고 있다. 네카라쿠배당토에서 당근마켓과 토스가 장고를 이용하고 있다.
web application?
인터넷에서 연결된 웹 환경에서 사용자들 간의 연결을 통해 서비스를 제공하고 제공받는 애플리케이션을 의미한다.
기존의 웹 사이트는 정적 사이트를 모아주는 거였다면, 웹 애플리케이션은 유저와 상호작용 할 수 있는, 동적인 요소들을 포함한 마치 스마트폰의 애플리케이션과 같은 기능을 해줌으로써, 관람만이 아닌 수많은 기능을 해줄 수 있는 웹이다. 사실 요즘 웹 서비스는 대부분 웹 애플리케이션이고 통상적으로 사람들이 이를 웹 사이트라고 하니 둘의 차이는 모호하다.
대표적인 예시는 구글 맵스, 쿠팡과 같은 쇼핑몰, 블로그 조차도 웹 애플리케이션의 서비스다.
web application framework?
장고를 알기 전 웹 애플리케이션 프레임워크가 뭔지 알 필요가 있다.
웹 애플리케이션 프레임워크(web application framework, WAF)란, 동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종이다. 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주목적으로 통상 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 등의 기능을 포함하고 있다. 출처
쉽게 말해서 우리가 웹 개발을 할 때, 코드로 열심히 이것저것 헛짓하고, 구조적으로 생각하고 파일 열심히 만들고 이런 고생들을 줄여 줄 수 있도록 도와주는 녀석이다.
Django란?
Python으로 만들어진 무료 오픈소스 web application framework이다.
보안을 잘 몰라도 보안이 우수하고 유지보수가 편리한 웹 서비스를 신속하게 개발하는 하도록 도움을 주는 파이썬 서버-사이드 웹 프레임워크이다.
Flask가 웹 개발에 필요한 최소한의 기능만 제공한다면, 장고는 웹 기능에 필요한 수많은 기능을 제공한다.
무료 오픈소스인 데다가, 활발한 커뮤니티들이 있고, 좋은 참고자료와 좋은 옵션들이 있다.
https://docs.djangoproject.com/ko/4.0/
Django는 MTV패턴이다.
FrameWork는 개발자가 개발하기 쉽게 하기 위해 기본적인 뼈대나 구조를 제공해주는데, 수많은 웹 프레임워크는 MVC 아키텍처로 비즈니스 로직, 데이터 모델을 분리했는데, 아래 그림과 같다.
- Model은 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보를 통해서 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가·제거·수정할 수 있다. 어떤 MVC 구현에서는 통보 대신 뷰나 컨트롤러가 직접 모델의 상태를 읽어 오기도 한다. => 쉽게 말해서 데이터베이스 관리 및 데이터의 구조 정의
- Controller는 모델에 명령을 보냄으로써 모델의 상태를 변경할 수 있다. (예: 워드 프로세서에서 문서를 편집하는 것) 또, 컨트롤러가 관련된 뷰에 명령을 보냄으로써 모델의 표시 방법을 바꿀 수 있다. (문서를 스크롤하는 것) => 데이터 관련 로직이나 비즈니스 로직 관리
- View는 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어 온다. => 사용자가 볼 부분 담당
- 출처
위 구조를 잘 이해하면 이제 MTV패턴이 이해하기가 쉬워지는데, MTV와 MVC의 다른 점은 구조적으로 크게 다른 게 없고 V => T
C => V
역할이 옮겨진 것이다. 실제로 장고 프로젝트를 시작하고 앱 하나를 만들면
models.py, views.py를 만들어 주는 걸 볼 수 있다. (template은 알아서 폴더 만들어야 됨)
ORM 지원
ORM이란, (Object Relation Mapping)의 약자로 관계형 데이터베이스를 Object로 매핑해주는 기술이고, 이것을 통해 장고는 객체지향적인 프로그래밍을 통해서 관계형 데이터베이스를 다룰 수 있다. 그래서 SQL문을 몰라도 데이터베이스를 이용한 개발을 할 수 있고 코드가 좀 더 직관적이고 빠른 개발을 할 수 있다.
Django는 쉽다.
위에 정리한 사실로 바탕으로 봤을 때,
- django는 python 기반 => 요즘 대학교에서도 python을 필수로 가르치고 입문하기 좋은 python 언어 기반 database를 다룰 때도 python 객체를 다루기 때문에 SQL을 몰라도 사용할 수 있다!
- django는 무료 => 웹 개발하는데 돈 들일 필요가 없다 x
- django는 자료가 많고 커뮤니티가 활발 => 몰라도 물어보고 찾아보면 됨!
- 개발에 많은 것을 제공 => 웹 개발에 필요한 모듈, 보안적인 요소들을 모두 제공하고 MTV패턴이라는 틀만 잘 이해하면 쉽고 빠르게 개발 가능
결론은!!
Django 배우세요!!