프로젝트(농수산물 소,도매가 통계 웹 구축) (1)

HJ·2024년 4월 7일
0

시작

다사다난했던 마인크래프트 게임 서버 운영 프로젝트가 마무리 되고 , 이번에는 같은 팀원 두명과 새로운 프로젝트를 진행하기로 했다. 마인크래프트 서버 프로젝트를 운영하면서 팀원 모두 기초가 부족하다고 느꼈고 , 이번에는 각자 일정도 바쁘니 기본에 충실한 프로젝트를 진행하자는 의견이 나왔다.

아이디어 회의를 통해 선정된 아이디어는 '농수산물 소 , 도매가 통계 웹 구축' 이며 매일 업데이트 되는 통수산물 소,도매가격 정보를 토대로 웹사이트에서 다양한 시각화 및 식품 추천이 주 목적이다.

파트 분배

이번 프로젝트에서 팀원 한명은 웹을 본격적으로 구축해보기를 원했고 , 다른 팀원은 인프라를 클라우드 기술까지 사용해 구축하기를 원했다. 나는 저번과 마찬가지로 데이터를 다루는일을 맡기로 했다. 단기적인 목표를 설정해보자면 실시간 데이터를 받아와서 db에 적재하는 파이프라인 모듈 만들기 , 실시간 데이터를 통한 웹 시각화 , ELK를 활용해 웹 로그분석 구축하기 , 데이터를 기반으로 추천시스템 만들어보기 이다.

우선 첫번째 회의 이후 데이터를 받아와서 db에 적재하는 파이프라인 모듈을 만드는 과정은 완성시켰다. ELK의 경우 이전 프로젝트에서 구축하는것을 실패했기 때문에 이번 프로젝트에서는 제대로 공부해서 하자는 마음으로 '엘라스틱 스택 개발부터 운영까지'책을 빌려 참고하기로 결정했다.

진행사항

Web

우선 웹을 담당하는 팀원은 웹에대한 공부와 병행하면서 웹을 어떻게 구상해야할지 엑셀에 정리를 하면서 adobeXD를 활용해 UI를 구상하고있다. 또한 react를 공부도 병행하고 있다고 한다

Infra

인프라를 구성하는 팀원에 집에 메인 서버를 구축해야 하는데 , 최근에 팀원이 이사를 간 집에 인터넷이 아직 인터넷이 깔리지않아 서버 구축에 어려움이 생겼다. 따라서 현재 팀원은 이번에 사용하기로 한 Ansible , docker에 대해 간단하게 실습을 진행해보고 있다고 한다.

Data(내 진행사항)

이번에 DB는 데이터 무결성, 확장성, 기능, 안정성, 개방성 측면에서 장점이 있는 postgresql을 사용해보기로 결정했다. 따라서 나는 매일 업데이트되는 데이터를 받아와서 전처리 후 db에 적재하는 파이프라인 모듈을 구축했다.

처음에는 데이터를 서울열린데이터 광장에서 제공하는 도매가 데이터를 활용하기로 결정했다. 데이터는 아래와 같으며 , 매일 12시에 초기화가 된다.

https://data.seoul.go.kr/dataList/OA-2664/S/1/datasetView.do

try1 : 서울시 농수산물 등급별 기준 데이터

추후에 카테고리별 분석을 하고 싶었기에 위 데이터를 api로 가져와 추가적인 정보로 상품의 카테고리를 만들고 싶었다. 그렇지만 데이터에는 카테고리를 분류하는 기준이 명확하게 없어 처음에는 gpt를 통한 분류를 시도했다. 하지만 gpt는 분류의 정확도가 낮고 불안정성이 높아 새로운 상품이 들어왔을때 안정성있게 분류하는것이 어려웠고 , 따라서 데이터 마다의 특성을 유명한 머신러닝 모델들에 학습시켜 새로운 상품이 들어왔을때도 분류하게 하려고 했다. 모델로 예측하는 결과는 불안정성이 크기 떄문에 빈도수 기반 변환 (예를들면 참치 2개가 수산물로 예측 , 1개가 과일로 예측되면 참치는 빈도수가 많이나온 수산물로 결과 반환)을 추가시켰다

결과적으로는 야채,과일은 어느정도 분류를 했는데 '수산물'에 대해서는 정확하게 분류하지 못했다. 품목명 텍스트의 전처리가 부족했거나 , 모델이 적합하지 않다는 판단에 새로운 방법을 모색하던중 kamis사이트에 다양한 정보가 들어있는 데이터를 찾았고 해당 데이터에 데이터 api를 신청해 승인받았고 , 이 데이터를 활용하기로 결정했다.

try2 : kamis데이터

https://www.kamis.or.kr/customer/reference/openapi_list.do

kamis데이터에는 다양한 형태의 데이터가 있다. 이 데이터들중 나는 부류별,지역별 농수산물 가격정보 데이터를 가져왔고 이를 전처리하고 potsgredb에 적재,시각화하는 과정까지 한번에 되도록 모듈화를 시켰다. 자세한 코드 설명은 너무 길어질거 같으니 github에 링크를 남기겠다.

https://github.com/KangHoJ/sijang_project

이후 방향

이제 인프라 서버와 db서버가 리눅스 위에 구축되면 자동화(예를들면 systemd)등을 활용해 python 코드 모듈들을 실행시켜 구축된 db서버에 적재하도록 하고 , 실제 웹사이트가 구축되면 log분석을 할 수 있도록 elastic stack ELK 방법에 대해 익숙해질 예정이다. 이번 프로젝트를 통해 많은 기초를 잘 다지고 , 팀원 모두 실력이 향상되었으면 좋겠다! 파이팅

profile
데이터 공부 기록

0개의 댓글

관련 채용 정보