BookSteem.kr 2.0 소개 및 개발기

in kr-dev •  7 years ago  (edited)

안녕하세요.

오늘은 booksteem.kr 2.0 소개 및 개발기에 대해서 적어보려 합니다.
booksteem_sc_desktop.png
위 사진은 데스크탑 사진이고 모바일 버전도 지원합니다.

소개

스팀잇은 해당 태그에 대해서 7일이 지나면 피드에서 사라집니다. 제가 알기로는 그런데, 만약 아니라면 지적 부탁드립니다. 그래서 좋은 글이 있어도 나중에 찾으려면 직접 permalink 를 찾아서 들어가야 볼 수 있죠. 서평을 읽다보니 좋은 글과 좋은 작가분들이 많던데, 이 글이 7일 후에 사라져서 좀 안타까웠습니다. 그래서 만들었죠.

booksteem.kr는 하나의 포스팅은 하나의 서평을 담고 있는 전제 하에 만들었습니다. 동작은 일정 시간(현재 1시간) 마다 kr-book 태그의 글을 읽어와서 업데이트 합니다. 만약 ISBN이 있으면 알라딘에서 해당 정보를 찾아서 매칭해주고 있죠. ISBN : 97812345678 혹은 ISBN - 97812345567 이런식으로 본문 아무데나 적어두면 알아서 매칭합니다. 아직 7일이 지나지 않아 완료되지 않은 글은 5~6시간마다 한 번씩 읽어와서 Vote, 수익을 업데이트 합니다. 그리고 매일 12시쯤 되서 각 작가별 서평 갯수나 수익을 업데이트 합니다.

2.0 업데이트 상황

  • 모바일에서 보기 쉽도록 UI를 구성했습니다.
  • 작가별 서평을 모아보실 수 있습니다. 첫 화면에서 작가 프로필 사진이나 이름을 누르면 해당 작가의 서평을 모아볼 수 있습니다.
  • 카테고리별 서평을 모아보실 수 있습니다.

2.1 업데이트 예정

  • 소설란이 추가됩니다.
  • 좋아하는 작가가 서평이나 소설을 올리면 알림을 받을 수 있습니다.

여기서부터는 소프트웨어 개발 얘기입니다.
비개발자분들은 더 이상 안읽으셔도 됩니다. ^^;

개발하시는 분들의 질문 언제든지 환영합니다.

개발 구성은 최대한 자동화, 최대한 돈 안들게 하자! 입니다. (그렇다고 돈 1원도 안다는건 아닙니다 ㅠㅠ)

개발에 사용한 기술/인프라

Google Cloud - App Engine
백엔드(API 서버)는 현재 구글 클라우드 앱엔진 위에서 돌고 있습니다. 왜 아마존 웹 서비스(AWS)를 안쓰고 구글 클라우드를 썼나면 구글은 Free Quota 가 상당히 좋은 편입니다. 간단한 웹 서비스 돌리는데는 전혀 지장 없을 정도입니다. 여기서는 웹서비스 대응 API와 데이터 관련 API로 나눠져 있습니다. 웹서비스는 booksteem.kr 에서 사용하는 API이며, 데이터 API 는 백그라운드로 스팀잇의 서평을 긁어오는 역할을 합니다.
img_gcp.png

Google Cloud - Datastore
MySQL, PostgresSQL 같은 관계형 데이터베이스가 아니라 NoSQL 인 데이터스토어를 사용했습니다. 이유는 첫 째로 Free Quota 때문에 돈이 많이 들지 않고 쓴 만큼 내기 때문입니다. : > 구글 앱 엔진에서 가장 싼 인스턴스(db-f1-micro)로 MySQL 을 돌리면 최소 16$는 내야합니다. 고가용성 옵션까지 추가하려면 으휴;;; 돈 많이 들죠. 두 번째로는 제가 MySQL 인스턴스를 별로 신뢰하지 않기 때문입니다. 구글 클라우드에서 MySQL 인스턴스가 문제가 된 적이 꽤 있어서요.
img_datastore.png

Node.js + Express => worker
API 서버에서 스팀잇의 서평을 긁어올 때 사용합니다. Steemit 의 공식 라이브러리는 javascript 와 python인데 API 문서를 살펴보면 역시 javascript 가 압도적으로 지원하는 기능이 많습니다. 따라서 어쩔 수 없이 node.js 를 사용했구요, 웹 프레임워크로는 express 를 사용했습니다.

Heroku
위의 Node.js + Express 프로그램이 돌아가는 곳입니다. 구글 앱 엔진 위에서 구동하지 않은 이유는 역시 돈때문에! ㅎㅎ 구글 앱 엔진은 Standard 환경과 Flexible 환경이 있는데, 구글 앱엔진이 무료로 사용할 수 있는 환경은 Standard 의 가장 성능 낮은 인스턴스 뿐입니다. Node.js 는 Flexible 환경에서 사용해야하고 그러면 또 한 달에 못해도 $40 정도 들기에... 일부러 Heroku 에 했구요.

Vue.js + Onsen UI
Booksteem.kr 웹페이지는 vue.js 를 사용해서 만들었습니다. 서버사이드 렌더링이 아니라 흔히 SPA(Single Page Application)라 불리는 클라이언트사이드 렌더링 형태죠. UI프레임워크로는 Onsen UI를 사용했습니다. 제가 디자인 능력이 거의 0에 근접해서 더 이상 예쁘게 꾸미지 못하는게 안타까울 뿐입니다.

Firebase
위의 웹페이지를 호스팅할 때 사용합니다. Universal 이긴 하지만 https도 지원해서 좋더라구요. 가격도 싸고 쓰기도 편리합니다.

Go
Go 언어 혹은 golang 이라고 불리는 언어입니다. 요즘은 맨날 파이썬만 쓰고 있어서 예전에 배운거 복습도 할 겸 해서 사용했습니다. 근데 웹서버 작성할때는 파이썬 + Flask가 더 좋네요 ㅎㅎ

번외편
Python
각종 스크립트 만들때 파이썬을 사용합니다. 아무래도 파이썬이 손에 더 익고 파이썬 문법 자체가 워낙 우아하다보니까 자꾸만 손이 가네요.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

놀랍군요!!

짱짱맨 태그 사용에 감사드립니다^^

의미있는 프로젝트 감사합니다. 보팅하고 팔로우하고 갑니다~