お仕事事例 AFLS

f:id:hokkai7go:20210615183056p:plain 以下の転職エントリで書いていましたが、新しい会社での公開事例ができたので技術力アピール等の意味を込めてブログに書くことにしました。 blog.hokkai7go.jp

https://pr.i-style.jp/press_20210609.pdf

上記のプレスリリース(PDF直リンクです)をご一読ください。まだ会社のWebページは無いのですが、一緒にサービスを作り上げた会社からプレスリリースが出ましたので、うちの会社でもプレスリリースを出しました。(このためにプレスリリース配信用静的Webサイトの構築をしました。)

龍馬伝という大河ドラマを見ていた方なら、いちむじんというギターデュオをやっていた山下俊輔さんというギタリストをご存知かもしれません。 山下さんが株式会社ZEYO2010という会社を立ち上げました。株式会社ZEYO2010でAFLSという高音質なライブ配信基盤を作るにあたり、株式会社アピリッツと共同で設計開発を行いました。

AFLSについて

afls.zeyo2010.co.jp サービス公開前や、公開後に何度か利用しました。高音質を謳っているだけあって大変よい体験でした。サービス公開前に山下さんのライブを聴いていましたが、数ヶ月の苦労もあってかギターの音が大変エモく聞こえました。興味あるライブがあるようでしたら使ってみてください。

設計開発

AFLSの設計開発のなかでも、自分はWebアプリケーションのインフラまわりの設計構築運用を担当しています。ほんの少しコードを書くこともしました。WebアプリケーションからAWSのMedia系サービスの操作をするコードのプロトタイプを作ったのですが、すでにきれいに書き直してもらえています。 この他にも同僚というか弊社社長はコーデック職人業をしていて、今ではコーデックの聞き分けができるらしいです。 ライブ配信のためのAWSサービスやAWS全般についてクラスメソッド株式会社にサポートいただきました。

AWSでの構築について、Webアプリケーションのインフラ構築は基本的にTerraformを利用しました。TerraformではVPC、EKSのクラスタ、CodeBuildの設定あたりを管理しています。何度も変更がありえそうなところは基本的にTerraform管理下にあります。EKSの設定は、terraform-provider-eksctlを利用しました。

github.com

CI/CDについては、CodeBuildとCode Pipelineを使っています。CodeBuildのbuildspec.yamlをTerraform管理下に置けることがわかり大変便利に使っています。dataとしてtemplateファイルを追加してあげている形です。この方式であれば、AWSマネジメントコンソール上でbuildspec.yamlを書くのと同じように、リポジトリにそのままbuildspec.yamlを編集できます。Terraformの中にbuildspec.yamlの内容を埋め込みたくなかったので便利ということですね。

data "template_file" "buildspec" {
  template = file("buildspec.yaml")
  vars = {
    aws_default_region = var.region
    aws_account_id     = var.aws_account_id
    image_tag          = "xxxxx"
    image_repo_name    = "xxxx/xxxx"
  }
}

コンポーネントのDockerfileが含まれるリポジトリにgit pushがあるとDocker Imageのビルドが走り、その後デプロイまでが行われるようになっています。ビルドやデプロイに関する環境変数の管理について開発者と自分の認識を合わせるのがなかなか大変だったという苦労話があります。CI/CDが整ってから安心感がとても増したことを覚えています。初期段階からCI/CDを用意できなかったのは悔やんでいるところです。

さいごに

経営コンサル、ITコンサルを主業としているので、このような構築案件は珍しいのですが、これまでのSREとしての経験を活かしつつ、音楽関係のお仕事に携わることができてうれしく思いました。関係者のみなさまお疲れさまでした。大変お世話になりました。また何かでご一緒できるとうれしいです。