hubedit.comにMarkdown Editorを設置してみた

会社の開発合宿で自身専用メモサービスhubedit.comにMarkdown Editorを設置してみました。

hubedit.com

今回の目的は2つです。

  1. Markdown Editorを設置して自身のhubeditライフを便利にする
  2. Serverless Frameworkでデプロイし、ドメインACMも設定して運用しているようなサービスで
    • 次期本番環境を構築して sls deploy できるようにする
    • 本番環境を次期検証環境に切り替えてみる

Markdown Editorの選定

Markdownの表記はそのまま表示されてstyleだけ変化があるものを探しました。

Markdownの表記が消えてしまうタイプのWISYWIGなEditorは多かったが表記がそのまま残るようなEditorは少なかったです。

探したものとしては

などですが、とりあえず導入して使い勝手を見たかったので、 最も導入しやすかった+スマホでも使えた SimpleMDE を設置してみました。

Serverless Frameworkで検証環境を作る

hubeditはServerless Frameworkでデプロイできるように構築されており、AWS上では1つのCloudFormationのスタックとして管理されています。

f:id:k1LoW:20170712231630p:plain

また、GitHubのアクセストークンを一時的に保存する場所としてS3を利用しています。

ドメイン割り当て(Route53)とSSL証明書ACM+CloudFront)はServerless Framework管理外で設定しています。

スタック切り分けによる検証環境を作るのは簡単

本番で稼働しているスタックと別のスタックで動かすために、stage の切り替えで対応しました。

具体的には sls deploy -s v2 などで検証用スタックが実現できます。

serverless.yml の servicehubedit だったとしたら v2-hubedit という新しいスタックが作成されます。

この状態で新機能を追加していって、実装を進めました。

そして最終的にAPI Gatewayのカスタムドメインの向き先を変更することで、検証環境を本番環境に昇格させました。

永続データをどうするか

今回の切り替えの方法では、検証環境はCFnのスタック単位で、API GatewayAWS LambdaやS3は全く別に新しく構築することになりました。

hubeditは永続データはGitHubリポジトリのみなので問題なく切り替えは可能でしたが、永続データがあったときはどうすればいいのでしょうか?

  1. 永続データの保存先はServerless Frameworkでは管理しない(hubeditがたまたまコレ)
    • 2つのCFnに分けて永続データは永続データ用CFnで保持する
  2. API GatewayのStageで切り替えることができればあるいは。。。
    • 1つのCFnスタックに2種類以上のAPIコレクションを持つことは可能?

ここらへんはまだ個人的ベストな方法は見つかっていません。 Serverless Frameworkで永続データの管理運用をどうするのが良いか、何か良いアイデアあるかた教えて下さい。

hubedit.comの今後

とりあえず、今のところ普通に使えているのであとはAPIリクエストに伴う読み込みの遅さをいい感じで解消していきたいです。