약 한 달 가량 파이썬을 공부하면서 코딩에 대해 흥미를 더 가질 수 있었고, 잘 풀리지 않는 문제를 스스로 해결하면서 코딩이 이렇게나 재밌는 것이었구나 느낄 수 있었다. 그렇게 백준, SWEA 문제만 풀던 어느 날, 기왕이면 내가 습득한 파이썬 지식들을 어딘가에 활용해보면 좋겠다는 생각이 들었고, 토이프로젝트를 통해 결과물을 남기면 참 뿌듯하고 좋겠다 싶었다.
🤔 내가 습득한 파이썬 지식들을 어떻게 활용해볼까?
우선, 나는 웹사이트를 만들어보고 싶다. 아무래도 글로써는 나를 소개하기엔 부족하니까 나를 소개할 수 있는 하나의 웹사이트를 만들고, 거기에 내 깃허브 주소와 블로그 주소를 기재하여 나만의 포트폴리오를 만들고 싶었다.
또한 토이프로젝트를 통해 웹 사이트를 만들고 배포하는 전반적인 과정들을 한번 보면 큰 도움이 될 것 같다는 생각이 들었다.
내가 혼자의 힘으로 온전히 하나의 웹사이트를 만든다는 것은 제약이 있다고 생각했기에, 다른 사람이 만든 강의를 따라 들으면 큰 틀을 잡고 나만의 색을 입혀 응용하면 되겠다는 생각이 들었다. 그래서 유튜브와 구글에 무작정 "파이썬 웹사이트 만들기"를 검색해보았다.
🔎 파이썬 웹 프레임워크, django vs Flask
파이썬으로 웹사이트를 만들기 위해서는 파이썬 웹 프레임워크를 사용해야 한다.
웹 프레임워크(web framework, WF) 혹은 웹 애플리케이션 프레임워크(web application framework, WAF)는 동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종으로써, 웹 사이트를 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하여 쉽고 빠르게 웹 사이트를 개발할 수 있도록 돕는 소프트웨어이다.
파이썬으로 작성된 웹 프레임워크는 크게 두 가지가 있는데 바로 장고(django)와 플라스크(Flask)이다. 유튜브 및 구글에 검색해보면 플라스크를 통해 10분 안에 웹 사이트를 만들 수 있다고 한다. 그렇지만 나는 장고를 활용해보기로 결심했다.
(나는 몇몇 유튜버나 블로거들이 이러한 문구를 통해 조회수를 끌어모으는 것을 보고 플라스크 보다는 장고를 사용하고 싶었다.. 쉬운데엔 그 이유가 있고 어려운 것을 택하는 것이 나에게 더 도움이 될 것 같다는 막연한 생각 때문이었다.)
🖌️ django
장고는 보다 복잡한 파이썬 기반 웹 앱을 구축하는 데에 사용되었기 때문에 확장성을 제공하는 강력한 아키텍처를 가지고 있다. 장고는 MVT(Model-View-Template) 구조를 갖는데, 이는 전체 스택 개발을 위한 완벽한 프레임워크이다. 따라서 웹 개발의 프론트엔드 및 백엔드 측면을 파악하고 파이썬을 서버측 언어로 사용할 수 있는 방법을 찾고 있다면 장고를 고려해 보는 것이 가장 좋다고 한다.
이러한 장고의 특성은 어떤 웹 프레임워크를 사용할지 고민하던 나에게 해답을 주었다. 나는 하나의 웹사이트를 만들고, 그것의 프론트엔드, 백엔드적인 전반적인 역할과 구조를 한 번 이해하고 경험해보고도 싶었기 때문에, 장고를 웹 프레임워크로 선택해 웹 사이트를 만들기 결심한 중요한 이유가 되었다.
또한 장고는 ORM(Object-Relational Mapping)을 사용하여 객체(Object)와 관계형 데이터베이스(Relational)를 연결(Mapping)한다. 즉, ORM을 사용하여 데이터베이스에 데이터를 생성(Create)하고, 읽고(Read), 갱신(Update), 삭제(Delete)의 CRUD를 할 때 SQL 쿼리를 사용하지 않고도 가능하게 한다.
이러한 장고의 특징들로 인해 장고가 활용되기 적합할 때를 정리해보면 아래와 같다.
📌 django 의 특징과 활용
- 웹앱이나 API 백엔드를 만들고 싶을 때!
- 빠른 개발, 빠른 배포, 빠른 업데이트가 가능!
- CSRF, XSS, SQL 인젝션, 클릭재킹 등 기본적 보완 완비!
- 스케일링 업, 스케일링 다운을 자유자재로 하고 싶다면!
- 개발하다 막혔을 때 물어볼 곳이 많았으면!
- SQL이 익숙하지 않아서 강력한 ORM이 필요하다면!
🖌️ Flask
프레임워크 자체에 폼과 데이터베이스 처리 기능이 포함되어 있는 장고와는 다르게 플라스크는 폼과 데이터베이스 처리 기능이 없다. 플라스크는 보통 한개의 Flask Application이 존재하고 확장 모듈을 사용하여 처음부터 모든 기능을 포함하지 않고 개발자가 필요한 확장 모듈을 포함해가며 개발한다. 따라서 자유도가 높고 가볍다.
하지만 다르게 보면 플라스크는 약 27,000줄 밖에 안되는 가벼운 프레임워키이기 때문에, 개발자가 거의 모든 것을 설정하고 세팅해야 하는 번거로움이 있다. (반면 장고는 이미 거의 모든 것들이 다 개발되어 있고, 개발자 입장에서 그냥 블럭쌓기처럼 쌓아만 가도 멋진 웹을 만들 수 있다.)
플라스크의 특징들로 인해 플라스크가 활용되기 적합할 때를 정리해보면 아래와 같다.
📌 Flask 의 특징과 활용
- 도저히 1개의 코드베이스에 담을 수 없을만큼 앱이 크거나,
- 아니면 너무 앱이 작다면!
- 밑 그림부터 시작할 수 있는 실력에 내가 뭘하고 있는지 알고 있다면!
- 팀원 중 그 어느 누구라도 Django와 Python에 익숙치 않다면!
- DB로 이미 생성된 NoSQL 사용!
👨🏻💻 나는 장고를 선택했다!
이러한 장고와 플라스크의 비교를 통해 장고와 플라스크에 대해 좀 더 알게되었고, 장고가 내가 토이프로젝트를 하려던 이유에 더 적합한 프레임워크였고, 플라스크에 비해 무겁지만 꼭 한번 시도해보고 싶었다.
어떤 웹 프레임워크를 사용할지 정했으니 이젠 어떤 웹사이트를 만들지 정해야 했다. 고민 끝에 가장 재미있어 보이는 강의를 선택했는데, 바로 "django로 인스타그램 만들기"이다. 글로써 나를 설명하기엔 부족하다고 생각이 들어서 나를 소개하는 웹사이트를 만들어보아야 겠다고 생각했던 것인데, 하나의 피드에 꼭 하나의 사진이 첨부되어야 하는 인스타그램처럼 나 역시도 사진을 통해 나를 소개하면 더 효과적으로 소개할 수 있다는 생각이 들어서 선택하게 되었다.
이제 어떤 강의를 들을지도 정했으니 열심히 강의를 따라하며 나만의 웹사이트, "황스타그램" 을 만들어 봐야겠다.
출처:
https://dingrr.com/blog/post/언제-django를-언제-flask를-사용해야-할까
https://lazywon.tistory.com/50
'ToyPJ > Python-Django' 카테고리의 다른 글
[ToyPJ] IMG 서버 대용 (0) | 2023.03.30 |
---|---|
[ToyPJ/Python] django 로 인스타그램 만들기 - 05 DB에서 피드 글 불러오기 (0) | 2023.03.29 |
[ToyPJ/Python] django 로 인스타그램 만들기 - 04 화면 만들기 (오른쪽) (0) | 2023.03.29 |
[ToyPJ/Python] django 로 인스타그램 만들기 - 03 내비 바, 피드화면 만들기 (왼쪽) (0) | 2023.03.28 |
[ToyPJ/Python] django 로 인스타그램 만들기 - 02 django 개발환경 세팅, 나만의 페이지 띄워보기 (0) | 2023.03.27 |