「InnoDB」を含む日記 RSS

はてなキーワード: InnoDBとは

2024-08-27

anond:20240827163420

Uberエンジニアは「PostgreSQLではアーキテクチャ制限ありすぎてUberシステムを支えきれない、MySQLInnoDBに変えたら全部解決した」

Postgresは性能面がネックなのよね

特にread heavyなシステムしんどい

ITのひどい記事をみんながブクマしてキツイ

以下の記事、内容がひどくて空いた口が塞がらなかったのだが、

はてブで)ブックマークして下手にホッテントリにでもなったら嫌だなと思いそっとブラウザのタブ閉じた。

が、しばらくすると残念ながらホッテントリ入りしてしまったので、はてブコメントを軽く書こうとしたが100文字に収まらなかったので増田にした。

 

技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL

 

まず、「特定条件下では MySQL は我々のプロダクトには不向き」を「MySQLを使うと会社は潰れる」なんて表現するのおかしいでしょ。

以下の記事から引用だが Uberエンジニアは「PostgreSQLではアーキテクチャ制限ありすぎてUberシステムを支えきれない、MySQLInnoDBに変えたら全部解決した」と主張している。

 

UberエンジニアがブログでPostgreSQLにダメ出し、PostgreSQLコミッター石井達夫氏に反論を聞く

 

RDMS(に限らずライブラリミドルウェア一般)の評価採用する開発プロダクトの要件ユースケース次第。

Not for me/us. を「これを使うと会社が潰れる」って……MySQL開発チームから名誉毀損で訴えられろと思う次第。

 

(サーバサイド開発の言語は)TypeScriptでいい。と言いつつ、結論はこれ

 

| TypeScriptで書いたサーバーサイドのコードの半分ぐらいも属人化している。なぜかメンバーキャッチアップが進まない。

 

???

 

こんな評価眼で開発力で文章力の人を「厭味が無くて楽しめた」だの「公開してくれてありがとうございます」とか言うブクマカにもそれにスターをつける人にも衝撃だよ。

ちゃんと読んでくれよ。それからブックマークするか判断してほしい。あーあ

---

追記

| 逆に、Uberエンジニアに対して、PostgreSQL開発チームから名誉毀損で訴えられろと思わないのは何故?

 

という言及への返信。

Uber に関しては。

自分たちが扱う規模のデータを捌ききれないという問題を、その原因が利用者Uber)側ではなくデータ永続化におけるPostgreSQLアーキテクチャが原因だと思われるということをきちんと測定して結論してるからかな?

さらUberはそのことを安易に「PostgreSQLを使うと会社が潰れる」というような煽り口調の一般化をせずに自社には不向きだったということをブログに載せているため議論の土台が開けていることが重要だと思う。

 

今回の問題記事はRLSとID採番というデータベースの根幹機能ではない付加機能自分たちプロダクトとミスマッチしているだけで一般化して罵ってるのが悪質だと思うんよなぁ

2021-07-09

anond:20210709214950

ヒエッ、本職きたよ。ヌボボ

ちなみに医学部にいった友人の何人がむしろテック系に流れてきているという事情がある。

そこんとこ詳しく。メタップスとか?

東大卒だったら、言葉を正しく使え!

Waf なんて書くな! WAF とかけ!

Pub/Sub とか

うっせーな。クラウドベンダー独自 API なんか使いたくねーんだよ。オラクルじゃあるまいし。

DCL、DMLDDLといった用語を知っていることをひけらかしたかったのかもしれない

まぁ、それは認める。でもさ、select や create とかのDML/DDLCRUD と同じだけと、DCL なんて権限を発行できるりょういきにトーシロを突っ込むわけにいかないだろ。何も考えずに GRANT TO なんてプロダクション環境で発行されて日には、権限消失されたら永遠にデータアクセスできなくなるかもよ?

現場に放り込まれても10年ぐらいかかる。というより、フロントからバックからレイヤからモバイルまでやることはもはや現実的ではない。

そりゃそうだけど、フロントエンドは移り変わりが激しいじゃないですか。ほんの数年前までは Flash と DoJa のアプリを作ることがフロントエンド開発者でしたよ?一方データベースや OS の方は、ここ三十年ぐらい UnixRDB鉄板だった書ないすか。低レイヤだっていうけど、IoT なんかで C言語開発者バリバリっすよ。例えば、クラウドフレアなんか CDN の再発明をしてますけど、サーバーラックを見る限りだと差がついているのは低レイヤ根本技術改善であって、私はそこにプロフェッショナル性を見出しますがね。

C言語ができないのに「おそらく QUIC か MQTT 」とか分かってない英単語文字を羅列するのは厨ニ病すぎます

わかっていないのはテメーの方だ。今日オーバーフロー問題を抱えている C/C++サーバーの開発をしようとするのが危険なのは承知しろよ。パフォーマンス必要とするなら Rust、または GC があるけど Go言語を使って実装すべきだろ。高学歴なのは結構だけどは、現実は見えてないのか?いい加減にしろ

片手間でできません。インフラエンジニアに触らせます

そうだね~。卓越したインフラエンジニアがすぐに手に入るなら、問題ないだろうけどさ、ベンチャーや硬直化した雇用形態我が国で有能なインフラエンジニアをすぐに採用できるかよ。何年前の知識で戦っているの?時代は DevOps なんですよ。必要とあらば、すぐ学んで、応用して、デプロイできるのに「インフラエンジニア採用から始める」なんて、ヨーロッパが衰退する理由もよくわかるよ。プププ。

NextSSRまで踏み込む結構

誰が NextSSR なんてするか!あれは SEO必要場合に限る。そもそも SSR なんて危険からまともなエンジニアだったらしないだろ。問題になってないだけで、本当のブラウザクローラが見える内容が違うなんてスパム認定されてもおかしくないんだ。クローラインデックスされるページで SPA をやろうとするやつはセンスないで。

MyISAMInnoDBに切り替えるなんてことしているところは無い。万にひとつあったとしても、大事で、それだけで数ヶ月のものなので、この付け焼き刃の知識の人が触る機会はない。

すいませんでした。本当にすいません。

Kafkaを触ったとかいているが、Kafkaはサーバで使ったのかな?どういう利用シーンかというと膨大なログ収集等で使うのだが(ただのNoSQLではない)、Zookkeeperで調停させて、topic数とか調整するんだけど、わかってます

ん? AWS SQS だとパフォーマンス問題があることしたいから Kafka を使いたいのよ。確かに Zookeeper のことは詳しくないよ。だけど、AWS MSK 使うんで。PaaS というもんがあるので、だめなん?ログ収集は GKE みたいに ログに出したら Fluentd収集してくれる時代になんでグチグチ言われないといけないの?

Redisちゃんと使えてる?pub/subとか分かってないと思う(普通に理解する必要あんまない)

ハア?インメモリデータベースに信頼するほどヤワじゃないから。Redis なんて飛んでなんぼ。だから Kafka のようなストレージに保存されるメッセージキューを利用したいの。

code deploy

これないと、CI の責務が大きくなるじゃん。ほんでもって、ArgoCD なんて Kubernetes で展開したら運用までしないといけないじゃん。メンドクサ。

アメリカ事情は知らないはずなので知らないことは書かないようにしましょう。

いや、J1ビザをとってアメリカ留学したことあるよ。あと、「世界もっとも強力な9のアルゴリズム」「CleanCoder」「戦うプログラマー」 の本に書いてあるじゃん馬鹿にしてるのか?

 なぜ、ヨーロッパ人が避けるかといと「やる気がないから」です。以上

SAPアマデウスITとか強いじゃん。うそつき

https://anond.hatelabo.jp/20210708205945

=====

東大卒ヨーロッパエンジニアやっている人から解説しよう。(ちなみに医学部防衛医大に補欠合格していた)

エンジニアになるより医者やっていたほうが(国内で頑張る分には)絶対いいと思う

ちなみに医学部にいった友人の何人がむしろテック系に流れてきているという事情がある。

厨ニが溢れているので、しっかり解説してあげます

おそらく、増田はたしかに昔からプログラミングをやっていたと思う。頭もいいんだろう。厨ニが溢れていて気持ちが悪い。

エンジニア厨ニ病マウント取っていいていい時代でもないです。明らかにマウント取りたくてウズウズしすぎて、大した知識がないのに、

表面的な知識を羅列しているところがあったので突っ込んでいく。

~~誰にやらせてもデータベースにクソなDCLを飛ばせないから。逆に、データベースを触れることができるプログラマーリスク責任が大きいから、給料が高いのだよ

ー>そんなことない。フロントも色々やらないといけないが、バックエンドに比べて経験年数がひくい人も流れ込んできているので、バックエンドの人に比べて

できる領域が狭いので給与が低い、またおそらくDCL、DMLDDLといった用語を知っていることをひけらかしたかったのかもしれないが、全くどうでもいいです。

~~君はソフトウェアエンジニアになりたいのだろ?世の中は分業で成り立っているのだから、全部やろうとするやつはアホだよ

=>全部できようとして、破綻しているのでブーメランですよ。あなたの想定している、こんなフルスタックは成り立たない。

現場に放り込まれても10年ぐらいかかる。というより、フロントからバックからレイヤからモバイルまでやることはもはや現実的ではない。

~~おそらく QUIC か MQTT あたりだろ?逆にいえば、それが実装できたら他社と差のつけられるプロダクトだったはずだ。つまり会社利益の源泉であった部分をみすみす実装できないようでは、そこらへんの専門卒以下だぞ。

=>QUICとかマイナープロトコルを話すよりはちょっと変化球のあるプロトコルでいけばWebsocketぐらに抑えておきましょう。低レイヤーの話はわたしもわかりませんが、C言語ができないのに「おそらく QUIC か MQTT 」とか分かってない英単語文字を羅列するのは厨ニ病すぎます

~~プログラマーに徹するつもりだろうが、ツヨツヨエンジニアデプロイした経験から逆算してコード設計・開発をやるのだぞ。そうなると、CDN, DNS, WAF, S3, ログの出し方、メトリックス、異常検知、アラートを把握する必要があるのだぞ。そういうのを知るためには、ポートフォリオAWS GCP Azure といったクラウド経験を書くべきだと思うのだが、なぜしない?

=>自分cloudfrontやWafを触ったことがありますが、かなりのインフラエンジニアにならないかぎり、ここ触りません。cdnは影響範囲が大きいし設定に時間が掛かったりします。片手間でできません。インフラエンジニアに触らせます。異常検知、アラートといったものは、実は結構時間がかかるので、強いかどうかではなく責務の分割からインフラに任せます。知らないことは知らないって書きましょう

本当に医学生ならここ数年の技術についてこの指摘ができる程詳しいわけないし少なくとも10年位は業界にいないとこういう感覚は身に付かない。 」

~~たしかおかしいよな。Kubernetes や Terraform を弄って、CIGitHub Actions、CD には AWS CodeDeploy を使って、ブログは Jekyll で静的サイトジェネレータを使いつつ、自前のサービスを立ち上げるために Rails, Next, React, PostgreSQL, Redis, Kafka, Elasticsearch, S3 の勉強をしつつ、スマホ環境のために KotlinSwift を触れているなんて変だよな。そういえば、Docker が来るまでは Vagrant環境をつくっていたのも忘れてたよ。あと Rust を今年に学ぶ言語にするなんて、受験生にあるまじき行為だよな。うん。

=>こんなにあれこれ、やっている時間はないでしょう。趣味サイト製作でやるにしても絶対できてない。kubernetesを使っただけで時間切れになる。Kafkaを触ったとかいているが、Kafkaはサーバで使ったのかな?どういう利用シーンかというと膨大なログ収集等で使うのだが(ただのNoSQLではない)、Zookkeeperで調停させて、topic数とか調整するんだけど、わかってます?ElasticSearchだけ書いてたらまぁあるかなと思うけど。Redisちゃんと使えてる?pub/subとか分かってないと思う(普通に理解する必要あんまない)

それでkotlinなんて触ってる時間なんて絶対にないし、Rustを更に付け焼き刃に付け焼き刃している時間なんてぜええええたいにない。やることが絞り込めてない。無意味マウント取りたいだけ。なんとなく書いているcode deployなんて、それだけで使いこなすのが大変なれべる。

ci/cdのうちciだけかたっているならわかるがcdとなるとかなり時間がかかる

~~ストレージエンジンが切り替わるときカオスな目にあったけどさ

=>MyISAMInnoDBに切り替えるなんてことしているところは無い。万にひとつあったとしても、大事で、それだけで数ヶ月のものなので、この付け焼き刃の知識の人が触る機会はない。

~~TypeScriptNext と React を書く。もちろん JavaScript は ES2020 あたりまでは説明可能

=>ES2015以降の差分は微々たるもので、どうでもいいです。ES2018ぐらいの現実的数字にしてたらばれなかったのにね。

NextSSRまで踏み込む結構フロントのことをキャッチアップするだけでかなり厳しいと思いますが、できているのかな?

=====

~~アメリカでも「テック系はハードから避ける」

ー>アメリカ事情は知らないはずなので知らないことは書かないようにしましょう。

ー>ヨーロッパでは白人様はHRとかマーケやってます移民にたよってますロシアウクライナインドパキスタンなど

  なぜ、ヨーロッパ人が避けるかといと「やる気がないから」です。以上

※ちなみに防衛医大の補欠合格東大に入る人なら大体受かると思う

2018-03-28

[]ブクマを集めたがホットエントリーになれなかったのは具体的にはどんなエントリー

はてなブックマークブックマーク数を多数集めたがホットエントリーに入らなかったエントリー

集計期間 2018年3月23日 2010分 〜 2018年3月27日 1時0分、3日間(77時間)

集計対象2018年3月23日 2010分以降ファーストブクマされたエントリーで新着エントリーに入ったエントリーに限った

最大到達ブックマークタイトルドメイン新着リスト滞留時間(時間)新着リスト最終時間ファーストブクマ時間
1174ActiveRecordデータ処理アンチパターン / active-record-anti-patterns // Speaker Deckspeakerdeck.com302018-03-27 01:002018-03-25 18:25
2136技術チュートリアルnoteで売る」っていう社会実験をしてみた結果、めっちゃくちゃ可能性を感じた話|Review of My Lifereview-of-my-life.blogspot.com292018-03-27 01:002018-03-25 19:57
3113私服OKIT企業でそこそこにちゃんとした格好をする方法 - ミネム珈琲ブログwww.minemura-coffee.com432018-03-26 11:502018-03-24 16:20
490発表資料: Elasticsearchによる 全文検索実装 - Islands in the byte streamgfx.hatenablog.com422018-03-26 12:002018-03-24 17:10
590正しく失敗しながら進むプロダクト開発/railsdm2018 // Speaker Deckspeakerdeck.com332018-03-27 01:002018-03-25 15:52
686Rails Developers Meetup 2018 で「MySQL/InnoDB の裏側」を発表しました - あらびき日記abicky.net342018-03-27 01:002018-03-25 14:46
77890%が間違えてる!?転職エージェントの選び方と効果的に使いこなす徹底マニュアルcareer-rules.com452018-03-26 08:002018-03-24 11:00
877厳選7種のチャートパターン活用したFXエントリー方法【事例付き】mugen-fx.com142018-03-27 01:002018-03-26 11:00
976suikahara漫画 : ★専門学校blog.livedoor.jp142018-03-27 01:002018-03-26 10:37
1074ウルティマ オンラインMMORPG元祖がもたらした、多数の発明とは? “ロード・ブリティッシュ”らが明かす開発秘話GDC 2018】 - ファミ通.comwww.famitsu.com432018-03-26 17:402018-03-24 21:43
1170小泉進次郎氏「平成政治史に残る大事件」森友文書改ざん朝日新聞デジタルwww.asahi.com302018-03-27 01:002018-03-25 18:27
1266うる星やつら同窓会 実は杉山佳寿子ラム役を狙っていた? - otoCotootocoto.jp242018-03-27 01:002018-03-26 00:35
1366Linuxカーネルソースの減量 // Speaker Deckspeakerdeck.com442018-03-26 11:502018-03-24 15:42
1464Realworld Domain Model on Rails // Speaker Deckspeakerdeck.com322018-03-27 01:002018-03-25 16:02
1564Microservices Maturity Model on Rails // Speaker Deckspeakerdeck.com422018-03-26 13:402018-03-24 19:25
1663僕が毎月「妻の布ナプキン」で手を血に染める理由鈴木 大介) | 現代ビジネス講談社(1/4)gendai.ismedia.jp462018-03-26 12:002018-03-24 13:31
1763牧野由依はなぜ復帰作で“声”をテーマにしたのか 本人が明かす、歌手活動休止真相と次の一歩 - Real Sound|リアルサウンドrealsound.jp462018-03-26 09:002018-03-24 10:05
1862デス様じゃねーか」「オーキド博士いるぞ!」 「ポプテピピック最終回さまざまな意見が寄せられる - ねとらぼnlab.itmedia.co.jp332018-03-27 01:002018-03-25 15:58
1961子ども能力遺伝子検査を受けてみたよ!ともちんの意外な能力!? - ともちんブログwww.tomochinchin.com152018-03-27 01:002018-03-26 09:09
2060バス因子が自分バス因子を脱するための方法 // Speaker Deckspeakerdeck.com322018-03-27 01:002018-03-25 16:01
2156ノンデザイナーのためのコンセプト & ロゴ作り実践講座 feat. savanna.io // Speaker Deckspeakerdeck.com442018-03-26 10:002018-03-24 13:34
2254インターネットでどうやってお金を稼ぐの?家で出来ちゃう最近副業」を16選まとめてみた。kanemotilevel.com352018-03-26 21:202018-03-25 10:10
2354銃器老舗レミントン経営破たんトランプ政権下で財務悪化 写真1枚 国際ニュースAFPBB Newswww.afpbb.com72018-03-27 01:002018-03-26 17:15
2454これからGolang開発を行うRubyistたちへ - Qiitaqiita.com552018-03-26 11:202018-03-24 03:39
2553個人のためのコードレビューサービスを開発しました。 - Qiitaqiita.com142018-03-27 01:002018-03-26 10:13
2653昭恵氏の影響「総理しか説明できない」 小泉進次郎氏:朝日新聞デジタルwww.asahi.com432018-03-26 11:502018-03-24 16:25
2753これ一本でフルカラー描写可能に!「CMYKペン」 | ギズモード・ジャパンwww.gizmodo.jp462018-03-26 05:502018-03-24 07:45
2852ソーシャルメディアを「タダ」で使うコスト松井博|notenote.mu432018-03-26 12:302018-03-24 17:07

27日1時以降にホットエントリー入りした可能性は残っている。ただし新着エントリー24時間以上いてからホットエントリーに上がれるケースは稀。

3ブックマーク集めても新着エントリーに入れなかったエントリーもあるはずだが、それは集計の対象外になっている。

ホットエントリーになれないエントリースライド共有サービスSpeaker Deckからエントリーが目立つ。Speaker Deck以外でもテック系のエントリーが目立つ。

関連: anond:20180328202931

2014-09-16

スクレイピングサイト作成

前に一度作成したエロサービスサイトリニューアルしてみた。

http://soapjou.com

ソープ嬢のスクレイピングサイト

前回の反省を踏まえて少し見やすくできたと思う。

前回の反省

広告クリック率考えるとPCの方がおまけになってしまうかもしれない。

詳細ページに回遊率を上げる仕組みを作って、逆にTOPページとかアクセスないしどうでもいいっぽい。


削除してしまった為再登録します。

Rails3 とTwitter Bootstrapで、オシャレなエロサイトをつくってみました。

http://anond.hatelabo.jp/20120708161051

に感化されてサイト作ってみた

bootstrap使ってもカッコよくできないよ?

プログラマー向けじゃないの?

http://searchjou.com

デザイナーって好きなサイト作れていいよなー。

デザイン

bootstrap3 の公式サイトを見ながら

CSS,Components,Javascriptタグにあるサンプルを全部作ってみた

デザインわからん。一度諦めた。

クローラー

一番経験のあるPHPを選択。

最初正規表現でガリガリ書いていたのだが

まりの面倒臭さに一度諦めた。

その後色々調べたら「simple_html_dom.php」の存在を知る。

スクレイピング作業が一瞬にして終わった。

サーバー

Root欲しいのでVPSを探す。

GMOアダルトOKっぽい、安いので決定。

postfix + dovecotメールサーバー構築

メールの設定がどうしてもできない。

仕事で何度も設定しているのに意味不明

エラーも出ていない。

一度諦めた。

しかし、サーバー代払ったので再度トライ

info@xxxx.com

メールアドレス作成していたのだが

システムエイリアスで「info」を使用していたため

メール転送出来ずに受信できなかったもよう。

危ない名前は使わないのは基本だよね。

/etc/aliases は確認しましょう。

データベース

Mysqlを使用、一応クエリキャッシュ設定

MyIsamだとインデックスに容量制限があるのでInnoDB使用

表示

php + Smarty

キャッシュSmarty実装

プログラマーからデザイン出来ないんじゃなくて

自分センスがないのが原因な事が判明。

出来あがったサイト

川崎ソープ嬢を検索 - サーチ嬢

http://searchjou.com

数1000件のデータなのでキャッシュインデックスいらなかったかも。

プログラマデザインやるのと

デザイナープログラムやるのって後者の方が敷居は高いとは思う。

でもプログラム勉強できるけどデザインってセンスがなきゃどうしようもない。

おわり

もう少しデザイン頑張ってみる。

デザインの教本読んでみると

最初に「Adobe」ありき。で話が始まるけど敷居高くない?

Adobeクラウドの月5000円でも高いよー。

2013-12-10

2013年アドベントカレンダーも中盤戦。話題の記事まとめ

ホッテントリ入りした記事

2013-12-01: http://b.hatena.ne.jp/hotentry/20131201
2013-12-02: http://b.hatena.ne.jp/hotentry/20131202
2013-12-03: http://b.hatena.ne.jp/hotentry/20131203
2013-12-04: http://b.hatena.ne.jp/hotentry/20131204

2013-12-05: http://b.hatena.ne.jp/hotentry/20131205
2013-12-06: http://b.hatena.ne.jp/hotentry/20131206
2013-12-07: http://b.hatena.ne.jp/hotentry/20131207
2013-12-08: http://b.hatena.ne.jp/hotentry/20131208
2013-12-09: http://b.hatena.ne.jp/hotentry/20131209

ホットなアドベントカレンダー

エントリ: 熱いアドベントカレンダー
エントリ: 注目のアドベントカレンダー
エントリ: 話題のアドベントカレンダー

ホットなウェブサービス

2013-10-28

スクレイピングサイト作成

削除してしまった為再登録します。

Rails3 とTwitter Bootstrapで、オシャレなエロサイトをつくってみました。

http://anond.hatelabo.jp/20120708161051


に感化されてサイト作ってみた

bootstrap使ってもカッコよくできないよ?

プログラマー向けじゃないの?

http://searchjou.com

デザイナーって好きなサイト作れていいよなー。

デザイン

bootstrap3 の公式サイトを見ながら

CSS,Components,Javascriptタグにあるサンプルを全部作ってみた

デザインわからん。一度諦めた。

クローラー

一番経験のあるPHPを選択。

最初正規表現でガリガリ書いていたのだが

まりの面倒臭さに一度諦めた。

その後色々調べたら「simple_html_dom.php」の存在を知る。

スクレイピング作業が一瞬にして終わった。

サーバー

Root欲しいのでVPSを探す。

GMOアダルトOKっぽい、安いので決定。

postfix + dovecotメールサーバー構築

メールの設定がどうしてもできない。

仕事で何度も設定しているのに意味不明

エラーも出ていない。

一度諦めた。

しかし、サーバー代払ったので再度トライ

info@xxxx.com

メールアドレス作成していたのだが

システムエイリアスで「info」を使用していたため

メール転送出来ずに受信できなかったもよう。

危ない名前は使わないのは基本だよね。

/etc/aliases は確認しましょう。

データベース

Mysqlを使用、一応クエリキャッシュ設定

MyIsamだとインデックスに容量制限があるのでInnoDB使用

表示

php + Smarty

キャッシュSmartyで実装

プログラマーからデザイン出来ないんじゃなくて

自分センスがないのが原因な事が判明。

出来あがったサイト

川崎ソープ嬢を検索 - サーチ嬢

http://searchjou.com


数1000件のデータなのでキャッシュインデックスいらなかったかも。

プログラマデザインやるのと

デザイナープログラムやるのって後者の方が敷居は高いとは思う。

でもプログラム勉強できるけどデザインってセンスがなきゃどうしようもない。

おわり

もう少しデザイン頑張ってみる。

デザインの教本読んでみると

最初に「Adobe」ありき。で話が始まるけど敷居高くない?

Adobeクラウドの月5000円でも高いよー。

2013-03-13

サーバ初心者Webサービスを公開するうえで考えたこと

だって自作Webサービス公開しました

http://www.radiosonde.net/

これまで他の人に用意してもらったサーバ自分プログラムを動かしたことはありましたが

自分自身で一からサーバをセットアップしたことはほとんどなかったので、いろいろとハマりました。

作業を進める上で困ったり考えたりしたことを書いていきます

ちなみにサーバ自体はさくらのクラウドOSにはCentOSを使用しているので、それ前提のお話になります

SSHファイヤーウォールの設定

最初サーバを起動してから速やかにSSHファイヤーウォールの設定を変更しました。

はてブなんかでも定期的に話題になっているのでおなじみですね。

SSHポートを22以外の別のポートに変更する

rootによるリモートログインを禁止する

パスワードログインを禁止し、鍵認証有効にする

・念のためrootパスワードを潰しておく

SSHHTTP(S)など、どうしても公開しなければならないポート以外は遮断する

SSHポートについてIP制限が行えるならば尚良い

さらっと書きましたが、設定をミスって自分自身もログインできなくなり、何度かOSの再インストールを繰り返しています

から気付いた事ですが、さくらのクラウドではクラウド管理画面のリモートスクリーン経由でローカルログインできるので

別にOSインストールしなくてもiptablesの設定を変更できたんですよね...

逆に言うといくらファイヤーウォールとSSHを設定しても管理画面にパスワードログイン環境が残ってしまうので

パスワード管理には引き続きしっかり気を使う必要がある。ということでもあります


Webアプリの動作が重い

httpd,php,mySQL,memcachedなど必要サービスインストール、設定し

作成したWebアプリプログラムを乗せて動かしてみました。が、動作が重いような...

開発環境ではさくさく動いていたのに、本番環境ではどのページ遷移ももっさりしています

abで計測してみたところ、開発環境のおよそ2分の1のスコアとなってしまいました。

開発環境が仮想2コアのメモリ1Gだったのに対し、本番環境が仮想1コアのメモリ2G

CPUの性能について半減しているのでそのせいかな、と思いつつ設定を見なおしていたところ

特に使っていないと思われたipv6を停止した途端にパフォーマンス改善されました。

ページ遷移に伴うもっさり感が解消され、abの計測結果も開発環境と遜色ない結果が出ています

デフォルト有効になっていたipv6の影響により余計な処理が走っていたのかもしれません。


サーバから送信したメール迷惑メールと判定される

パフォーマンス改善に喜んだのも束の間、会員登録などの処理でWebアプリからメールを送信したところ、Gmail宛のメールがことごとく迷惑メールと判定されるという事案が発生。

spfの設定を行なうメールの内容について吟味するなどの回避策を試してみましたが一向に改善されません。

試しにHotMailexciteメールアカウントに送信したところ、そちらではそもそもメールを受け付けてもらえずエラーコードが返って来る始末。

困り果てていたところ、エラーの内容からサーバIPがspamhousにスパム送信元として登録されていることが判明しました。

postfixホスト名の設定がデフォルトで「localhost.localdomain」などとなっており、それをそのまま使っていたためにGmailスパム送信元として通報してしまったようです。

設定を修正し、spamhousに解除依頼を提出。事なきを得ました。


KVSの変更

クラウドを利用すれば、サーバを停止することなく簡単な設定でスケールできるようになる。

と、自分勝手に思い込んでいたせいなのですが、消えては困るデータの一部をmemcachedに保存する実装を行なっていました。

実際のところさくらのクラウドではサーバを完全に停止しなければプラン変更を実施できないし

そもそもサーバが落ちたらどうするんだよ。ということで、急遽KVSを変更する必要に迫られました。

速度の低下が気にかかったため、いくつかの候補を実際に動かし

phpスクリプトから1万件のデータ読み書きを行うという形でmemcached比較してみたところ次のような結果に。

サービス1万件書込1万件読込
memcached 2.55秒 2.30秒
handlersocket 21.23 2.71秒
InnoDB20.23 5.10
kyotoTycoon 8.22秒 7.72秒

さすがに読み書きそれぞれmemcachedが最速ですが、読み出しについてはhandlersocketも負けていません。mySQLから普通にSELECTしてもmemcachedの2倍程度の時間しかからないという結果が意外でした。

しかしながら書き込みのほうではhandlersocketもmemcached10倍近くの時間がかかっており、少々速度的な影響が気になってきますmemcachedの倍のパフォーマンスを記録したという記事を見たことがあるので、設定、チューニングについて生かしきれていない部分があるのかもしれないとも思いましたが、知識が不足しているところで無理をすると問題が発生した時に対処できないと考え、候補から除外することとしました。

結局、今回の用途では読み込み処理より書き込み処理のほうが圧倒的に多いことも考慮し、kyotoTycoonを採用しました。実際の利用箇所に組み込んでabで計測してみたところ、だいたい30%程度のパフォーマンス低下にとどまっており、これなら許容範囲かと考えています

mySQLレプリケーションが止まる

実行系と参照系に分ける形でmySQLレプリケーションを行なっていたのですが、度々レプリケーションが停止する現象が発生しました。

一部のテーブルについて肥大する可能性が考えられたため、参照系に接続するプログラムで使わないテーブルをレプリケーションから除外していたのが原因です。

例えばtabelAをレプリケーションし、tableXをレプリケーションしないという設定にしたうえで

実行系でINSERT INTO `tableA` SELECT `value` FROM `tableX`などといったクエリを発行すると、参照系にtableXが無いためエラーが発生して止まってしまます

レプリケーションするテーブルを限定する場合プログラム側でも注意を払わないと危険です。当たり前ですが。

サーバ監視にmonitを使用

監視といえばcactinagios定番なのかもしれませんが、設定が複雑そうで尻込みし、monitを使用することにしました。

簡単な設定でloadaverageやメモリHDDの使用量をチェックできるほか

httpdmysqldなどといったサービスプロセス監視し、もし落ちていたら自動で起動してくれるので助かります

Webアプリの秘匿

パスワード保護を行うとしても、サイト全体の管理画面など自分しか使わないプログラムWeb晒しておきたくない。

というわけで、一部のWebアプリを秘匿する設定を行いました。

管理画面のWebアプリを9999番など閉じているポートに設置した上で、SSHを利用したトンネルを掘ります。といっても

ssh -t -L 9999:localhost:9999 user@xxx.xxx.xxx.xxx

上記のようなコマンド管理画面のWebアプリを置いたサーバログインするだけです。

ブラウザアドレス欄にhttp://localhost:9999/と打ち込めば、接続が開いている間のみアクセス可能になる感じですね。

サーバログインできる人でなければ実行できないことなので、気分的にある程度安心します。

SSHログバックアップ

自動ログバックアップを行いたいと考えたのですが、パスワード無しの鍵でログインして転送する形には抵抗がありました。

調べてみたところ、authorized_keysに公開鍵を記入する際の設定で、その鍵でできることを制限するという手段があるようでした。

具体的には、authorized_keysに

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="some commands" ssh-rsa AAAAB3NzaC1yc2EAAA...

などとして公開鍵を追加しておくと、その鍵でログインした直後にcommand=""の部分で設定したコマンドを実行して接続を終了する挙動となり

接続フォワードもできなくなるため、パスワード無しでも鍵の流出に関するリスクを最低限に留めることができるというわけです。

commandの実行結果は標準出力から受け取ることができるので、例えばcommand=""の部分にファイルの内容を表示する処理を設定していたとすれば

ssh -i .ssh/no_password_key user@xxx.xxx.xxx.xxx > /path/to/file

などとしてログインの結果をファイルに書き込むだけで、簡単にファイル転送が実現できます


まとめ

他にも大小さまざまな問題に行きあたりましたが、忘れてしまったor書ききれないのでここまでとします。

たった1つのサイトを公開するにしても問題というのは尽きないものだと実感させられました。

今は基本的な情報だけでなく、ちょっと突っ込んだ内容でも検索で解決していけるので嬉しいですね。手がかりを残してくれた先達に感謝することしきりです。

現状ではひとまずの見切りを付けて公開していますが、より堅牢で負荷に強いサーバとなるよう、随時チューニングを行なっていこうと考えています

最後

作ったWebサービスについて少し書きます

サイト名は「Radiosonde」

個人サイトや小規模な商業サイトなどプロモーションにあまりお金をかけられないサイトを主な対象とした、無料で出稿できる広告ネットワークサービスです。

既存サービスで近いのは「あわせて読みたい」や「zenback」、各社提供RSS相互リンクサービスなどになるでしょうか。

広告としての体裁がある分、それらより若干積極的な性質になるのではと考えています

現時点ではサービス本体のプロモーションに苦心するという本末転倒のものの状況でありますが、もしよろしければ見ていただけると嬉しいです。

2012-09-26

【2012超まとめ】確実にWEBサービスを作りたい人へ【中編】

前編はこちら

http://anond.hatelabo.jp/20120926165407

ステップ6:MySQL(10時間)

会員情報や文章などのコンテンツを保存しておくデータべース、MySQLを調べます

データベースは他にもPostgreSQLSQLiteなどが有名ですが、やはり王道勉強します。

MySQLCakePHPや、ステップ4のWordPress他、よく使いますので把握しておきましょう。

基礎からのMySQ

http://www.amazon.co.jp/%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AEMySQL-%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AE%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E7%A8%AE%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E8%A5%BF%E6%B2%A2-%E5%A4%A2%E8%B7%AF/dp/4797344385/ref=sr_1_1?s=books&ie=UTF8&qid=1348063628&sr=1-1

今はまだ関係ありませんが、余裕があればこれも読むといいです。

MySQLによるタフなサイトの作り方

http://www.amazon.co.jp/MySQL%E3%81%AB%E3%82%88%E3%82%8B%E3%82%BF%E3%83%95%E3%81%AA%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9-%E4%BD%90%E8%97%A4-%E7%9C%9F%E4%BA%BA/dp/4797353937/ref=sr_1_1?s=books&ie=UTF8&qid=1348063787&sr=1-1

操作コマンドラインを覚えていく方向で、始めはブラウザ操作できるphpMyAdminを使ってOKです。

ストレージエンジンはとりあえずInnoDBで。

ステップ7:休憩(10時間)

技術調査はこの位にして、これからは実際にWebサイトを作っていきます

ここまで来ると何となくWebサイトがどんな仕組みで動いてるかが分かってくるので、

ステップ0でイメージした作りたいサイトがどんな技術で実現出来るか調べます

冒頭の「完全に一致」の中の人のようにスクレイピングしたり、

TwitterGoogleYahooAmazonなどのAPIを使ってサテライトサイトを作っても良いと思います

が、高度な事をするとはまりやすいので、ある程度やって無理だったらあきらめて次回にまわしましょう。

まずは何か一つ完成させる事のほうが大切です。

それから開発効率UPのため、Chromeプラグインを入れましょう。

説明はそれぞれのリンク先を見て下さい。

CSSViewer

https://chrome.google.com/webstore/detail/ggfgijbpiheegefliciemofobhmofgce

Firebug Lite for Google Chrome

https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench

View Selection Source

https://chrome.google.com/webstore/detail/fbhgckgfljgjkkfngcoeajbgndkeoaaj

Pendule

https://chrome.google.com/webstore/detail/gbkffbkamcejhkcaocmkdeiiccpmjfdi

BuiltWith Technology Profiler

https://chrome.google.com/webstore/detail/dapjbgnjinbpoindlpdmhochffioedbn

iPSim

https://chrome.google.com/webstore/detail/gcligifbhamdimemnemmlkffkpmflehh

Color Picker

https://chrome.google.com/webstore/detail/ohcpnigalekghcmgcdcenkpelffpdolg

CSS Tester

https://chrome.google.com/webstore/detail/pjncppaiejjkcjlcgegcbmhgkflhenfp

MeasureIt

https://chrome.google.com/webstore/detail/pokhcahijjfkdccinalifdifljglhclm

あとはFireFoxにはFireBugデバッグ定番らしいです。

https://addons.mozilla.org/ja/firefox/addon/firebug/

それから、空いた時間無料プログラミング動画サイトドットインストール」を見ておくと

ここまでの知識が定着すると思います

ドットインストール

http://dotinstall.com/

ステップ8:ドメインを取る(10時間)

ステップ7で作りたいサイトイメージ出来てきたら、ドメインを取りましょう。

サーバーさくら場合ドメインさくらで取得すると楽ですが、もっと安いところもあります

希望するドメインが空いているか調べて取得、空いていなければ他のドメインを考えます

さくらドメイン取得

http://www.sakura.ne.jp/domain/

ムームードメイン

http://muumuu-domain.com/

バリュードメイン

http://www.value-domain.com/

定番の.com、.net、.orgは誰が見ても親しみがあるし安いので、できればこの3種類のどれかにしたい所ですが、

一般的な言葉はほぼ埋まっているので、その場合.jp等にしても良いでしょう。

日本語ドメイン(www.日本.netみたいな)は流行っていないですが、

自分サイト名が「○○○.com」のような名前場合は一緒に取得して、アルファベットドメインリダイレクトしましょう。

ChromeユーザーURL欄で検索する時、「○○○.com」のように後ろに.xxxが付いているとそのURLに直接アクセスしてしまい、

 検索にならないので、アクセス機会損失を防ぐため。)

僕はバリュードメインで取得して、サーバーさくらレンタルサーバーしました。

その際の親切な設定方法の解説はこちら。

VALUE DOMAIN で取得したドメインさくらレンタルサーバで使う

http://nekohacks.com/wordpress/domain/value-domain/

ステップ9:サイトの基礎部分の開発(100時間)

実際にサイトを開発していきます

どんなサイトで、どんな機能があって、どんなページがあるかノートに書き出して行きます

初めにデータベースのテーブルやレコード構造を考えて、

次にメインとなる機能プログラムして行きます

サイトの基本的なレイアウトCSSで組みながら、デザインイメージもしておきましょう。

ここではデザインはまだやりません。

先にデザインを作っても、プログラムを進めていく過程で変更がでたりする為です。

(でもあんまり後回しにしても、見た目がチープなせいでモチベーションが下がったりするので、次のステップでやります

あと、ここで気をつけたいのは、あくまでメインとなる機能の開発を優先することです。

「あったほうが良いな」程度の機能は後回しにします。

外堀から埋めていくとそこでモチベーションが尽きてしまったり、

メインの機能を実装してみたら外堀の修正が発生してしまったりするためです。

始めると分からない事がどんどん出てくると思うので、本を読み返したりGoogle先生検索しながら進めて行きます

なかなか進まなくて検索8割、コーディング2割くらいの進め方になると思いますが、それでOKです。

長い暗闇を抜けると、少しづつ視界が開けてきます

メインの機能がなんとなく出来たら次に進みます

ステップ10:サイトデザイン(30時間)

メインの機能何となくできたら、デザインをやります

鉛筆殴り書きで良いので紙に描いてみます

いきなり慣れないCGソフト上でデザインすると、

いじっているだけでモチベーションを使い切ってしまったりするので危険です。

CGソフトは色々ありますが、おすすめフォトショ(Photoshop)です。

WebサイトデザインFireworksなども有名ですが、学習コストがかかるので、

Webサイトにもそれ以外にも使えて一番つぶしが効くフォトショップでOKです。

今年からクラウド契約が始まり、今なら1ヶ月8000円、年間契約なら1ヶ月5000円で

Adobeソフトが全部使い放題です。

Adobe Creative Cloud

http://www.adobe.com/jp/products/creativecloud.html

お勧めの本はこれ

10日でおぼえるPhotoshop入門教室

http://www.amazon.co.jp/10%E6%97%A5%E3%81%A7%E3%81%8A%E3%81%BC%E3%81%88%E3%82%8BPhotoshop%E5%85%A5%E9%96%80%E6%95%99%E5%AE%A4-CS2-CS%E5%AF%BE%E5%BF%9C-%E4%BA%95%E4%B8%8A-%E3%81%AE%E3%81%8D%E3%81%82/dp/4798111953/ref=sr_1_1?s=books&ie=UTF8&qid=1348498454&sr=1-1

基本操作を覚えたらWeb情報を収集します。

PHOTOSHOP VIPさんが親切です

http://photoshopvip.net/

から全部自分で作らなくても、素材サイトからダウンロードして加工するなどして手間を省きます

PCスマホ携帯(ガラケー)全部に対応するのは大変なので、

初めはそのサービスを最も使うだろうと思われるどれか1つに絞ります

初めに作る際のお勧めPCサイトです。

PCサイトならスマホでも最低限アクセスはできるし、携帯は縮小傾向なので優先度低、

スマホ画面サイズがまちまちでタブレット端末が目下発展中、AndroidブラウザがたくさんあるがChromeに統一されていくかも、

混沌とした状況なのでお勧めしません。

複数デバイスへの対応リリース後でも遅くありませんが、

対応する際はCSSを切り替えてレスポンシブレイアウトにするのがお勧めです。

その他、困ったらTwitter社が公開しているブートストラップを使うのもお勧めです。

ブートストラップcssフレームワークで、簡単にシャレ乙なデザインに仕上がります

超便利!Twitter BootstrapでさくさくWeb開発

http://blog.asial.co.jp/887

どうしても自分イケてるデザインが出来ないと思ったら、友だちに頼んだり、SNSコミュで募集したり、

デザイン系の大学専門学校掲示板にビラを貼らせてもらったりしましょう。制作費が出せればランサーズで募ってもいいかも。

Lancers - 仕事フリーランス発注できるクラウドソーシングサービス

http://www.lancers.jp/

僕はたまたまフォトショップの使用経験があったので、ここにかけた時間は30時間ではなく5時間程です(トータル275時間で開発)。

後編はこちら

http://anond.hatelabo.jp/20120926165920

2012-03-18

WEBサイト発注してみた。

アニメゲームキャラクター情報をまとめてるサイトがないから作りたいなぁって

思ってたんだけどhtmlは初歩しかからないしプログラミングもできないので構想するだけで作れなかった。

ゼロから4ヶ月でWEBサービスをリリースした人の記事を見つけて「自分にもできるかな!」なんて思い挑戦してみたけど理解できず挫折・・・orz

WEBサービスを個人で作ってる人達が羨ましいです。

それでもWEBサイトを作りたかったので制作会社発注してみようと思い立った。

ただのキャラクターデータベースだけではつまらないのでコミュニティ要素なども付けて

ネットで見つけた制作会社見積もってもらうと下記のようになった。


合計1,483,125円


以前、SNSウェブカレ」のサイト制作費が1千万円で安く仕上がった(潰れたけど・・・)という話があったか

なんとなく3~400万くらいかかるんじゃないかなと不安だったんだけど予想より安い見積もりだったので、

このくらいの金額ならなんとか出せる!ということで制作してもらうことにしました。

本当は何社かに見積もってもらって比較しようと思ったんだけど面倒だったのでそのまま制作をお願いすることにした。

最初はもう少し高かったけど機能の簡略化とオープンソースライブラリを使用してもらう事で費用を抑えてもらった。)

去年の10月の頭くらいから打ち合わせを始めて第1フェーズワイヤーフレーム作成仕様策定をして第2フェーズhtmlシステム開発

移ったのは中旬だったかな?その段階で前金で4割の580,650円を支払いました。

制作会社には3回くらい打ち合せに行って、あとはメールでやり取りしていました。

当初は12月中にリリースを予定してたんだけど、なんだかんだで伸びてあらかた出来上がったのが2月中旬くらい。

見積もりがちょっと甘かったんじゃないかなぁって思うw

ちなみに僕はヒッキー(どれくらいヒッキーかというと外出は3日に1回くらい)なので制作してもらっている間は

家でずっとサイトに必要なアニメデータを収集していました。

↓作ったサイト

http://neoapo.com/


以下、サイト設計担当してくれた人の製作記。

サーバ設定

サーバさくらVPS 8Gを使用。CentOS5の64bit

設定した項目は以下のとおり

HDDが3つあって、普通に/var/wwwコンテンツを入れていくとHDDが溢れそうだったので、容量の大きいものを使うように工夫したりなど。

メモリもそこそこ積んであるサーバなので、mysqlphpapcに多めにメモリを割り当てる設定をした。

データベース

本当はmyISMやInnoDBエンジンでLIKE "%word%"のようなクエリーを投げて十分なパフォーマンスが出ればいいんですけどね。

それはムリなので、全文検索エンジンとしてgroongaを使用。

groongaを使用するために先にインストールしたのはこんな感じ

この時点でいざ、groonga!と思ってgroongaをインストールしようとすると競合を起こして入らない。

epel、remiレポジトリからインストールしてあったmysqlと衝突してたのでyum remove "mysql*"で

一旦mysqlを消して、groongaレポジトリからmysqlとgroongaをインストール

するとgroongaは入ったものの、今度はphpから使おうとしてもphp-mysqlパッケージが入らない。

あちらを立てればこちらが立たぬ状態で本当にこまった。

どうしようもないので、やりたくないけどyum-downloadonlyを使ってパッケージに含まれる設定やら、soファイルなどを直接とってきて入れた。

mysql.so、mysqli.so、pdo_mysql.soを/usr/lib64/php/modules/にコピーしたり、設定をコピーしたり、少しずついじりながら、なんとか動いてくれた。

状態としてはmysqlとgroongaはgroongaレポジトリからphpと本来php-mysqlパッケージインストールされるmysql.soは手動で置いたことになる。

シェルから直接mysqlログインするときはgroongaレポジトリのやつを、phpからmysqlを呼ぶときは手動で置いたmysql.soを使うことになっている。

ちょっと心境的にしんどい。別の方法があったかもしれないけど、調べても分からず結局1日くらいかかった。

アクセスカウンタ

アクセスは、サイト全体(トータル)、サイト全体(当日分)、各コンテンツ日別、各コンテンツ週間、各コンテンツトータルのアクセスをとるようにしています

高速だとうわさのredisアクセス回数を残しています

検討した候補はmemcaced、apcmysqlredis、fileあたりなんですが、

memcacheはサーバリスタートするとデータが消える。

apcapacheリスタートするとデータが消える。

fileは候補にあがったものの、メンドウ、、どうせなら楽な既製品がいい。と思って候補からしました。

残るはmysqlredisだけど、redisが高速って聞いていたのでredisにしてみました。

最初全部redisに入れて、集計した結果をmysqlに入れるつもりでしたが、週間ランキングなどはINSERT INTO .. DUPLICATE ONを使って、

アクセスした週の月曜日00:00:00のタイムスタンプコンテンツIDキーにしたレコードを作ればそのまま週間ランキングになるなー。と思ってmysqlを使っています

コンテンツのトータルアクセス数コンテンツレコードpvという項目をつくってUPDATE table SET pv=pv+1 WHERE id = ? のようにしました。

最初難しく考えていたけど、こうすることによって大分楽になったなーといった感じ。

まとめ

全文検索エンジンや対話検索、ここにこのリンクがあればなぁ。。という所に何とかしてリンクを作るのが本当に大変だった。

使い勝手を良くするために、ここにこの機能をなど、さくっと思いつくのは簡単でもそれを実現するために、あーでもない、こーでもないと

DBプログラムとにらめっこしながら「あ!こうすればできる!でもそうすると今度はこっちが・・・」みたいなのがあったりでとても大変だった。

そんなに機能がないような感じがしても、このサイトだけでテーブルが20個あって、途中本当に死にそうだった。

 
ログイン ユーザー登録
ようこそ ゲスト さん