1人前のエンジニアを目指して

プログラミングをやっていく上で得た知見を共有していきます。

Cyber Agentのインターン「Architecture Challenge」に参加してきた

f:id:plus_kyoto:20190322222914j:plain

はじめに

こんにちは、ぷらす(@plus_kyoto)です。

この度、Cyber Agentさんが開催された「Architecture Challenge」というイベントに参加させていただきました!

www.cyberagent.co.jp

個人開発をしていると、しっかりと考えることのないアーキテクチャについて考えることができる2日間となりました。

概要

今回のインターンのテーマは「架空のサービスのチャット機能部分のアーキテクチャを考える」というものでした。

f:id:plus_kyoto:20190215173807p:plain
お題

f:id:plus_kyoto:20190215174244p:plain
評価基準

他にもめっちゃ細かい仕様書が渡されたのですが、ここで全部紹介するのはしんどいので省略します。

簡単なチャットサーバーは組んだことがあったのですが、スケールできる構成を考えたことがなかったので、どう構成するかかなり悩みました。

また、今回はコードを一切書かないイベントでした。スケールできる構成を考えないといけないにも関わらず、その計測ができないので、ネットに転がっている情報を元に考える必要がありました。

作ったもの

今回は成果物として、ER図とアーキテクチャ図を作りました。

f:id:plus_kyoto:20190217124908p:plain
ER図

f:id:plus_kyoto:20190217124826j:plain
アーキテクチャ

自分は主にアーキテクチャの方を担当したのですが、今思うと怪しいところが多かったなと反省しています。

  • gRPCのロードバランスの難しさ
  • L7LBとL4LBの違い

このあたりは、フワッとした知識しか持っていなかったので、かなり適当になってしまいました。

しかし、同時に多くのことを学ぶことができました。 特に、Redisは使ったことがなく、ほとんど知識がなかったのですが、しっかり調査することができました。RedisにPubSub機能があると知れたのは良かったです。

GraphQL SubscriptionsとRedis PubSubを使ったリアルタイムチャットサーバー

インターン中は実際にコードを書くことが出来なかったので、後日GraphQL SubscriptionsRedis PubSubを使ったリアルタイムチャットサーバーを作ってみました。

github.com

解説記事をQiitaに書いてのでよかったら読んでみてください。

qiita.com

おわりに

インターンが始まる前はどうなるかなと思っていたのですが、終わってみると参加してよかったという気持ちになりました。 これからも強いエンジニア目指して頑張っていきます!

最後までご覧いただき、ありがとうございました。

f:id:plus_kyoto:20190322225333j:plain
お弁当

f:id:plus_kyoto:20190322225303j:plain
お弁当 その2

f:id:plus_kyoto:20190322225236j:plain
お肉