miyasakura’s diary

日記です。

読んだ:「マイクロサービスアーキテクチャ」

www.oreilly.co.jp

やや流し読みですが。

全体的にマイクロサービスをやる上で気をつけるべきところを紹介してはくれているんですが、実際にやって大変そうだなというところは、大変だから頑張ってね、くらいしか書かれていないので実践的とまではいかない感じ。

考えなきゃいけない部分が基礎的なこと含めて色々と書かれているので、マイクロサービスやるにあたっては読んでおいて良いはず。

以下はメモ。自分が気になったところだけメモしつつ読もうと思ったけど途中で面倒になったので適当です。

  • サービスを分離する大きさ
    • 2週間で作り直せる大きさ
    • あるいは感覚的に十分に小さいと感じる大きさ
  • サービス内のことはそれほど気にしなくて良い。サービス間は心配する
    • サービス間の通信がRESTだったりJava RMIだったりした場合の大変さ
  • 戦略的目標←アーキテクチャ上の原則←設計とデリバリのプラクティス
  • 非同期イベントベース連携
    • マイクロサービスがイベントを発行する方法と、コンシューマがそのイベントを発生したことを検出する方法について
    • RabbitMQなどのメッセージブローカー
  • 4章 結合
    • 1つのマイクロサービス内ではDRYを破らないが、すべてのサービスにわたるDRYの違反には寛大に対処する
      • サービス間の結合が多すぎることに寄る外はコードの重複が引き起こす問題よりもはるかに悪くなる
    • クライアントライブラリ
    • ついサーバにあるべきロジックがクライアントに紛れ込んでしまう
    • AWSのモデルが好き
      • コミュニティや開発者以外のAWSメンバーが開発することで落とし穴を回避
      • クライアントがアップグレードを行うタイミングを管理できる
    • バージョニング
  • 5章 モノリスの分離

ActiveModelのi18n

ActiveRecordを継承せずに直接ActiveModelを使ったときの i18n のやり方がわからなかったのでメモ。

def User
  include ActiveModel::Validations
  validates :email, presence: true
end

みたいな使い方をしているとき。

ja:
  activemodel:
    attributes:
      user:
        email: メールアドレス

activerecord: ではなくて activemodel: にしましょうということ。そりゃそうだよねという感じ。

ActiveModel::Translation#i18n_scope でスコープが定義されていました。

CloudFormationの定義からDynamoDB Localにテーブルを作成する

DynamoDBをCloudFormationで作ったは良いけどローカルでdynamodb-localを使って検証する際にどうしようか少し悩んでました。

Terraformにしようかとか、AWS上のテーブル情報を持ってきてどうきするようにしようかとか悩みましたが、結論としてはCloudFormationのyamlファイルから AWS CLI で create-table することに。

for file in `ls *.yaml`; do
  ruby -e 'require "yaml";require "json";y=YAML.load ARGF.read;puts JSON.pretty_generate y["Resources"]["Table"]["Properties"]' < $file > /tmp/$file
  aws dynamodb create-table --endpoint-url http://localhost:8000 --cli-input-json file:///tmp/$file
done

ちょっと雑ですが、Resources.Table.Properties のデータを --cli-input-json に渡してやるだけなのでシンプルで別の場所で定義を再度書く必要もないのでいったんこの方針で。

IKEAの電動昇降式スタンディングデスクBEKANTを購入しました

昇降式のデスクを海外のサイトで買おうとして2ヶ月届かなかった記事はこちら。

miyasakura.hatenablog.com

なんとか返金してもらえたので、先週末にIKEAに行ってこちらの机を買ってきました。

www.ikea.com

海外では一年以上前から発売されていたのですが、2016年11月時点では見つからず海外品を購入したのですが、昨年末くらいに発売が開始されたみたいです。

立川の店舗ではNew!という表示とともに2箇所くらいに展示されていて結構おすすめされている様子でした。

土曜日に購入しまして、発送が最短で火曜日ということでしたが、木曜日の今日受け取れました。

10年保証もついてお値段69,900円。机と椅子を同時に買うと20%分のポイントが貰えるキャンペーンをやっていたので、不要な1,980円の椅子を買って送料込みでも実質6万ちょっとで買えた計算に。いい買い物をしました。

で、本日届いたのですが、組み立ても思った以上に簡単で、1人で1時間弱で完成しました。

f:id:miyasakura:20170126172430j:plain

昇降機能も動いています。

組み立ててみると思った以上にシンプルな作りでしたが、海外での実績がありますし、保証も10年と信頼性は十分です。

日本メーカーのものを買うと倍以上の値段がするので、しばらく電動の昇降式デスクはIKEAのBEKANT一択ではないでしょうか。

メモ:新宿から車以外でIKEAに行くときの所要時間

立川店が一番近いが在庫が他の店にある場合もあるのでメモ。

IKEA立川:41分

新宿→(中央線快速)→立川→(バス)→災害医療センター東→徒歩2分

41分だがバスのタイミング次第で多少のブレはあり。バスに乗らなくても徒歩15分程度なので45分程でつく。

IKEA Tokyo Bay (旧IKEA船橋):59分

新宿→(総武線)→西船橋→(武蔵野線)→南船橋→徒歩6分

IKEA新三郷:1時間4分

新宿→(埼京線)→武蔵浦和駅→(武蔵野線)→新三郷駅徒歩7分

IKEA港北:1時間18分

新宿三丁目→(副都心線東横線)→菊名→(バス)→新開橋→徒歩2分

新横浜からのシャトルバスもあり。

Autonomous.aiの電動昇降式スタンディングデスクSmart Desk 2を購入した

昨年の11/10に注文した机。結論としてはまだ届いていておらず、絶対に買ってはいけないよ、という記事。

まだ解決してないところだが、いったんこの辺で経過をメモしておく。

まず、購入した机は下記のサイト。

Smart Office with Standing Desks, Ergonomic Chairs by Autonomous

日本で買える電動昇降式のデスクではおそらく最安ということで購入。

安すぎるとは思いつつも日本に発送していないサイトなら同程度の値段のものはあるので詐欺ではないかなと。

発送は1~2週間とのこと。

しかし待っていても予定期日には発送されず、3週間たっても来なかったので問い合わせたところ、反応なし。しかし何度か問い合わせてやっと返信が来て、なんとかその翌日に発送。

しかし、そこでFedExが荷物を紛失。

追跡情報によると2つ目の営業店まで来てるものの、日本の担当者とのやりとりでそこまでも来ていなさそうとのこと。FedExの担当者がでかい荷物だったので無視したのでは無いかと。

1週間ほど調査してもらうことになったが、Autonomousの担当者に連絡が取れないので進捗がなかったのこと。

一応その間こちらからもメールを送るもののやはり反応が無い。

うまく時間が会えばサイト上でチャットがつながるのだが、Relationship ManagerのKaitlinとやらがなかなかアレで、チャット上では後で返事するから、と言われてそのまま1日以上放置されるのでまた問い合わせるという繰り返し。いい加減怒るのだがそれでもだめ。

どうしようもないのでFedEx側に紛失で確定してもらい、その旨を伝えるため再度チャット。何度目かの問い合わせで、ついにKaitlin以外の人につながり、その人は話が通じて再発送してもらえることに。

この時点で既に購入から一ヶ月以上経過。しかし結局まだ発送連絡がこず、その後は何度か問い合わせても反応なく、送られたのか送られてないのかわからない状態になってしまった。

このままだと届かない可能性もあるということで楽天カードに連絡して、商品未着での返金の手続きを進めてもらう。(まだ確定してないが、面倒なので確定したことにして同時進行。ただうまくいっても3ヶ月はかかるらしい。)

もうこうなるとキャンセルして返金でもなんでも良いので早く問い合わせに回答してほしいが、反応が全くない。

うーんと思いながらFacebookページを見たら、自分と似たような感じの人がかなり多かったので、まぁそういう企業だったということが判明。

物が届いた人の評価は悪くないが、そうじゃない人がかなり多い模様。Facebookページへの書き込みとしては、「届いていない」「問い合わせても答えない」系のものが9割で、良い評価がちょっとある程度。

せっかくなので幾つか紹介。

I still don't know if I was issued a refund. Annie ended the chat without answering my question.

返金されたのかわかりません。Annieが私の質問に答えずにチャットを終了してしまいました。

 

I'm really trying to love you. However, my experience with your customer service is lacking so far.

Autonomousを好きになりたいのですが、カスタマーサービスがあまりにひどすぎる。

 

I contacted customer support last Monday via phone call and left a message. I also sent an email on Tuesday and haven't heard back yet from either. Could someone please get back to me?

カスタマーサポートに先週の月曜日に電話をしてメッセージを残しました。火曜日にメールも送ったのですが、誰も返信をくれません。

うん、ひどい。これは買った時点で負けというやつ。この感じだと届いてない人が多いので、既に自転車操業かあるいは単純に最後のお金回収かになっているのではないだろうか。最初に送られた物も何かしら存在しない商品を到着しないルートで送った可能性も。

KickStarterとかで予定より1年単位で待つのは慣れているが、必要だと思って買ったものが届かないのは厳しい。キャンセルでも詐欺確定でもなんでも良いからさっさと終わらせないと他で買うこともできないので早く解決したい今日このごろ。

皆様におかれましては、こちらのサイトで商品を買うときはお気をつけください。

一つ良かったことがあるとすれば、英語でメールとかチャットとか久々だったので勉強にはなったかなぁ…。

S3がOriginのCloudFrontを設定したら307 Redirectされる

S3がOriginでカスタムドメインのCloudFrontを設定したところ、設定は間違っていないのにアクセスすると元のCloudFrontのURLにリダイレクトされてしまう現象がでた。数回程度同じ設定をしたことがあるがこの現象は初。

(追記)

https://stackoverflow.com/questions/38706424/aws-cloudfront-returns-http-307-when-origin-is-s3-bucket http://blog.open-tribute.org/2017/05/30/cloudfront-and-s3-307-redirects/

この辺に答えがあるように時間経てば直るので待ちましょうということでした。S3には複数のEndpointがあって、メイン以外のエンドポイントはそれが準備できるまではもう片方にリダイレクトするようになっている模様。DNSの関係でタイミングによっては結構時間かかるみたいです。 (追記ここまで)

ググって昔の情報なら見つかったものの、未だに解決されていないとは思いづらいし、同様のケースがあまり出てこないので悩んでしまった。

https://forums.aws.amazon.com/message.jspa?messageID=196878

たしかに curl -Iしたら307 Redirectが確認できたが原因がわからない。

1時間くらい経って一度全てのファイルを Invalidate したらRedirectしなくなった。

おそらくCloudFrontデプロイ中の微妙なタイミングでアクセスしてしまったせいで、307リダイレクトが発生して、それをキャッシュしてしまったのが原因と思われる。

すぐにInvalidateしても変わらなかったので、しばらく待ってからInvalidateする、が正解だった模様。