Djangoの特徴とRevCommにおける選定理由
by
RevComm_inc
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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