久しぶりやな俺や

日々のメモ

試験落ちたのと、投資目標

PSAになれなかった。

転職を機にAWSを触り始めて1年ちょっとになるが、AWS Summit2018が迫っているのでプロフェッショナルに挑戦した。
前回アソシエイトを取ったのもこんな動機だった気がする。認定者ラウンジね。
勉強期間は1ヶ月ほど。
アソシエイトを取ったのが2017年4月だったので、丁度1年経っての自分の成長を確認したい意味もあったのであるが残念である。
問題は全部で80問あり、試験時間は170分。
最後の問題を解き終わったのが試験終了2分前で、あとで見直そうとマークをつけていた問題は脳が見直しを拒否したのですぐ終了した。
例のごとく試験結果が無慈悲に即時にモニタに反映され、不合格の事実をぼんやりとした頭で認識した。

↓試験結果。

総合評点:  58%
トピックレベルスコアリング:
1.0  High Availability and Business Continuity:  58%
2.0  Costing:  50%
3.0  Deployment Management:  75%
4.0  Network Design:  62%
5.0  Data Storage:  66%
6.0  Security:  50%
7.0  Scalability & Elasticity:  53%
8.0  Cloud Migration & Hybrid Architecture:  57%

試験を受けている時から「これで落ちたらどこを勉強しなおせばいいんだろう」と思っていた。それぐらい、どの問題が間違っていたのか、どの分野がわからなかったのか自分の中で明確にできない。やれやれ、とんだ困ったちゃんだ。

Summitまであと1ヶ月あるので、再挑戦できればしたいが。
GWをウッホホーイな感じで過ごすつもり満々だったのにウッホホぐらいな気持ちになってしまった。無念。

投資(投機)の目標

40歳を超えてもこの大砂漠東京で生きていける気が欠片もしないので、 300万を10年間で1億にするという野心に満ち溢れた目標をとりあえず設定する。
本来こういうのは年始に大志を抱くのが望ましいのだろうけども。バタついていた。
300万を10年間で1億にする場合、毎年50%程度リターンを出さなければならないらしい。
300万を10年間で1億にしたい場合

無理と断じるのは簡単であるが、この先30年労働するのも無理なことが自明なのであるから、野心的な目標として設定しておきたい。 実際持ち家や車を購入する計画は人生を通してないし、5000万まで行ければ卒業も若干見えてくる気がする。

Azure AppService上のサイトへのリバースプロキシで苦しんだ話

以下の構成でサービスを運用している。

クライアント - リバースプロキシ(nginx) - Cloudservices

バックエンドをCloudServices → Azure App Serviceに置き換え、以下のように構成しようとした。

クライアント - リバースプロキシ(nginx) - Azure App Service

CloudServicesと異なる点は、AppServiceでは単一IPで複数のWebサイトをホストしていることだ。 (しようとしている )

IP固定も可能だけど。
AppService plan料金
Isolatedで、月3万円ぐらいかな。

クライアントからのリクエストURLはリバースプロキシのURLで変わらないので、リバプロで AppServiceの各サイトへの振り分けを行ってあげる必要がある。

Azure App Service の リージョンとスタンプ、IP アドレスについて

Azure App Service ではサイト固有の一意のパブリック IP アドレスは割り当てられていません。 したがって、Azure App Service では、IP アドレスや TCP ポートに一意性はないため、ホストヘッダー (サイト名、または、カスタム ドメインを構成している場合はドメイン名) を使用して HTTP 要求のルーティングをする必要があります。

と書いてあるように、ホストヘッダを指定して振り分けるしかなさそうである。

nginx的にはこんな感じ。

server {
    listen 443 ssl;
    server_name testproxy.com;

    location  /a {
        proxy_pass https://XXXXXXXXXX(AppServiceのIP)
        proxy_set_header Host  test1.com;
        proxy_redirect default;
    }
    location  /b {
        proxy_pass https://XXXXXXXXXX
        proxy_set_header Host  test2.com;
        proxy_redirect default;
    }
}

これで、リクエストはAppServiceに転送できるが、問題はバックエンド(AppService上のtest1.com、test2,com)で Hostヘッダを見てなんかやっている処理があったりする場合。

HTTP 1.1のHost:ヘッダーの保持

にも書かれているが、通常リバプロでは proxy_set_header Host $host; とか設定して、クライアントから渡された、あるいは設定されていなければserver_nameから取得した値を Hostヘッダに指定する。と思う。

今回はHostヘッダを(強引に)指定してプロキシしているために、バックエンドで問題が起こる可能性がある。(リダイレクト時など)

リクエストURLを取得する(ASP.NET プログラミング)

↑とか。Request.Urlプロパティから値を取得するのだが、内容はHostヘッダから組み立てている模様。

Application Request Routing (ARR) を使う場合に必ず設定しておきたい項目

アプリケーション側で Host ヘッダを見て URL を組み立てる場合に、プライベート IP アドレスがホストになってしまうことがあります。特に ASP.NET の Request.Url でこの問題が発生します

上記のようなことである。

  • バックエンドのアプリのHostヘッダを見てる処理に手を入れる
  • AppServiceプランをIsolatedにしてIP固定にする。(どうやら、Isolatedプラン以外では例え1サイトのみの構成にしてもHOSTヘッダは指定する必要がある)

結局、この2点の何れかにすることになった。 nginxで色々頑張る(リクエスト見ていろいろ書き換える)も検討したが、それはなんかちゃう、という気がしたのでやめた。

しかし、こういう用途(リバプロ + 単一IPで複数ホスト)ってほとんどWeb上の情報がでてこない。

詳しくないのでわからないが、この用途自体がおかしい(珍しい)のか……
サポートに聞いたらnginxでの構築事例は聞かないが、普通にAppService上にプロキシ立てて、そこから AppServiceに。みたいなのはあるらしい。
というかパスで振り分けるだけだったらApplicationGateway使えばええやね…… Azure Application Gateway の概要 | Microsoft Docs

nginxは時々触るが毎回苦しめられるので、記憶に定着するように形として残していきたいものである。

参考URLまとめ

HTTP のリダイレクション
リバースプロキシーと HTTP リダイレクト
ホストヘッダー
AzureWebAppsのSSLでドハマリ
Application Gateway の複数サイトのホスト
HTTP 1.1のHost:ヘッダーの保持
リダイレクト

サンプル試験を解く

公式ページのサンプル問題をまず解いてみる。
AWS 認定ソリューションアーキテクト – プロフェッショナル
6問あって、正解は3問ぐらい。50%ぐらいか……
StorageGatewayと、前に全く使われてなさそうなサービスとどこかで聞いたようなCloudHSMがよくイメージ掴めず、わからなかった。

■Blackbelt
Blackbelt Storage Gateway
Blackblet CloudHSM

■ユーザーガイド
AWS Storage Gateway とは - AWS Storage Gateway
AWS CloudHSM とは - AWS CloudHSM

とりあえず、読もう。

2017年の振り返り

今更ながら、2017年の振り返り

まず、2016年末に転職をしている。 それまでオンプレ環境しか触ったことなかった。

1~3月

AWS触り始め。
はぁーすごいーくらうどってすごいんだー。
1クリック2クリックOKナイスインスタンスだー。って感じ。
サーバーレスすげーでも裏側サーバーじゃんねーすげー。って感じ。
何も知らない無邪気さが可愛い時期。

4~6月

nginxを触ったり、Zabbix→Mackerel導入したりした。
多分人生で一番curl叩いてた時期。
AzureにIaaS作ったのでAzureも少し触る。
クラシックポータル?なんだそりゃ。AWSのマネージメントコンソールが
洗練されているように見えていたそんな時期。

6月末AWSでやらかす。クラウドの恐怖を垣間見た。
ビットコインへの敵意が芽生え始める(お門違い)

7~9月

少しトラウマを抱えつつも、それまで手取り足取り色々教えてくれた上司がいなくなり作業を引き継ぐ。
Dockerについての見識を得ようと辞めた上司の遺言で高いお金を出して外部にお願いするも目論見どおりの収穫とならず個人的負債となる。(なぜだ)

10~12月

チームを移動。AWSの社内有識者が少ないため相談をよく受けるようになった。

12月末AWSでやらかす。
リザーブインスタンス買い間違え(呆)
完全に自分のせいだが「ReservedInstance is evil」 というタイトルで記事を書きたくなった。

総括:

クラウドと初めて対峙した年だった。
クラウドの素晴らしい光の部分、そして闇の側面を知った。その闇を生み出す自分の知識不足が存分に発揮された1年だったと言えよう。

2018年はどうなるか。
たぶんDockerと対峙していく一年になるのか。
ドル円と対峙していく一年になるのか。(それはなる)
とにかく何でもアウトプットを増やす一年にしたい。そして早起きだ。

AmaWeb設計&開発ガイド第一章

AmazonWebServices設計&開発ガイドを読み始めた。
第1章から。
AWSのメリットや、オンプレミスに対しての優位性についての説明。
パトリオット法が失効していたのは知らなかった。
セキュリティ的には、もちろんそれなりの自社サーバールームよりAmazon様のデータセンターのほうが万全のセキュリティで安全だというのは耳タコな話ではあるけれど、責任共有モデル(OSより上のレイヤーは利用者が責任をもって管理する)で、
自分としては何回かやらかしているので、安全か、といわれるとうーんとなる。(まあ、自分が悪いんですが。オンプレでは起きないようなことも逆に起こる)
クラウドを使うことに抵抗なくなってくると、複数クラウドからのサービス選択が
今後のスキルになっていく気がする。
Azureは何だかコンソールが好きじゃない。
ということで、そろそろAWS Solution Architecht Professional を取得したいので、朝早く起きて勉強したいと思う。
難しいのは勉強じゃなくて、朝起きることだが……

fifa18キャリアモード

目標とか色々たてなきゃなーとか思ってた新年だけどここまでfifa18 switch版をやっているばかりで何にも考えてない 目標とか考えるのは苦痛。特に自発的でないときは。
目標とかキャリアプランとか怠い。

レジェンドレベルのfifaは難しい。
ニューカッスルでの成績
1年目:38試合10勝8分20敗 26得点51失点 16位
2年目:27試合8勝11分8敗 31得点35失点10位
途中解任された……ショックすぎる

エニアグラム簡易診断とかいうのやったら 「平和を好む人」だった。

エニアグラム 〜9つのタイプ 性格の特徴、世界観、動機、行動スタイル、エッセンス(本質的資質)

穏やかで、人に安心感を与え、気持ちをなごませる。人から見捨てられることを恐れ、平和や快適であること、また、一体感を好む。健全な状態で、平和で安定した心を保つ。周囲に緊張や葛藤がある場合は、公平な立場で辛抱強く仲裁に入る。想像力に富み、楽観的なヴィジョンをもつ。
性格のとらわれが強くなると、表面的にまわりに合わせ、葛藤を避け、実態よりもいい方に理想化して考えてしまう。頑固なまでに現状維持。自分は成長するに値しないと思いがちで、変化へ向けての積極的な行動を起こせない。怒りや不満を直接表現せずに、暗黙の抵抗で示す。不健全なとき、まわりの人から気持ちが離れ、問題に直面することなく、自分を麻痺させて、心地良い空想や嗜癖、フテ寝などに走る。抑鬱や無感覚になる。

平和を好む人がfifa18のCOMエフェクトにキレてコントローラー投げ飛ばしたりするんだろうか…… 謎である。

読書計画(冬)

年末に向けて、読みたい本や持っている本の棚卸。

持っている本

UNIXという考え方

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学

名言集。

サーバーレスシングルページアプリケーション

クラウドデザインパターン設計ガイド

Amazon Web Servicesクラウドデザインパターン設計ガイド 改訂版(日経BP Next ICT選書)

Amazon Web Servicesクラウドデザインパターン設計ガイド 改訂版(日経BP Next ICT選書)

シナリオで学ぶパブリッククラウド Amazon Web Services 設計&開発ガイド

シナリオで学ぶパブリッククラウドAmazon Web Services 設計&開発ガイド

シナリオで学ぶパブリッククラウドAmazon Web Services 設計&開発ガイド

TCP/IPネットワーク ステップアップラーニング

[改訂4版]TCP/IPネットワーク ステップアップラーニング

[改訂4版]TCP/IPネットワーク ステップアップラーニング

ネットワーク基礎の再確認。

みんなのPython

みんなのPython 第4版

みんなのPython 第4版

Pythonがやりたくてとりあえず買った。

持っていない本

アメリカ海軍に学ぶ「最強チーム」のつくり方

ちらっと読んだ時に書いてあった「人が辞める理由」がとてもしっくりきたので ちゃんと読んでみたい。 ちなみに、軍艦を降りる5つの理由(アメリカ海軍)

  1. 上司から大切に扱ってもらえないこと
  2. 積極的な行動を抑えこまれること
  3. 意見に耳を貸してもらえないこと
  4. 責任範囲を拡大してもらえないこと
  5. 給料

Amazon Web Services負荷試験入門

読みたい。負荷試験自体に知見が足りないと感じている。

SRE サイトリライアビリティエンジニアリング

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SREって最近よく聞く職なので。

Real World HTTP

Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術

Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術

Webを支える技術という本があるが、それに匹敵するぐらい良いらしい

Infrastructure as Code

Infrastructure as Code ―クラウドにおけるサーバ管理の原則とプラクティス

Infrastructure as Code ―クラウドにおけるサーバ管理の原則とプラクティス

あまり食指は動かないが、まあ。。

ピープルウェア

ピープルウエア 第3版

ピープルウエア 第3版

著者のデッドラインという作品が面白かったので。 こちらのほうが有名らしい。