iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 3
1
Modern Web

30天使用Node.js在AWS上開發後端系列 第 3

30-3 使用Node.js開發一個類似Instagram的後台吧(架構篇)

由於想不太到要用什麼東西來當最終主題
只好先用做出類似Instagram功能的後台來展示吧!
這篇會先列出會使用到的工具與服務
並且簡單的分析架構

工具

什麼是PM2?
Node.js在執行的時候, 假如程式碼有出錯, 沒有特別寫 try-catch 的時候
程式就會整個停止運行, 如果是要寫後端, 程式碼停止後必須馬上再重新啟動
這時候PM2就是一個功能強大的管理工具囉

服務

  • AWS EC2/ GCP VM
  • AWS S3
  • Mongodb(使用mlab)
  • Docker

AWS EC2

在這一系列的文章, 我會使用AWS相關服務來介紹
原因只是因為相較於GCP, 我對AWS比較熟悉
要讓自己寫的後端服務可以給大家使用, 所以一定需要一台主機
但是自己去買一台太貴, 所以選用AWS EC2的雲端虛擬主機來建立服務囉
如果是新用戶, AWS第一年EC2的主機(t2.micro)的主機是免費的

AWS S3

存放圖片好用的服務!

MongoDB

資料庫的部分, 使用MongoDB
為何使用MongoDB呢? 因為MongoDB對於Node.js的相性非常好
基本上就是用Javascript就可以將資料儲存進去, 非常方便!
但是MongoDB並不是最好的選項, 但不多著墨在資料庫上
觀念大概都是相差不遠的!

Docker又是什麼呢?

篇幅太多, 請自行參考這裡
但是懶得看的話也沒關係, 會使用docker, 我覺得最直接的好處就是
開發環境與生產環境用的作業系統, Node.js的版本, 使用的套件等等
都會是一致的, 每次重新建立環境其實在複雜的系統中, 是蠻耗費時間的
所以身為開發人員, 我體會的好處就是我不需要花很多時間在重建環境
只要建立好 docker image, 環境那些都是在幾秒鐘產生完畢!
為甚麼要使用Docker

架構初思考

服務的結構大概可以從幾個功能去思考

  • 會員系統
    • 會員登入/ 登出
    • 個人頁新增資料/修改資料
    • 追蹤名單
    • 個人頁權限
      • 只允許好友 (private)
      • 所有人都可以看 (public)
  • 首頁推薦系統
    • 只單純做以時間排序
  • 文章系統
    • 新增, 刪除, 修改文章
    • 點 like
    • 留言
  • 追蹤系統
    • 追蹤你的人
    • 你追蹤的人
  • 推播通知
    • 使用 Firebase Cloud Messaging (FCM)
  • 聊天系統
    • 新訊息使用 Firebase Realtime database
    • MongoDB 撈出歷史訊息顯示
  • 前端顯示用的網頁
    • Vue.js

以上的都會在之後一個部分一個部分的做出來
最後再組裝起來!
明天會介紹 MongoDB, 並且實作出會員登入!
如果對於 MongoDB 有興趣的人, 去年有一位大大寫的蠻好的
https://ithelp.ithome.com.tw/articles/10188054
從中受益匪淺啊! 懶得看的人, 我會用比較淺顯的例子去講
但是如果想要專精, 還是得看一些比較複雜的東西
例如 MongoDB 的索引該怎麼建立
什麼又是 index-cover query
索引的建立順序有差異 諸如此類的
有許多人會覺得 MongoDB 不好, 沒錯!
的確很多場景用起來不太好, 但是 MongoDB也有他自己的優勢
所以沒有最好或最壞, 只有合適或不合適

感覺好像有點多, 如果有對於初學者來說更好的主題
也請歡迎留言給我, 可以隨時修改 <(_ _)>


上一篇
30-2 Node.js環境安裝, 基本語法與有趣應用
下一篇
30-4 Node.js開發後台之會員相關規劃
系列文
30天使用Node.js在AWS上開發後端6

2 則留言

0
逮丸逮丸
iT邦大師 1 級 ‧ 2017-12-07 08:09:05

PM2 的連結有問題。
有空改一下吧!

感謝提醒!

0
逮丸逮丸
iT邦大師 1 級 ‧ 2017-12-07 08:14:01

你所提到的firebase,
裡面有多種方式來驗證使用者所註冊的帳號,
一直搞不清楚,
其中的用簡訊驗證手機號碼的,
在台灣是可用的嗎?

這個功能除了大陸之外, 其他各國都可以使用
目前免費, 但好像快要收費了!

我要留言

立即登入留言