3月12日に、AWSのスタートアップ向けカンファレンス『AWS Startup Day Tokyo 2018』が開催されました。

「AWSってなに?誰かわかりやすく説明して!」という人はコチラから↓↓↓

WorkshipMAGAZINEでは数回に分けて、『AWS Startup Day Tokyo 2018』のイベントレポートを公開。

今回はエンジニアが知っておきたい、AWSの使い方をご紹介します。

AWSを利用しているスタートアップ企業が語る活用事例

イベントには、AWSを活用してサービスをグロースさせたスタートアップの技術者たちが登壇しました。成功事例や、やってみてつまづいた点などをお話しいただきました。

【scouty】アルゴリズムマネジメント

伊藤氏

scoutyは、人工知能が、インターネット上のオープンデータから情報を取得して、エンジニアの能力を自動分析し、最適な企業とマッチングさせるサービスです。scoutyを運営する同社から、リードエンジニアの伊藤 勝梧氏(@showwinが登壇しました。機械学習を使ったサービスを構築する過程で、さまざまな問題に直面してきたと話します。

ユーザーの評価基準を作るために、まずはQiitaなどに投稿されている記事を人力で評価し、アノテーションをつけました。ガイドラインを一度作って、大量のアノテーションをつけるために次のフェーズへ。すると次のような問題が起こったそう。

  1. クラウドソーシングを使ってアノテートしたら、評価基準を作ったにもかかわらず、評価者により評価がバラけた。
  2. その原因が「基準が曖昧だから」なのか「そもそも記事からスキルセットを評価できないから」なのかという議論が起こる。
  3. いいね!数だと 何が問題なの?という議論に発展。
  4. 本当に知りたいのは「上級レベルだけどいいねされていない記事」と「低級レベルだけどいいねされている記事」の検出だった、と判明。
  5. その課題が緊急でないとアルゴリズムマネージャが判断し、この機能開発は延期した。
  6. 上記の問題が起き、うまくビジネスに直結した機械学習を作れなかった。

伊藤氏は、反省点を次のように語ります。

  • 顧客の課題は何か?という部分がクリアになっていなかった。
  • 課題ではなくソリューション/好奇心から入ってしまった。
  • 実装者ドリブンでアルゴリズムの仕様を決めてはいけない。

現在のscoutyでは、顧客ニーズとアルゴリズムが一致しているかをアルゴリズムマネージャが判定して、OK/NGを出し評価するようになったそうです。

scoutyでは、AWSを以下の図のように組み込んでいます。Dockerコンテナをサポートする拡張性とパフォーマンスに優れたコンテナオーケストレーションサービスのAmazon ECS上でscrapyというpythonのボットを動かしています。

awsをいかに組み込んでいるか

 

【Voicy】CodeBuildでリリースを自動化

窪田氏

次に登壇したのは、VoicyのCTOを務める窪田 雄司氏(@yuji0316。Voicyという音声ブログを中心としたサービスを手がける同社は、プロダクトの成長とともに、いろいろな部分を自動化してきたと話します。今回はリリースの自動化についてお話しいただきました。

当初、リリースについて次のような問題を抱えていました。

  • Web、アプリ、スマートスピーカーと、展開しているデバイスが多様なのでリリース作業が多い。
  • リリースモジュールのビルドコマンドが複雑。

そんな問題を解決したのが、AWSの各サービスです。CodeBuildを使用してEBSに配置しています。

リリースの自動化

 

窪田氏がつまづいたのは、AWS Code BuildにGo1.8が入っていないことでした。

VoicyではGoを使っていた上に、パッケージ管理ツールとしてdepを使用していました。depを動かすにはGo1.8以上が必要だが、Code Build上で作成されるコンテナにはGo1.7しか入っていなかったそう。そこで、 buildspec.ymlで最初にGo1.8をインストールしてからビルドコマンドを叩くように変更しました。

 

【Speee】社内のいたるところでServerlessが動いている

森岡氏

メディア事業やコンサルティング事業を手がけるSpeeeのエンジニア・森岡 周平氏(@selmertsxは、サーバレスの魅力を聴衆に訴えました。Speeeには、新しい技術を社内ツールで試してみるという社風があり、AWSのLambdaはかなり積極的に使用しているとのこと。

例えば画像をリサイズするシステムには、API Gateway とAWS Lambdaを組み込みました。

画像のリサイズ

 

【エネチェンジ】AWSのアカウント運用

AWSのアカウントを事業単位で分けると話すのは、ガス会社のエネチェンジでチーフエンジニアを務める川西 智也氏。

コストをどう計上するかというテーマでお話しいただきました。事業部別にアカウントを分けると、明確にコストを把握できるというメリットがある一方、事業部をまたぐような作業をするときに、運用上の手間がかかるというデメリットもあります。

そこでエネチェンジは、全社でアカウントを統一。代わりに、コスト配分タグを使って事業部別コストを管理しています。同社は、コスト配分タグを自動で付与する仕組みを開発しました。EC2にタグがあれば、EBSなどにも自動でタグを付与します。

 

【freee】Kubernetesで生産性をあげる

dockerコンテナをデプロイするツールであるKubernetesをご存知でしょうか。「将来的にFaasの裏側はKubernetesになっていくでしょう」と絶賛するのは、freeeのエンジニアである九岡 佑氏(@mumoshu)。

Kubernetesは、自動デプロイ、スケーリング、アプリ・コンテナの運用自動化のために設計されたオープンソースのプラットフォームです。

「生産性が上がらない」「エンジニアが足りない」といったスタートアップのよくある課題を解決するのに適したツールだと九岡氏。一方、「Microservicesアーキテクチャ」や「リモートワーク」などがスタートアップにおける開発のトレンド入りしているとも指摘します。

これらを解決するためには、「コンテナ」を活用してスピードアップと効率化を図るべきだとのこと。

ESCのメリット

コンテナを動かす環境としては、AWSのECSが便利。九岡氏は、次のようなメリットをあげました。

  • 公式のAMIがある
  • マネージドサービスがある
  • 日本での採用事例の多さ
  • スコープが限られている

なぜKubernetesをおすすめするのか

Kubernetesは、コンテナの運用を助けてくれます。ほとんどのコンテナのユースケースはK8Sか周辺ツールでサポートされます。また、LambdaやECSよりも凡庸的であるのも魅力。そのぶん学習コストが高いのがデメリットではあります。

また、Kubernetesで使えるクラスタマネージドサービスの「EKS」がとても便利出そう。Kubernetesの「コントロールプレーン」をマネージしたり、AWS IAMやVPCとの統合をサポートしてくれるとか。

「Kubernetes on AWSを使うならEKSを使っておくべき」とのことです。

 

まとめ

WorkshipMAGAZINEでは、『AWS Startup Day Tokyo 2018』の模様をお届けしました。

AWSってなに?誰かわかりやすく説明して!という人はコチラから↓↓↓

 

SHARE

RELATED

  • お問い合わせ
  • お問い合わせ
  • お問い合わせ