Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

Copyright © RevComm Inc. Thank you! 26