[ Essay - Technology, Essay - Intuition ] Chat GTP시대의 도래와 생각하는 방식에 대해 : 개발자의 미래에 대해

이미지
벌써 올해도 반쯤 지나 뜨거운 여름이 다가왔다. 굉장히 빠르게 지나간듯한 느낌이 드는데  아마 의미있는 시간을 보냈다는 이야기이기 때문에  그렇게 나쁜 신호는 아닐 것 이다. 괴로운 시간이였다면, 1초가 1년 같이 느껴졌을테니 말이다. 더위에 매우 약한 나에게 있어서는 지옥과 같은 시기이기도 하지만 늘 그렇던 것 처럼 에어컨 덕분에 어찌저찌 버틸 수 있을 것 같다. 어쨋든, 이번에는 저번의 에세이 주제, Chat GTP시대의 도래와 생각하는 방식에 대한 이야기에 이어서  과연 개발자의 미래는 어떻게 될 것인가에 대해 이야기를 나누어보려고 한다. 어쩌면 모두가 인식하고 있듯이 지금 2025년 현재,  꽤나 중요한 시기에 직면하고 있는지도 모른다. 왜냐하면, 생성AI의 발전 속도가 생각보다 빠르게 발전하고 있고,  그에 따라 실제 업무에서도 빠르게 사용되어지고 있기 때문이다. 이러한 상황에서 개발자에게 있어서 가장 두려운 점은  당연히 생성AI에 의해 개발자가 대체될 것 이라는 두려움일 것 이다. 이는 개발자에게만 한정된 이야기는 아니지만 말이다. 아마 필드에서 나와 같이 일하고 있거나  개발자로서 직업을 가지려는 생각이 있는 사람이라면  한번쯤은 생각해볼법한 주제라 생각 한다. 물론 미래가 정확히 어떻게 될 지는 알 수 없으나  이런 생각을 함으로써 몇 가지 힌트는 얻게 될지도 모르니  만약 얻게 된다면 미래에 대한 방향성을 조금이나마 올바른 쪽으로 돌릴 수 있을 것 이다. 이 글을 끝맽을 때는 조금이라도 힌트에 도달하기를 바란다. 과거의 역사 이러한 의문에 대한 해결책으로서 일반적으로 자주 사용하는 방법이 있다. 바로 역사를 보는 것 이다. 물론 이러한 역사를 해결책을 찾는거에 대한 전제조건은  우리가 '구 인류'라는 전제조건이 있었을 때 의미가 있다. 그러니깐 현대인도 기원전 8세기의 고대 로마인도  본질적으로 다르지 않다는 것을 인정해야만 한다. 예컨데...

[ Django, Python ] mozilla 튜토리얼 예제로 살펴보는 Django 분석 ① : 프로젝트 만들기



프로젝트를 만들기 앞서서 
이번 2번째 튜토리얼에서는 꽤나 생략되는 부분이 있을 수 있다.
따라서
MVT 패턴에 대한 것과
공식 도큐먼트 튜토리얼 쪽을 먼저 이해한 다음 
이 포스팅을 보는 것이 좀 더 
직감을 얻어가는데 수월할 것이라 생각된다.

개발 환경 포스팅:

MVC 패턴과 MVT 패턴에 대한 포스팅:

공식 도큐먼트 튜토리얼 포스팅:

또한 여기서 작성한 코드들은 아래 링크에서 확인해볼 수 있다.

프로젝트 생성 하기


그럼 이제 프로젝트를 생성하기 위해
먼저 터미널을 열어 가상 환경으로 들어가자.



개발 환경에 대해서는 
공식 도큐먼트의 포스팅과 동일하기에 
위의 개발 환경 포스팅을 참고 하기 바란다.

그런 다음 새로운 프로젝트를 생성하고
생성한 디렉토리로 진입한다.


1
2
django-admin startproject locallibrary
cd locallibrary
cs



그런 다음 Atom을 실행해 프로젝트를 불러오자.


불러오기에 성공했다면,
방금 생성했던 locallibrary라는 
프로젝트가 추가된 것을 확인할 수 있다.

catalog application(App) 만들기


그렇다면 이 프로젝트 내부에 앱을 하나 만들자.


1
python3 manage.py startapp catalog
cs

성공적으로 앱을 만들었다면 
Atom에 자동적으로 갱신될 것이다.


위의 사진과 같이 catalog라는 디렉토리가 
생성된 것을 확인 할 수 있다.

catalog Applictaion 등록 하기


단순히 앱을 만들기만 했다면 
아무런 의미가 없다.

왜냐하면
서버를 구동한다고 한다하더라도
접속은 불가능하기 때문이다.

따라서 프로젝트를 생성한 다음
자동으로 생성되는 
디폴트 디렉토리(locallibrary)에 연결해주어야 한다.


1
'catalog.apps.CatalogConfig',
cs

이 코드를 입력함으로 써 
이제 catalog 앱과 연동될 수 있는데


정확히는
catalog 디렉토리의 apps.py안의 
CatalogConfig라는 클래스와 연동된다.

데이터베이스 설정하기


다음은 데이터베이스 설정이다.

이전 공식 도큐먼트 튜토리얼과 마찬가지로 
SQLite를 사용할 것이기 때문에 추가적인 코드는 없다.


프로젝트 그 외 설정


settings.py 파일 안에는 
DB설정 외에도 많은 설정이 있다.

일단 가장 중요한 TIME_ZONE 변수이다.


TIME_ZONE의 지역에 따라서 
시간 관련 메소드의 현재 시간이 
결정되기 때문에 가장 중요하다.

나는 튜토리얼이기 때문에 따로 수정하지는 않겠다.


그 외에 알아둘 필요가 있는 변수라면
SECRET_KEY 변수와 DEBUG 변수다.

먼저 SECRET_KEY 변수는 
Django의 보안 중 하나로 사용되는 비밀 키 이다.
유출되지 않도록 하는것이 좋으며,

개발 과정에서 잘 관리하지 않는다면
제품화 과정에서 다른 방법을 사용해야 할 것이다.

그 다음으로 DEBUG 변수다.

DEBUG 변수는 에러가 발생했을 때
HTTP 상태 코드 응답 대신
디버깅 로그표시되도록 한다.

지금은 디폴트 설정으로 True로 되어있지만,
디버깅 정보는 웹사이트를 해킹하려는
해커들에게 매우 유용한 정보가 될 수 있기 때문에

제품화 된 환경에서 개발하고 있다면 
False로 설정해야 한다.

URL Mapper 연결 하기


하나의 프로젝트가 새로 생성되면
같은 이름의 디폴트 앱이 자동으로 생성되는데
그 때 URL mapper 파일인 urls.py가 같이 생성 된다.


URL Mapping은 path() 함수의 
list 변수urlpatterns에 의해 관리된다.

path() 함수패턴이 일치 할 때 마다
지정된 View에 URL 패턴을 연결하거나,

다른 URL 패턴테스트 코드 목록에 연결 하는데
이 경우 패턴은 대상 모듈에서 
정의된 패턴의 기본 URL이 된다.

그럼 이제 catalog 앱과 연동해보자.


1
2
3
4
5
6
7
# Use include() to add paths from the catalog application 
from django.conf.urls import include
from django.urls import path
 
urlpatterns += [
    path('catalog/', include('catalog.urls')),
]
cs

다음으로 127.0.0.1:8000을 
127.0.0.1:8000/catalog/로 
리다이렉트 하도록 하기 위한 코드를 추가해보자.


1
2
3
4
5
from django.views.generic import RedirectView
 
urlpatterns += [
    path('', RedirectView.as_view(url='/catalog/', permanent=True)),
]
cs

Django는 기본적으로 CSS, JavaScript 그리고 
이미지와 같은 정적 파일을 제공하지 않지만,
웹 개발에 있어서 빠질수 없는 요소이기 때문에 
정적 파일들을 제공할 수 있도록 코드를 추가해 보자.


1
2
3
4
5
# Use static() to add url mapping to serve static files during development (only)
from django.conf import settings
from django.conf.urls.static import static
 
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
cs

위에서 urlpatterns 변수를 
계속해서 +=연산으로 추가해줬지만
리스트 안에 넣는 방법도 있다.

사실 대개 리스트 안에 넣지만,
좀 더 명백히 구분하기 위해 +=연산을 사용했다.

따로 따로 분류해놨던 것을 
리스트안에 넣는 다면 최종적으로 아래와 같이
될 것이다.

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from django.contrib import admin
from django.urls import path
from django.conf.urls import include
from django.views.generic import RedirectView
from django.conf import settings
from django.conf.urls.static import static
 
urlpatterns = [
    path('admin/', admin.site.urls),
    path('catalog/', include('catalog.urls')),
    path('', RedirectView.as_view(url='/catalog/', permanent=True)),
 
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
 
# urlpatterns += [
#     path('catalog/', include('catalog.urls')),
# ]
#
# urlpatterns += [
#     path('', RedirectView.as_view(url='/catalog/', permanent=True)),
# ]
#
# urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
cs


마지막으로 

catalog 디렉토리 안에 urls.py라는 파일을 만들고 
아래와 같은 코드를 작성하자.


1
2
3
4
5
6
7
from django.urls import path
from catalog import views
 
 
urlpatterns = [
 
]
cs


웹 사이트 뼈대 테스트 하기


여기까지 해서 
Django의 기본적인 틀을 잡았다고 할 수 있다.

물론 실질적으로 아무것도 
만든 것이 없다고 해도 말이다.

바로 또 다른 앱을 작성하는 것도 좋지만
그전에 서버가 제대로 돌아가야 하는지 확인 해봐야 한다.

처음부터 확인하지 않아 
나중에 큰 에러를 야기할지는 아무도 모르기 때문에 
가급적 리스크는 줄여주는것이 좋다.

①데이터베이스 마이그레이션(migration) 실행하기


공식 도큐먼트 튜토리얼에서도 
언급했던 걸로 기억한다.

Django는 ORM
(Object - Relational - Mapper : 객체 - 관계 - 매퍼)를 사용하여 
Django 프로젝트 코드 안에 있는 모델 정의를 
데이터베이스에서의 데이터 구조에 매핑한다.

모델의 정의를 바꿀 때 마다,
장고는 변화를 추적해서

데이터베이스 안의 기본 데이터 구조가 
모델과 일치하도록 
자동적으로  마이그레이트(migrate)하는 
스크립트를 생성할 수 있다.

아직 아무런 모델을 만들지는 않았지만
프로젝트를 생성할 때 애플리케이션 관리 앱이 
자동적으로 추가되기 때문에 

애플리케이션 관리앱 관련 모델들을 정의하기 위해 
cmd에 아래와 같이 명령어를 실행해보자.


1
2
python manage.py makemigrations
python manage.py migrate
cs

makemigrations 명령어는
프로젝트에 있는 모든 앱에 대한
migration들을 생성하지만, 적용하지 않는다.

migrate 명령어는 migration들을 데이터베이스 적용한다.

②웹 사이트 실행하기


마이그레이션 명령어를 실행했다면
이제 웹 서버를 실행해보자.


1
python manage.py runserver
cs

웹 서버 가동 후
웹 브라우저에 127.0.0.1:8000의 주소로
접속해보자.


이런 에러가 난다면 지극히 정상이다.

왜냐하면 우리는 아직 
Model, View, Template을 작성한 적이 없기 때문이다.

다만 빨간색 박스와 같이 
127.0.0.1:8000으로 접속했는데,
127.0.0.1:8000/catalog/로 접속된 이유는

이전에 127.0.0.1:8000으로 접속시
127.0.0.1:8000/catalog/로 리다이렉트 되도록 
아래와 같이 urls.py 파일을 코딩을 했기 때문이다.



이 블로그의 인기 게시물

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

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

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