新春、2020年の振り返りフルコース~最新版技術スタックを添えて~
アダコテックの柿崎です。あけましておめでとうございます。新年はじめての投稿は、2020年を過去の投稿を交えながら振り返り、皆様と共有できたらと思います。1年間を4半期に区切って、お話させていただきます。
1月~3月
・クラウド上でなんとか機械学習を動く形にもっていく
・採用広報本格始動
2020年のはじめはなんとかクラウド上にアダコテックのソフトウェアを動かし切ることがミッションとなりました。はじめはひとまずEC2上に機械学習用インスタンスを立てて、アプリケーション側のFlaskサーバと連携をはじめましたが、画像を10枚くらい一括アップロードするとDBが壊れてしまったり、10分くらい画面を操作するとサーバ間のセッションが切れて画面を進めることができなくなったりと散々な状況でした。それでもなんとか3月末には一通りの学習機能をデモとして実行できるまでには持っていくことができました。
優秀なメンバーを集めるため、WantedlyやNoteの記事を積極的に投稿してアダコテックの技術や組織をアピールする活動を活発化させています。
4月~6月
・コロナ禍でリモートワーク
・リモートでオフサイトミーティング開催
・学習用インスタンスのOSをWindowsからLinuxへ移行
・パラメータ自動最適のソフトを.NETからgo言語ベースに移行
・研究開発クラウド立ち上げ
4月はコロナウィルスの流行によって緊急事態宣言が出される事態になりました。アダコテックは一足先に3月からリモートワークに入ります。四半期に一度のオフサイトミーティングも初めてのリモート開催となり、オフサイトとリモートの境目がよくわからなくなりました笑
この時期は主にクラウドサービスの性能改善や研究開発のためのクラウド基盤の整備に努めました。大きな改修では従来Windowsでしか動かなかったアダコテックのソフトウェアをLinuxでも動作可能にしたところでしょうか。これによりDockerコンテナ、ひいてはECSのクラスタ上で動作が可能になったため、飛躍的に保守性やスケーラビリティを高めることができました。また、パラメータ自動最適プログラムを改修し、20~40%性能を向上させました。
7月~9月
・オフィスが御茶ノ水に移転
・井上さんジョイン
・フロントエンドをVueからReactへリニューアル
・開発の遅延が目立ち始め、開発のてこ入れを始める
緊急事態宣言が解除され、アダコテックとしても御茶ノ水にオフィスが移転し新しい職場環境がスタートしました。時を同じくしてアダコテックに井上がジョインし、ソフトウェアだけでなく、撮影設備も含めた提案ができるようになりました。
一方で、クラウドサービスではフロントエンド、バックエンドを改修して、UIも大幅に見直しましたが、結合や検証がうまく回らず遅れが顕著になりました。
10月~12月
・開発環境を整える
・仕様書をつくる
・デプロイ、CIフローを標準化する
・検証を回す
10月以降は開発を大幅にてこ入れして、なんとか年内にプロダクトを仕上げられるよう尽くしました。まず手を付けたことは開発環境を整えることでした。これまであまり開発環境に関してあまり関与できておらず、単体で検証されないままデプロイされてしまったり、不具合の調査においてはエラーの内容も発生箇所もわからなかったりと非常に効率の悪い開発スタイルになっていました。そこでシステムがDockerベースでできていることを生かして、ローカルPCでクラスタを立ち上げてフロントエンドとバックエンド、学習サーバを連携して開発検証できる環境を整備しました。
また、どこまで開発が完了しているのか、どういった動作が正しいのかが明確でなかったため、『なんとなく進んでるけどできたのかよくわからない』状態が続いてしまいました。また、企画側と開発側の齟齬も多く発生し、仕様が詰まらないままで時が過ぎるといった状況にもなりました。状況を打開するため、年末までに開発すべき内容を仕様書にまとめる作業を実施しました。
個人的にはAWSさんに取材いただき、私の設計したインフラが褒められたことはとてもうれしかったです。
年間を通じたまとめ
次は年間を通して、できたこととうまくいかなかったことをまとめました。技術的面でアダコテックの学習基盤をクラウド上で運用を可能にして、最新のフレームワークをフルに活用し、成果と知見の両面で充実した1年でした。
一方で、開発組織面や開発スタイルでは非常に手戻りやコミュニケーションミスが大きく開発終盤につけが回る展開になり課題の残る1年となりました。
できたこと、やってよかったこと
・学習基盤をAWSに調え、製品化に耐えうるクオリティにリプレースできたこと
・自らフロントエンドの開発も手がけて、新世代のフレームワーク(Vue、React)を理解できるようになったこと
・デプロイ、CIフローを標準化できてミスが減らせた。terraformとGitHub Actionsの知識が最新化できた
うまくいかなかったこと
・開発の属人化が大きく持続可能な開発組織にならなかった
・仕様検討からリリースまでのサイクルがめちゃくちゃ遅かった
技術スタック2021年度版
最後に技術スタックの最新版を添えて終わります。
前回記事からの差分を説明させていただきますと
まず、フロントエンドのフレームワークはReact&Typescriptに変わりました(一部社内ツールでVueのコードは存在します)。また機械学習のパラメータ分散最適でGo言語を採用しました。
インフラではプロビジョニングツールとしてterraformを採用しました。また、認証認可基盤はAuth0を採用しました。
CI/CDはメインでGithub Actionsを利用しています。AWS環境へのビルド、デプロイで必要に応じてCodeBuildやCodeDeployを利用しています。
エラーやパフォーマンスの分析はSENTRYを採用しました。非常にコストパフォーマンスがよく、各言語のサポートに優れているため、開発中盤から非常に活躍しています。
業務ツールでは、コロナ禍でリモートのミーティングが増える中でZoomを使う場面が増えました。また、メンバー増加に伴い、プロジェクト管理にZenHubを使い始めました。
以上となります。新年早々長文の投稿となってしまいましたが、今年もどうぞよろしくお願いします!
この記事が気に入ったらサポートをしてみませんか?