Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Djangoの特徴とRevCommにおける選定理由

 Djangoの特徴とRevCommにおける選定理由

RevComm_inc

July 05, 2023
Tweet

More Decks by RevComm_inc

Other Decks in Programming

Transcript

  1. Copyright © RevComm Inc.
    Djangoの特徴と
    RevCommにおける選定理由
    2023.07.05
    Shota Kokado

    View full-size slide

  2. Copyright © RevComm Inc.
    1.自己紹介
    2
    小門 照太 (Shota Kokado)
    Backend Team, @長野県
    ● 2022/1~ :RevComm
    ● 2018~2021 :バックエンド開発
    ● 2013~2018 :インフラエンジニア
    得意
    ● AWS, Python, Infrastructure
    ● DevOps
    ● ペットx3
    ● アウトドア(山)
    コザクラインコ
    セキセイインコ
    ねこ

    View full-size slide

  3. Copyright © RevComm Inc.
    contents
    1. RevCommにおけるバックエンド開発とDjango
    2. Djangoの特徴
    a. セキュリティ
    b. ORM、マイグレーション管理
    c. エコシステム
    d. チーム開発のしやすさ

    View full-size slide

  4. Copyright © RevComm Inc.
    contents
    1. RevCommにおけるバックエンド開発とDjango
    2. Djangoの特徴
    a. セキュリティ
    b. ORM、マイグレーション管理
    c. エコシステム
    d. チーム開発のしやすさ

    View full-size slide

  5. Copyright © RevComm Inc.
    RevCommにおけるバックエンド開発とDjango
    5
    「MiiTel」…音声解析AIを搭載したIP電話(SaaS)
    技術スタック(大区分)
    ● IP電話(PBX/VoIP)
    ● AI
    ○ 音声解析
    ○ 自然言語処理
    ● Webアプリケーション

    View full-size slide

  6. Copyright © RevComm Inc.
    RevCommにおけるバックエンド開発とDjango
    6
    「MiiTel」…音声解析AIを搭載したIP電話(SaaS)
    技術スタック(大区分)
    ● IP電話(PBX/VoIP)
    ● AI
    ○ 音声解析
    ○ 自然言語処理
    ● Webアプリケーション

    View full-size slide

  7. Copyright © RevComm Inc.
    RevCommにおけるバックエンド開発とDjango
    7
    アーキテクチャ概要
    引用元: MiiTelの技術スタックとアーキテクチャ変遷を紹介します( 2023年5月版)

    View full-size slide

  8. Copyright © RevComm Inc.
    RevCommにおけるバックエンド開発とDjango
    8
    アーキテクチャ概要
    Webアプリケーションのバックエンド(一部) においてDjangoを利用
    引用元: MiiTelの技術スタックとアーキテクチャ変遷を紹介します( 2023年5月版)

    View full-size slide

  9. Copyright © RevComm Inc.
    RevCommにおけるバックエンド開発とDjango
    9
    アーキテクチャ概要
    バックエンドアプリケーションはコンテナ化して Amazon ECS で実行
    引用元: MiiTelの技術スタックとアーキテクチャ変遷を紹介します( 2023年5月版)

    View full-size slide

  10. Copyright © RevComm Inc.
    RevCommにおけるバックエンド開発とDjango
    10
    ● サービス概要
    ○ 400~500req/s (ピーク時間帯)
    ○ ECSタスク数: 約100
    ○ 日本、アメリカ、インドネシアに提供

    View full-size slide

  11. Copyright © RevComm Inc.
    RevCommにおけるバックエンド開発とDjango
    11
    ● サービス概要
    ○ 400~500req/s (ピーク時間帯)
    ○ ECSタスク数: 約100
    ○ 日本、アメリカ、インドネシアに提供
    ● プロジェクト概要
    ○ Django 導入時期: 2019年頃
    ※プロジェクト開始時期: 2017年
    ○ コントリビューター数: 約20名
    ■ ※累計: 約60名
    ○ Django アプリケーション数: 約40
    ○ 使用バージョン
    ■ Python 3.10/Django 3.2
    ■ Python 3.11/Django 4.2

    View full-size slide

  12. Copyright © RevComm Inc.
    contents
    1. RevCommにおけるバックエンド開発とDjango
    2. Djangoの特徴
    a. セキュリティ
    b. ORM、マイグレーション管理
    c. エコシステム
    d. チーム開発のしやすさ

    View full-size slide

  13. Copyright © RevComm Inc.
    Djangoの特徴
    13
    セキュリティ
    様々なアプリケーション脆弱性に関する対策が標準でサポートされる
    ● XSS
    ● CSRF
    ● SQLインジェクション
    etc
    Security in Django | Django documentation | Django

    View full-size slide

  14. Copyright © RevComm Inc.
    Djangoの特徴
    14
    ● 例: XSS
    Django 標準の HTML テンプレートエンジンにより、特殊文字がエスケープされる。

    View full-size slide

  15. Copyright © RevComm Inc.
    Djangoの特徴
    15
    ● 例: XSS
    Django 標準の HTML テンプレートエンジンにより、特殊文字がエスケープされる。

    View full-size slide

  16. Copyright © RevComm Inc.
    Djangoの特徴
    16
    ORM、マイグレーション管理
    ● Model クラスと統合されたORM
    models.py クエリ実行例

    View full-size slide

  17. Copyright © RevComm Inc.
    Djangoの特徴
    17
    ORM、マイグレーション管理
    ● データベースとの接続は利用者に対して隠ぺいされているため、処理を簡潔に記述できる
    ○ => 開発/デバッグ容易性が向上
    SQLAlchemy ORM の例

    View full-size slide

  18. Copyright © RevComm Inc.
    Djangoの特徴
    18
    ORM、マイグレーション管理
    ● データベース接続時のオプションカスタマイズも可能
    settings.py

    View full-size slide

  19. Copyright © RevComm Inc.
    Djangoの特徴
    19
    ORM、マイグレーション管理
    ● マイグレーション管理(= DBテーブルの管理)機能も搭載

    View full-size slide

  20. Copyright © RevComm Inc.
    Djangoの特徴
    20
    エコシステムの充実
    様々な用途のサードパーティライブラリが開発されている
    設定ファイルに追加することでプラグインのように使用できる
    settings.py

    View full-size slide

  21. Copyright © RevComm Inc.
    Djangoの特徴
    21
    エコシステムの充実
    様々な用途のサードパーティライブラリが開発されている
    RevCommで導入しているサードパーティの一例
    ● Django REST framework (DRF)
    ○ REST APIの実装に利用
    ○ 大半の API を DRF で実装
    ■ e.g. Serializer によりデータのバリデーションを移譲
    ● django-countries
    ○ 国際化 (i18n) 対応
    ○ CountryField を使用
    ● django-debug-toolbar
    ○ パフォーマンス計測など、開発/デバッグ用途に有用なツール
    See also: Awesome Python、Awesome Django

    View full-size slide

  22. Copyright © RevComm Inc.
    Djangoの特徴
    22
    チーム開発のしやすさ
    プロジェクトテンプレート機能
    アプリケーションの初期化をサポートする機能が標準装備されている
    ● django-admin startproject
    ● django-admin startapp

    View full-size slide

  23. Copyright © RevComm Inc.
    Djangoの特徴
    23
    チーム開発のしやすさ
    プロジェクトテンプレート機能
    アプリケーションの初期化をサポートする機能が標準装備されている
    ● django-admin startproject
    ● django-admin startapp
    プロジェクトの初期化、アプリ追加の際に便利
    ● 誰が開発しても同じディレクトリ構成になりやすい
    ● 別プロジェクト、別リポジトリになっても同じ構成を保ちやすい

    View full-size slide

  24. Copyright © RevComm Inc.
    Djangoの特徴
    24
    チーム開発のしやすさ
    ユニットテストにおいて、デフォルトでテストケース間のデータを独立して扱える
    ※SQLAlchemy の場合、pytest fixture と組合せて追加のセットアップが必要

    View full-size slide

  25. Copyright © RevComm Inc.
    まとめ
    25
    RevCommのバックエンド開発とDjangoの利用、特徴を紹介しました。
    まとめ: Djangoの特徴と、RevCommが利用を続けているポイント
    ● 単体で多くの機能を持っていて開発を始めやすいフレームワークである
    ○ ローンチ当時(2018年頃)は特に開発スピードを重視していた
    ● チーム開発がしやすい
    ○ ディレクトリ構成を統一しやすく、責務を明確にできる
    ○ デバッグ容易性が高く、開発しやすい
    ● セキュリティが考慮されている
    ● ORMを同梱しており、使い勝手も良い
    ● エコシステムが充実していて機能拡充がしやすい

    View full-size slide

  26. Copyright © RevComm Inc.
    Thank you!
    26

    View full-size slide