開発のきっかけ/この記事の目的
コロナ渦前の出来事で、SNSで知り合った知人とオフ会を通じて親しくなり、
「こんなんやってるんだけど、世の中のサービスが使いづらくって。
あんなことやこんなことに配慮できるサービスが作れたらいんだけどな。
できる? オナシャス」
という、飲み会でアルコールもほどよく入った状態から、
「できますとも ちょうど興味があったので。やりましょう
」
という、エンジニアが頼られるありがちな話からスタートして、
隔週程度のskype会議、chatworkでのコミュニケーションを経て、
半年後にβ版としてリリースしました。
採用したサービス・技術スタック、ポイントを整理する目的で筆を執ることにしました。
採用したサービス/技術スタック
-
方向性
- 企画する人が使い、開発する人が使う
- 利用者で運用費を負担(割り勘)するコンセプトで企画費、開発費などは個別に徴収しない
- 小規模のため運用費は固定がいい(という全体の意見)
- 細く長く使いたい
- 開発者1名、初めて全工程に取り組むのでPaaSに頼らずスクラッチで組み上げる
-
サービス/技術スタック
-
詳細を以下の表に示します。
| 観点 | 内容 | |:----------:|:-----------:| | 実行環境 | [さくらVPS 2G](https://vps.sakura.ad.jp/) |
| ドメイン管理 | さくらのドメイン|
| SSL証明書 | Let's Encrypt |
|OS|Ubuntu 18.04 |
|Webサーバ| Nginx 1.14|
|Webアプリフレームワーク | Django 1.11 |
|データベース| MongoDB 3.4 |
|ユーザ認証 | Keycloak 3.4.4 |
ポイント
- Ubuntu
- iptables, ufwによるフィルタ
- Nginx
- letsencryptの設定
- 内部Webアプリケーション、keycloackへのlocationの設定
- 404,403等のerror_pageの設定
- Keycloak
- ログイン画面のテンプレートを修正
- ユーザの新規追加/退会時の削除、ロールの定義によってユーザごとに許可する機能をカスタマイズ
- (ユーザからのパスワード変更などはこのサービスに任せられる)
- Django&Webアプリ
- Keycloak連携のためのパッケージ
- bossoidc.backendからget_roles(token)してロール別のviewを制御
- デザインはthemeforest.netなどで小規模ライセンスを数十ドルで購入して簡素に対応
まとめ
プライベートの開発捻出時間は40h/月がいいところで(家庭の事情など各位の状況に依存しますねー)、
OSレイヤーから1人で運用するのは、結構やりがいがありました。
でも、アタックのログが気になる・・・。
次は、Ubuntu/Nginx/Keycloak/mongodbあたりをクラウドのPaaSに任せて、
アプリケーション部分に集中するような開発を実践していきたいと思います。
費用徴収もキャッシュレスで集金したりリモートで完結することを意識しているのですが、
最初っから割り勘で契約できるといいのですけれどね。