近未来都市の幽寂

Webポータル事業の企画・構想から公開・運用まで。

102_技術要件

やったこと

使用技術の選定

プログラム言語 … Ruby
フレームワーク … Ruby on Rails
CSSテンプレート … Bootstrap
CIサービス … Shippable
資源管理 … Git + Bitbucket
課題管理 … TrelloまたはRedmine

サーバOS … CoreOS CentOS7
仮想化技術 … Vagrant + Docker
Webサーバ … NGINX
DBサーバ … PostgreSQL

検証環境 … VirtualBox
本番環境 … AWS(EC2)

とりあえず、ざっと選定してみました。
Ruby on Railsは以前から勉強したかったので、もはや絶対条件。
Githubのプライベートリポジトリは有料らしいので、無料で出来るBitbucketを使用しようと思ってます。
CIはJenkinsを勉強のために使おうと思ってたんですが、そのためにCIサーバを立てるのも面倒くさいので、ShippableというCIサービスを利用する予定です。
Trello・Redmineは正直使うかどうか、今のところは超絶怪しい…面倒くさくてやめちゃうかも。→やめましたw

WebサーバはApacheではなく、高速かつ軽量なNGINX。
DBサーバは商用利用が無償のPostgreSQLMYSQLはライセンス体系がややこしく、商用利用の場合はたぶんライセンス料が必要)。

本番環境として、レンタルサーバーVPSという選択肢はありませんでした(もう使ったことがあるので)。
HerokuにするかAWSにするか正直迷いました。というか今でも迷ってます。
勉強のためにはAWSがいいんでしょうけど、全ては料金シミュレーション次第ですな…

2017/6/28
Dockerの使用を取り止め(Railsをコンテナ化する旨みを感じなかったので)。
それに伴い、OSもCoreOSからCentOS7へ変更。
なお、技術要件は今後も予告なく変更する可能性があります。

非機能要件の見直し

以上を踏まえ、前回のエントリーの非機能要件について見直しを行いました。


機能性(合目的性やセキュリティなど):
セキュリティはAWSのS3まかせ。
せめてSSL証明書は購入する予定。

信頼性(高負荷に対するタフさ):
AWSでスケールアップするなりして、
適当にチューニングする。

使用性(使いやすさ):
可能な限りシンプルなデザインに。
もちろんレスポンシブデザインで。

効率性(スピード、ムダの無さ):
開発速度はRailsまかせ。
処理速度はチューニング次第かと。

保守性(修正・機能拡張のしやすさ):
Railsの力を信じる。
後は内部設計で配慮するか。

移植性(別環境への移しやすさ):
VagrantとDockerがあれば移植は容易かと。

障害抑制性(バグりにくさ):
Gitの資源管理をしっかりやれば…
これは実装する自分の実力次第かな…

効果性(システムの費用対効果):
収支を概算する必要があるが、
まだやってません。

運用性(運用の容易さ):
Shippable使ったことないから分らんが、
本番環境の管理は確かに課題になってくる気がする。

技術要件(実現方式や開発方式など):
上記の通り。


はい。

時間の無駄でした。

わかったこと

知らないことが多すぎる

非機能要件はさておき、選定した技術についてはほとんど全てが未知の世界。
正直、書きながら「これ本当に全部やるのか…」と感じていました。
しかし、今回の目的は趣味と勉強のためなので、やるっきゃない。
本を読んだり、プロトタイプを作ってポチポチ動かしてみたり、少しづつできる技術の幅を増やしていこうと思います。

最終的に必要なサーバは3つ?

検証環境はローカルの仮想環境で賄えるので常時稼働用のサーバは必要なく、本番環境のサーバが一つあれば事足りそうな気がします。
しかし、法人としてサービスを展開していくのであれば、

  1. 本番環境用のサーバ
  2. 社内管理用のサーバ
  3. 会社HP用のサーバ

という、最低でも3つのサーバが必要なのではないか、と朧げながら思案中。
まぁ、2と3は一つのサーバにまとめることが出来なくもないですが。

つぎにやること