[ 프로젝트 BEP ] 최종장 - 엔지니어로서의 마인드셋에 대해 : 우수한 엔지니어는 누구이고, 가져야할 마인드 셋에 대해

이미지
  들어가면서 이제 2025년도 얼마 남지 않은듯 하다.  조금 길어질 수도 있기 때문에  실제로 업로드 하는 것은 새해 이후가 될 가능성도 있으나  올해는 이 글로 마무리 해보려고 한다. 이제 이 최종장을 끝으로 이 프로젝트를 다소 마무리 할 수 있을 것 같다. 물론 전체적으로 글 자체가 부족한 부분이 여려 곳 보이지만,  이는 천천히 개선하기로 하고 일단 마무리를 잘 지어보려고 한다. 이 프로젝트의 목표는 어디까지나 주니어 엔지니어(넓은 범위로서)에게  도움이 될 수 있는 부분을 정리해 놓은 것 이며, 이를 전달하는 것에 주력을 했다. 정확히는 그 사이에 몇 번이나 직장은 바뀌었지만,  내가 다니고 있는 회사에서 작게는 멘터,  크게는 주니어 교육에 활용하기 위한 초안이였다. 들어가기 앞서서 먼저 개발자는 무엇인가에서 부터 시작해서,  수학은 필요한가, 그리고 학위에 대한 이야기를 나누어보았고, 그 다음으로 컴퓨터가 무엇인가에 대해서는,  가장 첫 장인 컴퓨터 개론에서 메모리 손실과 함께 설명하였다. 다음으로는 개발 방법론과 시스템 설계,  그리고 프로그래밍 언어에 대한 이야기로 간단하고 이론적인 이야기를 하였다. 눈치가 빠른 사람은 알 수 있듯이,  현실에서 가질 수 있는 몇 가지 의문으로 시작해서  컴퓨터라는 하드웨어 부터 시작해서,  프로젝트(개발 방법론), 설계, 프로그래밍 언어 순으로  일부러 점점 컴퓨터 세계로 들어가도록 구성을 해 놓았다. 여기서 한 걸음 더 나아가자면, 알고리즘이 들어갈 수는 있겠으나  어디까지나 가볍게 전달하는대에 목적이 있기도 하고,  개인적으로는 당장은 크게 중요하지 않은 부분이 라고 생각 했기 때문이다. 먼저 이 부분에 대해서 좀 더 자세히 이야기해보도록 하자. 시작 부터 모든 지식을 쌓을 수는 없다 이는 개발 영역에서만 해당되는 이야기는 아니지만,  모든 것에는...

[ Django, Python ] 이쯤에서 분석해 보는 Django 튜토리얼 예제 (①~④) ④ : 전체적인 청사진 그리기, start_django 앱(App) 청사진 분석, polls 앱(App) 청사진 분석

Django 청사진 그리기 및 분석 : 전체적인 청사진 그리기

지금 까지 해서 세세한 부분까지 분석해봤다

그럼 이를 바탕으로 이제 조금 넓게 청사진 그려보자.


내 나름대로 가장 중요한 파일들 그리고, 그 파일들안의 코드들을 나누어 정리해 봤다.

여기서 가장 최상위 디렉토리start_django프로젝트를 생성할 때
입력했던 이름이고

그 하위의 디렉토리 start_django프로젝트 생성시, 자동으로 생성되는 디폴트 App이며
polls는 이전 예제에서 다루었던 투표(vote)기능을 만들기 위해 생성했던 App이다.


그럼 하나 씩 쪼개 보면서 살펴보자.

Django 청사진 그리기 및 분석 : start_django (App) 청사진 분석


start_django (App)부터 살펴보자.

이전에서부터 계속 언급했듯이, App은 프로젝트 생성시
생성한 프로젝트의 이름으로 자동 생성되는 디폴트 App이다.

따라서 만약 이름이 stay_app으로 프로젝트를 생성했다면
동일하게 이 App의 이름은 stay_app으로 자동으로 생성된다.

여러가지 생성되지만,

가장 주목해야 하는 곳은 urls.pysettings.py이다.


먼저 start_django (App)urls.py에서는 App들의 경로(Path)설정할 수 있다.
여기서 경로를 설정해주지 않으면 각 App들로 이동할 수 없다.

따라서 Django의 디폴트 App인 이 start_django라는 이름의 App
App들을 연결시켜주는 App이다.

위의 사진에서 볼 수 있듯이 예제에서 프로그래밍 했던 
polls App등록되어 있는 것을 확인 할 수 있다.


여기서 admin AppDjango에서 제공해주는 관리자 기능 애플리케이션이다.


다음은 settings.py를 살펴보자.

여기서는 이 프로젝트에 대한 여러가지 설정(setting)을 할 수 있는 공간이다.
INSTALLED_APPS이외에도 설정할 수 있는 변수들이 많이 있지만

반드시 설정해주어야 하는 곳이 이 INSTALLED_APPS라는 변수이다.

위의 사진을 보면 Django에서 제공해주는 관리자 애플리케이션 admin App

예제에서 프로그래밍 했던 투표 Apppolls App등록되어 있는 것을 확인 할 수 있다.

Django 청사진 그리기 및 분석 : polls (App) 청사진 분석


다음으로 polls (App)을 살펴보자.

polls 라는 애플리케이션이 사실상 예제에서 다루었던 App이다.

여기서부터 DjangoMVT(Model View Template)가 보일 것 이다.


그리고 DjangoMVT 아키텍쳐에서 본적이 있는 urls도 보인다.


먼저 Model이다.

여기서 ModelMVT패턴의 그 Model역할을 맡고 있는Model이 맞다.

일반적으로 class 기반으로 정의(define) 된다.
위의 사진에서 보이듯이 각 class의 지역변수의 TypeDBType비슷한 것을 확인 할 수 있다.

Django에서는 이 Model을 가지고 테이블생성해주는 마이그레이션(migration) 기능을
지원해주는데

마이그레이션(migration) 기능을 이용하면
Class기반으로 Model를 정의한 이름으로 테이블 명으로
class의 각 지역변수들을 컬럼명으로 테이블을 생성 해준다.

따라서 웹 개발 프레임워크로 Django선택한다면 굳이 테이블 생성을 위해

테이블을 생성하러 DB 까지 들어가 Sql문을 작성할 필요가 없다는 말이 된다.


다음으로 View
위와 동일하게 MVT 패턴View의 역할을 맡고 있는 그 View.

Viewfunction 기반class 기반 이 두 가지를 선택할 수 있다.

class 기반을 사용할 때는 사용자에게 보여줄 필요가 있는 View일 경우,
function 기반을 사용할 때에는 사용자에게 보여줄 필요가 없는 View
, 데이터 처리와 같은 것 일 때 사용한다.

고 지금까지 했던 예제를 통해 추측해 볼 수 있다.



다음은 template.
동일하게 MVT 패턴Template의 역할을 맡고 있는 Template.

template들은 html 태그DTL(Django Template Language)구성되어 있다.
DTLJAVA기반 웹 프레임워크인 Spring에서 자주 사용하는 JQuery유사하다.




마지막으로 urls이다.

왜 뜬금 없이 이 녀석이 나오느냐라고 하는 사람이 있을지도 모르겠지만

Django 프레임워크에서 매우 중요한 역할을 한다.

urls가 실제 Django상호작용을 하기 때문이다.

이 다음에 더 넓게 Django 아키텍쳐를 보면서 청사진을 그릴 것이기 때문에
그때 한번 더 언급하기로 하겠다.




이렇게 해서 이번에는 이전 보다 좀 더 넓은 관점에서 분석해봤다.

위에서도 말했지만 다음은 마지막으로 Django 아키텍쳐를 보면서
사실상 가장 넓은 시야에서 분석해 보려고 한다.

그 다음 이번 분석글을 끝내려 한다.

물론 분석글이 끝난다고 해도 공식 도큐먼트에 예제는 남아있기 때문에
더 진행할 것이다.

이 블로그의 인기 게시물

[ Web ] 웹 애플리케이션 아키텍처 (Web Application Architecture)

[ Web ] 서버 사이드(Sever Side) ? 클라이언트 사이드(Client Side)? 1 [서론, 클라이언트 사이드(Client Side)]

[ Web ] 웹 애플리케이션 서버 아키텍처의 정의 및 유형 ( Define and Types of Web Application Server Architecture )