SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
さくらインターネット株式会社
Shuji Yamada (山田 修司)
@uzyexeJul 7, 2019
ここにハマった!
Dockerコンテナホスティング「Arukas」の裏側
1
さくらインターネット所属 シニアプロデューサー
「さくらのクラウド」運用担当などののち、
現在はコンテナホスティング「Arukas」の開発に着手
(山田 修司)
2
SHUJI YAMADA
つまり、「コンテナ馬鹿」
書籍執筆イベント開催Arukas
社名が変わりました
!3
社名が変わりました
大文字の「I」が、小文字の「i」に
!4
本日のハナシ
•Arukasのご紹介
•Arukasでハマったハナシ
•まとめ
!5
6
コンテナをもっと手軽に
Run
Dockerized Applications
100,000+
Dockerized Applications
Docker Hubにあるイメージをすぐに起動
EASY DEPLOY
7
登録ユーザー数

21K+
コンテナ起動回数 (累計)

320K+
稼働イメージ数 (タグ別) 

2K+
ユーザーの出身国 

84カ国以上
Something for everyone
(2019年7月時点)
8
コントロールパネル
CONTROL PANEL
!9
構成図
本番環境と同等の環境をローカルマシン上で再現。
• docker-sync-stack start で開発環境を起動
• git で作業ブランチを切って、コード編集
• ciecleci build でテストしてから、git push
• 定期的に古いファイルをクリーニング・・・

(docker system prune とか docker volume prune とか・・・)
コードを書ける人なら誰でも初日からコミットできる!
開発環境
!10
ローンチ当初、Railsエンジニアは1名だった・・・!
Arukasのサーバサイドエンジニアのお仕事
• Ruby on Rails によるAPIの設計&開発
• 大規模バッチ処理の設計&開発
• データベース論理設計
• Ember.js によるフロントエンドの設計&開発
!11
rake stats
!12
最近の開発事例
• 電話認証&SMS認証
• Alipay支払いに対応
• 排他制御
• 機微情報の暗号化
• OAuth認証を廃止
!13
Twilio を使って電話認証を実装
• ある日突然、中国との電話による通話ができなくなった。
• 平均3分未満の通話元からの通話が拒否される仕様に・・・。
• いやいやいやいや、電話認証できないじゃん・・・。
• SMS認証を急遽実装して回避した。
• 最初から実装しとけばよかった・・・。
電話認証
😱
!14
SMS 認証を実装したものの・・・
• 「SMSで登録完了できない」というお問い合わせがチラホラ
• 登録済みの番号からの新規認証は弾いているが・・・。
• SMS番号共有サイトに掲載された番号を使って試行されてる・・・
• 電話認証&SMS認証は重複排除しとかないとアテにできない。
SMS認証
🤔
!15
Alipay支払いに対応
💳
🙅
当初、決済手段はクレカ払いにしか対応してなかったが
• 中国ユーザーは大多数がクレカを持っていなかった・・・。
• Stripeは日本事業者向けには銀聯カード決済に非対応。
• 中国ユーザーのためだけに、Alipay 支払いを実装
• だが、中国本土の人しか実際の支払いが試せないらしい!
• リリースしたけど、本番環境でテストできなくてドキドキ・・・
!16
排他制御
!17
コンテナは、起動/停止を「めちゃくちゃ」繰り替えされる
• キューが変なタイミングで重複して飛んでくる。
• 課金の起動/停止を記録するテーブルで発生すると悲惨。
• 排他制御で潰していくのがベター。
• sidekiq-ent ならキューをユニーク制御できるが・・・。
• DBにUNIQUE制約を付与して回避することもできるが・・・。
• どこで発生しているかが掴めなくなる。
機微情報の暗号化
😡
😖
パスワードや連絡先情報は暗号化していたが
• コンテナの ENV、CMD も暗号化していく方針に。
• 実装後、コンテナにENVが展開されないというクレームが続発
• マルチバイト文字をデコードできてなかった・・・。
• 完全なケアレスミス(英語しか考えてなかった)
!18
GitHub連携してサインイン/サインアップできるようにしてた
• 「@開発者向け」アピールのつもりだったのだが、、
• 使ってくれるユーザーが予想以上に少なかった \(^o^)/
• 「メリット < メンテナンスコスト」になったので廃止・・・。
• パスワードログインとフローを分離していると、

メンテナンスコストが増加しやすい。
OAuth 廃止
!19
開発リソース不足 [人手が足りない]
コミュニケーション不足 [調整コストをケチりがち]
ヒューマンエラー [作業コストをケチりがち]
ハマった原因ってなんだろう?
予期せぬトラブル [回避しようがない]
!20
開発リソース不足 [初期段階に投資したほうがいい]
コミュニケーション不足 [議論から逃げないほうがいい]
ヒューマンエラー [試行錯誤した上での失敗は仕方ない]
改善するにはどうすればいいだろう?
予期せぬトラブル [迅速に対応できるようにする]
!21
恥はどんどん公開して、成仏させよう
!22
THANK YOU!
23
(C) Copyright SAKURA internet Inc.
24

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Azure Arcで「どこでも」Azureサービスを利用可能に!
Azure Arcで「どこでも」Azureサービスを利用可能に!Azure Arcで「どこでも」Azureサービスを利用可能に!
Azure Arcで「どこでも」Azureサービスを利用可能に!
 
「Windows Azure」 の Mobile Services
「Windows Azure」 の Mobile Services「Windows Azure」 の Mobile Services
「Windows Azure」 の Mobile Services
 
Nulabとawsと私
Nulabとawsと私Nulabとawsと私
Nulabとawsと私
 
ゲーム会社でのRuby : rails活用事例
ゲーム会社でのRuby : rails活用事例ゲーム会社でのRuby : rails活用事例
ゲーム会社でのRuby : rails活用事例
 
Azure FunctionsでPowerShellを使ってみた
Azure FunctionsでPowerShellを使ってみたAzure FunctionsでPowerShellを使ってみた
Azure FunctionsでPowerShellを使ってみた
 
Getting started with Handoff
Getting started with HandoffGetting started with Handoff
Getting started with Handoff
 
iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携
 
Running Kubernetes on Azure
Running Kubernetes on AzureRunning Kubernetes on Azure
Running Kubernetes on Azure
 
Bicep 入門 MySQL編
Bicep 入門 MySQL編Bicep 入門 MySQL編
Bicep 入門 MySQL編
 
Azure Functions あれこれ
Azure Functions あれこれAzure Functions あれこれ
Azure Functions あれこれ
 
Container deployment on Azure
Container deployment on AzureContainer deployment on Azure
Container deployment on Azure
 
継続的インテグレーションの過去・現在・そして未来 〜ヌーラボの事例と共に考える〜
継続的インテグレーションの過去・現在・そして未来 〜ヌーラボの事例と共に考える〜継続的インテグレーションの過去・現在・そして未来 〜ヌーラボの事例と共に考える〜
継続的インテグレーションの過去・現在・そして未来 〜ヌーラボの事例と共に考える〜
 
Unityでソーシャルログイン機能を実装してみた
Unityでソーシャルログイン機能を実装してみたUnityでソーシャルログイン機能を実装してみた
Unityでソーシャルログイン機能を実装してみた
 
Azure もくもく会@東京 #22 - Azure Functions v1.0 GA
Azure もくもく会@東京 #22 -  Azure Functions v1.0 GAAzure もくもく会@東京 #22 -  Azure Functions v1.0 GA
Azure もくもく会@東京 #22 - Azure Functions v1.0 GA
 
本番運用で使うVisual Studio
本番運用で使うVisual Studio本番運用で使うVisual Studio
本番運用で使うVisual Studio
 
Ignite 2021 振り返り(DevOps)
Ignite 2021 振り返り(DevOps)Ignite 2021 振り返り(DevOps)
Ignite 2021 振り返り(DevOps)
 
2021/6/29 Azure Hybrid and Multicloud Digital Event の内容を日本語でお届け!
2021/6/29 Azure Hybrid and Multicloud Digital Event の内容を日本語でお届け!2021/6/29 Azure Hybrid and Multicloud Digital Event の内容を日本語でお届け!
2021/6/29 Azure Hybrid and Multicloud Digital Event の内容を日本語でお届け!
 
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオンAzure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
 
20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecase20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecase
 
RancherのWindowsサポートと事始め
RancherのWindowsサポートと事始めRancherのWindowsサポートと事始め
RancherのWindowsサポートと事始め
 

Similar a ここにハマった!Dockerコンテナホスティング「Arukas」の裏側

Androidアプリ屋だけどWebフロントエンド開発にアサインされた件について
Androidアプリ屋だけどWebフロントエンド開発にアサインされた件についてAndroidアプリ屋だけどWebフロントエンド開発にアサインされた件について
Androidアプリ屋だけどWebフロントエンド開発にアサインされた件について
Takuya Kihara
 

Similar a ここにハマった!Dockerコンテナホスティング「Arukas」の裏側 (20)

さくらのナレッジの運営から見えるもの
さくらのナレッジの運営から見えるものさくらのナレッジの運営から見えるもの
さくらのナレッジの運営から見えるもの
 
Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~
 
さくらのクラウドを使ったシラサギ開発環境の準備
さくらのクラウドを使ったシラサギ開発環境の準備さくらのクラウドを使ったシラサギ開発環境の準備
さくらのクラウドを使ったシラサギ開発環境の準備
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
Dockerで開発環境をデリバる
Dockerで開発環境をデリバるDockerで開発環境をデリバる
Dockerで開発環境をデリバる
 
20180925 docker ecs_fargate
20180925 docker ecs_fargate20180925 docker ecs_fargate
20180925 docker ecs_fargate
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
Arukas meet Mesos/Marathon
Arukas meet Mesos/MarathonArukas meet Mesos/Marathon
Arukas meet Mesos/Marathon
 
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
 
Arukasのご紹介 for 『kintone Café 鹿児島 Vol. 4 × さくらクラブ鹿児島』
Arukasのご紹介 for 『kintone Café 鹿児島 Vol. 4 × さくらクラブ鹿児島』Arukasのご紹介 for 『kintone Café 鹿児島 Vol. 4 × さくらクラブ鹿児島』
Arukasのご紹介 for 『kintone Café 鹿児島 Vol. 4 × さくらクラブ鹿児島』
 
Androidアプリ屋だけどWebフロントエンド開発にアサインされた件について
Androidアプリ屋だけどWebフロントエンド開発にアサインされた件についてAndroidアプリ屋だけどWebフロントエンド開発にアサインされた件について
Androidアプリ屋だけどWebフロントエンド開発にアサインされた件について
 
AndroidでARの夢を再び 〜ARCoreの導入から応用まで
AndroidでARの夢を再び 〜ARCoreの導入から応用までAndroidでARの夢を再び 〜ARCoreの導入から応用まで
AndroidでARの夢を再び 〜ARCoreの導入から応用まで
 
会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話
 
【Unite 2018 Tokyo】AndroidでAR〜ARCoreの導入から応用、使う上での勘所まで
【Unite 2018 Tokyo】AndroidでAR〜ARCoreの導入から応用、使う上での勘所まで【Unite 2018 Tokyo】AndroidでAR〜ARCoreの導入から応用、使う上での勘所まで
【Unite 2018 Tokyo】AndroidでAR〜ARCoreの導入から応用、使う上での勘所まで
 
Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話
 
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
 
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
 
OCI serverless introduction
OCI serverless introductionOCI serverless introduction
OCI serverless introduction
 
Vagrantでクラウド上にdocker環境を作る
Vagrantでクラウド上にdocker環境を作るVagrantでクラウド上にdocker環境を作る
Vagrantでクラウド上にdocker環境を作る
 
Dokku の紹介
Dokku の紹介Dokku の紹介
Dokku の紹介
 

Más de Shuji Yamada

Kanban 301「プロセスマネジメント(成長エンジン)」
Kanban 301「プロセスマネジメント(成長エンジン)」Kanban 301「プロセスマネジメント(成長エンジン)」
Kanban 301「プロセスマネジメント(成長エンジン)」
Shuji Yamada
 

Más de Shuji Yamada (14)

GitHub Enterpriseの導入事例と実践GitHub Actions
GitHub Enterpriseの導入事例と実践GitHub ActionsGitHub Enterpriseの導入事例と実践GitHub Actions
GitHub Enterpriseの導入事例と実践GitHub Actions
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF
 
10分でわかる marathon-lb
10分でわかる marathon-lb10分でわかる marathon-lb
10分でわかる marathon-lb
 
コンテナのユースケース考察
コンテナのユースケース考察コンテナのユースケース考察
コンテナのユースケース考察
 
Kanban 301「プロセスマネジメント(成長エンジン)」
Kanban 301「プロセスマネジメント(成長エンジン)」Kanban 301「プロセスマネジメント(成長エンジン)」
Kanban 301「プロセスマネジメント(成長エンジン)」
 
Kanban 101「明日から使えるかもしれないカンバン」
Kanban 101「明日から使えるかもしれないカンバン」Kanban 101「明日から使えるかもしれないカンバン」
Kanban 101「明日から使えるかもしれないカンバン」
 
Velocity - Lean, Velocity and Anti-Fragile 「ボトルネックを飼い慣らせ!」
Velocity - Lean, Velocity and Anti-Fragile  「ボトルネックを飼い慣らせ!」Velocity - Lean, Velocity and Anti-Fragile  「ボトルネックを飼い慣らせ!」
Velocity - Lean, Velocity and Anti-Fragile 「ボトルネックを飼い慣らせ!」
 
自動テストによって生み出される価値
自動テストによって生み出される価値自動テストによって生み出される価値
自動テストによって生み出される価値
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
 
お手軽OpenFlow試験環境 Mininet
お手軽OpenFlow試験環境 Mininetお手軽OpenFlow試験環境 Mininet
お手軽OpenFlow試験環境 Mininet
 
Sensu -The Next Generateion Monitoring Framework-
Sensu -The Next Generateion Monitoring Framework-Sensu -The Next Generateion Monitoring Framework-
Sensu -The Next Generateion Monitoring Framework-
 
【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~
【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~
【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~
 
2015-01-27 Introduction to Docker
2015-01-27 Introduction to Docker2015-01-27 Introduction to Docker
2015-01-27 Introduction to Docker
 

ここにハマった!Dockerコンテナホスティング「Arukas」の裏側