サーバーワークスでやってるAWSを活用したサーバーレス開発の話

記事タイトルとURLをコピーする

はじめに

re:Invent 2023が開催されている最中、大阪でre:Ikenventを開催しようとして忘れてた、
アプリケーションサービス部の森です。

2023年の締めということで、サーバーワークスメンバでAdvent Calendarでいっぱいアウトプットしよう企画を立ち上げて、 一番手として公開させてもらいます。

今回は、わたしが所属しているサーバーワークス アプリケーションサービス部でやってるサーバーレス開発についてお話させてもらいます。

記事を見ていただいて、なにか刺さるものがあれば、幸いです。

アプリケーションサービス部の設立

2020年までは、AWS上のインフラ構築を中心とした開発をメインで案件従事をしておりましたが、
アプリケーションを作ることでよりお客様にAWSを活用していただけるだろうということで、
部署が設立され、 AWS + アプリケーション開発 を遂行していくことになりました。

やることとしては AWS + アプリケーション開発することで 世界を もっと 働きやすく をスローガンにしています。

開発するためのレギュレーション

プログラムを開発していく上でいくつかレギュレーションを作りました。
あまり縛りすぎず、そしていつでも変更可能な状態としました。
レギュレーションは以下の4つ。

1.開発言語は Python
2.開発は サーバーレス のみ
3.構成管理は Serverless Framework
4.UnitTestは pytest

これだけです。

レギュレーションを設定した理由は、設立当初メンバ数に限りもあったため、
あまり多くの言語を許容してしまうと案件によってパフォーマンスがブレてしまうことやメンテナンス性が下がること、
サーバーレスにすることでメンテナンス性、メンテナンスコストがEC2に比べて低いこと、
構成管理を用いることで、いつでもCI/CDができること、
UnitTestを書くことで、実装タイミング以降ずっとテストによる品質確保ができることです。

「まずはやってみよう。そして、改善していこう。」が一番大きいところではあります。

そうこうしていると!

レギュレーションはゆるい感じではありますが、そうこうしているうちにメンバが色々考え出してくれました。
これで、開発効率がかなりアップしました。
それを3つ紹介します。

ボイラープレート

Serverless Framworkをベースに、ボイラープレートを作成。
2年で約30回のアップデートが案件遂行と並行して実施されました。
これでフォルダ構成やテンプレートファイル、テストや静的解析などのCIとCD関連の開発ベースラインが出来上がり、
これが一番開発効率が上がりました。

オンボーディング課題

案件を遂行していくうちに得ることができたナレッジから研修課題を作成。
新たに部署配属された新卒・中途入社の方々へのオンボーディング課題として利用。
実際の案件に近い形の課題であるため、オンボーディング後にすぐ案件がイメージできる状態になりました。
アプリケーションサービス部では1ヶ月オンボーディングすることが決まっているので、
その1ヶ月でしっかりカルチャーから模擬案件レベルまでを学ぶことができるようになりました。

情報共有Wiki

こちらも案件で得たナレッジを常に共有できるようにWikiを作成して、情報を蓄積。
利用可能な情報を掲載しておき、他案件へ再利用し、作業の効率化が履かれました。
この情報はオンボーディングでも利用し、最初期からナレッジを共有。

アプリケーションサービス部での開発の取り組み

さて、開発をやっていく上でどうやっていくかについてです。
我々の開発のやり方は、「小さく作って大きくする」です。
小さい機能を徐々に作っていき、大きくしてアプリケーションとして作り出すやり方になります。

これまでやり方だとタイヤ、シャーシ、ボディ、窓という順で作成していました。
この場合だと、大きく作りすぎていたため、問題が発生した時に大きな手戻りとなって、
開発計画に大きな影響を与えていました。


上図がわかりやすいのですが、我々は、最初スケートボードで小さく動くものを作り、動くことが確認できたら、
キックボード、自転車、バイク、車と小さく作っていくことで途中で問題が発生しても戻る範囲を最小限にすることができます。


詳しい流れとしては、まずは要件を整理します。
そして、整理した要件をベースに優先度付を行い、優先度の高いものから順にPhaseごとにアジャイル開発でモノ作りを行っています。
それにより、小さく作って大きくして、システムとして確実に作っていくようにしています。

さいごに

今回は、サーバーワークス の アプリケーションサービス部で行っているサーバーレス開発についてちょろっと書いてみました。
いきなりこのようなやり方をするにはハードルが高いかもしれませんが、このやり方も少しずつ導入していき、大きくしていくといいのかもしれません。
実際に開発していくときにお役に立てば幸いです。

番外編

実はこの話は、 Serverless DAYS Tokyo 2023 で話した内容です。
スライドは こちら を参照下さい。