2日目:技術選定をする。
技術選定をする。
さて、ブログのシステムを作る上でまず行うべきが技術選定。 使用するプログラミング言語、フレームワークに加えてインフラの先手にも必要。
そこそこ使い慣れてる技術で、ナウい(モダンな)もの、使っていて楽しい物、自分の勉強になる物。という基準で選ぼうと思う。 加えて、趣味なのでコストのかからない安い物!!(←重要w)
いろいろ考え結果、以下のようにしようかと思う。
フロントエンド
- 言語: TypeScript
- フレームワーク: Nuxt.js / Vue.js / Vuetify
バックエンド
インフラ
まずフロントエンドNuxt.jsでを使う。
- SSR(サーバサイドレンダリング)もできるためSNS共有時にはOGP画像にも対応できる。
- 仕事でも趣味でもVue.js使ってるから慣れてる。
- 個人的に型のあるTypeScriptが好き。C#っぽい書き方ができるし。
- デザインの実装はできる限り簡略化したいのでマテリアルデザインの実装であるVuetifyを使う。(仕事でも使って慣れてるしw)
フロントエンドのインフラはAWS Lambdaを採用する。理由は安いそして実は使い慣れていたりするから。
以前僕がQiitaに書いたこちらの記事Nuxt.jsをAWS Lambda上で動かす.サーバレス・サーバサイドレンダリングと同じ方法で行う。このときはJavaScriptだったけどおそらくTypeScriptでも行けるだろうと。
ちなみに、ほとんど更新してないけどこのサイトもNuxt.jsをLamba上で動かして実現している。
バックエンドはGraphQLのAPIを用いる。言語はGo言語。
理由はGraphQLできちんとシステムを完結させてみたいから。(要するに自分のための勉強w) 以前、QiitaにNode.jsでGraphQL APIを実装という記事を書いたことはある。 このとき可能性は感じたので今回も採用したい。Go言語にしたのは、非公開の別趣味プロジェクトで使ってみて意外と便利だったからと最近いつもGo言語を書いていて慣れているから。
あと、フロントエンドとバックエンドで同じ言語だと飽きそうだから。
一応だけどこんな言語選定するのはあくまでも趣味だから。業務だったらこんな理由で言語選定はしない!(..;)
データベースはMySQLだが、AWSのRDSマネージドサービスではなく外部のMySQLを用いる。理由はAWSのそれは高いからw AWSのMySQLサービスであるAuroraDB等をはじめ冗長構成やサービスレベルが担保されていて信頼性として安心安全なのですが今回は”趣味なので”そこに比重を行いい。
たまたまTwitter上で教えて頂いたkagoyaというサービスの導入を検討してみる。多分実際の契約と導入は先になるだろうけどw 月額440円ってEC2インスタンスより安いしね。
まだ調査きちんとできてないけど、趣味用には凄く良さそうなDB教えてもらった。
— よこやま (@hiroyky) 2020年5月17日
AWSのDBは冗長構成とかすごくしっかりしててお仕事の本番環境には良いんだけど、趣味で使うにはオーバースペックでお値段もなかなかなんですよね。 https://t.co/seWiWiihq8
(AWSも冗長性なしの格安データベースほしいです。)