路加福音书第24章

你好。我是CYBIRD工程师伊藤,是CYBIRD工程师圣诞节月历的第十一天。
第十天是asuky先生关于建立适用于云时代的自制服务器的故事。
我认为在家里放置服务器在冬天是很暖和的。但是电费可能会很高,而且还担心电源插座会不会过热! 😀

今天,我想从圣经的故事开始。

关于提供的话题

提到圣诞节,我们可以想到救世主降临前的期待,所以题目来源于圣经。

路加福音書第24章是描述基督复活的章节。
在四本福音书中(马太福音、马可福音、路加福音和约翰福音)中,它最真实地描绘了耶稣的复活。
例如,耶稣在死后三天复活,并被视为幽灵;由于改变了外貌,使得门徒无法认出他,导致他们生气或突然消失,再次出现,以及当他饿了时向门徒要鱼吃并津津有味地吃的场景,都被简洁地记述在书中。

每当我读到这个复活的部分,就会想起春日八郎唱的那首《死んだ筈だよお富さん》歌,但是春日八郎也去世已经20多年了,时间过得真的很快。

我也已经在1999年进入Cyberd工作已经15年了,时间过得真快。
在这个竞争激烈的IT行业,我这样平凡的人都能活下来真是幸运。这一定是因为我一直都在一线工作吧。

有很多困难的事情,例如,每当想起负载集中的网站开发与运营,就让我心生寒意。

起初,我沒有經驗,不知道該做些什麼,感到非常沮喪。然而,隨著時代的進步,我開始涉獵擴展規模、優化SQL性能、使用CDN和雲端等技術,武器愈發多樣,我也開始逐漸摸索出不同的解決策略,思考著如何更好地處理事情、用什麼方法來應對。

案件从网站转变为手机应用游戏,但无疑之处是,那次经验对我至关重要。

その中で、今日は、なんとかなった(なんとかした)けど死ぬかと思ったものを3つ、書こうと思います。

モバイルサイトの負荷対策で大変だったもの

三名

フレンド募集掲示板
1999年〜2001年

ニートから一念発起して中途入社、1年目に担当していた案件です。
Softbank、auのガラケー向けwebサービスが始まったのと同時に開始したサービスでした。

当初は会社の事務所に秋葉のドスパラで買ったタワー型PCをならべて配信していたのですが、
ケーブルに足を引っかけて配線を抜いて全サービスを止めたり、
地震の時には、サーバーが沢山ならんだ棚が倒れていないか、打ち合わせブースから全力で技術部にかけ戻って、棚を手で抑えたりしていました。
そういう運用には限界がありましたので、当時のCTOの真田さんの英断でとあるデータセンターに間借りして移管しました。

移管後、アクセスが増え、とんでもない勢いで増え続けました。
データセンター側で指定するサーバーを買うと、納期が1ヶ月ほど掛かりますので、恐ろしいことに、例のドスパラで買ったPCwebサーバーを次々と佐川急便で送り、データセンター内の床に置かせてもらって、バランサーに繋ぎ、スケールアウトしました。

そのうちDBサーバーとして使っていたうち1台のPCのパワーが足りなくなり、秋葉でPentium IIIのCPUを購入して差し替えを試みたのですが、ヒートシンクが大きすぎて筐体のフタが閉まらず、屈強な男性(南さん、お元気でしょうか・・)にヤスリで削っていただく間メンテナンスを延長する、という事もありました。

在不可安装机架且占地空间的塔式个人电脑上,竟然让我放置了。真是一个富裕的数据中心。尽管分段隔离得很彻底。

沢山の方々にご迷惑をかけました。
そしてのどかな時代だったと思います。

2位

年末特番の携帯特設サイト
2007年〜2009年

暮れの特番でした。
その節は大変お世話になりました。

每年我们都在运营这个特别节目的特设网站,但是在2008年的特别节目中,我们决定尝试新的连动方式,预计会有超出我们托管在数据中心的带宽上限的访问量。

使用CDN就可以了,但只能放置静态页面。
特设网站的目的是引导用户加入像Docomo这样的简易手机官方收费网站,
因此需要嵌入会员认证等动态页面。

于是在节目播放期间,我们更改了DNS,将网站所使用的子域名指向了CDN,然后在负载较低的时段,再次更改DNS将其恢复到原始数据中心。

据调查,有一些功能手机的终端参考的DNS缓存服务器存在特殊限制,忽视了我所描述的TTL,造成了一小时的缓存效果。这样一来,切换和返回之间将会产生最多一小时的额外开销。

因此有点冒险,但我们通过以下的”阅读”方式进行了切换。

番組が始まる1時間前にDNSを切り替える

5分〜1時間後、サイト全域がCDNに向く(a)

↓(負荷集中タイム)3000rps〜

番組の終わり1時間前にDNSをきりもどす。当然まだアクセス集中だが、番組後半だと視聴者は内容に集中するため、前半ほど来ないはず

5分〜1時間後、サイト全体が元のデータセンターに向く(b)

会員認証復活、動的コンテンツ配信

弊社役員の池田さんが担当をしていた案件でした。池田さんはもう長い付き合いですし、人情味あふれる良い人ですが、
「(a)はできるだけ遅らせて、(b)は1秒でも速くして欲しい」と特番中に背後で腕組みしてにらんでいたのが、こわかったですね!

排名第一

2012年至今的手机足球游戏应用程序

bfb.png
RequestCnt.png

12/12 50rps
12/13 80rps
12/14 180rps
12/15 300rps

在开始提供服务之前,我们花了一个多月的时间进行负载测试和修正,最初设定的保证线(300rps)是可以达到的。然而,几天后就达到了这个阈值,我们很快意识到最初的服务器配置完全不够用。

さらに、このゲーム内で行う「代表戦」という毎週末に行うイベントは、当初試合数の制限が無く、多くの試合をプレイして勝ち点を積み上げた人が勝つ、という仕様でした。
(我らがプロデューサー、あべPこと阿部さんも移動の時に圏外を避けて地下鉄を使わず山手線をつかって移動中に試合をしていたそうです。)
そのイベントが開始すると、さらにとんでもないアクセスが集中してしまったので、DBをAWSでいちばん良いやつを頼む事にしました。

・将RDS升级到”Quadruple Extra Large DB实例”
・分散处理到读取复制副本
・扩展 web 服务器
・升级 ElasticCache

これまで物理サーバーを買っては搬入していたのが嘘みたいです。
「クワドラブルエクストララージ」というのが何度も言えず、役員の方々に説明する時にかみまくったのを覚えています。
さらに開発スタッフにSlowQueryの見直しを頑張っていただき、なんとか年をこせました。
堀CEOのフェイスブックのウォールに「開発費をください」と書き込んだのもこの頃です。

その後、代表戦の試合数は上限を設けることになったので、それで時間稼ぎしている間に負荷試験では見抜けなかったSlowQueryの見直しや、DBの水平分割、Memcacheの分散、などのチューニングをいろいろと継続して行い、その後いろいろあって今に至ります。

その後も2年間、沢山のお客様や関係者の方々にご迷惑をかけました。
この場をかりてお詫びと、感謝をお伝えしたいと思います。
見捨てずにいただいてありがとうございます。
これからも精進しますのでおつきあいください。

長くなりましたが、この辺で終わりにします。
また機会がありましたら書こうと思います。

明天是我一直非常感谢的dr_paradi朋友的演讲。最近好像瘦了很多呢?我非常期待这个演讲!

bannerAds