오픈고시라는 프로젝트는 당시 부동산에 한참 관심이 있을 때 여러 지자체에서 올라오는 고시공고를 한 곳에 모아서 보고 싶어서 만들기 시작했다. 처음에는 텔레그램 API를 이용해 채널에 수집한 공고를 공유해 주는 단순 역할을 했지만 텔레그램은 우리나라에서 이미지가 안 좋고 부동산에 관심이 있는 사람들을 고려해 봤을 때 좋은 접근 수단이 아니라고 생각해 사이트를 만들게 되었다. 그래서 각 지자체 사이트에서 고시공고를 수집하고 사이트에서 수집한 공고를 보여주며 누르면 해당 지자체에 공고 페이지로 이동하는 오픈고시라는 사이트를 기획하였다.
나름 제대로 만들어보자 로고부터 기능 기획까지 많은 시간을 쏟아 설계하고 개발할 때도 많은 고민을 하면서 만들었다.
로고
로고는 직접 인터넷에서 여러 로고들을 찾아가 비교해 가며 고민하다가 직접 손으로 만들었고 내가 생각하는 사이트의 이미지를 고려해 여러 색상들도 사용해 가면서 최종적으로 아래와 같은 로고가 탄생하였다. 로고는 기본적으로 초성을 바탕으로 하고 최대한 단순하면서도 한번 뜻을 알고 나면 이후에는 보기만 해도 바로 알 수 있을 것 같은 느낌으로 디자인했다.
아키텍처
개인 프로젝트이고 비용을 최소한으로 사용하고 싶었기 때문에 최대한 단순한 아키텍처를 고려했다.
메시지를 수집하는 스크래퍼는 파이썬에 Requests를 이용해 수집하였지만 체계적인 수집을 위해 블록 구조의 처리 프레임워크를 직접 만들어 스크랩에 변경이 있거나 새로운 사이트를 추가할 때 최대한 빠르게 반영할 수 있도록 하였다. 블록 구조의 프레임워크는 오픈고시 수집 프로그램을 작성하면서 생각한 개념인데 추후에 오픈소스로 추가하려고 한다.
백엔드 서버는 Python에 Django 프레임워크를 이용해 저렴한 서버에 구축했고 Cron 배치 작업도 동일한 서버에 돌리도록 하였다. 백엔드 서버는 주로 MongoDB에서 데이터를 가져와서 JSON 포맷으로 응답하는 API 서버 역할을 담당했다.
메세지 큐는 Dedicate 서버를 사용하였고 RabbitMQ, Kafka를 고려했으나 개인적으로는 Kafka를 선호하기 때문에 Kafka를 도입하려고 했다. 하지만 도입을 고려하던 당시에는 KRaft을 사용하고 있지 않고 Zookeeper를 사용하고 있었기 때문에 Zookeeper와 Kafka를 같이 구축하기에는 메모리 비용이 부담되었고 대안을 찾다가 알게 된 Redpanda를 사용하게 되었다. 그리고 Redpanda는 서비스를 종료하던 시점까지 별다른 문제없이 안정적으로 운영되어 추후 다른 서비스에서 메시지 큐가 필요할 때 도입하려고 한다. *Redpanda에 대한 건 이전에 짧게 정리한 글이 있으니 참고
그 외 웹사이트의 UI는 Vue.js를 이용해 CSR 방식으로 개발을 하였고 빌드 후에 서빙은 S3와 Cloudfront를 이용해 정적 서빙을 하여 별도 서버 없이 운영할 수 있도록 하였고 상당히 만족하는 운영 방식이다.
메시지 큐에서 데이터를 받아서 MongoDB에 넣거나 처리하는 프로그램은 Go 언어로 작성했는데 파이썬에 비해 속도가 빠르고 메모리를 덜 사용하고 특히 Docker 이미지 크기를 작게 가져갈 수 있기 때문에 도입하기에 매우 적합했다.
서비스 문제점
이렇게 기획, 설계, 기술 부분에서 많은 고민을 하고 최적화하여 서비스 운영을 시작하였으나 서비스 중단에 가장 큰 문제점이 있었는데 바로 서비스로써의 기획이 부족하고 실제 수요와 실사용자를 고려하지 않았기 때문이다.
오픈고시라는 서비스의 핵심은 여러 지자체에서 고시하는 공고들을 한곳에서 볼 수 있도록 하는 서비스이다. 즉 정보 제공을 목적으로 하는 사이트라는 것이다.
빈약한 정보 제공
첫 번째 문제점은 부족한 서비스 기획으로 오픈고시가 하나의 서비스라기에는 제공하는 정보가 빈약했다.
오픈고시에서는 위에서 언급한 것과 같이 여러 지자체의 공시를 한곳에서 볼 수 있게 제공해 주는데 문제는 공시의 제목만 표시했다는 것이다. 이는 저작권과도 연관이 있는데 직접 작성한 글이 아니고 추후 서버비 충당을 위해 광고를 고려했기 때문에 스크래핑한 내용과 사진을 모두 보여주기에는 저작권 침해가 발생할 수 있었다. 이로 인해 제목만 표시되고 제목을 누르면 해당 지자체 사이트로 이동하는 방식으로 개발했는데 이로 인해 사이트에 머무는 시간이 거의 없으며 그저 단순히 이동을 하기 위함이 목적이 돼버리게 되었다.
실제로 사이트 링크를 다른 곳에 올리면 처음에는 사이트에 접속을 했지만 얼마 안돼 바로 지자체 사이트로 갔으며 이후에는 오픈고시에는 접속하지 않는 패턴을 보여왔다.
실제 수요와 사용자를 고려하지 않은 기획
내가 사이트에서 기획한 것은 로고, 사이트 디자인 등 외관적인 부분을 많이 고려했는데 막상 서비스의 핵심인 정보 제공에는 고려를 거의 안 했다는 것이다. 처음 개발 당시 단순히 여러 곳에 있던 걸 모아서 보여주기만 해도 어느 정도 들어오겠지라는 막연한 생각으로 개발했다. 또한 부동산은 특성상 평균 나이 대가 높은 편에 속하는데 이런 수요를 고려했을 때 당시 개발한 사이트의 정보 제공 기능은 거의 의미가 없는 수준이었다.
또한 제공하는 정보의 퀄리티도 여러모로 떨어졌는데 고시공고는 특성상 웹페이지에는 요약된 내용이나 파일을 통해 확인할 수 있는 패턴으로 작성된 게 많은데 스크래핑 시 단순히 페이지 내용만 가져오다 보니 표시하는 내용이 거의 없다시피 하고 결국 한번 더 들어가 봐야 하는 불편함이 있었기 때문에 굳이 사이트를 이용할 이유가 없었다.
다른 이유도 있겠지만 가장 큰 문제는 위 두 개로 생각이 된다.
서비스를 종료하며
내가 부동산에 관심이 없어진 것도 영향이 있지만 나도 내 사이트를 거의 이용하지 않았고 필요도 없었다.
다음에 다른 것에 관심이 생겨서 개발을 하게 된다면 이전의 실수를 되풀이하지 않으려고 한다.
나는 기획자가 아니기 때문에 당연히 기획 퀄리티가 떨어지지만 내가 할 수 있는 최대한의 서비스 핵심 기능을 제공하는 것에 대해 더 많은 고민을 하려고 한다. 핵심 기능에 대한 많은 고찰과 의미 그리고 다른 사람들이 사용한다면 어떻게 사용하게 될까, 수요는 있을까 등 단순히 개발하면 알아서 쓰겠지라고 하고 개발을 하게 된다면 관심이 없어지는 순간 열심히 시간을 들여 만든 기능은 의미를 잃게 된다. 물론 시간을 들여 개발한 경험이 생기지만 이왕 개발하는 거 많은 사람들이 사용하게 된다면 더더욱 개발하는 데 있어서 의미를 가지게 되지 않을까 싶다.
'잠답' 카테고리의 다른 글
늠름한 고양이 (0) | 2024.04.23 |
---|---|
ASOMETECH 3-in-1 급속 충전 케이블 구매 및 사용 후기 (1) | 2024.04.22 |
공개SW 페스티벌 2023 후기 (2) | 2023.12.03 |
SK하이닉스 Gold P31 M.2 NVMe (1TB)로 교체한 후기 (0) | 2023.06.01 |