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

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

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

Architecture Challenge | 株式会社サイバーエージェント
Architecture Challengeは、架空のサービスの仕様書をもとに2~3人のチームでサービスのアーキテクチャを考え、その美しさや可用性、信頼性、保守性などを競っていただくイベントです。
Architecture Challenge | 株式会社サイバーエージェント

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

トップ

概要

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

お題 お題

評価基準 評価基準

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

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

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

作ったもの

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

ER図 ER図

アーキテクチャ図 アーキテクチャ図

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

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

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

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

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

p1ass/graphql-redis-realtime-chat
Realtime Chat Server using GraphQL Subscriptions and Redis PubSub - p1ass/graphql-redis-realtime-chat
p1ass/graphql-redis-realtime-chat

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

Qiita
# はじめに 今まで触ってみたいと思っていたGraphQLとRedisを使って、リアルタイムチャットサーバーを作ってみました。 ![wt4f2-5jcn0.gif](https://qiita-image-store.s3.amazo...
Qiita

おわりに

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

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

お弁当 お弁当

お弁当 お弁当その2

お肉 お肉