4월경에 끝난 프로젝트이지만 지금이라도 프로젝트 회고를 남겨봅니다.
기획
"여의도 꿀통"은 선거 후 관심도가 떨어지는 문제, 정치의 복잡성, 그리고 지지할 정당이나 정치인의 부재로 인한 무관심을 해결하기 위해 기획했습니다. 투표 이후에도 꾸준히 정치에 관심을 가질 수 있도록 돕고, 정치적 결정 과정을 보다 쉽고 이해하기 쉬운 형태로 제공함으로써, 정치에 대한 접근성을 높이고자 했습니다.
README
자세한 기능소개, 데모영상은 리드미에 포함되어 있습니다.
https://github.com/JaegeonYu/HoneyPot
해결한 문제들
1. JPA 활용한 페이지네이션, 페치조인
뉴스 조회 시 키워드까지 조회할 때 Querydsl 활용한 Pagination + Fetch Join 처리
2. 후보자 정보 PDF
3MB이상의 후보자 정보 PDF를 S3를 활용해 제공할 때 5초 이상의 네트워크 지연시간이 소요되었는데, CDN 기능이 적용된 CloudFront + S3를 통해 1초 이내로 줄일 수 있었습니다.
3. 후보자 사진 해상도 개선
국회 및 공공 데이터 포탈에서 제공하는 국회의원의 해상도가 제각각이여서 OpenCV의 dnn super resolution 모델을 활용해 이미지 업스케일링을 진행했습니다. 인위적인 느낌이 나긴하지만 서비스 내 썸네일로 보여지는 부분이라 높은 해상도를 챙기기로 했습니다.
처음엔 업스케일링 해주는 사이트에서 4~5개씩 집어넣고 다운 받아 진행했는데 인공지능 전공 수업을 듣던 기억을 되살리며 구글링과 Colab을 활용해 300개 이상의 사진 업스케일링을 자동화할 수 있었습니다.
성과
1. 800명의 사용자 활동을 수용한 UX 개선
그동안 많은 프로젝트를 배포해봤지만 실제 사용자를 받아본적은 없었습니다. 이번 프로젝트는 대선 시즌을 노린 실제 사용자, 그리고 선거법 위반을 피하기 위해 유저 기능, 커뮤니티 기능을 제외하고 능동적인 컨텐츠 제공을 위해 노력했습니다. 한국매니페스토본부가 제공하는 공약이행현황 hwp 파일, 국회에서 제공하는 국회의원과 법안 정보, 유튜브 국회뉴스를 java, python, GPT API를 활용해 파싱 및 가공해 제공했습니다.
삼성 청년 SW 아카데미 내부 메신저 및 외부 홍보를 통해 800명 이상의 사용자를 받아볼 수 있었습니다. Google Analytics와 Beusable Hitmap을 활용해 사용자와 이벤트를 추적하고 많은 이벤트가 발생한 페이지에서 컴포넌트별 클릭 및 스크롤 히트맵을 통해 얻은 피드백으로 카테고리 순서 재배치 및 이동 버튼 등을 추가했습니다.
2. 프로젝트 우수상
삼성 청년 SW 아카데미 특화 프로젝트 우수상 수상했습니다. 더 원대한 꿈을 꿨었는데 아쉬웠습니다.
회고
이번 팀 프로젝트도 6인 규모에 6주동안 진행되었고 팀장, 백엔드, 네트워크 인프라를 담당했습니다.
기획때부터 해당 아이디어에 팀원 모두 관심이 있었지만 능동적인 콘텐츠를 제공하기에 AI로 국회의원이나 후보자가 추구하는 방향성을 예측해보고 싶었지만 선거법 관련해서 객관적인 정보 취합 후 알아보기 쉽게 제공하는 쪽으로 갔습니다.
자동화의 필요성
한국매니페스토 본부에서 각 의원실에 질의한 공약이행 현황 한글 파일을 파싱하는 부분을 Java를 통해 자동화를 해놔서 22년 기준 데이터에서 프로젝트 종료 4일전에 올라온 24년 데이터로 마이그레이션을 진행할 수 있었습니다.
300명의 현직 국회의원 사진 정보도 화질이 깨져 서비스가 지장가는 데이터가 많이 있었는데 python, colab을 활용해 이미지 업스케일링을 진행할 수 있었습니다.
배포자동화 뿐만 아니라 단순한 노동을 자동화하면서 얻는 이점이 크고, 예외처리의 중요성을 다시 한번 깨달을 수 있던 프로젝트였습니다.
실제 사용자
삼성 청년 SW 아카데미를 진행하면서 전 지역의 교육생들에게 홍보할 수 있는 네트워크가 하나의 장점이라고 생각합니다. 제 기수와 친구가 속한 그 다음 기수 교육생들에게 내부 메신저 홍보를 통해 800명 이상의 트래픽을 경험해볼 수 있었습니다. 프론트엔드에 GA, Hitmap을 통해 트래픽을 모니터링했지만 백엔드에 Grafana, Scouter를 못붙여봐서 화면이 아닌 어떤 데이터에 많이 접근하는지는 체크를 하지 못했습니다. 이 부분을 공부해서 성능상에 향상이 필요하거나 문제가 있는 부분을 찾아볼 것 같습니다.