개요
현재 코드는 모듈화가 진행되어 있지 않다. 모듈화는 기능적인 분리를 통해서 다른 프로그램을 개발할 때에도 유지보수와 코드 재사용성을 높여 소프트웨어를 설계하는 기법을 일컫는다고 한다.
사실 모듈화를 왜 해야 하는지에 대한 이해가 먼저일 것 같긴한데 따로 기술해보도록 하겠다.
먼저 내가 작성해야 할 코드가 어떤 기능을 제공해주어야 하는지 정리하는 것이 먼저일 것이다. 그래서 함수 별로 정리하기 전에 러프하게 먼저 정리를 했다.
- 네이버 맵 접속
- 키워드 입력
- 키워드 입력 후 스크롤 최하단 까지
- 스크롤 다 내려가면 특정 Store 클릭
- Store 클릭 후 iframe 이동
- 상세 정보 가져와 변수에 할당
- 이미지 탭으로 이동
- 이미지 탭에서 이미지 개수 60개 초과할 때까지 스크롤
- 이미지 url 60개 가져오기
- AI 기반의 이미지 분석을 이용해 이미지가 음식 사진인지 아닌지 판별 후 음식 사진 개수를 50개로 추출
- 60개 모두 음식 사진인 경우에도 50개로 추출
- 7번 과정을 모두 끝내면 5~7 Store의 개수 만큼 반복 및 각각의 json dict를 담은 list 추출
- mysql 및 mongoDB에 적재
일단 이렇게 러프하게 정리를 해보았다. 다음은 이를 통해 모듈화 구조를 잡아야 하는데 코딩을 많이 해보지 않은 상태에서 구조를 잡기엔 어려울 것이라 생각하고 챗집 선생님께 물어보기로 했다. 일단 물어보고 틀린 것을 나중에 검수하기로..
대충 이런 식으로 답변해주길래 말을 잘라버리고 원하는 대답을 듣고 싶은 방향으로 다시 질문했다.
이것도 크게 마음에 들지는 않는 답변인 것 같다. directory 기준으로 모듈화를 진행하면 안되는 건가 생각이 들었다. 그래서 구글에 "python django application modularization" 키워드로 검색을 했는데
이 medium 글에서는 위와 같이 모듈을 구성했다. 그래도 GPT가 추천해준게 나름 괜찮은 구조라고 생각했고, 이렇게 모듈구조를 잡아보려다 더 나은 구조가 없을지 물어보기로 했다.
차이도 알려 주었지만 뻔한 이야기이기에 생략하고, GPT에게 힌트를 얻어서 원하는 Directory 구조를 짜보았다.
참고로 뻔한 이야기는 아래와 같다.
- 명확한 기능 분리: 기능별 디렉터리가 명확하여 개발자가 빠르게 해당 파일을 찾을 수 있습니다.
- 모듈 재사용성: 특정 기능을 쉽게 추가하거나 변경할 수 있으며, 이 구조에서는 각 디렉터리에 위치한 모듈들을 독립적으로 테스트하고 재사용하기 쉽습니다.
- 확장성: 프로젝트가 커지거나 기능이 복잡해질 경우에도 이 구조는 유연하게 확장 가능합니다.
PS C:\Repository\homelab_src\matgo-crawler\src_new> tree . /f
폴더 PATH의 목록입니다.
볼륨 일련 번호가 0000003D 2014:CA2D입니다.
C:\REPOSITORY\HOMELAB_SRC\MATGO-CRAWLER\SRC_NEW
│ .gitignore
│ main.py
│ requirements.txt
│
├─config
│ settings.py
│
├─crawler
│ __init__.py
│
├─data_extractor
│ __init__.py
│
├─db_handler
│ __init__.py
│
└─utils
__init__.py
생각 해보니 위와 같은 구조가 확장성 또는 가독성을 가져가기에 더 좋을 것 같아 지금은 이렇게 결정했지만 충분히 달라질 수 있다고 생각한다.
오늘 출장 + 야근을 하고나니 힘들어서 오늘은 여기까지만...!
그리고 GPT는 도움을 참 잘주긴하는데 확실하게 믿을수 있는 선임같은 존재는 아닌것 같다. 참고 용도로만 사용하고 추후에 위에 들어가는 모든 기술들을 블로그로 작성해보고 다시 검증하는 시간을 무조건 가질 것이다. 글을 보시는 분들도 그렇게 하길 빈다! 이렇게 하는 이유는 기한이 화요일까지라서...