Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
中小規模サービスの
Apacheチューニング
株式会社スピカ
國府田勲
Copyright © Spika Inc. 2016 all rights reserved.
2
自己紹介
國府田勲
株式会社スピカ
代表取締役
インフラエンジニア
数百万人 数千万人 100万人
http://qiita.com/kou
Copyright © Spika Inc. 2016 all rights reserved.
1. はじめに
– 前提となるシステム構成
2. チューニングの進め方
– 監視の実施
– ボトルネックの調査
– チューニングの実施
3. チュ...
Copyright © Spika Inc. 2016 all rights reserved.
1. はじめに
4
Copyright © Spika Inc. 2016 all rights reserved.
• 前提となるシステム構成
–OS
• Linux
–Apache
• バージョン 2.2
• 動作モード prefork MPM
–構成
• W...
Copyright © Spika Inc. 2016 all rights reserved.
2. チューニングの進め方
6
Copyright © Spika Inc. 2016 all rights reserved.
7
2. チューニングの進め方
Plan
Do
Check
Action
Plan
監視しボトルネック箇所を特定する
Do
チューニングを実施する...
Copyright © Spika Inc. 2016 all rights reserved.
• 監視の目的
– ベースラインの確立
– 性能劣化の検知
– ボトルネックの大まかな特定
– チューニング結果の確認
8
2. チューニングの進...
Copyright © Spika Inc. 2016 all rights reserved.
• 監視項目
– ネットワークの利用状況
– システムの利用状況
– プロセスの利用状況
– アプリケーションの応答・処理時間
9
2. チューニ...
Copyright © Spika Inc. 2016 all rights reserved.
• 死活監視とリソース監視の両方が統合されて
いる
• 保持されるデータ期間が比較的長いこと
• 日付・時間を指定して動的なグラフ作成がで
きるこ...
Copyright © Spika Inc. 2016 all rights reserved.
DIY型
SaaS型
11
2. チューニングの進め方 / 監視の実施
Copyright © Spika Inc. 2016 all rights reserved.
12
2. チューニングの進め方 / 監視の実施
Copyright © Spika Inc. 2016 all rights reserved.
• 各種ログのチェック
– エラーや設定上限値に関する情報が出力されていないか
確認する
• モニタリングコマンドの実行
– vmstat
– f...
Copyright © Spika Inc. 2016 all rights reserved.
14
2. チューニングの進め方 / ボトルネックの調査
vmstatのチェックポイント
[kouda@nb-app]~% vmstat 1
pr...
Copyright © Spika Inc. 2016 all rights reserved.
15
2. チューニングの進め方 / ボトルネックの調査
vmstatのチェックポイント
[kouda@nb-app]~% vmstat 1
pr...
Copyright © Spika Inc. 2016 all rights reserved.
16
2. チューニングの進め方 / ボトルネックの調査
vmstatのチェックポイント
[kouda@nb-app]~% vmstat 1
pr...
Copyright © Spika Inc. 2016 all rights reserved.
17
2. チューニングの進め方 / ボトルネックの調査
freeのチェックポイント
bash-4.2# free -m
total used f...
Copyright © Spika Inc. 2016 all rights reserved.
• mod_statusの確認
– Apacheに用意されているモニタリングモジュール
– Apacheのプロセスの稼働状況をモニタリングすること...
Copyright © Spika Inc. 2016 all rights reserved.
19
2. チューニングの進め方 / ボトルネックの調査
# mod_statusモジュールを有効にする
LoadModule status_mo...
Copyright © Spika Inc. 2016 all rights reserved.
20
2. チューニングの進め方 / ボトルネックの調査
Copyright © Spika Inc. 2016 all rights reserved.
21
2. チューニングの進め方 / ボトルネックの調査
チェックポイント
• Scoreboardがアルファベット埋め尽くされている
• 接続数...
Copyright © Spika Inc. 2016 all rights reserved.
22
2. チューニングの進め方 / チューニングの実施
Apacheチューニングとは効率を高めること
(+)
不足を補う
• CPU割当を増やす...
Copyright © Spika Inc. 2016 all rights reserved.
• 実施時の注意点
– 同時に複数箇所を変更しない
• 効果の切り分けができないため
– 変更情報は記録しておく
• 後日、統計値と突き合わせて分...
Copyright © Spika Inc. 2016 all rights reserved.
24
2. チューニングの進め方 / チューニングの実施
ボトルネックA対策前
ボトルネックA
ボトルネックB
ボトルネックA対策後
ボトルネック...
Copyright © Spika Inc. 2016 all rights reserved.
3. チューニング事例
25
Copyright © Spika Inc. 2016 all rights reserved.
26
3. チューニング事例
prefork MPMの概要
httpd親プロセス
httpd
子プロセス
httpd
子プロセス
httpd
子プ...
Copyright © Spika Inc. 2016 all rights reserved.
Timeout
説明
• リクエストを受け取ってから処理完了までの待機時
間
• デフォルトは300秒
チューニング方針
• 時間を短くする
• ...
Copyright © Spika Inc. 2016 all rights reserved.
KeepAlive
説明
• 1回のTCP接続で複数のHTTPリクエストを処理する
• デフォルトはOn
チューニング方針
• On/Offはサイ...
Copyright © Spika Inc. 2016 all rights reserved.
HostnameLookups
説明
• ログファイルに記録する際に接続元IPアドレスを逆
引きする
• デフォルトはOff
チューニング方針
•...
Copyright © Spika Inc. 2016 all rights reserved.
mod_deflate
説明
• HTTPで圧縮転送を行うモジュール
• 適用範囲を指定して利用する
チューニング方針
• テキストコンテンツに適...
Copyright © Spika Inc. 2016 all rights reserved.
31
3. チューニング事例 / 初期設定
# mod_deflateモジュールを有効にする
LoadModule deflate_module ...
Copyright © Spika Inc. 2016 all rights reserved.
不要モジュールの削除
説明
• Loadしないことで使用メモリが削減できる
チューニング方針
• 利用していないモジュールを削除する
• Load...
Copyright © Spika Inc. 2016 all rights reserved.
33
3. チューニング事例 / 初期設定
削除前
削除後
bash-4.2# ps axu | grep -e RSS -e httpd
USE...
Copyright © Spika Inc. 2016 all rights reserved.
MaxClients/ServerLimit
説明
• サーバプロセスの上限数を設定する
• プロセス数≒最大同時接続数
チューニング方針
• t...
Copyright © Spika Inc. 2016 all rights reserved.
MaxClients数の算出方法
• psコマンドでhttpdの1プロセスあたりのRSS(物
理メモリ使用量)を計測する
• 下記の数式を満たすよ...
Copyright © Spika Inc. 2016 all rights reserved.
36
3. チューニング事例 / 個別設定
bash-4.2# ps axu | grep -e RSS -e httpd
USER PID %C...
Copyright © Spika Inc. 2016 all rights reserved.
MinSpareServers/MaxSpareServers
説明
• 待機プロセス数を定義
• Min〜Maxの間となるようにプロセス数が維持...
Copyright © Spika Inc. 2016 all rights reserved.
MaxRequestsPerChild
説明
• 子プロセスが処理するリクエスト数
• この数値を超えると子プロセスが終了する
• デフォルト:1...
Copyright © Spika Inc. 2016 all rights reserved.
worker MPMに切り替える
説明
• 各子プロセスがマルチスレッドで処理するため消費
メモリが少なくなる
チューニング方針
• サードパーテ...
Copyright © Spika Inc. 2016 all rights reserved.
40
3. チューニング事例 / 個別設定
worker MPMの概要
httpd親プロセス
httpd
子プロセス
httpd
子プロセス
ht...
Copyright © Spika Inc. 2016 all rights reserved.
Apacheチューニングは万能ではありません
• スケールアップ
• スケールアウト
• アプリケーション側のチューニング
などの手段を検討しまし...
Copyright © Spika Inc. 2016 all rights reserved.
42
エンジニア募集中
エンジニア募集中!
あらゆるジャンルで募集してます
詳細はWantedlyで
https://www.wantedly.c...
Próxima SlideShare
Cargando en…5
×

中小規模サービスのApacheチューニング

4.816 visualizaciones

Publicado el

中小規模のWEBサービスをApacheで運用している方がはじめてApacheチューニングする際にみていただくと良いと思います。

Publicado en: Internet
  • Sé el primero en comentar

中小規模サービスのApacheチューニング

  1. 1. 中小規模サービスの Apacheチューニング 株式会社スピカ 國府田勲
  2. 2. Copyright © Spika Inc. 2016 all rights reserved. 2 自己紹介 國府田勲 株式会社スピカ 代表取締役 インフラエンジニア 数百万人 数千万人 100万人 http://qiita.com/kou
  3. 3. Copyright © Spika Inc. 2016 all rights reserved. 1. はじめに – 前提となるシステム構成 2. チューニングの進め方 – 監視の実施 – ボトルネックの調査 – チューニングの実施 3. チューニング事例 – 初期設定 – 個別設定 4. 質疑応答 3 アジェンダ
  4. 4. Copyright © Spika Inc. 2016 all rights reserved. 1. はじめに 4
  5. 5. Copyright © Spika Inc. 2016 all rights reserved. • 前提となるシステム構成 –OS • Linux –Apache • バージョン 2.2 • 動作モード prefork MPM –構成 • WEBサーバ1-2台程度 • データベース1台 5 1. はじめに WEBサーバ DBサーバ
  6. 6. Copyright © Spika Inc. 2016 all rights reserved. 2. チューニングの進め方 6
  7. 7. Copyright © Spika Inc. 2016 all rights reserved. 7 2. チューニングの進め方 Plan Do Check Action Plan 監視しボトルネック箇所を特定する Do チューニングを実施する Check 改善したか確認する Action 改善していなければ再度実施 チューニングもPDCAが重要
  8. 8. Copyright © Spika Inc. 2016 all rights reserved. • 監視の目的 – ベースラインの確立 – 性能劣化の検知 – ボトルネックの大まかな特定 – チューニング結果の確認 8 2. チューニングの進め方 / 監視の実施 定常的な監視を行う
  9. 9. Copyright © Spika Inc. 2016 all rights reserved. • 監視項目 – ネットワークの利用状況 – システムの利用状況 – プロセスの利用状況 – アプリケーションの応答・処理時間 9 2. チューニングの進め方 / 監視の実施
  10. 10. Copyright © Spika Inc. 2016 all rights reserved. • 死活監視とリソース監視の両方が統合されて いる • 保持されるデータ期間が比較的長いこと • 日付・時間を指定して動的なグラフ作成がで きること 10 2. チューニングの進め方 / 監視の実施 チューニングの観点からみた 監視ツール選択のポイント
  11. 11. Copyright © Spika Inc. 2016 all rights reserved. DIY型 SaaS型 11 2. チューニングの進め方 / 監視の実施
  12. 12. Copyright © Spika Inc. 2016 all rights reserved. 12 2. チューニングの進め方 / 監視の実施
  13. 13. Copyright © Spika Inc. 2016 all rights reserved. • 各種ログのチェック – エラーや設定上限値に関する情報が出力されていないか 確認する • モニタリングコマンドの実行 – vmstat – free – top など 13 2. チューニングの進め方 / ボトルネックの調査 監視ツールで大まかな傾向を把握し 詳細はサーバ上で確認する
  14. 14. Copyright © Spika Inc. 2016 all rights reserved. 14 2. チューニングの進め方 / ボトルネックの調査 vmstatのチェックポイント [kouda@nb-app]~% vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 9445900 284288 2531212 0 0 0 8 8 4 26 1 73 0 0 0 0 0 9445768 284288 2531220 0 0 0 0 1841 981 15 1 84 0 0 0 0 0 9445960 284288 2531228 0 0 0 92 2181 1197 29 1 71 0 0 0 0 0 9445532 284288 2531232 0 0 0 0 2020 979 24 0 76 0 0 2 0 0 9445672 284288 2531240 0 0 0 0 2365 1285 32 1 66 0 0 1 0 0 9445784 284288 2531244 0 0 0 0 852 469 8 0 92 0 0 1 0 0 9446068 284288 2531248 0 0 0 4 1424 798 11 1 88 0 0 procsチェックポイント • rがCPUコア数以上 • 何らかの理由で処理待ちが発生している • bが発生している • ディスクやネットワークのI/O待ちがある • ファイル書き込みや外部DBへの問い合わせ待ちがないか 確認
  15. 15. Copyright © Spika Inc. 2016 all rights reserved. 15 2. チューニングの進め方 / ボトルネックの調査 vmstatのチェックポイント [kouda@nb-app]~% vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 9445900 284288 2531212 0 0 0 8 8 4 26 1 73 0 0 0 0 0 9445768 284288 2531220 0 0 0 0 1841 981 15 1 84 0 0 0 0 0 9445960 284288 2531228 0 0 0 92 2181 1197 29 1 71 0 0 0 0 0 9445532 284288 2531232 0 0 0 0 2020 979 24 0 76 0 0 2 0 0 9445672 284288 2531240 0 0 0 0 2365 1285 32 1 66 0 0 1 0 0 9445784 284288 2531244 0 0 0 0 852 469 8 0 92 0 0 1 0 0 9446068 284288 2531248 0 0 0 4 1424 798 11 1 88 0 0 swapチェックポイント • si/soで数値が出力されている • swapが発生しているのでメモリ増設が必要
  16. 16. Copyright © Spika Inc. 2016 all rights reserved. 16 2. チューニングの進め方 / ボトルネックの調査 vmstatのチェックポイント [kouda@nb-app]~% vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 9445900 284288 2531212 0 0 0 8 8 4 26 1 73 0 0 0 0 0 9445768 284288 2531220 0 0 0 0 1841 981 15 1 84 0 0 0 0 0 9445960 284288 2531228 0 0 0 92 2181 1197 29 1 71 0 0 0 0 0 9445532 284288 2531232 0 0 0 0 2020 979 24 0 76 0 0 2 0 0 9445672 284288 2531240 0 0 0 0 2365 1285 32 1 66 0 0 1 0 0 9445784 284288 2531244 0 0 0 0 852 469 8 0 92 0 0 1 0 0 9446068 284288 2531248 0 0 0 4 1424 798 11 1 88 0 0 cpuチェックポイント • us+syの数値が100近い • CPUが性能限界 • waの数値が大きい • ディスクやネットワークでのI/O待ちが発生している
  17. 17. Copyright © Spika Inc. 2016 all rights reserved. 17 2. チューニングの進め方 / ボトルネックの調査 freeのチェックポイント bash-4.2# free -m total used free shared buffers cached Mem: 1997 1153 844 158 53 933 -/+ buffers/cache: 167 1830 Swap: 964 0 964 チェックポイント • buffers/cacheのfreeが0に近い • 利用できる残りのメモリ量が少ない
  18. 18. Copyright © Spika Inc. 2016 all rights reserved. • mod_statusの確認 – Apacheに用意されているモニタリングモジュール – Apacheのプロセスの稼働状況をモニタリングすることがで きます 18 2. チューニングの進め方 / ボトルネックの調査
  19. 19. Copyright © Spika Inc. 2016 all rights reserved. 19 2. チューニングの進め方 / ボトルネックの調査 # mod_statusモジュールを有効にする LoadModule status_module modules/mod_status.so # 詳細情報出力オプション(デフォルトOff) ExtendedStatus On # ハンドラー設定 <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from .your.office </Location> mod_status有効化
  20. 20. Copyright © Spika Inc. 2016 all rights reserved. 20 2. チューニングの進め方 / ボトルネックの調査
  21. 21. Copyright © Spika Inc. 2016 all rights reserved. 21 2. チューニングの進め方 / ボトルネックの調査 チェックポイント • Scoreboardがアルファベット埋め尽くされている • 接続数に対して子プロセス数が足りていない mod_statusのチェックポイント
  22. 22. Copyright © Spika Inc. 2016 all rights reserved. 22 2. チューニングの進め方 / チューニングの実施 Apacheチューニングとは効率を高めること (+) 不足を補う • CPU割当を増やす • メモリ割り当てを増やす (ー) 無駄を減らす • 使っていないものを省く • 重要度の低いことはやめ る 効率を高める方法
  23. 23. Copyright © Spika Inc. 2016 all rights reserved. • 実施時の注意点 – 同時に複数箇所を変更しない • 効果の切り分けができないため – 変更情報は記録しておく • 後日、統計値と突き合わせて分析する際に必要 – ボトルネックの原因は複合的に発生する • あるボトルネック箇所をクリアすると、他の部分がボト ルネックとなる 23 2. チューニングの進め方 / チューニングの実施
  24. 24. Copyright © Spika Inc. 2016 all rights reserved. 24 2. チューニングの進め方 / チューニングの実施 ボトルネックA対策前 ボトルネックA ボトルネックB ボトルネックA対策後 ボトルネックBが 顕在化する 目標を達成するまで根気よくやり続ける
  25. 25. Copyright © Spika Inc. 2016 all rights reserved. 3. チューニング事例 25
  26. 26. Copyright © Spika Inc. 2016 all rights reserved. 26 3. チューニング事例 prefork MPMの概要 httpd親プロセス httpd 子プロセス httpd 子プロセス httpd 子プロセス httpd 子プロセス 親プロセスが子プロセスを管理 1子プロセス1接続を処理
  27. 27. Copyright © Spika Inc. 2016 all rights reserved. Timeout 説明 • リクエストを受け取ってから処理完了までの待機時 間 • デフォルトは300秒 チューニング方針 • 時間を短くする • 60秒以下がオススメ 27 3. チューニング事例 / 初期設定
  28. 28. Copyright © Spika Inc. 2016 all rights reserved. KeepAlive 説明 • 1回のTCP接続で複数のHTTPリクエストを処理する • デフォルトはOn チューニング方針 • On/Offはサイト特性による • OnにするときにもKeepAliveTimeoutや MaxKeepAliveRequestsを設定する • AWSのELB配下の場合はOnにする 28 3. チューニング事例 / 初期設定
  29. 29. Copyright © Spika Inc. 2016 all rights reserved. HostnameLookups 説明 • ログファイルに記録する際に接続元IPアドレスを逆 引きする • デフォルトはOff チューニング方針 • Onにしない • DNSの逆引きは時間がかかる • どうしてもやりたい場合はlogresolveなどで後で行う 29 3. チューニング事例 / 初期設定
  30. 30. Copyright © Spika Inc. 2016 all rights reserved. mod_deflate 説明 • HTTPで圧縮転送を行うモジュール • 適用範囲を指定して利用する チューニング方針 • テキストコンテンツに適用する • 画像ファイルには適用しない • 圧縮率はサーバのCPUリソースと相談して決める 30 3. チューニング事例 / 初期設定
  31. 31. Copyright © Spika Inc. 2016 all rights reserved. 31 3. チューニング事例 / 初期設定 # mod_deflateモジュールを有効にする LoadModule deflate_module modules/mod_deflate.so # 圧縮レベル(低圧縮1〜高圧縮9) DeflateCompressionLevel 5 # 適用コンテンツを指定 AddOutputFilterByType DEFLATE text/html text/plain text/xml mod_deflate有効化
  32. 32. Copyright © Spika Inc. 2016 all rights reserved. 不要モジュールの削除 説明 • Loadしないことで使用メモリが削減できる チューニング方針 • 利用していないモジュールを削除する • LoadModule行をコメントアウト • ただし、自信がないときは削除しない 32 3. チューニング事例 / 初期設定
  33. 33. Copyright © Spika Inc. 2016 all rights reserved. 33 3. チューニング事例 / 初期設定 削除前 削除後 bash-4.2# ps axu | grep -e RSS -e httpd USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 9 0.0 0.3 121924 6148 ? Ss Nov21 0:02 /usr/sbin/httpd -k start apache 181 0.0 0.2 121924 5188 ? S 02:14 0:00 /usr/sbin/httpd -k start apache 182 0.0 0.2 121924 5148 ? S 02:14 0:00 /usr/sbin/httpd -k start apache 183 0.0 0.2 121924 5376 ? S 02:14 0:00 /usr/sbin/httpd -k start apache 184 0.0 0.2 121924 5248 ? S 02:14 0:00 /usr/sbin/httpd -k start bash-4.2# ps axu | grep -e RSS -e httpd USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 9 0.0 0.3 176400 6856 ? Ss Nov21 0:02 /usr/sbin/httpd -k start apache 10 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start apache 11 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start apache 12 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start apache 13 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start 6.1MBから5.2MB程度まで削減
  34. 34. Copyright © Spika Inc. 2016 all rights reserved. MaxClients/ServerLimit 説明 • サーバプロセスの上限数を設定する • プロセス数≒最大同時接続数 チューニング方針 • topやpsコマンドなどで使用メモリ量を調査し、大ま かに決定する • CPU、メモリ使用量をみながら微調整する 34 3. チューニング事例 / 個別設定
  35. 35. Copyright © Spika Inc. 2016 all rights reserved. MaxClients数の算出方法 • psコマンドでhttpdの1プロセスあたりのRSS(物 理メモリ使用量)を計測する • 下記の数式を満たすようにMaxClients数を調 整する 35 3. チューニング事例 / 個別設定 サーバの物理メモリ量>httpd1プロセスあたり のメモリ使用量×MaxClient数+他のプロセスが 利用するメモリ使用量
  36. 36. Copyright © Spika Inc. 2016 all rights reserved. 36 3. チューニング事例 / 個別設定 bash-4.2# ps axu | grep -e RSS -e httpd USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 9 0.0 0.3 176400 6856 ? Ss Nov21 0:02 /usr/sbin/httpd -k start apache 10 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start apache 11 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start apache 12 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start apache 13 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start RSSの数値を確認 KB単位
  37. 37. Copyright © Spika Inc. 2016 all rights reserved. MinSpareServers/MaxSpareServers 説明 • 待機プロセス数を定義 • Min〜Maxの間となるようにプロセス数が維持される チューニング方針 • WEB専用サーバであれば MinSpareServers=MaxSpareServers=MaxClientで良 い 37 3. チューニング事例 / 個別設定
  38. 38. Copyright © Spika Inc. 2016 all rights reserved. MaxRequestsPerChild 説明 • 子プロセスが処理するリクエスト数 • この数値を超えると子プロセスが終了する • デフォルト:10000 • 0にすると無制限となる チューニング方針 • 子プロセスがメモリ肥大化しない場合は0 • 制限値を設定しておくと安心 38 3. チューニング事例 / 個別設定
  39. 39. Copyright © Spika Inc. 2016 all rights reserved. worker MPMに切り替える 説明 • 各子プロセスがマルチスレッドで処理するため消費 メモリが少なくなる チューニング方針 • サードパーティーモジュールがスレッドセーフであれ ば採用 39 3. チューニング事例 / 個別設定
  40. 40. Copyright © Spika Inc. 2016 all rights reserved. 40 3. チューニング事例 / 個別設定 worker MPMの概要 httpd親プロセス httpd 子プロセス httpd 子プロセス httpd 子プロセス httpd 子プロセス 1子プロセスが複数接続を処理
  41. 41. Copyright © Spika Inc. 2016 all rights reserved. Apacheチューニングは万能ではありません • スケールアップ • スケールアウト • アプリケーション側のチューニング などの手段を検討しましょう 41 最後に どうしても目標が満たせない場合
  42. 42. Copyright © Spika Inc. 2016 all rights reserved. 42 エンジニア募集中 エンジニア募集中! あらゆるジャンルで募集してます 詳細はWantedlyで https://www.wantedly.com/companies/spika/info

×