nend・nex8のエンジニア・技術ブログ2018-09-12PythonによるSSP構築インターン!!こんにちは、8月27日~8月31日の1週間インターンに参加した、みしまです!!インターンの課題は、SSP構築でした。サーバ構築など研究以外の技術を学びたいと思い、今回のインターンに参加させて頂きました。インターンでの個人的な目的・目標を以下に示します。サーバ構築ができるようになるバックエンドの技術を学ぶ概要インターンの課題はSSP構築でした。構築に利用したWebサーバやフレームワークなどを以下に示します。FlaskFlaskは、Djangoより軽量で自由度が高い特徴があります。課題ではSDK-SSP、SSP-DSPのやり取りにはjsonファイルのみだったので軽量で扱いやすいFlaskを利用するのが良いと思いました。GunicornGunicornは、Python製のWSGIサーバの一種です。WSGIサーバはWebサーバとWebアプリケーションの間を最適化するためのものです。FlaskはPythonで構築を行うためGunicornが適しています。NginxNginxは、メモリ使用量の少ない高速なWebサーバです。並列処理で負荷分散が可能になっています。SDKからのアクセスが多くなった時に1つのサーバでは処理できません。そのため、Nginxでアクセスを複数のサーバで処理するために利用します。今回はメモリの関係上、2つのSSPを構築しました。システム全体を図に示します。作成したシステムのパフォーマンスを確かめるために「1秒で処理できるリクエスト数」を指標として、値が大きいほどパフォーマンスが良いことを示します。検証として以下の4通りの状態でパフォーマンスの変化を測りました。1Nginx・Gunicornなし2Gunicornなし3Nginx・Gunicornあり・プロセス4Nginx・Gunicornあり・スレッド1~3はSSPから複数DSPにRequestsを送る際の並列処理をプロセスで行い、4ではスレッドで行いました。結果を以下に示します。結果から並列処理をプロセスからスレッドに変更した際に大幅にパフォーマンスが向上しました。両方の違いとしてスレッドは1つのプロセスで並列処理を行います。プロセスは同じプロセスを生成して、並列処理を行います。そのため、スレッドはCPU使用率が低いためパフォーマンス向上に繋がりました。示したサーバ構築ができるようになりました。サーバ構築にはインタプリタ言語であるPythonを使用しました。これを並列処理が得意なコンパイラ言語にすることで、さらにパフォーマンス向上に繋がると考えられます。個人的にコンパイラ言語でサーバ構築をしようと思います。バックエンドの技術「Nginx」、「Gunicorn」は、研究では使わないため貴重な経験ができて良かったです。最後に、サーバサイドの技術を多く学ぶことができてすごく楽しいインターンとなりました。1週間、本当にありがとうございました。11:58Tweet関連記事2019-03-01ミニSSP作ってきたん02月18日〜02月22日までファンコミュニケーションズで1週間のイ...2019-02-27楽しいインターン初めましての方は初めまして、そうじゃない方はおはこんばんち...2018-09-06SSP構築インターンに参加してきた初めまして、森です。終えてどうも、僕です。え?知らない?それはそう。はじめまして倉林...2018-03-27インターンで圏論に目覚めた学生の話3月19日から1週間お世話になっているy_koizumiです。アドテクの会社でCTR予測をしてみた。Are青山のアドテク会社。アドネットワークやDSPを開発・運用。サーバを止めてみたよ。インターン:実業務体験編インターンでCTR予測をしましたSearchArchiveスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。