Slide 1

Slide 1 text

「北欧、暮らしの道具店」 矢田和沙 2023.11.07 Women developers summit 2023 を支えるインフラ技術

Slide 2

Slide 2 text

矢田和沙(ヤタナギサ) 自己紹介 株式会社クラシコム システムプラットフォーム部 テクノロジーグループ エンジニア 2017年 ヤフー株式会社(現LINEヤフー株式会社)に 新卒で入社 2020年7月 株式会社クラシコムに中途入社 フロントエンド・バックエンド・インフラと「北欧、 暮らしの道具店」まわりの開発をしています ほぼ毎日猫に邪魔をされながら仕事中です 02 © Kurashicom Inc.

Slide 3

Slide 3 text

03 サービス展開 「フィットする暮らし、つくろう。」をミッションに、 D2C 世界中のセレクト商品とオリジナル開発商品を販売 • 定価販売率95%超える ブランドソリューション ナショナルブランドのマーケティングを支援 • お取り組みは200ブランド以上 コンテンツパブリッシャー 多様なコンテンツでお客さまとの繋がりを強める • YouTube動画再生数は1億回を突破 • 商品開発からプロモーションまで、ブランディ ングの全フェーズをサポートするメニュー提供 • ポッドキャストやドラマ、プレイリストなど  様々なコンテンツを配信 • オリジナルアパレルが5年で8.5倍売上 EC運営に加え、BtoBサービス展開や多岐に渡るコンテンツ配信など、 ユニークな事業展開を行っています。 © Kurashicom Inc. 北欧、暮らしの道具店を運営しています。

Slide 4

Slide 4 text

04 事業の特徴 独自の世界観(ライフカルチャー)を強みに お客さまとつながるプラットフォームを目指しています。 北欧、暮らしの道具店のエンゲージメントチャネルのアカウント数は680万を 超えます。※2023年7月現在 ポッドキャスト 再生 累計 1500 万 LINE 登録 88 万 YouTube 登録 57 万 YouTube 再生回数 再生 累計 1 億 Instagram フォロワー 140 万 公式アプリ DL 300 万 事業展開の土台にあるのは、独自のライフカルチャーです。 世界観を軸にしたお客さまとの信頼構築のユニークさが評価され、2021年度 ポーター賞を受賞。 © Kurashicom Inc.

Slide 5

Slide 5 text

05 成長の歩み 17期連続で増収増益を達成。 公式アプリ経由の売上比率が65%に成長。(2023年6月時点) 公式アプリは3年で300万ダウンロード突破 公式アプリ経由の売上比率の推移 売上高・経常利益の推移 © Kurashicom Inc.

Slide 6

Slide 6 text

6 テクノロジーGの紹介 働き方の特徴 • 残業を当たり前にしない働き方 全社員の平均残業時間は月に合計3.7H(2023年7月現在) • リモートメイン、月2回のオフィスデー • 年2回 リアル全社会議(オンラインは月2回) チームメンバー 開発合宿 2チーム体制 • ストアチーム:アプリ・Webでのお買い物やコンテンツ体験など 主にお客さまが利用するサービスの開発・運営を担当 • ロジチーム:受発注や物流・経理など、主にスタッフの業務を可 能にするサービスの開発・運用を担当 • SRE:2チーム横断で、インフラ・SRE領域を担当 © Kurashicom Inc.

Slide 7

Slide 7 text

07 会社概要 社員数 2023年7月に実施した全体会議 2022年8月上場 87名 沿革 2006年9月 2007年9月 2010年11月 2013年6月 2015年6月 2016年4月 2019年11月 2020年4月 2022年8月 2023年6月  クラシコム創業 北欧、暮らしの道具店 創業 独自のバイイングシステム稼働開始 初のエンジニア入社。システム開発自社内製化へ オリジナルブランド「KURASHI&Trips PUBLISHING」誕生 ECシステムをASPから自社開発へ切り替え 初スマホアプリ・iOSアプリ公開 Androidアプリ公開 東京証券取引所グロース市場へ新規上場(証券コード:7110) オリジナルスマホアプリ300万DL突破  (2023年7月末) エンジニア:7名 © Kurashicom Inc.

Slide 8

Slide 8 text

アジェンダ 1. クラシコムでのインフラの遷移 旧構造からどのように変更してきたか どのような点がよくなったか 2. 初めてのインフラ 転職してからのインフラ開発について 3. TV放映対策 カンブリア宮殿・THE TIME,に取り上げていただいた際にサーバーが落ちなかった対応方法について 08 © Kurashicom Inc.

Slide 9

Slide 9 text

クラシコムの インフラの遷移

Slide 10

Slide 10 text

以前のインフラ構成 ● マネジメントコンソールから変更 ● ペアで反映作業 ● アプリケーションが分かれているため複数の変更 010 © Kurashicom Inc.

Slide 11

Slide 11 text

現在の構成 ● 複数のアプリケーションが統合された状態 ● AWSのリソースはTerraformのソースコードで管理 ○ 反映はペア作業 Terraformの コードを変更 Pull Request Approve Approve Approve 11 © Kurashicom Inc.

Slide 12

Slide 12 text

● Elastic Beanstalk上で動作 ● マネジメントコンソールからの操作 以前のコーポレートサイトの構成 Corporate 12 © Kurashicom Inc.

Slide 13

Slide 13 text

コーポレートサイトの現在の構成 ● ECSに移行 ● Terraformのソースコードで管理し、PRで確認 Terraformの コードを変更 Pull Request Approve Approve Approve 13 © Kurashicom Inc.

Slide 14

Slide 14 text

よくなったところ ECS移行 インフラリソースの コードベースでの管理 •属人化の解消 •変更が容易になった •管理するAWSリソースが減ったので対応が楽に なった 14 © Kurashicom Inc.

Slide 15

Slide 15 text

初めてのインフラ

Slide 16

Slide 16 text

転職してインフラ業務を始めました ● 最初はOpsWorksだったりElastic Beanstalkだったりでペアで画面共有しながらだったため、作業が覚えられ る自信がなかった ● Terraformでのソースコード管理ができるようになったため、安心して作業ができた 16 © Kurashicom Inc.

Slide 17

Slide 17 text

AWSアカウントについて ● クラシコムでは現在右記のAWSアカウントを利用 しています ● 習熟度が上がったり開発に必要になったりすると 権限が払い出される方式です • マスター • ユーザー管理 • 監査 • バックアップ • ログアーカイブ • 社内ツール • 分析環境 • サンドボックス • ステージング • 本番 17 © Kurashicom Inc.

Slide 18

Slide 18 text

初心者が入っても安心して開発できる環境 ● 適切な権限設定 ○ AWSアカウントの分割 ○ GitHubのCODEOWNERS設定 ● コードベースでの管理 ○ ドキュメントの作成・探すことの手間の軽減 ○ 複数の目での確認 ● CIでのミスを防ぐ体制 ○ Trivyでのsecurity的に問題のある設定がないかの確認 ○ Terraform plan内容の確認 ■ tfcmtを利用してPRにコメントをつけています ○ Lintを通す 18 © Kurashicom Inc.

Slide 19

Slide 19 text

TV放映対策

Slide 20

Slide 20 text

TV放映中のリクエスト量 放映開始 放映終了 時間 20 © Kurashicom Inc. 通常時の15倍

Slide 21

Slide 21 text

サーバー落ちませんでした

Slide 22

Slide 22 text

TV放映の効果 ● カンブリア宮殿放映後 1時間でアプリダウンロード数 8,600超 ● 送料無料キャンペーンも合わせて実施 22 © Kurashicom Inc.

Slide 23

Slide 23 text

TV放映が決まったときに気になること ● リクエストにロードバランサーやサーバーが耐えられるか ○ 機会損失 ○ お客様にがっかりされる ○ エンジニアとして悔しい ○ サーバーの台数は? ○ データベースは耐えられる? ● 注文の増加? ○ リクエストは来るがすぐに注文が入るわけではない ○ トランザクションは大丈夫? 23 © Kurashicom Inc.

Slide 24

Slide 24 text

準備したこと ● やったこと ○ ECSのタスク数を増やす ● やっていないこと ○ Aurora, OpenSearchなどのDBのインスタン スタイプ変更 ○ ALBの暖気申請 resource "aws_appautoscaling_target" “app" { service_namespace = "ecs" max_capacity = x min_capacity = y resource_id = "xxx" scalable_dimension = "ecs:service:DesiredCount" lifecycle { ignore_changes = [min_capacity] } } 24 © Kurashicom Inc.

Slide 25

Slide 25 text

現在の構成 Amazon Relational Database Service (Amazon RDS) 北欧、暮らしの道具店 コーポレートサイト 25 © Kurashicom Inc.

Slide 26

Slide 26 text

Amazon Relational Database Service (Amazon RDS) リクエストが増えるときに考えること 北欧、暮らしの道具店 コーポレートサイト ロードバランサーは 耐えられるかな タスクは リクエストを 捌き切れるかな DBは処理できるかな 26 © Kurashicom Inc.

Slide 27

Slide 27 text

Amazon Relational Database Service (Amazon RDS) 対応内容 北欧、暮らしの道具店 コーポレートサイト 別の機会に ALBは問題に ならなかったので 暖気しない 負荷試験で確認済み ・xxx rpsまでは現在のタスク数で悪化せず処理可能な こと ・タスク数を増やせばその分比例してリクエストを処理 可能なこと -> 想定されるリクエスト数に耐えられるようECSのタス クを増やすようにする CloudFrontで キャッシュしているので 問題にならないはず ・テレビ放映中に一度に注文が殺到するわ けではない ・今回想定していたリクエストまでは負荷 試験で今のインスタンスタイプで処理可能 とわかっている 27 © Kurashicom Inc.

Slide 28

Slide 28 text

クラシコムがより信頼されるため ● インシデントを予防する ● 「北欧、暮らしの道具店」の世界観を守る ● セキュリティインシデント、予期せぬダウンタイムを起こさない ● 少人数でも管理できる環境にする ● 1人に依存しないようにする ● 管理できる範囲のシステムを構築する 28 © Kurashicom Inc.

Slide 29

Slide 29 text

まとめ ● クラシコムでは2020年から2021年にかけてアプリケーション統合とECS化・インフラ構成の変更を行いました ○ インフラ開発の初心者が入っても開発しながら勉強ができる環境になりました ○ テレビ放映のようなリクエストが急増する場合にPullRequest1本作成・反映するだけで対応できるようになりました ● サービスの信頼を支えるためのインフラを構築したいと思っています ○ 少人数のチームでも管理し切れる環境 ○ 事業の成長を支えられる状態 29 © Kurashicom Inc.

Slide 30

Slide 30 text

アンケートにご回答いただ いた方には本日の資料を メールでお送りします。 ぜひご回答ください

Slide 31

Slide 31 text

採用情報 カジュアル面談を実施中 クラシコムでは エンジニアを募集しています Kurashicom Tech Blog https://www.wantedly.com/projects/1391500 https://note.com/kurashicom_tech/