タグ

ブックマーク / ameblo.jp/principia-ca (17)

  • 『Ameba OwndのSEOを支える技術 for AngularJS』

    こんにちは、サーバーサイドのエンジニアをやっているoinumeです。今回は昨年8月ぐらいから作っていたAmeba Owndというサービスで行ったSEO対策について紹介します。 AmebaOwndって?ブログ機能を備えたスタイリッシュなデザインのWebサイトを簡単に作成できるサービスです。 香川真司オフィシャルサイトスターバックス コーヒー オフィシャルブログなどのサイトがAmeba Owndを利用して作られています。 アーキテクチャユーザーさんがWebブラウザでアクセスするページについてはAngularJS + REST API(Nginx + Go)で作られています。一方でGooglebotなどのクローラーからのアクセスの場合は、受けたリクエストをNginxがPrerender CacheというシステムにProxyして、このPrerender CacheからHTMLを返すようにしています

    『Ameba OwndのSEOを支える技術 for AngularJS』
  • 『最速を究める! 2つのサーバ間で特盛りデータを30倍速で転送する方法』

    最速を究める! 2つのサーバ間で特盛りデータを30倍速で転送する方法 | サイバーエージェント 公式エンジニアブログ こんにちは. エンジニアの平野です. ふだんはプライベートクラウドのサーバハードウェアとストレージを担当しています. サーバのリプレイスや増設, 仮想サーバの移植などでテラバイトクラスのデータを2つのサーバ間で転送することがよくあります. こんなとき, 転送終了を待ちながら「あと何時間掛かるのかなー」とか「もっと速く転送終わらないかなー」なんて考えたことはありませんか? 今回は下記のようなシーンで活躍する, 特盛りデータを30倍高速に転送する方法をご紹介します. - サーバの交換でデータを移設したい - MySQLスレーブサーバの増設したい - 仮想サーバを別のホストに移植したい - 大量のファイルを別のサーバに移設したい - 大容量データをバックアップしたい ■ 環境を用

    『最速を究める! 2つのサーバ間で特盛りデータを30倍速で転送する方法』
  • 『かんたんパッケージマネージャDuo』

    みなさん、こんにちは。Ameba事業ゲーム部門の平木(Layzie) と申します。 最近はSteamで安いゲームを漁ってばかりの毎日です。このエンジニアブログでは初めて執筆になります。 さて、今回エンジニアブログで何を書こうか悩んだのですが、悩んだ結果Duoというパッケージマネージャの紹介をしようということになりました。 このDuo、GitHubのStar数は結構多いんですが、(2014/11現在2618Star)あまり紹介されてる記事とかが無いので紹介してみようと思った次第です。 Duoの特徴 昨今、フロントエンドで使えるパッケージマネージャは色々あると思います。厳密に言うとサーバ側のJavaScript実装ですがNode.jsのパッケージマネージャであるnpmにフロントのJavaScriptライブラリを登録して使うというパターンもありますし、新規プロジェクトの雛形を作ってくれるYe

    『かんたんパッケージマネージャDuo』
  • 『俺達のFabric 〜余計な仕事はFabricに任せよう〜』

    どうも、ガールフレンド(仮)で窓際エンジニアをやっていたり、ウチの姫さまがいちばんカワイイで窓際エンジニアをやっていたりする Wataru です。(PCmacです) 窓が近いとエアコン戦争が激しいわけですが、やっと秋も近づいてきて戦争も終わりが見えてきたのでしょうか?残暑お見舞い申し上げます。え?遅い? さて、今回はFabricの紹介をさせて頂きたいと思います。 もしあなたが千手観音のようにたくさんの手を持ち、サーバのオペレーションをできるとしたら、どうでしょう? そう、そんな神様のような事をできるのがFabricというツールです。 Fabricって何? まあまあ大げさなことを書きましたが、Fabricはコマンドラインのツールです。Pythonでできていて、SSHの作業を効率化してくれるものです。アプリケーションのデプロイや管理がすごく楽になるんです。 リモートやローカルのシェルコマンド

    『俺達のFabric 〜余計な仕事はFabricに任せよう〜』
  • 『MySQL初心者に贈るインデックスチューニングのポイントまとめ2014』

    サイバーエージェント公式ブログをご覧の皆さんこんばんは、インフラ&コアテク部の須藤(@strsk)です。普段はAmebaのソーシャルゲーム全般のインフラを見つつ、日語ラップの啓蒙をしながら弊社社員を素材にコラ画像をつくったりしています。好きなAAは麻呂です。 はい、というわけで今回はMySQLインデックスチューニングの基的な流れについてまとめてみました。 ソーシャルゲームは更新も参照もめちゃくちゃ多いです。数秒のレプリケーション遅延も致命的なので適切なテーブル、クエリとインデックス設計が重要です。(何でもそうですけど)インデックスが多くなると更新コストなどが懸念されますが、インデックスが正しく使われていないクエリを放置している方が悪です。そんなこんなで、割と例も偏ったりしてるかもしれませんがあしからず。 前提としてはInnoDBを想定しています。MyISAMはほとんど使っていません。

    『MySQL初心者に贈るインデックスチューニングのポイントまとめ2014』
  • おすすめオブジェクト指向練習方法 | サイバーエージェント 公式エンジニアブログ

    はじめに みなさんはじめまして。 アメーバ事業ゲーム部門でJavaエンジニアをやってる朝倉です。

    おすすめオブジェクト指向練習方法 | サイバーエージェント 公式エンジニアブログ
  • 『アメーバピグにおけるDB構成&対応記』

    2ヶ月前にインフルエンザとウィルス性胃腸炎でひどくダメージを受けた増田(@masudaK)です。アメーバピグは2009年2月に始まったサービスで、FLASH・Javaで作られています。そして、データストアにMySQLを用いてます。記事では、わたくしが2年ほど見続けているアメーバピグのDB環境について構成や、日々どのようにして問題と向き合っているかを紹介したいと思います。インフラ寄りの内容が多いため、アプリ寄りの話は弊社生沼の資料を御覧ください。 1. 構成と規模 1.1. 構成 まず構成ですが、読み書きはすべてマスターへ行うようにしています。そのため、スレーブには参照を向けず、ホットスタンバイとして使っています。バージョンに関しては2012年中旬までは5.0を使ってましたが、DC移転にあわせて5.5にあげました。ロック機能を用いたシャード構成をしてまして、2014年3月現在6シャードにな

    『アメーバピグにおけるDB構成&対応記』
  • 『Redisとハサミは使いよう』

    ロック機能のポイントはSETNXです。 指定したキーがなかった場合は値をセットして1を返し、 既に存在する場合は何もせず0が返ってきます。 つまり、1はロック成功、0は他からロック済みと判断することができます。 それでは実装に進みましょう。 まずロックのインタフェースを用意します。 public interface Lock { public void lock() throws TimeoutException; public void unlock(); } 最低限のロックとアンロックを用意しました。 続いて中身を実装します。 public class RedisLock implements Lock { private static final String LOCK_KEY_PREFIX = "lock:"; private static final int LOCK_EXPIR

    『Redisとハサミは使いよう』
  • 『Node.js Cluster+Socket.IO+Redisによるリアルタイム通知システム』

    Node.js Cluster+Socket.IO+Redisによるリアルタイム通知システム | サイバーエージェント 公式エンジニアブログ

    『Node.js Cluster+Socket.IO+Redisによるリアルタイム通知システム』
  • 『redisをsentinelとAliasIPを利用して冗長化』

    どうも初めまして2012年度入社の社内ニート予備軍editnukiです。 普段は引きこもって WebSocketで監視もリアルタイムに を書いた社内ニートさんの下でコミュニティサービスのインフラをやっております。 運用面以外ではrpmパッケージ作ったりしています。 さて、題ですがコミュニティサービスでもredisを利用したいという声が最近多くなりいくつかのサービスではredisを導入しているのですがマスターとなるredisが死ぬと更新系が一切できなくなるため、マスターが死んだ時はアプリの向き先をスレーブに変更しなければなりません。 今までのredisの構成としては下図の様な構成でした。 redisの2.6系がリリースされた時に「sentinel」というフェイルオーバーの機能が追加されました。 詳細は公式ドキュメントをご参照ください。 フェイルオーバーしたとしてもアプリ側にマスターが切り替

    『redisをsentinelとAliasIPを利用して冗長化』
  • 『出、出、出〜ameba画像配信奴〜!!』

    また、RAIDカードのパラメータはWritback、bs/512K、マウントパラメータはnoatime,nobarrier、queue_depthなども設定しています。 リニューアル構成 現在、上記の構成をリプレースしており 次期には分散ファイルシステムのOpenstack Swiftを使用した構成になります。 Swiftに関しては最近話題なので、ここでは割愛します。 ちなみにSwiftを採用した理由としては、こんな感じです。 ・分散できる(*´ω`*) ・RESTful(*´ω`*) ・pythonでかかれてる(*´ω`*) ・自動復旧機能がある(*´ω`*) ・コミュニティが活発(*´ω`*) ・試験的にもよかった(*´ω`*) まず分散できるという点。 Swiftはデフォルトで3つのレプリカを持つことができます。 また、zoneという概念をもっており、同じオブジェクトは複数のzone

    『出、出、出〜ameba画像配信奴〜!!』
  • 『varnishについて』

    みなさん、こんにちは。 2010年9月入社のUDAGAWAです。 今回は、reverse proxyのvarnishに関して記事を 書かせていただきます。 ■varnishとは 高性能HTTPアクセラレータです。 同じような機能を持ったsquidより10~20倍高速だということが 売りのひとつだそうです。 ■背景 Amebaの画像配信システムは、reverse proxyとして squid2.7 STABLEのCOSSを使ったシステムを利用しています。 squid2.7自体が古いバージョンなので、できればバージョンアップしたいところ なのですが、現状 squid3系からはcossが使用できないこともあり varnishを検証しておこうと考えたのがきっかけです。 ■テスト環境 CentOS5.5 Kernel 2.6.18-194.3.1.el5 Varnish 2.1.3 ■インストール

    『varnishについて』
  • 『Terminal Multiplexer(tmux)の紹介』

    みなさん、初めまして。 ネットビジネス総合事業部 CAMP事業部のインフラを担当している福坂と申します。 今回が初投稿となります。 弊社には、OSをはじめVim/Emacs/Eclipseなどを自分好みに徹底的にカスタマイズしている人も多いのですが、 投稿では私自身が作業効率を上げるために手放せないツールについて紹介したいと思います。 Terminal Multiplexer(tmux)の紹介 唐突ですが、「GNU Screen」を使ったことはありますか? sshでサーバに接続して作業するような場合、「GNU Screen」を活用されている方も多いのではないでしょうか。 今回はGNU Screenに似ていて、実用的(?)なツール『tmux』についてご紹介させていただきます。 GNU Screenをご存知の方は実際に使ってみた方が早いかもしれませんが、 『tmux(Terminal Mu

    『Terminal Multiplexer(tmux)の紹介』
  • 『MongoDBを用いたモバイルゲーム開発について』

    こんにちは。アメーバ事業部のブログDivでエンジニアをしている@ygenkiと申します。 今回は、2010年12月末から2011年3月にかけて開発したモバイルソーシャルゲーム(以下、モバイルゲーム)で導入したMongoDBの話をさせていただきたいと思います。 MongoDBについては、すでに当エンジニアブログで津田氏によって紹介されております。 ドキュメント指向データベース「MongoDB」 ■MongoDBを使った理由 今回のゲームは私にとって2つめのモバイルゲーム開発になりました。 前回の開発ではMySQLを使用しておりましたが、モバイルゲーム開発の以下の特徴からMongoDBを採用いたしました。 ○開発効率の向上 モバイルゲーム開発は短期間での開発が求められ、ゲームという特性上仕様変更が頻繁に行われます。スキーマレスであるMongoDBはデータ構造の変更に柔軟に対応する事ができると

    『MongoDBを用いたモバイルゲーム開発について』
  • 『大量のサーバを管理するために、IPMIのお話』

    ● OpenIPMIの導入IPMIは管理対象のサーバにドライバ等を入れておく必要はありませんが、OSからドライバ経由でIP設定などする場合は必要ですので、そういった場合は以下の手順でツールを入れてください。 yum install OpenIPMI.x86_64 yum install OpenIPMI-tools.x86_64 以下のデバイスファイルが作られていればハードウェアとして認識されています。 /dev/ipmi0 その場合は下記のように起動させてください。 /etc/init.d/ipmi start 認識されていない場合は以下のカーネルモジュールが読み込まれていないケースが多いと思います。手動でロードしてください。 /sbin/modprobe ipmi_si /sbin/modprobe ipmi_devintf 以下のようになっていればOKです。 # /sbin/lsmo

    『大量のサーバを管理するために、IPMIのお話』
  • 『AirMagnet を用いた無線LAN調査・改善』

    みなさん、はじめまして。 インターネット広告事業部のCAMP(CyberAgent Marketing Platform)システムGでインフラを担当しているIshikawaと申します。 今回はAirMagnet Survey Proを使用した無線LAN調査・改善について書かせていただきます。 ■無線LAN調査を始めた背景 無線LANに関して、不定期に寄せられる、社員からの「接続できない」や「速度が遅い」といった問い合わせについて、純粋に設定の問題か、システム的、潜在的な問題があるかを明確化するため、自社(自分たち)で無線LANの電波状態を調査できるようにしておきたい。 ■AIrMagnet Survey Pro とは 802.11a/b/g/n無線LAN環境を調査し無線LANの構築、設定をサポートするツール。 電波に関する情報を収集し信号強度や干渉状況をレポートに出力する。その結果をヒト

    『AirMagnet を用いた無線LAN調査・改善』
  • 『大規模サービスを支える仮想ネットワーク』

    エンジニアブログをご覧の皆さんこんにちは、インフラエンジニアのすとーです。 僕はインフラの中でもネットワークチームで長らく働いてきたため、 今回はAmebaのネットワークまわりのお話をさせていただこうかと思います。 そこで、「ネットワーク基盤の変遷の歴史」を一歩踏み込んで、 その時々でポイントになった(と思っている)技術を、簡単な設定例と共に紹介していきます。 前提として、弊社ではルーティングはスタティックに行っており、 機器についてはCiscoとH3Cを7:3の割合ぐらいで利用しています。(ざっくり) 其の一 「VRF」 VRF(Virtual Routing and Forwarding)とは、ひとつのルータ内で仮想的に 複数のルーター(ルーティングテーブル)を作れる機能です。(ざっくり) 主な目的は、初期アメーバの余剰なネットワークリソースを、 マルチレイヤスイッチの導入で解消すると

    『大規模サービスを支える仮想ネットワーク』
  • 1