
팀프로젝트 1편에 이어서-
화요일 퇴근시간 즈음 데이터를 가져오는 데 문제가 생겼다는 이야기가 나왔다. DB를 주로 담당했던 팀원이 2023년도의 데이터가 이상하여 확인해봤더니 그 해에만 보조금 항목이 하나 늘어 데이터가 제대로 안들어왔던 것이었다. 1편에서 서술 했듯이 우리는 2019-2024년의 데이터를 가져와야 했는데 2021년도부터 "모델별 지방비 조회" 라는 버튼을 클릭하면 새 창이 열리고 아래 첨부해 둔 첫 번째 사진과 같이 해당 창에서 모델별 보조금 조회 데이터를 확인할 수 있도록 되어있었다.

그런데, 2023년도엔 "보급목표이행보조금" 라는 항목이 새로 생겨(위/아래의 두 사진을 비교해보면 알 수 있다) column이 기존 6열 -> 7열로 늘어났다. 이 문제를 해결하려 코드에 손을 대기 시작하니 나사 빠진 기계 마냥 하나가 작동하면 다른 하나가 작동하지 않는 지경이 되어버리고 게다가 지역구분이 많다보니 코드를 한번 돌리면 처리하는데 40분 정도가 소요되어 여간 시간을 잡아먹는 게 아니었다.
하여간 처음엔 간단하게 2019-2020 / 2021-2022,2024 / 2023 로 연도를 나누어 따로 데이터를 가져올 수 있도록 했으나 데이터를 제대로 처리하지 못하였고 jy님과 나는 각자 여러 방법을 시도해보았다. 시간이 점점 흐르고 지푸라기라도 붙잡는 심정으로 Chat GPT에게 의견을 구했는데 GPT가 제시한 답변은 연도가 아닌 column 수로 나누어 데이터를 가져오라는 것이었다. 여기서 또 댕~ 하고 머리를 한대 맞은 것 같은 느낌이 들었다. 바로 코드를 수정해 실행하니 데이터를 완벽하게 크롤링 해왔다. 우리의 이른 퇴근을 도와준 Chat GPT에게 고마워 눈물이 핑 돌았다.

오전에 중간과정 중 강사님께 피드백을 받은 것 중 하나가 사용자가 프로그래밍 지식이 없다고 생각했을 때, 크롤링으로 가져온 데이터를 json파일로 저장하는 것 보단 DB를 사용하는 것이 낫지 않냐는 것이었다. 이 부분에 있어서 팀원들과 얘기할 때 json파일로 저장하느냐 csv파일로 저장하느냐에 관해서만 의논했지 DB에 바로 접근하는 것은 전혀 생각해보지 않았기 때문에 놀랐었다. '그렇게도 할 수 있구나' 하는 생각이 들면서 그 부분에 대해서 전혀 궁금해하지 않았다는 점도 스스로에겐 약간의 충격이었다.
그래서 조금 더 이해해보고자 두가지 방식의 차이점을 찾아보았다.
DB와 연동된 사용자 인터페이스(웹 앱, 대시보드 등)를 제공하면 사용자는 저장 방식을 몰라도 편리하게 데이터를 다룰 수 있고, JSON 파일로 저장하면 파일을 수정하거나 데이터를 추가할 때 사용자가 텍스트 에디터나 별도의 프로그램을 알아야 하는 어려움이 있다. 또한, JSON 파일은 서버와 실시간 동기화가 어렵고, 수정된 파일을 다시 업로드하거나 배포해야 한다는 단점이 있다. 각 저장 방식 별로 장담점이 있기에 상황에 맞는 방법을 활용하면 될 듯 하다.
아래는 간단하게 정리 해둔 JSON/CSV/DB 별 저장 방식의 특징.
| 특징 | JSON | CSV | DB |
|---|---|---|---|
| 구조 | 중첩된 복잡한 데이터 가능 | 2차원(표 형태) 데이터만 가능 | 복잡한 관계형 구조 가능 |
| 초기 설정 | 간단 | 매우 간단 | 복잡(설치 및 설정 필요) |
| 성능 | 소규모 데이터 적합 | 소규모 데이터 적합 | 대규모 데이터 적합 |
| 검색/필터링 | 비효율적 | 비효율적 | 매우 효율적 |
| 동시성 처리 | 불안정(충돌 가능) | 불안정(충돌 가능) | 매우 안정적 |
| 데이터 이동성 | 매우 높음 | 매우 높음 | 상대적으로 낮음 |
| 적합한 용도 | 복잡한 구조, 중소 규모 데이터 | 단순 구조, 엑셀 호환 데이터 | 대규모 데이터, 실시간 처리 |
나는 궁금증이 생겼을 때 누군가에게 물어보는 것보다 혼자 해결하는게 익숙한 사람인데, 팀 프로젝트를 통해 팀원들에게 모르는 것을 물어보고 또 의견을 나누는 게 커뮤니케이션을 통한 프로젝트 이해의 차원에서 굉장히 중요하다는 생각이 들었다. 팀으로 일한다는 건 생각, 시선, 이해도가 모두 제각각인 사람들이 같은 그림을 그려 나가야 하는 것이니까. 이 외에도 전체적인 진행 과정에서 코드를 뚝딱뚝딱 써내려가며 프로젝트를 진행해 나가던 팀원들을 보며 나의 현재 위치도 깨닫고 더 분발해야겠다고 느꼈다.
SKN09-1st-5Team 보러가기
SKN09-1st-5Team 보러가기
SKN09-1st-5Team 보러가기