Slide 1

Slide 1 text

さくらのサービスを支える API開発のお話(仮) APIStudy#6 2017/3/28 (C) Copyright 1996-2016 SAKURA Internet Inc さくらインターネット株式会社 技術本部 アプリケーショングループ 芦野 光

Slide 2

Slide 2 text

自己紹介 • 芦野 光 • 2016年4⽉ 新卒⼊社 • 所属 • 技術本部 アプリケーショングループ • 担当業務 • さくらのVPS • バックエンド開発(API) • 機能開発 • 社内向けAPIの開発 2 facebook https://www.facebook.com/hikaru.ashinon

Slide 3

Slide 3 text

本⽇のアジェンダ • 会社紹介 • 開発体制 • 開発からリリースまでのフロー • まとめ 3

Slide 4

Slide 4 text

4 会社紹介

Slide 5

Slide 5 text

歴史 5 インターネットインフラの提供を事業ドメインとして、 ⼤阪、東京、北海道の3都市に5つのデータセンターを展開 1996年12⽉に現社⻑の⽥中邦裕が、 舞鶴⾼専在学中に学内ベンチャーとして創業。 1999年8⽉に株式会社を設⽴。10⽉には、 第1号となるデータセンターを本町に開設。 2005年10⽉に東京証券取引所 マザーズ市場に上場。 2011年11⽉、北海道⽯狩市に国内最⼤級の 郊外型⼤規模データセンターを開設。 ⽯狩データセンター開設 2011 東証マザーズ上場 2005 さくらインターネット創業 1996 ・最初のデータセンター開設 1999 ・株式会社を設⽴ 2015年11⽉に東京証券取引市場第⼀部に 市場変更。 東証⼀部に市場変更 2015

Slide 6

Slide 6 text

サービスラインアップ 6 データセンターにまつわるすべてのサービスを提供

Slide 7

Slide 7 text

7 3⽉15⽇より開始

Slide 8

Slide 8 text

8 開発体制

Slide 9

Slide 9 text

開発体制 今回は、さくらVPSのAPIを例に進めます 9 コントロールパネル API ホストサーバ

Slide 10

Slide 10 text

開発体制 • 開発メンバー(APIのみ) • 3名 • 1機能1⼈が開発 • 1~2⼈がコードレビュー 10 • 開発環境 • ⾔語 • Python, Django • API実⾏環境 • gunicorn • Dockerクラスタ(Mesos+Marathon+Chronos) • 本番、ステージング、開発の3環境があります • ローカル • エディター • Vim, PyCharm • CI • Jenkins • APIドキュメント • Confluence • Swagger (Django REST Swagger) • コード管理 • GitHub Enterprise • デバッグ • Django Debug Toolbar • 作図 • Cacoo • django-extensions • PlantUML Macro(confluence)

Slide 11

Slide 11 text

11 開発からリリース までのフロー

Slide 12

Slide 12 text

開発からリリースまでのフロー 12 企画 仕様策定 コーディン グ テスト リリース レビュー

Slide 13

Slide 13 text

開発からリリースまでのフロー - 企画 • 企画 • VPSチームメンバーから発案 • お客様からのご要望 • メール • さくらのユーザーフィードバックβ 13

Slide 14

Slide 14 text

開発からリリースまでのフロー - 仕様策定 • URI設計 • https://secure.sakura.ad.jp/vps/api/v6/*** • DB設計(モデル) • JSONフォーマット • Key名 • 型 • ドキュメント作成 • Confluence • Swagger (Django REST Swagger) • エラー処理 • フロント / ホストサーバ側を開発するメンバーとMTGをしたり 14

Slide 15

Slide 15 text

開発からリリースまでのフロー - コーディング・レビュー • コーディング • PEP8準拠 • URLルーティング追加 • モデルを書く(こともある) • ビューを書く • シリアライザーを書く • python manage.py runserver • git上で、レビュー • MTG 15

Slide 16

Slide 16 text

開発からリリースまでのフロー - テスト • ユニットテスト • テストを書く • Factoryboyでテストデータを作る • 総合テスト • シナリオテスト • コントロールパネルとホストサーバ(インフラ) と繋ぎこみテストを⾏う • 様々なブラウザ、OSでテスト 16

Slide 17

Slide 17 text

17 🙆🙆🙆🙆 絵文字以降の操作履歴が出力されない

Slide 18

Slide 18 text

18 🙆🙆🙆🙆 絵文字以降の操作履歴が出力されない

Slide 19

Slide 19 text

開発からリリースまでのフロー - リリース • リリース前⽇まで • お知らせの作成 • サポートページの作成 • リリース当⽇ • リリースバージョンのAPIデプロイ • お知らせ、サポートページの公開 19

Slide 20

Slide 20 text

開発からリリースまでのフロー - リリース • リリースバージョンのAPIデプロイ(1) 20 コントロールパネル API (v6.0.0) https://secure.sakura.ad.jp/vps/api/v6/ リバースプロキシ

Slide 21

Slide 21 text

開発からリリースまでのフロー - リリース • リリースバージョンのAPIデプロイ(2) 21 コントロールパネル API (v6.0.0) リバースプロキシ API (v6.0.1) https://secure.sakura.ad.jp/vps/api/v6/

Slide 22

Slide 22 text

開発からリリースまでのフロー - リリース • リリースバージョンのAPIデプロイ(3) 22 コントロールパネル リバースプロキシ https://secure.sakura.ad.jp/vps/api/v6/ 22 API (v6.0.0) API (v6.0.1)

Slide 23

Slide 23 text

開発からリリースまでのフロー - リリース • お知らせ、サポートページの公開 23

Slide 24

Slide 24 text

24 まとめ

Slide 25

Slide 25 text

まとめ • 割と⾃由な開発環境で開発しています • OSSを組み合わせてサービス開発 / 運⽤ • 便利なツールを使う • テストが⼀番⼤変 • 様々なブラウザやOSでテストしなければならない 25

Slide 26

Slide 26 text

26 ご清聴ありがとうございました