$30 off During Our Annual Pro Sale. View Details »

【とらのあなラボ Tech Day #5】アーキテクトチームのお仕事

【とらのあなラボ Tech Day #5】アーキテクトチームのお仕事

とらのあなラボ Tech Day #5の発表資料です
https://yumenosora.connpass.com/event/256588/

当日の配信アーカイブはこちら
https://www.youtube.com/watch?v=bfMXaY588sk

今後のイベントについてはこちら
https://yumenosora.connpass.com/

虎の穴ラボ 採用サイト
https://yumenosora.co.jp/tora-lab/

虎の穴ラボ株式会社

September 01, 2022
Tweet

More Decks by 虎の穴ラボ株式会社

Other Decks in Technology

Transcript

  1. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 虎の穴ラボを支えるアーキテクトチームのお仕事

    虎の穴ラボ株式会社 藤原佳顕 T O R A N O A N A L a b
  2. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 目次

    1. 自己紹介 2. 虎の穴ラボのアーキテクトチームとは? 3. 歴史となりたち 4. アーキテクトチームのお仕事 5. まとめ
  3. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 自己紹介ページ(藤原)

    藤原 佳顕(ふじわら よしあき) ‣ Webエンジニア ‣ 新規事業担当(Fantia、Creatia)、アーキテクトチーム ‣ 前職:独立系ソフトウェア会社、主に GISとWeb、ライブラリ開発 ‣ TypeScript、C#、Ruby on Rails、C++ ‣ React、Vue、Angular ‣ 入社理由 ‣ 自分がスキルアップできそうな場所に行きたい ‣ オタク系の話ができるところに行きたい 好きなモノ ‣ シューティングゲーム、格闘ゲーム ‣ SF小説 ‣ プログラミング
  4. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 虎の穴ラボのアーキテクトチームとは?

  5. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 虎の穴ラボのアーキテクトチームとは?

    アーキテクトチームの取り組み • 虎の穴ラボの技術ブランディング ◦ 新規システム構築時の技術選定 ◦ 新規システム構築時の全体的な設計の確認 • 継続的な技術レベルの向上 • インフラ等のコスト削減 • 全般的なセキュリティ強化 虎の穴ラボの技術向上及び、セキュリティ関連を担う部署
  6. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 虎の穴ラボのアーキテクトチームとは?

    虎の穴ラボの技術ブランディング • 新規システム構築時の技術選定 ◦ 例:Fantiaアフィリエイトシステム構築 (Go + gRPC) • 対外的なアウトプット ◦ 【とらのあなラボ Tech Day #3】新規システ ムにおける技術選定〜 GoとgRPCを採用し た話〜 ◦ https://www.slideshare.net/toranoan a-lab/tech-day-3gogrpc
  7. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 虎の穴ラボのアーキテクトチームとは?

    継続的な技術レベルの向上 • 社内勉強会の主導 ◦ 会社として推していきたい技術の勉強 ◦ 業務上必要な技術のスキルアップ ◦ 2021年 ▪ Deno勉強会 ▪ Go勉強会 ◦ 2022年上期 ▪ ISUCON勉強会 ▪ Go勉強会 ▪ JavaScript/TypeScript/Next.js勉強会
  8. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 虎の穴ラボのアーキテクトチームとは?

    セキュリティの向上:昨今のセキュリティ事故を鑑みての各種対応 • セキュリティ検知の仕組みづくり ◦ →Slackでの脆弱性情報RSS収集、GitHub Dependabotの活用 • 継続的なセキュリティアップデートの仕組みづくり • 各プロダクトで使っている技術を一覧できるようにまとめる ◦ →アプデの対象を一覧できるように
  9. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 歴史となりたち

  10. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 歴史と成り立ち

    月 活動内容 2021/9 内部組織として発足 2021/9 社内勉強会開始(Deno、Go) 2021/10〜2021/12 新規システムをGo+gRPCで作成 ~2021/12 システムのバックアップ環境整備、セキュリティアップデート対応など 2022/1 新規サービスチームから 1人正式合流(筆者) 2022/2 アプリケーションレベルのセキュリティ対応見直し 2022/3 セキュリティ情報キャッチアップ体制の構築 2022/4 通販開発チームから 1人合流、正式な組織として新設
  11. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 歴史と成り立ち

    前日譚(ある日の1on1半年前くらい?) ちょうど考えていたので検討します。 技術研究の部署みたいな物は作らないんですか?
  12. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 歴史と成り立ち

    何故できたのか • 使う技術がなんとなく今までのものになりがち ◦ Ruby on Rails、Javaあたりになりがち ◦ R&D的なことを通じて新しい技術や、流行りの技術を取り入れていきたい ▪ 人材獲得上も新しい技術の採用は重要 • マネジメントだけでなく技術方面でも役職者を出せるように ◦ スキル給といった形で評価の仕組みはあった • 技術方面での認知度向上 ◦ 未だに虎の穴にIT専門部署(会社)があることが認知されていない場合がある ◦ 虎の穴ラボといえばこの技術といったものがないので作っていきたい
  13. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

  14. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

    社内勉強会の開催 • Go言語/Deno勉強会 ◦ 与えられたテーマに従ってGo及びDenoについて勉強して発表する形式 ▪ コード+発表資料 ◦ テーマ例 ▪ 基本的な構文について ▪ DB接続するにはどうすればいいか ▪ Webアプリケーションの作り方 ▪ テストコードの書き方 ▪ 言語/ランタイム特有の処理(非同期、並行処理など) ▪ 実践的なプロダクト作成
  15. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

    func (s *sampleServer) GetUsers(ctx context.Context, req *samplepb.UserSearchRequest) (*samplepb.UsersResponse, error) { users := []*User{} query := db.Debug() if req.Name != "" { query = query.Where("name LIKE ?", fmt.Sprintf("%%%s%%", req.Name)) } if req.BirthdayFrom != "" { from, _ := time.Parse(dateLayout, req.BirthdayFrom) query = query.Where("? <= birthday", from) } if req.BirthdayTo != "" { to, _ := time.Parse(dateLayout, req.BirthdayTo) query = query.Where("birthday <= ?", to) }
  16. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

    query.Find(&users) res := []*samplepb.User{} for _, v := range users { res = append(res, &samplepb.User{ Id: v.ID, Name: v.Name, Birthday: v.Birthday.Format(dateLayout), }) } return &samplepb.UsersResponse{Users: res}, nil }
  17. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

    プロダクトのアーキテクト検討(Go + gRPC) • Fantiaへのアフィリエイト機能の追加 ◦ 要件
 ▪ ある種の履歴管理機能
 • =>DB上のレコードは膨大になる可能性がある
 ▪ 機能の使用に利用者申請が必要
 • =>利用者管理機能が必要
 ▪ 連携箇所を考えるとなるべく高速に
 • =>レスポンスに1sとかはNG
 • 最終的に選んだ技術
 ◦ Go+gRPC
 ▪ 速度と用途上の合致
 ◦ GCP(CloudRun)
 ▪ CloudRun自体は別件で利用実績があったかつ、gRPCに対応していた

  18. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

    より詳細が知りたい方向けの過去の発表資料はこちら https://www.slideshare.net/toranoana-lab/tech-day-3gogrpc
  19. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

    プロダクトのアーキテクト検討(Fantia ビューアー) • ダウンロード商品の利便性向上 ◦ 要件 ▪ 漫画や写真集などのダウンロード商品を主に スマホユーザー向けに閲覧を簡単にできるようにしたい。 • ZIPなら解凍、PDFなら専用ビューアーを利用しなくてはいけないのでスマホユー ザーには不便 ▪ なるべく、クリエイターへの手間はかけたくない。 • 今まで通り商品をアップロードするだけで対応できるようにする必要がある。 ▪ できれば、虎の穴の他サービスでも利用できるようにしたい。 • マイクロサービスを検討(最終的にはマイクロサービスにせず)
  20. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

    プロダクトのアーキテクト検討(Fantia ビューアー) • クライアント側 ◦ 最終的に選んだ技術 ▪ フレームワーク: なし ▪ 言語: TypeScript ▪ モジュールバンドラ: vite ◦ 選定理由 ▪ ページ移動などの動きはあるが、表示後の状態変換などは少ないので React やVueは少しリッチすぎる。 ▪ バンドルされるjsが無駄に大きくなることは避けたかった。 ▪ (後に、preactくらいは使っても良かったかもしれないと思った。 )
  21. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

    プロダクトのアーキテクト検討(Fantia ビューアー) • サーバー側 ◦ 最終的に選んだ技術 ▪ インフラ: Lambda(Docker Container使用)、API Gateway、SQS、SNS ▪ 言語: Ruby ◦ 選定理由 ▪ ファイル変換は負荷が高いため、Fantiaの他機能に影響が出ないようにしたかった。 ▪ 他サービスで利用を考えたが、現時点で他サービスの要件出しまでできなかったため、 とりあえずFantiaだけで使えるようにした。 ※ただし、将来的なマイクロサービス化に備えて切り出しやすいように設計はした。
  22. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

    技術力向上施策(コードの推奨方針) • 社内のコードの方針を統一するために作成 ◦ lintやフォーマットよりもっと概念的なもの • スライドとしてコメントの方針や、関数定義の方針を共有 • 半年に一回見直して実際の業務上そぐわない部分を追加・修正 • プルリクエストのテンプレートにリンクを記載してレビュー時に迷ったと きにも見られるように
  23. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

  24. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

  25. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. アーキテクトチームのお仕事

    各種セキュリティ対応 • 色々後手に回りがちなセキュリティ対応を実施 ◦ 利用技術の一覧化(セキュリティ対応候補洗い出しのため ) ◦ GitHubのDependabot対応 ◦ TLS対応状況の見直し ◦ CVEの定期チェック ◦ パスワード保存状況の見直し ◦ アプリケーション側のセキュリティ設定見直し (CSP、Nginxの各種ヘッダー) ◦ 各種WAFの導入と設定 ◦ ゼロデイ系の脆弱性対応(適宜)
  26. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. まとめ

    • 虎の穴ラボのアーキテクトチームが何をしているか紹介しました • 虎の穴ラボをより技術方面でサポートしていきたいと思います • 課題等 ◦ セキュリティ対応は専任の人に任せたい ▪ セキュリティエンジニア募集中です ▪ https://yumenosora.co.jp/archives/job/2117
  27. Copyright (C) 2022 Toranoana Lab Inc. All Rights Reserved. 次のセッションについて

    19:40〜 とらのあなラボ Deno 導入の取り組み 登壇:エンジニア 奥谷 一陽