_5_技術的投資編

Startup CTOとして2019年に取り組んだこと【技術的投資編】

Ionic 3からIonic 4への移行

スクリーンショット 2019-12-23 21.00.36

2019年の頭にIonic 4がリリースされました🎉🎉

Ionic 3までは独自のスタック型のルーターが提供されていましたが、Ionic 4ではAngularのスタンダードであるAngular Routerが統合されました。

Ionic 3での開発体制に不満はありませんでしたが、フレームワークがバージョンアップしたことにより、インターネット上の情報がどんどん最新版のものに入れ替わっていくことや、フレームワーク自体の性能が上がっていくことを見越して早めにアップデートすることにしました。

ビジネスロジックは基本的に変更せず移行することができましたが、やはりルーティングに関する部分はほぼ書き直しとなりました。

Ionic 3で次のページにパラメタを渡して遷移していたところが、URL経由でIDしか渡さないようにしたため、次のページでもバックエンドと通信して情報を手に入れる処理を追加する作業も行いました。

各画面にURLが割り振られたことで、画面遷移の実装がとてもシンプルになったり、利用状況の収集がWebのようにやれるようになったりしました。

CordovaからCapacitorへの移行

スクリーンショット 2019-12-23 21.01.22

HTML / CSS / JSで書かれたWebアプリケーションをiOS / Androidアプリ化するためのフレームワークとしてCordovaを使っていましたが、これまた2019年に正式リリースされたCapacitorに変更しました。

Capacitorでは、Cordova環境ではやりづらかったプラグインのGit管理が一番魅力的に感じています。

ドキュメントも豊富で、今の所困ったことはありません。

バックエンドをRuby on RailsからAWSマネージドサービスを組み合わせたサーバーレスに移行

これまではWebサーバーにAmazon EC2、データベースサーバーにAmazon RDSを使った一般的なWebアプリケーションのアーキテクチャーでRuby on Railsを動かしていました。

しかし、この体制だと次のような課題がありました。

・ユーザー数が増えたときに各サーバーが耐えられない可能性がある
(当時オートスケーリングの設定はしていなかった)
・どのような使われ方をするか分からず、必要以上のリソースを確保し続けることによってコストパフォーマンスが悪くなる
・インフラの設定がコード管理されておらず、サーバーの設定が秘伝のタレ化している
・ステージング環境が常時起動している必要があり、無駄なコストがかかっている

どの課題についても、Docker化したり、オートスケーリングを組んだりすることで対応可能な課題ではあります。

しかし、それ自体の設計もかなり大変で、かつノウハウが求められる作業に思えました。

そんなときに出会ったサーバーレスはまさにイメージ通りのアーキテクチャーでした。

Ruby on RailsからAWSサーバーレスに移行するため、次のようなことを学びつつ一気に開発を進めていきました。

・認証機能の実現方法
・APIの構築方法
・データベースの構築方法
・CRONの実装方法
・インフラのコード管理方法
・モニタリング方法
・CI/CDパイプラインの構築方法

もちろん初めて触れる技術ばかりだったので、ちょっとしたことで数時間悩み続けることは多々ありました。

バックエンドのユニットテスト / E2Eテストの整備

バックエンドをAWSサーバーレスに置き換えた際に、APIであるAWS AppSyncのE2Eテストも書き始めました。

Railsではフロントエンドもバックエンドのプロジェクトと密結合で開発することが多いですが、AWSサーバーレスにすると基本バックエンドはAPIの提供のみが役割になります。

テストの設計がやりやすくなると感じたので、このタイミングでしっかりテストを書いていくことにしました。

テストフレームワークにはMocha / Chaiを使いました(今は紆余曲折あってJESTに落ち着きました)。

テストも正直あまり書いたことがなく、RSpecでちょっとしたモデルのユニットテストをした程度の知識しかありませんでした。

テストの設計方針やアサーションメソッド等を学びつつ、「ここは押さえておきたいな」と思った箇所を中心にユニットテスト / E2Eテストを書きました。

最終的なテスト体制の構築や実装は他のエンジニアに一任して進めて、現時点では100件ほどのテストがCIで自動的に回るような体制まで持ってくることができました。

挑戦しかしていない2019年でした

AWSサーバーレスバックエンドを構築してある程度経った今思うことは、よく挑戦したなぁということです。

若手のスタートアップ等で、技術力はまだこれから伸ばしていくフェーズだというチームにこの構成はおすすめはしないかもしれません。

Railsをやっていた頃に比べて圧倒的に情報が少なく、かつAWSに関する深い知識が必要になってくるアーキテクチャーだと思います。

必死の思いで確保したスケーラビリティを活かし切れるよう、どんどんフロントエンドのアプリケーションを開発して行けたらと思います。

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

4
Engineering&Design/組織づくり/自分の中のモヤモヤを強みに変えていくためにアウトプットします。

この記事が入っているマガジン

CTO

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。